【发布时间】:2016-09-11 17:56:25
【问题描述】:
我遇到了__ 函数的问题,我不确定这是否是 Cake (3.2.8)、Aura\Intl 或我的代码中的错误。我在 Cake 1.3 中尝试过同样的事情,并且它按我的预期工作,但我的期望可能就是这样,因为这就是它在 1.3 中的工作方式。 :-)
当我构建菜单时,我使用__('Teams') 之类的东西,但我也有一些页面使用__n('Team', 'Teams', count($player->teams)) 之类的东西。 i18n shell 将这些分别提取到 default.pot 中,所以当我将其翻译成法语时,是这样的:
msgid "Teams"
msgstr "Équipe"
msgid "Team"
msgid_plural "Teams"
msgstr[0] "Équipe"
msgstr[1] "Équipes"
如果我调用__('Team'),我会正确地返回“Équipe”,如果我调用__n('Team', 'Teams', $x),我会正确地返回“Équipe”或“Équipes”,具体取决于$x 的值。但是如果我打电话给__('Teams') 我会回来
Array
(
[0] => Équipe
[1] => Équipes
)
即使我去掉msgid "Teams" 部分,只留下复数定义,情况也是如此。
在 Cake 1.3 中,__('Teams') 将简单地返回“Équipes”。 (不知道它在 2.x 中会做什么,因为我完全跳过了。)那么,这是谁的 bug?
【问题讨论】:
-
In Cake 1.3, __('Teams') would simply return 'Équipes'.假设这是真的,我很惊讶——解析 po 文件的内部逻辑已经重写了好几次,但是下面两个答案中解释的基本机制并没有改变。
标签: cakephp internationalization cakephp-3.0 auraphp