_x( \'Categories\', \'taxonomy general name\' )
是不是taxonomy
general name
文本域?这不会导致多重翻译吗?
那个taxonomy general name
是gettext 或POT文件中使用的翻译上下文。文本域是third parameter, 默认为default
.
来自Codex:
有时,一个术语在多个上下文中使用。虽然它在英语中是同一个单词,但在某些语言中可能需要进行不同的翻译。例如,单词“Post”既可以用作动词(“单击此处发表评论”),也可以用作名词(“编辑此帖子”)。在这种情况下_x()
应使用函数。类似于__()
, 但它还有第二个参数——上下文:
if ( false === $commenttxt ) $commenttxt = _x( \'Comment\', \'noun\', \'my-text-domain\' );
if ( false === $trackbacktxt ) $trackbacktxt = __( \'Trackback\', \'my-text-domain\' );
if ( false === $pingbacktxt ) $pingbacktxt = __( \'Pingback\', \'my-text-domain\' );
...
// some other place in the code
echo _x( \'Comment\', \'column name\', \'my-text-domain\' );
“
会不会导致多重翻译?”—是的,会的。但这就是为什么
_x()
具有上下文参数。它可以帮助您(作为开发人员)根据上下文检索正确的翻译。(调用时必须始终指定上下文
_x()
.)
<小时>__( \'All Categories\' ),__( \'Edit Category\' )
etc似乎没有任何文本域,是否需要?
就像_x()
函数,调用时__()
, _e()
, 等等。在不指定文本域的情况下,文本域默认为default
; 因此:
__( \'All Categories\' )
相当于__( \'All Categories\', \'default\' )
__( \'Edit Category\' )
相当于__( \'Edit Category\', \'default\' )
也就是说,文本域是可选的
__()
用法
如果你希望你的插件/主题是可翻译的(即本地化/国际化),那么是的,你的插件/主题应该有一个文本域,并且在使用__()
, _e()
, 或者WordPress中的其他翻译/获取文本功能。
希望能有所帮助,要想在WordPress中获得关于国际化和本地化的深入指南,请查看Codex. =)
更新这里有一个更精确的解释default
文本域:
WordPress加载时,将加载MO(.mo
) 默认文本域的文件default
作为其唯一标识符。默认情况下,MO文件存储在wp-content/languages
; 因此,如果您的站点语言为意大利语,则加载到文本域中的MO文件之taxonomy general name
二 是wp-content/languages/it_IT.mo
.
例如,当您调用__()
作用without 指定文本域,或使用文本域default
, 像这样:
__( \'All Categories\' )
__( \'All Categories\', \'default\' )
然后WordPress将使用从
default
\'s MO文件(例如。
wp-content/languages/it_IT.mo
) 并在这些翻译条目中查找文本的翻译。
因此,如果您希望WordPress查找从主题或插件的MO文件解析的翻译条目,请确保指定正确的文本域,如下所示:
__( \'All Categories\', \'my-theme\' )
__( \'All Categories\', \'my-plugin\' )
因为省略了文本域(或将其设置为
default
) WordPress是否会自动查找主题/插件的翻译条目,并且相同的文本是否会存在于另一个文本域的翻译条目中。