The gettext_with_context_{$domain} WordPress PHP filter allows you to modify the translation of text based on context information within a specific text domain.
Usage
add_filter('gettext_with_context_example_domain', 'your_custom_function', 10, 4);
function your_custom_function($translation, $text, $context, $domain) {
// Your custom code here
return $translation;
}
Parameters
$translation(string) – The translated text.$text(string) – The original text to translate.$context(string) – Context information for the translators.$domain(string) – Text domain, a unique identifier for retrieving translated strings.
More information
See WordPress Developer Resources: gettext_with_context_{$domain}
Examples
Changing a specific translation in a theme
Change the translation of ‘Read more’ in the ‘my_theme’ text domain.
add_filter('gettext_with_context_my_theme', 'change_read_more_translation', 10, 4);
function change_read_more_translation($translation, $text, $context, $domain) {
if ($text === 'Read more') {
$translation = 'Continue reading';
}
return $translation;
}
Modifying a translation based on context
Modify the translation of ‘Post’ only in the context of ‘Admin menu’.
add_filter('gettext_with_context_example_domain', 'modify_post_translation', 10, 4);
function modify_post_translation($translation, $text, $context, $domain) {
if ($text === 'Post' && $context === 'Admin menu') {
$translation = 'Article';
}
return $translation;
}
Changing a translation for a specific plugin
Change the translation of ‘Add New’ in the ‘my_plugin’ text domain.
add_filter('gettext_with_context_my_plugin', 'change_add_new_translation', 10, 4);
function change_add_new_translation($translation, $text, $context, $domain) {
if ($text === 'Add New') {
$translation = 'Create New';
}
return $translation;
}
Adding a prefix to a translation
Add a prefix to the translation of ‘Save Changes’ in the ‘my_theme’ text domain.
add_filter('gettext_with_context_my_theme', 'add_prefix_save_changes', 10, 4);
function add_prefix_save_changes($translation, $text, $context, $domain) {
if ($text === 'Save Changes') {
$translation = 'Important: ' . $translation;
}
return $translation;
}
Uppercasing a specific translation
Uppercase the translation of ‘Submit’ in the ‘my_plugin’ text domain.
add_filter('gettext_with_context_my_plugin', 'uppercase_submit_translation', 10, 4);
function uppercase_submit_translation($translation, $text, $context, $domain) {
if ($text === 'Submit') {
$translation = strtoupper($translation);
}
return $translation;
}