Railsで数千の製品ラベルを国際化する最良の方法は何ですか? YAMLファイルに1000個のラベルをすべて入力する必要がありますか?それとももっと良い解決策がありますか?Railsで数千の製品ラベルの国際化
何か助けてください:)
Railsで数千の製品ラベルを国際化する最良の方法は何ですか? YAMLファイルに1000個のラベルをすべて入力する必要がありますか?それとももっと良い解決策がありますか?Railsで数千の製品ラベルの国際化
何か助けてください:)
Railsは、翻訳用にYAML以外のストレージをサポートしています。テーブルに翻訳を保存する場合は、i18n-active_record gemを使用してください。
カスタマイズ可能なI18nバックエンドでRailscastをご覧ください。
あなたがi18n-active_record宝石を使用する場合は以下に示すように、memoize
とflatten
に最適なパフォーマンスを実現するためのキーを確認してください(コードサンプルは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)
翻訳と呼ばれるテーブルを作成する必要があります。あなたのラベルモデルで
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