我的目标是更改WordPress中使用的一些文本字符串。到目前为止,我已经下载了官方WordPress .pot file并将其保存在wp-content / lanuages / wordpress.pot下。我有Poedit的副本,我已准备好开始编辑。
在config.php中,我不确定是define('WPLANG', 'en');
还是define('WPLANG', 'en_US');
。我的网站访问者来自英国和美国等英语国家。我应该使用非特定的命名约定,例如en
,还是必须添加国家/地区代码,例如en_US
?
答案 0 :(得分:1)
在阅读了我的评论答案之后。
直接回答您的问题:任何名称(例如xx_XX
)都可以使用,您可以创建自己的名称。
官方语言代码can be found here(因为wordpress正在使用gettext
实用程序)但是就像我说的那样,将语言定义为xx_XX
然后声明define ('WPLANG', 'xx_XX');
确实可行正如所料。
我已经在非常极端的情况下(字面意思是xx_XX
)
HOWEVER:
这不是解决问题的正确方法。
原因是如果应用标准代码(en_US),您的新翻译将在每次更新时被覆盖,而且,您将很难维护它。 第二个原因是这只是一种不好的做法。
正确的方法是过滤输出,你有一个非常方便的过滤器,仅用于名为gettext
的过滤器。
您可以将其用作(对于单个字符串):
function my_own_translation( $translated_text ) {
if ( $translated_text == 'The old translation string' ) {
$translated_text = 'My better translation string';
}
return $translated_text;
}
add_filter( 'gettext', 'my_own_translation', 20 );
或者如果您有多个
function my_own_translation( $translated_text ) {
switch ( $translated_text ) {
case 'Old translation string 1' :
$translated_text = 'New Translation string 1';
break;
case 'Old translation string 2' :
$translated_text = 'New Translation string 2';
break;
case 'Old translation string 3' :
$translated_text = 'New Translation string 3';
break;
}
return $translated_text;
}
add_filter( 'gettext', 'my_own_translation', 20 );
当然,如果你有很多字符串,数组会派上用场..
function my_own_translation( $translated ) {
$text = array(
'Old translation string 1' => 'New Translation string 1',
'Old translation string t 2' => 'New Translation string 2',
'Old translation string 3' => 'New Translation string 3',
);
$translated = str_ireplace( array_keys($text), $text, $translated );
return $translated;
}
add_filter( 'gettext', 'my_own_translation', 20 );
只需从中创建一个插件 - 你就完成了。
编辑我
在发布后阅读我的代码,并考虑到我们正在处理翻译,真正正确的方法是:
$translated_text = __( 'This is my new cool translateion', 'my_domain' );
此外,现在人们倾向于使用最优秀的codestyling localization,而不是poedit实用程序。它会让你的生活更轻松..
答案 1 :(得分:-1)
我在http://codex.wordpress.org/Installing_WordPress_in_Your_Language
中看到了答案下载适合您语言的.mo语言文件(请参阅WordPress中的 你的语言提示如何找到一个)。命名约定 .mo文件基于ISO-639语言代码(例如,pt for 葡萄牙语)其次是ISO-3166国家代码(例如_PT) 葡萄牙或巴西的_BR)。所以,巴西葡萄牙文件会 称为pt_BR.mo,将调用非特定的Portuges文件 pt.mo.