MVC パターンを開始位置として使用して、多言語 Web アプリケーションを構築しています。アプリケーションには、ユーザーが操作する多数のフォームがあり、これらのフォームの多くには、データベース テーブル (たとえば、「Province」) からルックアップを行うフィールドがあります。
これらのリストのオプションをユーザーの言語で画面に表示する必要がある場合は、いくつかの方法があります。
- モデルで。 モデルにクエリを実行するとき、結果を返す言語を指定できます。これにより、モデルのデータが変更されることなく表示されるあらゆる場所で翻訳を使用できるようになります。ただし、これは、私の例の Province モデル (および他のすべてのアプリケーション モデル) が言語翻訳を行う方法を知る必要があることも意味します。
- コントローラーで。 通常どおりコントローラ アクションでモデルをクエリし、アクションを完了する前に結果を渡すことができる「Translator」オブジェクトを作成できます。これは、各コントローラー アクションが同じ変換コードを複製し、DRY 原則に違反する可能性があることを意味します。
- ビューで。アプリケーションのプレゼンテーションは一般にビューに存在すると予想され、ユーザーの言語はシステムのビジネス ロジックに影響を与えないため、言語の翻訳がここに属しているという議論がなされる可能性があります。特に、ページには翻訳が必要な静的コンテンツも含まれる可能性があることを考慮してください。これの欠点は、特に新しい変換コードに対処する必要があるフロントエンド デザイナーにとって、ビューが多少複雑になることです。
テキスト翻訳が Web アプリケーションの MCV パターンに属する場所について、受け入れられているベスト プラクティスはありますか? ページの読み込み時ではなく、AJAX 呼び出しを介して選択リスト オプションを読み込む場合、これはまったく変わりますか?
助けてくれてありがとう!