PO localization

PO (Portable Object) files are the working translation format of the gettext system, used across Linux applications, GNU projects, WordPress, and Python software. Each file holds one language: original msgid strings, translated msgstr values, plural forms, and metadata like translator comments and format flags. Localazy translates PO files for you.

How Localazy works with PO files

Import existing PO files via CLI or web upload. Translate it with Localazy AI, or get humans to translate it for you on the platform instead of sending the files back and forth every time you need an update.

  • Plurals per CLDR - the Plural-Forms header is generated from the latest CLDR data, and every language gets the correct number of msgstr[n] entries.
  • Comment handling - general (#), extracted (#.), and reference (#:) comments are parsed as translator context; enable preserve_comments to restore them in output files.
  • Flexible msgid parsing - by default msgid is the source text; projects that use msgid as a key can enable skip_source, with use_key_for_content filling gaps where msgstr is empty.
  • Empty translation control - decide whether empty msgstr values count as valid translations (ignore_blank_content) and whether untranslated strings export as empty (empty_untranslated).

Helpful Localazy features for PO translation

MO files straight from the platform

Add output_mo to your upload features and Localazy generates compiled binary MO files instead of PO. Need both? Format Conversions can output ${lang}.po and ${lang}.mo side by side from one download.

No missing keys in production

By default, exported files fall back to source-language text where a translation is missing, so an incomplete language never ships a missing key that crashes your framework. Prefer strict output? Enable filter_untranslated.

Starting from a template instead?

If your workflow begins with extracted POT templates rather than translated files, Localazy handles those too, with the same CLI setup.

PO + Localazy: Quick start guide

Learn how to use PO with Localazy. Set up your localization workflow in minutes!

Read the guide

AI-driven translation
with human control

Bring your whole team inCollaborate with your colleagues, clients, or users without seat limits.
Establish a source of truth for your contextManage terminology, instructions, and style guides all in one place.
Let Localazy AI handle the first draftAutomatically generate new translations based on your context.
Get human reviewers to keep an eye on qualityHave our trusted native speakers review your translations as you go.
Localazy CLI: Automated localization for your project

Localazy CLI: Automated localization for your project

Designed for development teams, Localazy CLI provides advanced i18n automation capabilities to manage translations across your entire pipeline. Integrate  your project with Localazy CLI & align it to your current CI/CD workflows.

Try Localazy with a 14-day trial!

Sign up now and start translating!

Start now

Frequently Asked Questions

To translate PO and POT files, you could just open the file and translate all content on your own or with the help of machine translation engines (e.g., Amazon Translate). However, approaching translations this way is messy, error-prone, and tedious. You can do better!

Translating PO and POT files is simple with Localazy. Sign up for free, create a new translation project and upload your PO, or POT file. Head to the Translations tab to add new languages and start translating.

Localazy gives you a clean UI for translating PO and POT files. Enjoy built-in machine translation suggestions and all features a solid TMS has to offer!

To translate PO (or POT) files automatically, you have two (premium) options:

Last updated: 13/10/2026

When using Localazy CLI, setting up a comfortable POT/PO workflow requires some special settings, but is completely possible. Usually the source language file has a different format (POT) than files with translated strings in your project (PO).

We recommend setting two different rules for uploading:

  1. Upload your messages.pot file with "type": "pot" and also provide the file attribute to be sure that the filename is, in ideal case, something like messages.po to properly link your POT file to a PO file that is used for your source language internally by Localazy.
  2. To upload existing translations inside PO files, use "type": "po" and provide the same file attribute again.

Example configuration

Your upload configuration should then look like this:

"files": [
  {
    "type": "pot",
    "pattern": "source/messages.pot",
    "file": "message.po"
  },
  {
    "group": "existing-translations"
    "type": "po",
    "pattern": "translations/*/messages.pot",
    "file": "message.po"
  }
]
Last updated: 13/10/2026
Try the PO integration with your own content!

Automate your localization with Localazy today!

Sign up now