Answers:
您可以使用gettext过滤器:
add_filter( 'gettext', 'cyb_filter_gettext', 10, 3 );
function cyb_filter_gettext( $translated, $original, $domain ) {
// Use the text string exactly as it is in the translation file
if ( $translated == "Categorie: %s" ) {
$translated = "Sectie: %s";
}
return $translated;
}
如果您需要使用上下文过滤翻译,请使用gettext_with_context
filter:
add_filter( 'gettext_with_context', 'cyb_filter_gettext_with_context', 10, 4 );
function cyb_filter_gettext_with_context( $translated, $original, $context, $domain ) {
// Use the text string exactly as it is in the translation file
if ( $translated == "Categorie: %s" ) {
$translated = "Sectie: %s";
}
return $translated;
}
带上下文的翻译意味着在用于翻译字符串的gettext函数中提供了上下文。例如,这是没有上下文的:
$translated = __( 'Search', 'textdomain' );
这是与上下文相关的:
$translated = _x( 'Search', 'form placeholder', 'textdomain' );
类似的过滤器可用于复数翻译([_n()][2]
和[_nx()][2]
):ngettext
和ngettext_with_context
。
gettext
过滤器不会捕获使用“上下文”字符串的翻译,而这些将需要gettext_with_context。
return $domain != 'child-domain' && ( $new = __( $original, 'child-domain' ) ) != $original ? $new : $translated;
。这样,我可以将主要翻译保留在子主题的PO文件中,而不用将它们连接到功能代码中。