(gettext.info.gz) Preparing Shell Scripts
Info Catalog
(gettext.info.gz) sh
(gettext.info.gz) sh
(gettext.info.gz) gettext
15.5.2.1 Preparing Shell Scripts for Internationalization
.........................................................
Preparing a shell script for internationalization is conceptually
similar to the steps described in Sources. The concrete steps
for shell scripts are as follows.
1. Insert the line
. gettext.sh
near the top of the script. `gettext.sh' is a shell function
eval_gettext Invocation::) and `eval_ngettext' (see
eval_ngettext Invocation). You have to ensure that `gettext.sh'
can be found in the `PATH'.
2. Set and export the `TEXTDOMAIN' and `TEXTDOMAINDIR' environment
variables. Usually `TEXTDOMAIN' is the package or program name,
and `TEXTDOMAINDIR' is the absolute pathname corresponding to
`$prefix/share/locale', where `$prefix' is the installation
location.
TEXTDOMAIN=@PACKAGE@
export TEXTDOMAIN
TEXTDOMAINDIR=@LOCALEDIR@
export TEXTDOMAINDIR
3. Prepare the strings for translation, as described in
Preparing Strings.
4. Simplify translatable strings so that they don't contain command
substitution (`"`...`"' or `"$(...)"'), variable access with
defaulting (like `${VARIABLE-DEFAULT}'), access to positional
arguments (like `$0', `$1', ...) or highly volatile shell
variables (like `$?'). This can always be done through simple
local code restructuring. For example,
echo "Usage: $0 [OPTION] FILE..."
becomes
program_name=$0
echo "Usage: $program_name [OPTION] FILE..."
Similarly,
echo "Remaining files: `ls | wc -l`"
becomes
filecount="`ls | wc -l`"
echo "Remaining files: $filecount"
5. For each translatable string, change the output command `echo' or
`$echo' to `gettext' (if the string contains no references to
shell variables) or to `eval_gettext' (if it refers to shell
variables), followed by a no-argument `echo' command (to account
for the terminating newline). Similarly, for cases with plural
handling, replace a conditional `echo' command with an invocation
of `ngettext' or `eval_ngettext', followed by a no-argument `echo'
command.
When doing this, you also need to add an extra backslash before
the dollar sign in references to shell variables, so that the
`eval_gettext' function receives the translatable string before
the variable values are substituted into it. For example,
echo "Remaining files: $filecount"
becomes
eval_gettext "Remaining files: \$filecount"; echo
If the output command is not `echo', you can make it use `echo'
nevertheless, through the use of backquotes. However, note that
inside backquotes, backslashes must be doubled to be effective
(because the backquoting eats one level of backslashes). For
example, assuming that `error' is a shell function that signals an
error,
error "file not found: $filename"
is first transformed into
error "`echo \"file not found: \$filename\"`"
which then becomes
error "`eval_gettext \"file not found: \\\$filename\"`"
Info Catalog
(gettext.info.gz) sh
(gettext.info.gz) sh
(gettext.info.gz) gettext
automatically generated byinfo2html