ResourcesWhy Your Translations Are Not Showing Up in WordPress (Troubleshooting Guide)

Why Your Translations Are Not Showing Up in WordPress (Troubleshooting Guide)

SimplePoTranslate TeamDecember 5, 2025

There is nothing more frustrating in WordPress development than the "Silent Failure."

You did everything right. You translated the .po file. You compiled it into a .mo file. You uploaded it to your server via FTP. You cleared your cache.

You refresh the page, expecting to see Spanish, French, or German. Instead, you see... English.

No error message, no white screen—just stubborn, untranslated text. Before you tear your hair out, read this guide. Here are the 5 most common reasons translations fail to load in WordPress and how to fix them.

1. You Are Naming the File Wrong

WordPress is incredibly strict about file naming. If you miss a character, it won't load the file.

The standard format is: {text-domain}-{locale}.mo

  • The Text Domain: This is the unique ID of the theme or plugin (e.g., woocommerce, twentytwentyfour, my-custom-plugin).
  • The Locale: The WP locale code (e.g., es_ES for Spain Spanish, fr_FR for French).

Common Mistakes:

  • Naming the file just es_ES.mo (This only works for global WordPress core files, not plugins).
  • Using the wrong dash: my_plugin_es_ES.mo (Underscore) instead of my-plugin-es_ES.mo (Hyphen).
  • Guessing the text domain. You must check the plugin's code (style.css header or load_plugin_textdomain function) to find the exact slug.

2. You Put the File in the Wrong Folder

Where you upload the file matters just as much as what you name it. WordPress looks in specific directories in a specific order.

  • The "Safe" System Folder: /wp-content/languages/plugins/ or /wp-content/languages/themes/.
    • Pros: This is safe from plugin updates.
    • Cons: You must name the file textdomain-locale.mo.
  • The Author Folder: /wp-content/plugins/plugin-name/languages/.
    • Pros: Easy to find.
    • Cons: DANGER. When you update the plugin, this folder is wiped clean. Your translations will vanish.

Best Practice: Always put your custom .mo files in the global /wp-content/languages/ directory to prevent data loss during updates.

3. The "Silent Killer": Corrupt Syntax in the .po File

This is the hardest issue to debug, and it happens frequently with generic AI translation tools.

WordPress reads binary .mo files, which are compiled from .po text files. If your .po file contains syntax errors, the .mo file might be generated, but it will be "broken" internally.

How does this happen? If a translator (human or AI) messes up the Gettext formatting, the string becomes invalid.

  • Example: Missing a closing quote ".
  • Example: Breaking a variable (changing %s to % s).
  • Example: Messing up the msgid_plural count.

When WordPress encounters a broken entry in the .mo file, it often skips it or stops reading the file entirely, reverting to the original English.

4. You Forgot to Compile (.po vs .mo)

WordPress cannot read .po files directly. It is a common misconception.

  • .po = Readable by humans (Portable Object).
  • .mo = Readable by machines (Machine Object).

If you upload a my-theme-es_ES.po file but forget to generate the matching .mo file, nothing will happen. You must compile it.

5. Caching (The Usual Suspect)

If you are using caching plugins (WP Rocket, LiteSpeed) or server-side caching (Varnish, Redis), your site might be serving a cached HTML version from before you uploaded the translation.

Fix: clear all caches, including your browser cache and object cache.

The Ultimate Fix: Valid Files from the Start

Troubleshooting file paths and names is easy. Troubleshooting corrupt syntax (Reason #3) is a nightmare.

If you use a tool that breaks your code variables or corrupts the Gettext structure, you will spend hours wondering why the file isn't working, not realizing the file itself is "poisoned."

This is why we built SimplePoTranslate.

  • Syntax Locking: We ensure every single string is syntactically valid before you download it. We lock variables like %s so they can't be broken.
  • Perfect Formatting: We generate clean, standard .po files that compile into working .mo files 100% of the time.
  • No Plugins Required: You download the file, and you know it works. You just need to upload it to the right folder.

Stop guessing why your translations are invisible. Start with a file you can trust.

Ready to translate without the headache? Start for free at SimplePoTranslate.com