1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- // -*- mode:doc; -*-
- // vim: set syntax=asciidoc:
- === Gettext integration and interaction with packages
- Many packages that support internationalization use the gettext
- library. Dependencies for this library are fairly complicated and
- therefore, deserve some explanation.
- The 'glibc' C library integrates a full-blown implementation of
- 'gettext', supporting translation. Native Language Support is
- therefore built-in in 'glibc'.
- On the other hand, the 'uClibc' and 'musl' C libraries only provide a
- stub implementation of the gettext functionality, which allows to
- compile libraries and programs using gettext functions, but without
- providing the translation capabilities of a full-blown gettext
- implementation. With such C libraries, if real Native Language Support
- is necessary, it can be provided by the +libintl+ library of the
- +gettext+ package.
- Due to this, and in order to make sure that Native Language Support is
- properly handled, packages in Buildroot that can use NLS support
- should:
- 1. Ensure NLS support is enabled when +BR2_SYSTEM_ENABLE_NLS=y+. This
- is done automatically for 'autotools' packages and therefore should
- only be done for packages using other package infrastructures.
- 1. Add +$(TARGET_NLS_DEPENDENCIES)+ to the package
- +<pkg>_DEPENDENCIES+ variable. This addition should be done
- unconditionally: the value of this variable is automatically
- adjusted by the core infrastructure to contain the relevant list of
- packages. If NLS support is disabled, this variable is empty. If
- NLS support is enabled, this variable contains +host-gettext+ so
- that tools needed to compile translation files are available on the
- host. In addition, if 'uClibc' or 'musl' are used, this variable
- also contains +gettext+ in order to get the full-blown 'gettext'
- implementation.
- 1. If needed, add +$(TARGET_NLS_LIBS)+ to the linker flags, so that
- the package gets linked with +libintl+. This is generally not
- needed with 'autotools' packages as they usually detect
- automatically that they should link with +libintl+. However,
- packages using other build systems, or problematic autotools-based
- packages may need this. +$(TARGET_NLS_LIBS)+ should be added
- unconditionally to the linker flags, as the core automatically
- makes it empty or defined to +-lintl+ depending on the
- configuration.
- No changes should be made to the +Config.in+ file to support NLS.
- Finally, certain packages need some gettext utilities on the target,
- such as the +gettext+ program itself, which allows to retrieve
- translated strings, from the command line. In such a case, the package
- should:
- * use +select BR2_PACKAGE_GETTEXT+ in their +Config.in+ file,
- indicating in a comment above that it's a runtime dependency only.
- * not add any +gettext+ dependency in the +DEPENDENCIES+ variable of
- their +.mk+ file.
|