我正在尝试将结果数转换为立陶宛语,并且有一些特定的规则。我会试着解释一下:
我尝试过这样的事情(使用YAML),但偶数40
与规则不符:
'%count% Results, ': '{0,*0}%count% rezultatų |{1,*1}%count% rezultatas |]1,10[%count% rezultatai |]10,20[%count% rezultatų '
甚至可以使用YAML做类似的事情吗?通过上面的例子,我得到了:
在渲染模板期间抛出了异常 (“无法选择”{0,* 0}%count%rezultatų的翻译 | {1,* 1}%count%rezultatas |] 1,10 [%count%rezultatai |] 10,20 [%count% rezultatų“with locale”lt“。仔细检查这个翻译有 正确的复数选项(例如“有一个苹果|有%计数% 苹果 “)。”)
答案 0 :(得分:4)
Symfony2的翻译仅支持ISO 31-11 notation。该格式没有您正在使用的*
野外图。现在,Symfony2无法实现您的目标。
但是,您可以扩展Symfony的Translator并添加此功能。您可以通过覆盖Symfony\Component\Translation\MessageSelector
类,添加功能然后将服务参数translator.selector.class
更改为您的类名来实现。例如:
// src/Acme/TranslationExtraBundle/Translation/MessageSelector.php
namespace Acme\TranslationExtraBundle\Translation;
use Symfony\Component\Translation\MessageSelector as BaseMessageSelector;
class MessageSelector extends BaseMessageSelector
{
public function choose($message, $number, $locale)
{
// ... your special logic
return parent::choose($message, $number, $locale);
}
}
parameters:
translator.selector.class: Acme\TranslationExtraBundle\Translation\MessageSelector
答案 1 :(得分:3)
所以我试图在Wouters回答后解决我的问题,发现有Symfony\Component\Translation\PluralizationRules
并且立陶宛语已经存在。我所要做的就是从我的翻译行中删除间隔,它现在按预期工作。
'%count% Results, ': '%count% rezultatas |%count% rezultatai |%count% rezultatų '