我正在寻找一种简单、适当、优雅的方法来处理Rails应用程序中Gettext的语法性别,就像n_()
方法处理复数一样。
这在英语中没有意义,因为单词不会随性别而变化,但在翻译成西班牙语时却会变化,his/her在英语中是一个很好的用例,在翻译成西班牙语时这是非常需要的。
举个例子:
考虑用户Pablo(男性)和Ana María(女性)。
_('%{user} is tall') & {:user => user.name}
应翻译为
'Pablo es alto'
'Ana María es alta'
当然,我们可以访问user.gender
有什么想法吗?
干杯!
3条答案
按热度按时间kx1ctssn1#
使用标准的gettext特性,这可以通过上下文来解决。
或
这将在gettext目录中生成两个单独的字符串,分别用“Male”和“Female”上下文标记它们。
6qfn3psc2#
不幸的是没有。这是gettext系统的一个局限性--除了数字之外,语言特征是基于你键入的语言的。如果你用西班牙语键入所有的字符串,它就可以工作。
另一种选择是为了翻译的目的在字符串后面附加一个字符,然后将其去掉。
我不熟悉Ruby,但伪代码的基本思想是:
e37o9pze3#
使用gettext的复数形式机制怎么样?通常使用参数n来区分单数和复数形式。
现在,假设用n来定义你的性别,而不是用数量来定义,那么n=1表示女性(不是单数),n=2(或n〉1)表示女性(不是复数)。