What is the difference between the .po .mo and .pot localization files?

I’m translating a wordpress site and need more clarity around these terms. Can anyone please lend a hand with some definitions and differences between .po .mo and .pot files with wordpress localization?

1

These are not any kind of WP’s own format but rather just gettext file types which WP implements.

Translate Handbook has following definitions in its Glossary:

MO files: MO, or Machine Object is a binary data file that contains
object data referenced by a program. It is typically used to translate
program code, and may be loaded or imported into the GNU gettext
program.

PO files: PO files are the files which contain the actual
translations. Each language will have its own PO file, for example,
for French there would be a fr.po file, for german there would be a
de.po, for American English there might be en-US.po.

POT file: POT files are the template files for PO files. They will
have all the translation strings left empty. A POT file is essentially
an empty PO file without the translations, with just the original
strings.

The technical details of file formats can be found in gettext documentation:

  • The Format of PO Files
  • The Format of GNU MO Files

Leave a Comment