在插件中使用翻译的分类标签

时间:2014-02-04 作者:P_Enrique

我正在编写一个与分类术语相关的插件。除其他外,它还具有创建新术语的能力。我将假设,如果用户有自定义的分类法,他们已经注意到单数和复数名称的设置和翻译。

问题是:如何格式化插件消息以使用分类法的翻译标签?

我需要输出以下消息:

“创建了1个类别。”据我所知,分类法的(翻译)单数和复数标签如下所示$term_object->labels->singular_name$term_object->labels->name.

假设这些属性包含已翻译的字符串是否正确?还是有必要用一些i18n函数来包装它们?

这个_n() 以及_nx() 函数提供了单数和复数形式,但使用它们没有意义。我一直在使用:

$message = sprintf( 
    \'Created %d %s\', 
    count($created), 
    count($created) == 1 ?
        $term_object->labels->singular_name
        : $term_object->labels->name 
);
这里的最佳做法是什么?

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

您必须使用复数感知函数,如_n()_nx(), 因为数字周围的单词在某些语言中可能会发生变化,具体取决于金额项目
对于可见数字,请使用number_format_i18n()%s, 不%d.

您不能重复使用标签,因为在某些语言中,复数形式会根据上下文发生变化。

下面是我将如何编写您的示例:

// bare number, needed for _n()
$num  = count( $created );

// Singular or plural, we use %s, because we don\'t know what 
// number_format_i18n() will return.
$text = _n(
    \'Created %s category\',
    \'Created %s categories\',
    $num,
    \'unique_plugin_textdomain\'
);
// thousands separator etc.
$display_number = number_format_i18n( $num );
// Finally, the result:
$message        = sprintf( $text, $display_number );

SO网友:Rarst

register_taxonomy() 需要翻译标签的数组和get_taxonomy_labels() 提供已转换的默认回退。

您不需要另外通过转换函数传递标签,因为它们假定已经通过了转换函数。

请注意,您确实需要翻译自己的自定义字符串(Created...).

结束

相关推荐

意外删除了wp_options数据库表的active_plugins部分

好吧,所以我很确定我在这里完蛋了,因为我没有数据库备份,但我想我还是问问以防万一。在PhpMyAdmin中,我的意思是只需转到wp\\u options表并清空该表中的active\\u plugins部分,因为插件错误而无法登录。我点击了删除按钮,而不是清空它。是否有任何方法可以手动添加此表的active\\u插件部分?我尝试了修复数据库的方法,但没有成功。