WordPress Development Stack Exchange is a question and answer site for WordPress developers and administrators. It's 100% free, no registration required.

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I'm trying to localize the singular name of a custom post type.

'singular_name' => __('key', 'plugindomain')

I created a .po and compiled it as .mo. I also loaded the translation using load_plugin_textdomain using the init action.

// $directory plugin directory relative to plugins dir
load_plugin_textdomain('plugindomain', false, $directory);

The string are localized correctly in the backend sidebar. However, the strings are not translated in the frontend with:

// $post_type returned from get_post_type_object
echo $post_type->labels->singular_name;

Am I doing something wrong?


Apparently the problem is related to Polylang. Strings are loaded before the multilanguage plugin mentioned sets the current language during the execution. Is there a way to trigger the registration of post types after the language changes made by Polylang have had their effect?

share|improve this question

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Browse other questions tagged or ask your own question.