私は顧客が製品を作成するアプリケーション(eコマースWebサイトなど)を作成しているので、明らかにデータベースに保存された翻訳された説明が必要です。顧客にgit/ymlの学習を強制することはできません。
説明(そして最終的には製品名)を正しくローカライズしてデータベースに保存する方法について2つのアイデアがありますが、使用すべきよく知られたアプローチがあれば、それを知って本当にうれしく思います。
最初のアイデアは私にとって最も論理的だと思いますが、私にはそれを「透明」にしたいのです。どこにでも結合を書きたくないので、これを達成する方法についての提案が正しい場合は、感謝。
アイデア1:
データベーステーブルを作成し(products
フィールドはデフォルトのロケール言語に設定されている可能性があります)、次のように構造化されたテーブルを含むテーブルを作成します。name
description
products_translations
products_translations
- id
- locale
- product_id
- name
- description
例として:product_translation: { id: 1, locale: 'en', product_id: 3, name: 'toy', description: 'play' }
しかし、私はどこにでもたくさんのIFを書く必要なしに翻訳にアクセスしたいと思っています。したがって、product.nameと書くと、現在のロケールに基づいてenまたはitが返されます。
ボーナス:これを達成するのに役立つ宝石はありますか?
アイデア2:もう1つのアイデアは、などを含むテーブルをname_locale1
作成name_it
することですが、モデルオブジェクトをフィールドで汚染し、巨大なテーブルを作成するため、このアプローチは好きではありません。
ただし、このようにして、そのオブジェクトのすべてのクエリで結合を回避できます。
私が知らないより大きなアプローチ(データベースパターンなど)がある場合は、それも問題ありません。これら2つのアイデアだけに厳密にする必要はありませんが、2つから選択する必要があります。どちらが良いかわからない。
重要:データベースでの翻訳が明らかに必要な動的コンテンツを除いて、翻訳をymlファイルに保存したいと思います。