2011-06-14 3 views
4

Railsで数千の製品ラベルを国際化する最良の方法は何ですか? YAMLファイルに1000個のラベルをすべて入力する必要がありますか?それとももっと良い解決策がありますか?Railsで数千の製品ラベルの国際化

何か助けてください:)

答えて

4

Railsは、翻訳用にYAML以外のストレージをサポートしています。テーブルに翻訳を保存する場合は、i18n-active_record gemを使用してください。

カスタマイズ可能なI18nバックエンドでRailscastをご覧ください。

あなたがi18n-active_record宝石を使用する場合は以下に示すように、memoizeflattenに最適なパフォーマンスを実現するためのキーを確認してください(コードサンプルはi18n-active_record宝石のreadmeから取られた)

I18n.backend = I18n::Backend::ActiveRecord.new 
I18n::Backend::ActiveRecord.send(:include, I18n::Backend::Memoize) 
I18n::Backend::ActiveRecord.send(:include, I18n::Backend::Flatten) 
I18n::Backend::Simple.send(:include, I18n::Backend::Memoize) 
I18n::Backend::Simple.send(:include, I18n::Backend::Pluralization) 
I18n.backend = I18n::Backend::Chain.new(I18n::Backend::Simple.new, I18n.backend) 
0

翻訳と呼ばれるテーブルを作成する必要があります。あなたのラベルモデルで

has_many :labels 

:あなたの製品モデルで

has_one :translation 

あなたが必要として次に、あなたの変換テーブルは、できるだけ多くの言語を持つことができます。これにより

Product.first.labels.first.translation.en 
Product.first.labels.first.translation.cn 
Product.first.labels.first.translation.fn 

をあなたが呼び出すことができるロジック:

Product.all.each do |p| 
    p.lables.each do |l| 
     l.translation.en 
     l.translation.cn 
     #etc.... 
    end 
end