Translation of plugin in MU-PLUGINS directory not working

WordPress Development Asked by Eduardo Leão on August 10, 2020

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.po
  • mu-functions.pot
  • pt_PT.po

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

2 Answers

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:

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!

Answered by Eduardo Leão on August 10, 2020

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

Answered by Benoti on August 10, 2020

Add your own answers!

Related Questions

How to handle image resize in media_handle_sideload?

1  Asked on January 10, 2021 by user1692333


apiFetch security

1  Asked on January 9, 2021


Use cron to create a non blocking task

2  Asked on January 7, 2021 by cyclonecode


Creating a slider shortcode to use with bxslider

0  Asked on January 6, 2021 by devsem


Redirect Admin User in Dashboard

4  Asked on January 5, 2021 by plumwd


Adding featured image to a new post using front-end form?

1  Asked on January 3, 2021 by davood-kazemi


Hook when post is set from published to draft?

1  Asked on January 2, 2021 by anton-emery


How to execute filter with WP Cli?

0  Asked on January 2, 2021 by efbi


Get HTTP response code on non-2xx apiFetch request

0  Asked on January 1, 2021 by nicholas-harris


Ask a Question

Get help from others!

© 2022 All rights reserved. Sites we Love: PCI Database, MenuIva, UKBizDB, Menu Kuliner, Sharing RPP