5

我有以下句子需要本地化:

你有 U 条未读消息和 N 条新消息

示例本地化

0 无 1

“您有 1 条新消息”

U 1 N 1

“您有 1 条未读消息和 1 条新消息”

U 1 N 0

“您有 1 条未读消息”

U 2 N 0

“您有 1 条未读消息”

我可以很容易地开始处理这个烂摊子

unread_only: 
  one: you have 1 unread message
  other: you have {{count}} unread messages 

new_only: 
  one: you have 1 new message
  other: you have {{count}} new messages 

...在这一点上我被卡住了

# how do I pass two counts in?
new_and_unread:

我知道 Rails 中的 i18n 不是 ICU MessageFormat,但是,是否有一些理智的方法可以使用我们拥有的工具进行本地化?您可以将 2 个计数传递给本地化开关吗?

4

1 回答 1

5

我的第一个想法是使用类似的东西:

unread: 
  one: 1 unread message
  other:{{count}} unread messages 

new: 
  one: 1 new message
  other: {{count}} new messages 


I18n.t('you_have') << [msg1,msg2].map(&:presence).compact.join(I18n.t('and'))

但这可能不适用于每种语言。只是西方的。

这里有更多信息: http: //guides.rubyonrails.org/i18n.html#passing-variables-to-translations

new_and_unread: "You have %{new} new, and %{unread} unread messages"

<%=t 'new_and_unread', :new => 1, :unread => 3 %>
于 2013-05-30T00:21:34.870 回答