Why Isn't My WooCommerce Checkout Translating Correctly?

Why WooCommerce Checkout Text Resists Translation

WordPress and WooCommerce translations work through .po/.mo language files paired with translation function calls (__(), _e(), and similar) wrapping every translatable string in the code. Text that isn't wrapped in one of these functions, or that belongs to a plugin/theme without a translation file for the target language, simply can't be picked up by the site's active translation — it stays in whatever language it was originally written in, regardless of the site's language setting.

Common Causes of Untranslated Strings

  • A custom checkout field added via code without wrapping its label or placeholder text in a translation function, which is a common oversight in quickly written custom snippets.
  • A third-party plugin (a specific gateway, a shipping method) that either doesn't support the target language at all, or has an incomplete translation missing specific strings.
  • A theme's checkout template override with hardcoded text baked directly into the template file, bypassing the translation system entirely.
  • An outdated translation file that hasn't been updated to include newer strings introduced in a more recent WooCommerce or plugin version.

How to Fix the Translation

  1. Identify exactly which text isn't translating and where it's coming from (WooCommerce core, a specific plugin, or a theme template).
  2. For a plugin/theme without full translation support, a translation management plugin like Loco Translate can add custom translations even where the original source lacks them.
  3. For custom code, ensure all user-facing strings are properly wrapped in translation functions with a consistent text domain.
  4. Update outdated translation files after any plugin or WooCommerce version update that might have introduced new strings.

Tracing an untranslated string

  1. Check the language settings. Look at the site language under Settings → General, and make sure the translation files for that language are installed (Dashboard → Updates shows pending translation updates).
  2. Find where the string comes from. Search the plugin and theme folders for the exact English text. If it is wrapped in a translation function such as __(), it can be translated. If it is plain text in a template, it can't be translated without changing the template.
  3. Check the translation file for that plugin. Each plugin has its own text domain and its own language file. A missing or incomplete file for your language explains why one plugin's strings stay in English while WooCommerce's translate fine.
  4. Look at your multilingual plugin, if you use one. Checkout pages and strings registered by other plugins often need to be scanned and translated in that plugin's string-translation screen.

After editing translations

Keep custom translations somewhere updates won't overwrite them. Loco Translate, for example, can store edits in a separate location. After changing a translation, clear any object or page cache, since translated strings can be cached.

Need a multilingual checkout properly set up and tested? See custom WooCommerce development.

Available for new projects

NEXT STEP

Rather have it fixed than keep reading?

Based in Dhaka, Bangladesh — serving clients worldwide. Tell me what's happening and you'll have a reply within one working day.

  • Reply within one working day
  • Fixed quote before work starts
  • UK, EU and US hours covered