GNU ‘gettext’ utilities *********************** This manual documents the GNU gettext tools and the GNU libintl library, version 0.21.
· Introduction Introduction · Users The User’s View · PO Files The Format of PO Files · Sources Preparing Program Sources · Template Making the PO Template File · Creating Creating a New PO File · Updating Updating Existing PO Files · Editing Editing PO Files · Manipulating Manipulating PO Files · Binaries Producing Binary MO Files · Programmers The Programmer’s View · Translators The Translator’s View · Maintainers The Maintainer’s View · Installers The Installer’s and Distributor’s View · Programming Languages Other Programming Languages · Data Formats Other Data Formats · Conclusion Concluding Remarks · Language Codes ISO 639 language codes · Country Codes ISO 3166 country codes · Licenses Licenses · Program Index Index of Programs · Option Index Index of Command-Line Options · Variable Index Index of Environment Variables · PO Mode Index Index of Emacs PO Mode Commands · Autoconf Macro Index Index of Autoconf Macros · Index General Index — The Detailed Node Listing — Introduction · Why The Purpose of GNU ‘gettext’ · Concepts I18n, L10n, and Such · Aspects Aspects in Native Language Support · Files Files Conveying Translations · Overview Overview of GNU ‘gettext’ The User’s View · System Installation Questions During Operating System Installation · Setting the GUI Locale How to Specify the Locale Used by GUI Programs · Setting the POSIX Locale How to Specify the Locale According to POSIX · Working in a Windows console Obtaining good output in a Windows console · Installing Localizations How to Install Additional Translations Setting the Locale through Environment Variables · Locale Names How a Locale Specification Looks Like · Locale Environment Variables Which Environment Variable Specfies What · The LANGUAGE variable How to Specify a Priority List of Languages Preparing Program Sources · Importing Importing the ‘gettext’ declaration · Triggering Triggering ‘gettext’ Operations · Preparing Strings Preparing Translatable Strings · Mark Keywords How Marks Appear in Sources · Marking Marking Translatable Strings · c-format Flag Telling something about the following string · Special cases Special Cases of Translatable Strings · Bug Report Address Letting Users Report Translation Bugs · Names Marking Proper Names for Translation · Libraries Preparing Library Sources Making the PO Template File · xgettext Invocation Invoking the ‘xgettext’ Program Creating a New PO File · msginit Invocation Invoking the ‘msginit’ Program · Header Entry Filling in the Header Entry Updating Existing PO Files · msgmerge Invocation Invoking the ‘msgmerge’ Program Editing PO Files · KBabel KDE’s PO File Editor · Gtranslator GNOME’s PO File Editor · PO Mode Emacs’s PO File Editor · Compendium Using Translation Compendia Emacs’s PO File Editor · Installation Completing GNU ‘gettext’ Installation · Main PO Commands Main Commands · Entry Positioning Entry Positioning · Normalizing Normalizing Strings in Entries · Translated Entries Translated Entries · Fuzzy Entries Fuzzy Entries · Untranslated Entries Untranslated Entries · Obsolete Entries Obsolete Entries · Modifying Translations Modifying Translations · Modifying Comments Modifying Comments · Subedit Mode for Editing Translations · C Sources Context C Sources Context · Auxiliary Consulting Auxiliary PO Files Using Translation Compendia · Creating Compendia Merging translations for later use · Using Compendia Using older translations if they fit Manipulating PO Files · msgcat Invocation Invoking the ‘msgcat’ Program · msgconv Invocation Invoking the ‘msgconv’ Program · msggrep Invocation Invoking the ‘msggrep’ Program · msgfilter Invocation Invoking the ‘msgfilter’ Program · msguniq Invocation Invoking the ‘msguniq’ Program · msgcomm Invocation Invoking the ‘msgcomm’ Program · msgcmp Invocation Invoking the ‘msgcmp’ Program · msgattrib Invocation Invoking the ‘msgattrib’ Program · msgen Invocation Invoking the ‘msgen’ Program · msgexec Invocation Invoking the ‘msgexec’ Program · Colorizing Highlighting parts of PO files · Other tools Other tools for manipulating PO files · libgettextpo Writing your own programs that process PO files Highlighting parts of PO files · The --color option Triggering colorized output · The TERM variable The environment variable ‘TERM’ · The --style option The ‘--style’ option · Style rules Style rules for PO files · Customizing less Customizing ‘less’ for viewing PO files Producing Binary MO Files · msgfmt Invocation Invoking the ‘msgfmt’ Program · msgunfmt Invocation Invoking the ‘msgunfmt’ Program · MO Files The Format of GNU MO Files The Programmer’s View · catgets About ‘catgets’ · gettext About ‘gettext’ · Comparison Comparing the two interfaces · Using libintl.a Using libintl.a in own programs · gettext grok Being a ‘gettext’ grok · Temp Programmers Temporary Notes for the Programmers Chapter About ‘catgets’ · Interface to catgets The interface · Problems with catgets Problems with the ‘catgets’ interface?! About ‘gettext’ · Interface to gettext The interface · Ambiguities Solving ambiguities · Locating Catalogs Locating message catalog files · Charset conversion How to request conversion to Unicode · Contexts Solving ambiguities in GUI programs · Plural forms Additional functions for handling plurals · Optimized gettext Optimization of the *gettext functions Temporary Notes for the Programmers Chapter · Temp Implementations Temporary - Two Possible Implementations · Temp catgets Temporary - About ‘catgets’ · Temp WSI Temporary - Why a single implementation · Temp Notes Temporary - Notes The Translator’s View · Trans Intro 0 Introduction 0 · Trans Intro 1 Introduction 1 · Discussions Discussions · Organization Organization · Information Flow Information Flow · Translating plural forms How to fill in ‘msgstr[0]’, ‘msgstr[1]’ · Prioritizing messages How to find which messages to translate first Organization · Central Coordination Central Coordination · National Teams National Teams · Mailing Lists Mailing Lists National Teams · Sub-Cultures Sub-Cultures · Organizational Ideas Organizational Ideas The Maintainer’s View · Flat and Non-Flat Flat or Non-Flat Directory Structures · Prerequisites Prerequisite Works · gettextize Invocation Invoking the ‘gettextize’ Program · Adjusting Files Files You Must Create or Alter · autoconf macros Autoconf macros for use in ‘configure.ac’ · Version Control Issues · Release Management Creating a Distribution Tarball Files You Must Create or Alter · po/POTFILES.in ‘POTFILES.in’ in ‘po/’ · po/LINGUAS ‘LINGUAS’ in ‘po/’ · po/Makevars ‘Makevars’ in ‘po/’ · po/Rules-* Extending ‘Makefile’ in ‘po/’ · configure.ac ‘configure.ac’ at top level · config.guess ‘config.guess’, ‘config.sub’ at top level · mkinstalldirs ‘mkinstalldirs’ at top level · aclocal ‘aclocal.m4’ at top level · config.h.in ‘config.h.in’ at top level · Makefile ‘Makefile.in’ at top level · src/Makefile ‘Makefile.in’ in ‘src/’ · lib/gettext.h ‘gettext.h’ in ‘lib/’ Autoconf macros for use in ‘configure.ac’ · AM_GNU_GETTEXT AM_GNU_GETTEXT in ‘gettext.m4’ · AM_GNU_GETTEXT_VERSION AM_GNU_GETTEXT_VERSION in ‘gettext.m4’ · AM_GNU_GETTEXT_NEED AM_GNU_GETTEXT_NEED in ‘gettext.m4’ · AM_PO_SUBDIRS AM_PO_SUBDIRS in ‘po.m4’ · AM_XGETTEXT_OPTION AM_XGETTEXT_OPTION in ‘po.m4’ · AM_ICONV AM_ICONV in ‘iconv.m4’ Integrating with Version Control Systems · Distributed Development Avoiding version mismatch in distributed development · Files under Version Control Files to put under version control · Translations under Version Control Put PO Files under Version Control · autopoint Invocation Invoking the ‘autopoint’ Program Other Programming Languages · Language Implementors The Language Implementor’s View · Programmers for other Languages The Programmer’s View · Translators for other Languages The Translator’s View · Maintainers for other Languages The Maintainer’s View · List of Programming Languages Individual Programming Languages The Translator’s View · c-format C Format Strings · objc-format Objective C Format Strings · python-format Python Format Strings · java-format Java Format Strings · csharp-format C# Format Strings · javascript-format JavaScript Format Strings · scheme-format Scheme Format Strings · lisp-format Lisp Format Strings · elisp-format Emacs Lisp Format Strings · librep-format librep Format Strings · ruby-format Ruby Format Strings · sh-format Shell Format Strings · awk-format awk Format Strings · lua-format Lua Format Strings · object-pascal-format Object Pascal Format Strings · smalltalk-format Smalltalk Format Strings · qt-format Qt Format Strings · qt-plural-format Qt Plural Format Strings · kde-format KDE Format Strings · kde-kuit-format KUIT Format Strings · boost-format Boost Format Strings · tcl-format Tcl Format Strings · perl-format Perl Format Strings · php-format PHP Format Strings · gcc-internal-format GCC internal Format Strings · gfc-internal-format GFC internal Format Strings · ycp-format YCP Format Strings Individual Programming Languages · C C, C++, Objective C · Python Python · Java Java · C# C# · JavaScript JavaScript · Scheme GNU guile - Scheme · Common Lisp GNU clisp - Common Lisp · clisp C GNU clisp C sources · Emacs Lisp Emacs Lisp · librep librep · Ruby Ruby · sh sh - Shell Script · bash bash - Bourne-Again Shell Script · gawk GNU awk · Lua Lua · Pascal Pascal - Free Pascal Compiler · Smalltalk GNU Smalltalk · Vala Vala · wxWidgets wxWidgets library · Tcl Tcl - Tk’s scripting language · Perl Perl · PHP PHP Hypertext Preprocessor · Pike Pike · GCC-source GNU Compiler Collection sources · YCP YCP - YaST2 scripting language sh - Shell Script · Preparing Shell Scripts Preparing Shell Scripts for Internationalization · gettext.sh Contents of ‘gettext.sh’ · gettext Invocation Invoking the ‘gettext’ program · ngettext Invocation Invoking the ‘ngettext’ program · envsubst Invocation Invoking the ‘envsubst’ program · eval_gettext Invocation Invoking the ‘eval_gettext’ function · eval_ngettext Invocation Invoking the ‘eval_ngettext’ function · eval_pgettext Invocation Invoking the ‘eval_pgettext’ function · eval_npgettext Invocation Invoking the ‘eval_npgettext’ function Perl · General Problems General Problems Parsing Perl Code · Default Keywords Which Keywords Will xgettext Look For? · Special Keywords How to Extract Hash Keys · Quote-like Expressions What are Strings And Quote-like Expressions? · Interpolation I Invalid String Interpolation · Interpolation II Valid String Interpolation · Parentheses When To Use Parentheses · Long Lines How To Grok with Long Lines · Perl Pitfalls Bugs, Pitfalls, and Things That Do Not Work Other Data Formats · Internationalizable Data Internationalizable Data Formats · Localized Data Localized Data Formats Internationalizable Data Formats · POT POT - Portable Object Template · RST Resource String Table · Glade Glade - GNOME user interface description · GSettings GSettings - GNOME user configuration schema · AppData AppData - freedesktop.org application description · Preparing ITS Rules Preparing Rules for XML Internationalization Localized Data Formats · Editable Message Catalogs Editable Message Catalogs · Compiled Message Catalogs Compiled Message Catalogs · Desktop Entry Desktop Entry files · XML XML files Editable Message Catalogs · PO PO - Portable Object · Java .properties Java .properties · GNUstep .strings NeXTstep/GNUstep .strings Compiled Message Catalogs · MO MO - Machine Object · Java ResourceBundle Java ResourceBundle · C# Satellite Assembly C# Satellite Assembly · C# Resource C# Resource · Tcl message catalog Tcl message catalog · Qt message catalog Qt message catalog Concluding Remarks · History History of GNU ‘gettext’ · The original ABOUT-NLS Historical introduction · References Related Readings Language Codes · Usual Language Codes Two-letter ISO 639 language codes · Rare Language Codes Three-letter ISO 639 language codes Licenses · GNU GPL GNU General Public License · GNU LGPL GNU Lesser General Public License · GNU FDL GNU Free Documentation License