【发布时间】:2015-03-10 08:18:34
【问题描述】:
在zf2 中,您有视图助手translatePlural。可以如下使用;
echo $this->translatePlural('car', 'cars', $num);
所以当$num == 1 它说car 否则cars (取决于复数规则,但现在使用英文规则)。
要翻译这个,按文件。您必须使用类似的数组;
'car' => [
'auto',
'autos',
],
所以现在你得到auto if $num == 1 else autos。
如果您的代码中有其他地方需要翻译car,您可以使用translate('car'),但这将返回通知array to string coverstion,这显然不是我们想要的。
因此,为了能够仅翻译 car 并使用复数形式,我现在必须将代码修改为类似;
echo $this->translatePlural('car_plural', 'cars', $num);
还有语言配置;
'car_plural' => [
'auto',
'autos',
],
'car' => 'auto',
您需要为car_plural 添加英文翻译。因此,translatePlural 默认消息在默认设置中变得非常无用,除非您使用 translatePlural 不是为了翻译,而是为了在 car 或 cars 之间进行选择而不是翻译它。
但是,如果 translatePlural 只是查看 $num,则使用 pluralRule 在单数(汽车)或复数(汽车)之间进行选择。然后使用translate帮助器翻译单数或复数,你可以有一个简单的配置,并且默认消息一下子又工作了;
'car' => 'auto',
'cars' => 'autos',
没有奇怪的键,你不需要英文翻译或其他奇怪的东西。
所以问题 /tldr;
为什么 ZF2 复数使用数组而不只是检查使用哪个数组并翻译那个数组?在我看来,这是一种更好的方法。
【问题讨论】:
标签: php zend-framework2 zend-translate