5

ローカライズする必要がある次の文があります。

U 件の未読メッセージと N 件の新しいメッセージがあります

ローカリゼーションの例

U 0 N 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 に答える