'permission.label'|transchoice(0, {}, 'someBundle')
使用上面的代码我在启用“sl”作为语言环境时遇到以下错误:
无法为区域设置选择“Dovoljenje | Dovoljenja”的翻译 “sl”表示值“0”。仔细检查此翻译是否正确 多个选项(例如“有一个苹果|有%数%苹果”)。
在其他语言中(英语,德语,法语,意大利语,+ 10多个)我对此没有任何问题。只有斯洛文尼亚才会破坏我的完整申请bc transchoice无法选择翻译。
例如,“权限|权限”适用于区域设置“en”和值“0”。但是在“sl”中它会抛出上述错误。
知道这里发生了什么吗?
谢谢!
答案 0 :(得分:1)
您的字符串MultiKeyDictionary<string,string,int>
只有两种选择,例如许多使用表单的语言&#34;一个&#34;和&#34;其他&#34;。
斯洛文尼亚语有更多的形式,这就是为什么你的其他语言有效,但斯洛文尼亚语没有。
查看plural rules baked into the Translation component,斯洛文尼亚语的等式如下:
"Dovoljenje|Dovoljenja"
这表明有四种形式:&#34;一种&#34; &#34; 2&#34; &#34;几个&#34;和&#34;其他&#34;。替换(1 == $number % 100) ? 0 : ((2 == $number % 100) ? 1 :
(((3 == $number % 100) || (4 == $number % 100)) ? 2 : 3));
将返回最终的&#34;其他&#34;&#34;选项为偏移量$number=0
,在您的字符串中不存在。
我不会说斯洛文尼亚语,但如果&#34;两个&#34; &#34;几个&#34;和&#34;其他&#34;可以使用相同的翻译,然后将字符串设置为[3]
,错误就会消失。