2

VisualStudio2012とMVC4およびEntityFramework5を使用してWebサイトを構築しています。つまり、データベースに格納されている値の一部にi18nを適用する必要があります。たとえば、スペイン語と英語の両方で、雇用分野(エンジニアリング、健康、金融など)を示すドロップダウンが必要です。

私は2つの異なるアプローチを考えていましたが、どれも100%大丈夫とは思えません。

  1. 「area」テーブルに列を追加して、さまざまな言語(AreaId、EnglishName、SpanishNameなど)のエリア名を反映します。幸運にも2つの言語しかないので、これはデザイン的にはあまり良くないように聞こえますが、100の言語をサポートできるとしたらどうでしょうか。

  2. データベースに領域を保存せずに、i18nキーを使用してそれらの値をリソースファイルから読み取り、ビューに追加します。これはビューにロジックを追加しているので(おそらくそこで反復を使用する必要があります)、あまり良くないようです。

私が見逃している他の何かがありますか、それはそれを行うためのより良い方法でしょうか?

ありがとう!!

4

1 に答える 1

0

まず第一に、i18nロジックをデータベースエンティティから分離しておくことは、柔軟性とメンテナンスの観点からより良いアプローチだと思います。

したがって、i18nをデータベースから分離しておくために、列挙を使用するか(いくつかの欠点もあるため、それはあなた次第です)、各雇用領域にi18n変数を使用することができます。たとえば、次のようになりmessage.properties.enます。

employmentArea.engineering = Engineering
employmentArea.health = Health
employmentArea.finance = Finance

いくつかの特定の理由で、本当にデータベースを使用する必要がある場合は、別の言語テーブルを使用できます。これにより、次のように問題を解決できます。

テーブルarea

id code    
-- ----    
1  eng     
2  heath   
3  finance 

テーブルarea_language

id area_id lang_code name
-- ------- --------- ----
1  1       en        Engineering
2  2       en        Health
3  3       en        Finance
4  1       es        Ingeniería
5  2       es        Salud
6  3       es        Financiar

したがって、この方法で。でフィルタリングできますlang_code。lang_codeフィルターにiso標準を使用すると役立ちます。

于 2013-03-18T11:26:10.123 に答える