The override_load_textdomain WordPress PHP filter allows you to override the loading of .mo files for translations. This is useful when you want to handle translations differently or load them from a custom source.
Usage
add_filter('override_load_textdomain', 'your_custom_function', 10, 4);
function your_custom_function($override, $domain, $mofile, $locale) {
// your custom code here
return $override;
}
Parameters
$override(bool): Whether to override the .mo file loading. Default false.$domain(string): Text domain. Unique identifier for retrieving translated strings.$mofile(string): Path to the MO file.$locale(string|null): Locale.
More information
See WordPress Developer Resources: override_load_textdomain
Examples
Override loading of a specific .mo file
In this example, the loading of the .mo file for the “my-plugin” text domain is overridden and a custom loading mechanism is used.
add_filter('override_load_textdomain', 'override_my_plugin_translation', 10, 4);
function override_my_plugin_translation($override, $domain, $mofile, $locale) {
if ($domain === 'my-plugin') {
// Implement custom loading for 'my-plugin' translations
return true; // Override the .mo file loading
}
return $override;
}
Load translations from a custom location
In this example, translations for the “my-plugin” text domain are loaded from a custom location.
add_filter('override_load_textdomain', 'load_my_plugin_translation_from_custom_location', 10, 4);
function load_my_plugin_translation_from_custom_location($override, $domain, $mofile, $locale) {
if ($domain === 'my-plugin') {
$custom_mofile = "/path/to/your/custom/mo/files/{$domain}-{$locale}.mo";
load_textdomain($domain, $custom_mofile);
return true;
}
return $override;
}
Override loading of all .mo files
In this example, the loading of all .mo files is overridden and a custom loading mechanism is used.
add_filter('override_load_textdomain', 'override_all_translations', 10, 4);
function override_all_translations($override, $domain, $mofile, $locale) {
// Implement custom loading for all translations
return true;
}
Load translations only for a specific locale
In this example, translations are only loaded for the “en_US” locale.
add_filter('override_load_textdomain', 'load_translations_for_specific_locale', 10, 4);
function load_translations_for_specific_locale($override, $domain, $mofile, $locale) {
if ($locale === 'en_US') {
return $override;
}
return true; // Prevent loading for other locales
}