gettext, i18n, and the po/ subdirectory 26-Nov-2013 David Cantrell David Shea --------------------------------------- I have attempted to clean up our po/ subdirectory and bring it in to conformance with GNU gettext tools as well as hook it in to GNU autoconf and GNU automake. The gettext software has templates set up for this already, so I'm just using those. From time to time, we may have to update our gettext template files and or expand or reduce the information in the files. How do you know what files do what? Here's an explanation: ABOUT-NLS config.rpath m4/gettext.m4 m4/iconv.m4 m4/nls.m4 m4/po.m4 m4/... po/Makefile.in.in po/Makevars.template po/Rules-quot po/boldquot.sed po/en@boldquot.header po/en@quot.header po/insert-header.sin po/quot.sed po/remove-potcdate.sin These files are copied in when 'autopoint' is run on the source project, which happens as part of autogen.sh. In general, we should never need to touch these files. The autopoint tool depends on two macros in configure.ac: AM_GNU_GETTEXT, and AM_GNU_GETTEXT_VERSION([]). From time to time we may need to update the set of gettext files that we use. To do so, update the gettext version number in AM_GNU_GETTEXT_VERSION and run autogen.sh. Be sure to also update the required gettext version in the spec file. po/Makevars Should be updated when we update gettext files from autopoint with a new gettext version. A file called po/Makevars.template will appear and we can move over our values to the new file and commit it. We do not need to change this file on a regular basis. po/POTFILES.in This file contains a listing of all source files in the project that have translatable strings. Some files can't be handled by gettext directly, such as the GNOME desktop files and anything without a clear filename extension. For these types of files, add a rule to po/Rules-extract to create a file that gettext can handle, and add the name of the generated file to po/POTFILES.in. po/LINGUAS Space-delimited list of languages available. If a new language is added, it should be added to this file. po/Rules-extract Extra Makefile rules to process files that gettext can't handle on its own. Currently there are two types of files handled in Rules-extract: files in a language that gettext doesn't know, and files in a language that gettext can't figure out from the filename. For the first type of file (.desktop files, consolehelper files), we use intltool-extract to create a C-style header file containing the translatable strings, and for the second we manually run xgettext, forcing a --language setting, and generate an intermediate .po file. In both cases, the name of the generated file is what goes in po/POTFILES.in. po/anaconda.pot This is the template file built by xgettext containing all of the translatable strings. The file is updated and committed to git as part of building a release. po/*.po Actual translated strings, as maintained by the translation team(s). These files are not stored in git. The po-pull target will pull the latest translations from Transifex.