【问题标题】:Symfony transchoice can't choose a translation when value is "0" and language "slovenian"当值为“0”且语言为“斯洛文尼亚语”时,Symfony transchoice 无法选择翻译
【发布时间】:2018-04-26 12:13:18
【问题描述】:
'permission.label'|transchoice(0, {}, 'someBundle')

使用上面的代码在启用“sl”作为语言环境时出现以下错误:

无法为“Dovoljenje|Dovoljenja”选择语言环境的翻译 “sl”代表值“0”。仔细检查此翻译是否正确 复数选项(例如“有一个苹果|有 %count% 个苹果”)。

使用其他语言(英语、德语、法语、意大利语、+10 多种语言)我对此没有任何问题。只有斯洛文尼亚语打破了我的完整申请,因为 transchoice 无法选择翻译。

例如,“Permission|Permissions”适用于区域设置“en”和值“0”。但是在“sl”中会抛出上述错误。

知道这里发生了什么吗?

谢谢!

【问题讨论】:

    标签: symfony localization twig


    【解决方案1】:

    您的字符串"Dovoljenje|Dovoljenja" 只有两个选择,就像许多使用“一个”和“其他”形式的语言一样。

    斯洛文尼亚语的形式比这多,这就是为什么您的其他语言可以使用,而斯洛文尼亚语却不行。

    查看plural rules baked into the Translation component,斯洛文尼亚语的方程式如下:

    (1 == $number % 100) ? 0 : ((2 == $number % 100) ? 1 : 
    (((3 == $number % 100) || (4 == $number % 100)) ? 2 : 3));
    

    这表示有四种形式:“一”“二”“少”和“其他”。替换$number=0 将返回最终的“其他”选项作为偏移量[3],它在您的字符串中不存在。

    我不会说斯洛文尼亚语,但如果“two”、“few”和“other”都可以有相同的翻译,那么将你的字符串设置为"Dovoljenje|Dovoljenja|Dovoljenja|Dovoljenja",错误就会消失。

    【讨论】:

      猜你喜欢
      • 2015-04-14
      • 2013-11-24
      • 2011-10-19
      • 1970-01-01
      • 2012-02-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-13
      • 2019-11-01
      相关资源
      最近更新 更多