データベース主導の Web サイトをローカライズするにはどうすればよいですか

StackOverflow https://stackoverflow.com/questions/160335

  •  03-07-2019
  •  | 
  •  

質問

.NET に組み込まれたローカリゼーション機能を試してみましたが、それらはすべて resx ファイルにデータを入れることに依存しているようです。

しかし、ほとんどのシステムはデータベース駆動であるため、これに依存できません。では、この問題をどのように解決しますか?.NET に組み込まれた方法はありますか、それとも SQL で変換テーブルを作成し、それをすべて手動で行いますか?そして、サイトの大部分でこれを行う必要がある場合、ローカライズに resx 方式を使用する理由はあるのでしょうか?

この例としては、私のサイトに FAQ リストがあり、簡単に追加/削除できるようにこのリストをデータベースに保存していますが、データベースに保存しても、この情報を複数の言語に翻訳する良い方法がありません。 。

役に立ちましたか?

解決

私の意見では、動的コンテンツ(たとえば、FAQ)のローカライズはデータベースで行う必要があります。質問の保存方法に応じて、おそらく「ロケール」を作成します。データベースからFAQ質問を選択するときに使用します。多数のテーブルのローカライズを開始したときに、これが非常にうまくスケーリングするかどうかはわかりません。

静的コンテンツ(フォームフィールドラベル、静的テキスト、アイコンなど)の場合、ファイルベースのリソースを使用しても問題ないはずです。ただし、本当にやりたい場合は、これを処理できるカスタムリソースプロバイダーの実装を作成することはそれほど難しくないようです。

関連リンクは次のとおりです。

他のヒント

データモデル内の特定のアイテムについて、説明部分をロケールID列(LCID)を持つローカライズされたテーブルに分割します。

したがって、Productのテーブルには実際には製品の説明や名前は含まれず、そのハード値と高速値(ProductId、EAN、NumberInStock、NextStockData、IsActive、IsPublished)などのみが含まれます。

ProductDescriptionには次が含まれます  ProductId、名前、説明、LCID

私はカナダに住んでいるので、多言語が大事です。 2つのアプローチを見てきました。最初のオプションは、特定のレコードのすべてのローカライズされたデータを、プライマリキーとロケールによって元のテーブルにリンクされた別のテーブルに保存することです。 2番目のオプションは最初のオプションと似ていますが、ロケールごとに異なるテーブルがあり、ロケールはテーブル名のサフィックスとして使用されます。

オプションA

Item (ItemID, ...)
ItemLocal (ItemID,LocaleID,....)

オプションB

Item (ItemID, ...)
Item_ENUS (ItemID,....)
Item_ENGB (ItemID,....)
Item_FR (ItemID,....)

私が最近考えた3番目のオプションは、データベースがネイティブにサポートしていれば本当に素晴らしいことです。すべてのローカルの値を同じフィールドに格納することです。また、フィールドがvarchar-multilocalとして設定されている場合は、言語を指定するパラメーターを渡してアクセスする必要があります。私が知っているようにこのようなものは存在しませんが、それは本当に物事をはるかに簡単にし、はるかに流動的にすると思うものです。

現在、翻訳は自動的に実行できるものではありません。最良の方法は、人に翻訳してもらい、ニックの方法を使用して適切な言語を表示させることです。

RESX ファイルと Kibbee の応答のオプション A を組み合わせて使用​​します。RESX ファイルをオンラインで管理するためのシンプルなツールを作成しました。http://blog.lavablast.com/post/2008/02/RESX-file-Web-Editor.aspx

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top