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?


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

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

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