Gettext PO

GNU Gettext is a widely used i18n system implemented in most programming languages and frameworks. It is most commonly used for internationalizing PHP, Python, C, C#, etc.

Gettext offers different resource file formats to externalize your segments. The most common human/machine-readable file format is Portable Object (.po), which Lingohub supports.

The import of POT (Portable Object Templates) files is also supported. Every imported POT file will be handled as a source language update. This means the msgid attributes will be used as segment keys and values of the segment's source language text.

Format

  • The value of the PO attribute msgid will be used as the segment key.
  • The value of msgstr will be used as the text for the segment.
  • If msgctxt is given, it will be used as part of the segment key. E.g.: <msgctxt>/<msgid>
  • The segment's title is created using themsgctxt + msgid has to be unique in every file.
  • Examples of placeholders are: “%s”, “%10s”, “%d”, “%3.4d”
  • Lingohub can handle plurals defined using themsgid_plural
  • One can specify a header for a PO file containing metadata.
    You do not need to specify a header to work with Lingohub. We ensure that the header will be exported as it was imported.
  • In the PO file header, you can specify a charset: Content-Type: text/plain; charset=UTF-8\n.
    Please make sure that this indication is correct. Lingohub will try to fix the wrong character declarations.
  • A comment line starts with #. Lingohub will parse these comments and assign them as descriptions to the next segment.
  • Lingohub will not try to interpret special comments like references or flags but will leave the values unaltered.
  • The comment placed before the header will be imported and exported untouched.

Examples

Additional example files can be accessed here. Django

# header comment

msgid ""
msgstr ""
"Project-Id-Version: LingoHub 1.6.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-05-05 19:22+0200\n"
"PO-Revision-Date: 2013-04-29 10:16+0100\n"
"Last-Translator: Translator <[email protected]>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n>1;\n"

msgid "mood"
msgid_plural "%d moods"
msgstr[0] "%d mood"
msgstr[1] "%d moods"

# nplurals is defined for 0 and 1. One should be imported even if it is not present
msgid "hand"
msgid_plural "%d hands"
msgstr[0] "%d hand"

# LingoHub translation title will be "email/To"
msgctxt "email"
msgid "To"
msgstr "To"

# multiline values
msgid "slogan"
msgstr "" 
"Continuous Translation "
"Made Simple"

Used by


References