如何生成 gettext 复数形式表达式的示例? 用Python?
给定 gettext Plural-Forms 行,为每个 n
提供一些示例值。 我希望网站翻译人员能够在网络界面中使用此功能,以便他们知道将哪种复数形式放在哪里。 例如,给出:
“复数形式:nplurals=3;plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n% ”
"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
...我希望第一个文本字段是标记为“1, 21..”,然后是“2, 3, 4...”,然后是“5, 6...”(不确定这是否完全正确,但你明白了。)
现在最好的我能想到的是以某种方式解析表达式,然后从 0 到 100 迭代 x 并查看它产生什么 n 。 这不能保证有效(如果某些语言的最低 x 超过 100 怎么办?),但它可能已经足够好了。 有更好的想法或现有的 Python 代码吗?
Given a gettext Plural-Forms line, general a few example values for each n
. I'd like this feature for the web interface for my site's translators, so that they know which plural form to put where. For example, given:
"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
... I want the first text field to be labeled "1, 21..", then "2, 3, 4...", then "5, 6..." (not sure if this is exactly right, but you get the idea.)
Right now the best thing I can come up with is to parse the expression somehow, then iterate x from 0 to 100 and see what n it produces. This isn't guaranteed to work (what if the lowest x is over 100 for some language?) but it's probably good enough. Any better ideas or existing Python code?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
既然已经晚了,那我就咬牙切齿吧。
以下解决方案很hacky,依赖于将复数形式转换为可以计算的Python代码(基本上将 x ? y : z 语句转换为Python x 和 y 或 z 等效项,并将 &&/|| 更改为和/或)
我不确定你的复数形式规则是否是一个人为的例子,我不明白你的第一个文本字段的意思,但我相信你会明白我的意思示例解决方案:
Given that it's late, I'll bite.
The following solution is hacky, and relies on converting your plural form to python code that can be evaluated (basically converting the x ? y : z statements to the python x and y or z equivalent, and changing &&/|| to and/or)
I'm not sure if your plural form rule is a contrived example, and I don't understand what you mean with your first text field, but I'm sure you'll get where I'm going with my example solution: