I have successfully translated a child theme, but not the same result in mu-plugins folder.

The name of the plugin is "mu-functions.php". In this file I have added the "Text Domain: mu-functions" in the header and then I have loaded the textdomain:

add_action( 'plugins_loaded', 'myplugin_muload_textdomain' );
function myplugin_muload_textdomain() {
load_muplugin_textdomain( 'mu-functions', basename( dirname(__FILE__) ) . '/inc/languages' );

The structure of the plugin that I have created in the mu-plugins directory is the following:

In the same directory I have a "inc"(include) folder where I put all the other files that are being called through the "include_once()" function in "mu-function.php" file. Along with this files, in the same "inc" folder directory, I have the "languages" folder where I have created the "mu-functions.pot" file that has been translated to Portuguese and then generated to both ".mo" and ".po" files.

In my child theme I had an issue with these ".mo" and ".po" files. I have found in another forum that I had to name them only by the locale (so in this case "pt_PT") and not "Text-Domain-pt_PT". This issue has been successfully solved. Being so, for testing purposes I have generated 2 more other ".mo" and ".po" files. These are the files that are in my languages folder:

  • mu-functions-pt_PT.mo
  • mu-functions-pt_PT.po
  • mu-functions.pot
  • pt_PT.mo
  • pt_PT.po

Can anybody, please, help me? What am I missing?

2 Answers 2


You need to use another action when in a mu-plugins.

add_action('muplugins_loaded', 'myplugin_muload_textdomain');

plugins_loaded action work only after active plugins and pluggable functions are loaded.

mu-plugins are not regular plugins and will not be loaded like them.

As you can see in the following link, mu-plugins are loaded before anything else. Actions Run During a Typical Request

  • Thank you for the very useful answer and link for the Plugin API. It definitely helped, but it's still missing something else. Dec 15, 2016 at 16:01
  • What's happen if you put you languages file in wp-content/languages/mu-plugins/ ?
    – Benoti
    Dec 15, 2016 at 16:06
  • I made sure to assign a new path that points into the "inc/" folder when placing in the catalog properties [witch gave me something like "../../mu-plugins/inc/"]. However nothing has changed. Dec 15, 2016 at 16:45
  • Then I remembered to change the function 'function myplugin_muload_textdomain() { load_muplugin_textdomain( 'mu-functions', basename( dirname(FILE) ) . '/languages/mu-plugins' ); }' but not successful Dec 15, 2016 at 17:13
  • No something like WP_CONTENT . '/languages/mu-plugins/your-slug/...
    – Benoti
    Dec 15, 2016 at 17:16

The problem was the line:

load_muplugin_textdomain( 'mu-functions', basename( dirname(__FILE__) ) . '/inc/languages' );

and more specifically the function:

basename( dirname(__FILE__) ) 

Since my plugin and language folder is in the root of mu-plugins folder, the correct code is:

load_muplugin_textdomain( 'mu-functions', 'lang' );

I've found more info in that in the following links: https://codex.wordpress.org/Function_Reference/plugins_url http://thedaneshproject.com/posts/what-does-dirname__file__-and-basenamedirname__file__-do/

I guess I have to play more to understand it if I want to put my plugin as a subdirectory mu-plugin folder.

Sorry for the delay Benoti, and thank you for the support!

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.