覆盖默认WordPress核心转换

时间:2015-05-14 作者:Florian

WordPress设置为荷兰语。当我使用get_the_archive_title() 我的主题在类别存档页面上正确输出“分类:类别名称”。不过,我想读一下“部门:类别名称”。

我不想更改wp content/languages文件夹中的荷兰语文件,因为该文件将由WordPress更新更新。

我试着复制那个翻译文件,修改“类别”翻译,并放入新的nl\\U nl。将mo文件转换为我的主题/语言。这没有任何效果。

如何在不更改核心翻译文件的情况下实现某些字符串的不同翻译?

3 个回复
最合适的回答,由SO网友:cybmeta 整理而成

你可以使用gettext filter:

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]): ngettextngettext_with_context.

SO网友:GoldyOnline

我正要使用;add\\u filter(\'gettext\'…“解决方案建议如上,但请阅读https://developer.wordpress.org/reference/hooks/gettext/ 这种解决方案可能会对性能产生相当负面的影响。因此,我建议尽可能采用其他解决方案。在我的例子中,我可以将主题模板文件复制到我的子主题,并编辑模板文件中的字符串。这可能是一个很好的解决方案,但对于模板文件中未显示的字符串,它当然没有帮助。

附言:我本想加上这个作为评论,但不幸的是,我还不允许这样做。

SO网友:Maciek Łoziński

也可以使用get_the_archive_title 过滤你的函数。php:

function archive_title_modify( $title ) {
    return str_replace(\'Categorie: \', \'Sectie: \', $title);
}
add_filter(\'get_the_archive_title\', \'archive_title_modify\');
其优点是每页只调用一次,而不是像gettext 滤器

结束

相关推荐

主题的文本域和language.PO文件不起作用

我无法让我的翻译在我的主题中工作。这是我的在函数中。php,我有:load_theme_textdomain( \'transparent\', get_template_directory_uri() .\'/languages\' ); 我有/主题/语言/透明-en\\U US。采购订单,其中包含:# English translations for Transparent package. # Copyright (C) 2014 Steven Doig # This fi