The load_textdomain_mofile WordPress PHP Filter allows you to modify the MO file path for loading translations for a specific text domain.
Usage
add_filter('load_textdomain_mofile', 'my_custom_load_textdomain_mofile', 10, 2);
function my_custom_load_textdomain_mofile($mofile, $domain) {
// your custom code here
return $mofile;
}
Parameters
- $mofile (string): Path to the MO file.
- $domain (string): Text domain. Unique identifier for retrieving translated strings.
More information
See WordPress Developer Resources: load_textdomain_mofile
Examples
Change MO File Path
Modify the MO file path to load translations from a custom location.
add_filter('load_textdomain_mofile', 'change_mo_file_path', 10, 2);
function change_mo_file_path($mofile, $domain) {
if ('my-text-domain' === $domain) {
$mofile = '/custom/path/to/your/mo/file.mo';
}
return $mofile;
}
Load Different MO File Based on User Language
Load a different MO file depending on the user’s language preference.
add_filter('load_textdomain_mofile', 'load_user_language_mo_file', 10, 2);
function load_user_language_mo_file($mofile, $domain) {
if ('my-text-domain' === $domain) {
$language = get_user_meta(get_current_user_id(), 'language', true);
$mofile = '/path/to/your/mo/files/' . $language . '.mo';
}
return $mofile;
}
Rename Text Domain
Rename the text domain to load translations with a different domain.
add_filter('load_textdomain_mofile', 'rename_text_domain', 10, 2);
function rename_text_domain($mofile, $domain) {
if ('old-text-domain' === $domain) {
$mofile = str_replace('old-text-domain', 'new-text-domain', $mofile);
}
return $mofile;
}
Load Plugin Translations from Theme Directory
Load translations for a plugin from the active theme’s directory instead of the plugin’s directory.
add_filter('load_textdomain_mofile', 'load_plugin_translations_from_theme', 10, 2);
function load_plugin_translations_from_theme($mofile, $domain) {
if ('plugin-text-domain' === $domain) {
$mofile = get_stylesheet_directory() . '/languages/plugin-text-domain.mo';
}
return $mofile;
}
Check MO File Existence
Check if the MO file exists before loading it, and fall back to the default language if it doesn’t.
add_filter('load_textdomain_mofile', 'check_mo_file_existence', 10, 2);
function check_mo_file_existence($mofile, $domain) {
if (!file_exists($mofile) && 'my-text-domain' === $domain) {
$mofile = '/path/to/your/default/mo/file.mo';
}
return $mofile;
}