Get Text (po)
GNU Gettext is one of the oldest and most widely used internationalisation systems, originally developed for Unix tools and now used across Python (Django, Flask), PHP (Symfony, WordPress), Ruby, C, and many other platforms. Gettext uses two file types: PO (Portable Object) files for human translation and POT (PO Template) files generated from source code.
PO files contain translation entries made up of optional context comments, msgctxt context identifiers, msgid (source string), and msgstr (translated string). Pluralised entries use msgid_plural alongside msgstr[0], msgstr[1], and additional plural forms as required by the target language. Fuzzy flags mark entries that need review — typically auto-matched strings where the source has changed. Header metadata defines the plural forms formula for the language.
Best practice: mark strings in source code with the standard gettext underscore shorthand function and always include translator comments explaining context. Run xgettext or the framework-equivalent tool during CI builds to keep the POT template up to date. Use msgctxt to disambiguate strings with identical source text that require different translations in different contexts — for example, the word File used as a noun versus a verb. Language Monster supports Gettext PO and POT files, handles plural form definitions correctly, and processes fuzzy-flagged entries.
