私は、3つの言語(英語とその他2言語)でローカリゼーションが必要なWebアプリケーション上のクライアントで働いています。 ASP.NETアプリケーションでリソースを使用して、静的データのローカライズ版を表示する方法を理解しています。しかし、私は、ローカライズされたユーザー入力データの問題にどのようにアプローチするのかよく分かりません。例えば、管理者は、新しいメタデータをアプリケーション(例えば、新しい製品カテゴリ)に追加したい場合がある。これは最終的に3つの言語すべてに翻訳する必要がありますが、最初は管理者が知っている言語で入力します。この種のデータは静的ではないため、データベースに格納します。同じデータの異なるローカライズ版を区別するために、主キーにカルチャーコードを追加する必要がありますか?この種の問題を認識していない「ベストプラクティス」やパターンはありますか?ローカライズされたバージョンのユーザー入力データをデータベースに保存する方法
4
A
答えて
2
MainItemIDとLanguageCode(EN、DE、FRなど)の複合PKを使用して、あなたのエンティティを子テーブルにしてください。この子テーブルには、言語固有のテキストが格納されます。
英語が常にある場合、またはフォールバックの場合は、DE、FRなどの子テーブルと英語のメインテーブルを持つことができます。 LEFT JOINとISNULLがこれを処理します。
あなたの正確なニーズに応じてどちらの方法もOKですが、最初のものと思われます。もちろん、新しい商品カテゴリなどのデータ入力に子行が1つ以上あることを確認する必要があります。
0
1
Language
を追跡するテーブルを作成し、言語コードの代わりに他のテーブルの外部キーとしてlanguageIDを使用することをお勧めします。
Language(LanguageID, Name)
そして、他のテーブルでは、LanguageID
を外部キーとして使用します。
ローカライズされたテキストをテーブルに保存しています
LocalizedTextTable(ID,text,LanguageID)
+0
言語コードが既に一意である場合、この追加結合を 'Language'テーブルに追加する理由はありますか? – dnc253
ありがとうございました! –