| // -*- 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. |