Typing translations into the WPResidence Translate grid is only half the story. WordPress reads translated strings from compiled binary files called MO files, not from the database. This article explains what MO files are, where WPResidence Translate writes them, and what you need to do after editing strings so visitors see the translated interface. For the wider context of running a multilingual site, see our multi-language real estate website guide.
What Is an MO File?
MO stands for Machine Object. It is a compact binary lookup of original string → translated string pairs. WordPress loads one MO file per text domain (a short identifier used by themes and plugins) per locale. When a theme says __( 'Properties', 'wpresidence' ), WordPress looks up Properties inside the MO file for wpresidence in the current locale and returns the translated label.
Generating Files From Inside the Plugin
Go to WPEstate Translate → Theme & Plugins Strings and click Generate translation files. The plugin walks through every translation stored in its database and writes one <domain>-<locale>.mo file per language (for example wpresidence-fr_FR.mo, wpresidence-de_DE.mo).
A confirmation notice reports how many files were written and how many strings they cover. For example: “Generated 3 files covering 427 translations.”
Where the Files Are Saved
The plugin picks the first writable directory from this list:
- wp-content/themes/<your-child-theme>/languages/wpr/
- wp-content/themes/<parent-theme>/languages/wpr/
- wp-content/plugins/wpresidence-translate/languages/wpr/
Using a child theme is the safest choice because theme updates do not overwrite the languages/wpr/ folder there. If the preferred folder is not writable, the plugin falls back to the next candidate and records the chosen path. A front-end notice or log entry helps you diagnose permission issues if no candidate is writable.
When You Need to Regenerate
Regenerate MO files whenever:
- You edit, add, or remove translations in the string grid.
- You add a new language under Languages.
- You import translations from another source (for example an updated PO file).
- You finish a bulk automatic-translation run.
Without a fresh MO file, edits stay in the database but do not appear on the front end.
Why Some Strings Still Appear in English
If you translated a string but still see English on the site, work through this checklist:
- Did you click Generate translation files after editing?
- Is the visitor actually browsing in the target language (URL prefix correct, language cookie set)?
- Does the source plugin declare the same text domain the scanner used? A plugin with a non-standard loader may need its own translations in the plugin’s own languages/ folder.
- Is an object cache caching old translations? Flush caches via WPEstate Translate → Settings (Cache Purge tools).
Do You Still Need PO Files?
PO files (human-readable translation source files) are the standard way to ship translations with a theme or plugin. WPResidence Translate reads existing PO files during scanning and writes compiled MO files on export. If you want to keep hand-editable PO sources for version control or handover to a translator, continue to maintain them in the usual languages/ folder of the theme or plugin. The plugin’s workflow is an alternative, not a replacement.
Performance Notes
- MO files are very fast – WordPress loads them once per request and caches them in memory.
- Generation is cheap: it writes one binary per domain+locale pair, not one per string.
- If the languages folder is in a child theme, updates to the parent theme will not touch your translations.
Related Articles
- Translating Theme & Plugin Strings – the editor workflow.
- String Scanner – how strings are discovered before compile.
- Cache Purge & Reset Tools – when translations appear stale.
For the full multilingual story, see the multi-language real estate website page.

