If parts of your plugin or theme appear untranslated after using PTC, use this guide to check whether the string is part of your project and whether WordPress is loading the correct file.
Check if the String Is Available in PTC
From the PTC dashboard, go to the Translations tab and search for the original string. If you don’t see it, PTC didn’t receive it. This usually means one of the following:
- The string is missing from your POT file
If your POT doesn’t include all translatable strings, recreate it using WP-CLI. Then, follow the steps in our WordPress theme and plugin internationalization guide from the start.
- The text isn’t wrapped in a GetText function
Make sure all translatable text is wrapped in __() or _e() and uses the correct text domain.
Example:
__('Hello, world!', 'your-plugin');For more details, see Step 2 of our WordPress theme and plugin translation guide.
- JavaScript strings weren’t marked as translatable
If your plugin includes translatable text in JavaScript:
- Go to PTC → Settings and click on Monitored Files. Edit the relevant resource file, and enable “Is this a WordPress project with localizable JavaScript?”

This tells PTC to scan JavaScript files for translatable strings. It will regenerate translations and create a new merge request with updated files.
- Make sure WordPress knows where to load the
.jsontranslation files created by PTC.
If the .json files are placed inside your plugin or theme’s /languages/ directory, call wp_set_script_translations() with the correct path.
For plugins:
wp_set_script_translations( 'script-handle', 'text-domain', plugin_dir_path( __FILE__ ) . 'languages' );For themes:
wp_set_script_translations( 'script-handle', 'text-domain', get_template_directory() . '/languages' );This explicitly tells WordPress to load .json files from your plugin or theme folder.
Confirm WordPress Is Loading Your Translation Files
If your translated string appears in PTC but doesn’t show up in your plugin or theme, WordPress may not be loading the correct .mo file.
- Verify That Your Text Domain Is Loaded
If your project uses multiple text domains or embedded plugins, make sure each one is properly loaded using load_plugin_textdomain() or load_theme_textdomain().
Each text domain should match the one used in your translation file names and in your PTC export.
- Prevent Community Translations from Overriding Your MO Files
By default, WordPress prioritizes translation files stored in /wp-content/languages/.
If your plugin or theme has community-provided translations on WordPress.org, those files can override the .mo files bundled with your project.
To prevent this from happening, add a small snippet telling WordPress to use your translation files.
Make Sure MO File Naming Matches WordPress Expectations
WordPress expects different naming conventions for .mo files depending on where you store them.
- If your translation files are inside your theme folder, use:
{locale}.mo
Example: de_DE.mo (paired with de_DE.po)
- If you placed the files in the global WordPress language directory (wp-content/languages/themes/), use:
{text-domain}-{locale}.mo
Example: my-theme-de_DE.mo (paired with my-theme-de_DE.po)