[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
4.9 Parser Internationalization
A Bison-generated parser can print diagnostics, including error and
tracing messages. By default, they appear in English. However, Bison
also supports outputting diagnostics in the user's native language. To
make this work, the user should set the usual environment variables.
See (gettext)Users section `The User's View' in GNU gettext
utilities.
For example, the shell command ‘export LC_ALL=fr_CA.UTF-8’ might
set the user's locale to French Canadian using the UTF-8
encoding. The exact set of available locales depends on the user's
installation.
The maintainer of a package that uses a Bison-generated parser enables the internationalization of the parser's output through the following steps. Here we assume a package that uses GNU Autoconf and GNU Automake.
-
Into the directory containing the GNU Autoconf macros used
by the package—often called ‘m4’—copy the
‘bison-i18n.m4’ file installed by Bison under
‘share/aclocal/bison-i18n.m4’ in Bison's installation directory.
For example:
cp /usr/local/share/aclocal/bison-i18n.m4 m4/bison-i18n.m4
-
In the top-level ‘configure.ac’, after the
AM_GNU_GETTEXT
invocation, add an invocation ofBISON_I18N
. This macro is defined in the file ‘bison-i18n.m4’ that you copied earlier. It causes ‘configure’ to find the value of theBISON_LOCALEDIR
variable, and it defines the source-language symbolYYENABLE_NLS
to enable translations in the Bison-generated parser. -
In the
main
function of your program, designate the directory containing Bison's runtime message catalog, through a call to ‘bindtextdomain’ with domain name ‘bison-runtime’. For example:bindtextdomain ("bison-runtime", BISON_LOCALEDIR);
Typically this appears after any other call
bindtextdomain (PACKAGE, LOCALEDIR)
that your package already has. Here we rely on ‘BISON_LOCALEDIR’ to be defined as a string through the ‘Makefile’. -
In the ‘Makefile.am’ that controls the compilation of the
main
function, make ‘BISON_LOCALEDIR’ available as a C preprocessor macro, either in ‘DEFS’ or in ‘AM_CPPFLAGS’. For example:DEFS = @DEFS@ -DBISON_LOCALEDIR='"$(BISON_LOCALEDIR)"'
or:
AM_CPPFLAGS = -DBISON_LOCALEDIR='"$(BISON_LOCALEDIR)"'
-
Finally, invoke the command
autoreconf
to generate the build infrastructure.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |