用于分类法的可翻译代码格式

时间:2018-09-28 作者:Alt C

https://codex.wordpress.org/Function_Reference/register_taxonomy

我有这些疑问

  • _x( \'Categories\', \'taxonomy general name\' ) 是不是taxonomy general name 文本域?这不会导致多重翻译吗
  • __( \'All Categories\' ),__( \'Edit Category\' )etc似乎没有任何文本域,是否需要

1 个回复
最合适的回答,由SO网友:Sally CJ 整理而成

_x( \'Categories\', \'taxonomy general name\' ) 是不是taxonomy general name 文本域?这不会导致多重翻译吗?

那个taxonomy general namegettext 或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是否会自动查找主题/插件的翻译条目,并且相同的文本是否会存在于另一个文本域的翻译条目中。

结束

相关推荐

Taxonomy question

我的php非常有限。我编辑现有的东西以使其工作,通常可以或多或少地理解代码在做什么,但我自己无法编写代码。我会尽力解释我的情况。我有一个Woocommerce插件,它将产品显示为列表(在表中),而不是单独的框。此表有一个单元格,用于表示产品的“名称”。我希望在每行的每个名称下的第二行显示分类法的内容。假设现在是(3列/行):第1行:名称1 |评级|添加到购物车按钮第2行:名称2 |评级|添加到购物车按钮我希望它是:行1:名称1 |评级|添加到购物车按钮分类国家/地区||第2行:名称2 |评级|添加到购物车