1


1

モデルデータの国際化

I18nでRails(3.0.1)のモデルデータを変換する方法がわかりません。

状況の例:

登録者が自分のスポーツを選択するフォームがあります。 スポーツセレクトは、以下を呼び出すことで入力されるドロップダウンです:

Sport.all.collect{ |s| [s.name, s.id]}

私は素朴に書きたいと思っています:

Sport.all.collect{ |s| [t(s.name), s.id]}

しかし、「トラックとフィールド」のような名前を検索するためにレールがどのように知るかはわかりません。 異なる言語で名前を提供するにはどうすればよいですか? これを実装するためのベストプラクティスは何ですか?

皆さんありがとう!

2 Answer


2


`Sport`がデータベースのモデルである場合、データベースにも翻訳を保存する方が良いでしょう。 Sportモデルに「言語」列を追加し、

Sport.where(:language => I18n.locale).collect{|s| [s.name, s.id]}


0


最も適切な方法はhttps://github.com/svenfuchs/globalize3[globalize3]を使用することだと思います

globalize gemが `db:migrate`の間に一括割り当てエラーを発生させる場合、初期化子に次のコードを追加します。

Globalize::ActiveRecord::Translation.class_eval do
  attr_accessible :locale
end