[解決済み] i18nの複数化
2023-03-20 22:20:47
質問
railsの国際化で複数形の文字列を翻訳できるようにしたいです。文字列は、:
You have 2 kids
または
You have 1 kid
pluralizeヘルパーメソッドを使えばいいのは分かっているのですが、将来的にいつビューがおかしくなってもいいように、国際化翻訳でこれを埋め込みたいのです。私は、次のように読みました。
:count
が何らかの形で複数形の翻訳に使用されることを読みましたが、それがどのように実装されるかについての実際のリソースを見つけることができません。
私は翻訳文字列で変数を渡すことができることを知っていることに注意してください。私はまた、次のようなことを試しました。
<%= t 'misc.kids', :kids_num => pluralize(1, 'kid') %>
これは問題なく動作しますが、同じアイデアの根本的な問題があります。文字列を指定する必要がある
'kid'
を複数形ヘルパーで指定する必要があります。将来的にビューの問題につながるので、そんなことはしたくありません。その代わりに、私は翻訳にすべてを保ち、ビューに何もないようにしたいのです。
どのように私はそれを行うことができますか?
どのように解決するのですか?
これを試してみてください。
en.yml
:
en:
misc:
kids:
zero: no kids
one: 1 kid
other: %{count} kids
ビューで
You have <%= t('misc.kids', :count => 4) %>
複数形の言語に対する回答を更新しました(Rails 3.0.7でテスト済み)。
ファイル
config/initializers/pluralization.rb
:
require "i18n/backend/pluralization"
I18n::Backend::Simple.send(:include, I18n::Backend::Pluralization)
ファイル
config/locales/plurals.rb
:
{:ru =>
{ :i18n =>
{ :plural =>
{ :keys => [:one, :few, :other],
:rule => lambda { |n|
if n == 1
:one
else
if [2, 3, 4].include?(n % 10) &&
![12, 13, 14].include?(n % 100) &&
![22, 23, 24].include?(n % 100)
:few
else
:other
end
end
}
}
}
}
}
#More rules in this file: https://github.com/svenfuchs/i18n/blob/master/test/test_data/locales/plurals.rb
#(copy the file into `config/locales`)
ファイル
config/locales/en.yml
:
en:
kids:
zero: en_zero
one: en_one
other: en_other
ファイル
config/locales/ru.yml
:
ru:
kids:
zero: ru_zero
one: ru_one
few: ru_few
other: ru_other
テスト :
$ rails c
>> I18n.translate :kids, :count => 1
=> "en_one"
>> I18n.translate :kids, :count => 3
=> "en_other"
>> I18n.locale = :ru
=> :ru
>> I18n.translate :kids, :count => 1
=> "ru_one"
>> I18n.translate :kids, :count => 3
=> "ru_few" #works! yay!
>> I18n.translate :kids, :count => 5
=> "ru_other" #works! yay!
関連
-
[解決済み】gemのインストールができない - gemネイティブ拡張の構築に失敗 - そのようなファイルをロードできない -- mkmf (LoadError)
-
[解決済み] Railsです。NameError: 初期化されていない定数
-
[解決済み] heroku open - no app specified
-
[解決済み] Mac OS Xにhomebrewがインストールされているかどうかを確認する方法
-
[解決済み] heroku push rejected, failed to compile Ruby/rails app
-
[解決済み] Oauth2 Instagram API "リダイレクトURIが登録されたリダイレクトURIと一致しない"
-
[解決済み] rails erb フォームヘルパー options_for_select :selected
-
[解決済み] Ruby on rails アプリで ES6 (ES2015) を使用するにはどうすればよいですか?
-
[解決済み] 属性とカラムの違いは何ですか?
-
[解決済み] Rails I18n バリデーション非推奨の警告
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Bundler: コマンドが見つからない
-
[解決済み】bcrypt LoadError: Cannot load such file
-
[解決済み] Ruby/Rails の「フック」とは何ですか?
-
[解決済み] gemのインストールができない - gemネイティブ拡張の構築に失敗 - そのようなファイルをロードできない -- mkmf (LoadError)
-
[解決済み] 新規ユーザー作成時に ActiveModel::ForbiddenAttributesError が発生する。
-
[解決済み] Mac OS Xにhomebrewがインストールされているかどうかを確認する方法
-
[解決済み] デバイスを使用する現在のユーザーメソッド
-
[解決済み] Railsでpng画像を文字列形式で表示するには?
-
[解決済み] Oauth2 Instagram API "リダイレクトURIが登録されたリダイレクトURIと一致しない"
-
[解決済み] Ruby:Rubyの配列にinclude.の反対はある?