Your website, business application, game, or technical documentation may already support PO files—even if you have never worked with one. PO is a text-based translation format that lets translators work on the words your audience sees while keeping those words connected to your project.
Some platforms use PO catalogs as part of their standard translation workflow. Others can support them through an added library, plugin, or conversion step. The first step is to find out how your particular project handles translated text.
What can a PO file contain?
A Portable Object (.po) file pairs source text with translations for a language or region. The text might be a button label, checkout instruction, error message, game dialogue, or a paragraph from a user guide.
Catalogs can also include comments explaining where text appears, context to distinguish different meanings, and the forms a language needs for quantities. Placeholders let the application insert values such as a person's name or an item count without changing the surrounding translation.
This makes PO useful for ongoing translation work: your team can identify new or changed text as the product develops and keep the translations alongside the project.
Where PO may fit your project
| Your project | Where PO can be useful | What to check with your developer or provider |
|---|---|---|
| A WordPress website or WooCommerce store | Theme and plugin interface text, including buttons, notices, and checkout messages. | Whether the specific theme or plugin supplies gettext catalogs. Posts, product descriptions, and other stored content may use a separate translation workflow. |
| A Django or Wagtail website | Interface labels, forms, validation messages, and text marked for translation in templates and code. | Whether the text you need translated is included in the project's catalogs. |
| An Odoo or Tryton business application | Module labels, business terminology, and application messages. | Which modules and target languages need updated catalogs. |
| A Drupal site | Interface translations imported or exported as PO files. | Whether the request concerns interface text or site content managed through another workflow. |
| A React, Vue, Svelte, or other JavaScript application | Interface text managed by a gettext-compatible library or a conversion workflow. | Whether the localization tools can export PO and reliably import the translated results. The framework name alone does not establish PO support. |
| A Tauri desktop application | Text in the web-based interface and, with suitable tools, native menus or backend messages. | How each part of the application handles translations. Tauri does not require PO as its translation format. |
| A Godot or Unreal Engine game | Game text handled through supported PO translation or import/export workflows. | Whether the project's localization setup includes the dialogue, menus, and other text you want translated. |
| Technical documentation | Paragraphs and messages extracted into catalogs by tools such as Sphinx or po4a. | Whether the documentation build can extract PO catalogs and rebuild the documents using the translations. |
| Linux or open-source desktop software | Menus, dialogs, notifications, and command-line messages in gettext-based applications. | Which catalogs belong to the application and how its maintainers accept translation updates. |
These are possible workflows, not a guarantee that every project using a listed platform has PO files ready to translate.
How to find out what you already have
You do not need to inspect application code yourself. Ask your developer, website agency, or software provider:
Does our project use gettext or support exporting and importing PO translation catalogs? Can you prepare a catalog for our target language that includes the text we want translated?
If you have access to the project files, look for folders named locale, locales, languages, translations, or po. Three related file extensions can help you recognize the workflow:
| File | What it means |
|---|---|
.pot |
A template of source messages from which language-specific catalogs can be prepared. |
.po |
An editable catalog containing source messages and translations for a particular language. This is the file Cn2data translates. |
.mo |
A compiled catalog that an application may load at runtime. |
Existing PO catalogs can still need work. Empty translations, entries marked fuzzy for review, or an interface that mixes languages can indicate missing or outdated translations. A completed catalog may also need wording adapted for a different regional audience.
What if your project uses another format?
Many projects store translations in JSON, YAML, XML, or platform-specific resource files. A developer may be able to introduce a PO workflow or a reliable conversion process, but this depends on the project and its tools.
Changing a file's extension to .po does not convert it. Any conversion needs to preserve message identifiers, context, placeholders, and plural forms, and the translated results must work when imported back into the application. Ask your developer to confirm that complete process before preparing files for translation.
Text embedded in images, text written directly into code without translation support, and content stored outside the catalog need preparation through the appropriate project tools before they can be included in PO files.
Working with Cn2data
Cn2data's translation service covers .po files only. Your developer or provider prepares the catalog for the intended language and region, then integrates and tests the translated catalog in your project. Catalog extraction, format conversion, and application integration are separate from our PO translation service.
When you contact us, describe your platform, the text you want translated, your intended audience, and whether PO catalogs are already available. Include terminology or context that will help us understand your product.
Read about our PO file translation services or contact Cn2data to discuss your project.