发现了symfony/translation一个很鸡贼的地方,@walkor 呼叫老大来给看看这个问题有解吗?

alafafa

问题描述

symfony/translation 会自动识别你的语言包是不是带复数的语言
如果同样一个语言包文件放在en或fr目录下就能翻译复数,如果放在cn目录下或者你随便起的名字比如xx、yy、zz等就不能翻译复数,所有带数字判断的翻译统一给翻译成"|"之前的部分。

举个例子

英文语言包中

'pipelineCount' => 'Single Pipeline|%count% Pipelines'

如果count是1就能翻译出Single Pipeline,如果count是2就能翻译出 2 Pipelines

但是在中文语言包中

'pipelineCount' => '单一渠道|%count% 重渠道'

就无法实现了,无论count是几翻译出来的都是单一渠道

如果直接用

'pipelineCount' => '%count% 重渠道'

翻译大于1的时候没毛病,2重渠道,3重渠道...
但是1重渠道就别扭了,因为1压根就没重

汉语中有很多1有关的翻译直接翻译成 1xx 有时候很别扭的,首个、单一、头名、顶级、独自...等等的都无法实现,有谁遇到过类似问题吗,有没有解决的方案?

658 2 0
2个回答

alafafa

我在./vendor/symfony/translation-contracts/TranslatorTrait.php里面的getPluralizationRule函数里加了个'cn'就把这个问题解决了,可是直接修改vendor下面的文件并不是好的解决办法,有什么办法能在配置里屏蔽掉这个获取复数规则的函数或者添加自定义规则吗?

  • 暂无评论
walkor

我对 symfony/translation 不熟悉,不清楚怎么处理

  • 暂无评论
年代过于久远,无法发表回答
🔝