マルチカルチャーWebアプリケーションをどのように実装しますか
-
03-07-2019 - |
質問
私たちの何人かは、UIだけでなくデータも異なる言語でサポートする必要があるプロジェクトに既に取り組んでいると思います。たとえば、ここで書いている内容の翻訳を提供して保存できることなど。
さらに、私たちの中には、タイムトリガーイベント(メンバーシップアクセスの期限切れなど)があり、ユーザーの場所を考慮して適切なタイムゾーンに従って深夜などを計算する必要があると考えています。
最後に、特定の言語に応じたRight to Leftのユーザーインターフェイスと、送信されたデータファイル(テキストやExcelデータの解析など)を読み取る際の異なるエンコードの使用をサポートする必要もあります
現在、私はすべてのエンティティのすべての翻訳を単一のテーブルに保存しています(問題を調べるためにSQLクエリを実行するときに非常に難しいので、実用的ではありません)、主にサテライトアセンブリとタイムゾーンも右から左への設計もサポートしていません。
これらの課題に対処する際の経験はどのようなものですか?
[編集]
ほとんどの人は、このレベルのマルチカルチャー要件は、巨大なプロジェクトを構築するようなものだと考えていると思います。実際のところ、次のようなオンライン調査について考えている場合:
- 回答は、 深夜
- アンケートの定義とその一部 回答はテキストファイルから取得されます (任意の言語)と同様に 翻訳
- 質問と回答のオプションは 複数の言語で表示される、 誰がアクセスしているか
- レポートも表示する必要があり、 いくつかの異なる生成 言語
おわかりのように、この種の要件を満たすためにアプリケーションを深く調べる必要はありません。
[Edit2]
質問が重複していることがわかりました
最初の回答(投票で注文する場合)は非常に包括的なので、少なくともその一部をいつか実装する必要があります。
解決
非常に慎重になります。あなたが実装しようとしている国際化機能についてあなたが言うことから、あなたが行き過ぎているのではないかと思います。
大きな男の子(eBay、amazon.com、yahoo、bbcなど)のWebアプリケーションは、実際にサポートしたい各言語で個別のアプリを提供していることに注意してください。これらのWebアプリケーションはそれぞれ、共通のコアサービスセットを消費します。同じ言語を話す2つの異なる国(英国と米国など)のビジネスニーズが十分に異なっていて、それぞれに個別のアプリが必要な場合でも驚かないでください。
一方、次のamazon.comのようになる必要があるかもしれません。成功するWebアプリケーションを1つの言語で提供するのは困難であり、はるかに多くはありません。 Webアプリのビジネスニーズに合っている場合は、あるユーザー(アジア言語のスピーカーなど)を他のユーザーよりも優先することを恐れないでください。
他のヒント
ゆっくり。
すべてを熟考してから、もう一度あなたが何をしているかについて本当に考えてください。追加するほど(右から左など)、QAサイクルが長くなることに注意してください。
パズルの主要な部分は、コード側のインターフェースの広範な使用と、サポートが必要な言語に翻訳者を渡す1つのデータソース、または言語ごとに個別のデータソースです。
時間の問題はインターフェイスで処理できます。おそらく、物事は同じように機能するが、実装の詳細は異なるためです。さまざまな言語をサポートするようにインターフェイスを調整する場合、ほとんどの場合、同様の思考プロセスをインターフェイスの作成に適用できます。簡単に言えば、スキニングはまさにこれです。スキニングされるコンテンツはインターフェースであり、ルック/フィールは実装です。
ユーザーが必要とすることを行います。たとえば、ほとんどのプログラマーは英語を理解しているため、このサイトの投稿を翻訳する意味はありません。多くのユーザーが翻訳を必要とする場合は、言語IDを持つ新しいテーブル列と、翻訳された行を元の行にリンクする別の列を追加します。ターゲットの聴覚に中東のユーザーが含まれている場合は、右から左に実装します。時間精度が最大1時間まで重要な場合は、ユーザーテーブルにタイムゾーン列を追加します。
プロジェクトで行われたことを説明します(元のアーキテクチャではありませんでしたが、とにかく気に入っています)
翻訳サポートの提供
翻訳が必要なテキストは、3つの異なるカテゴリに分類されています:
- エラーテキスト:アプリケーションビジネスレイヤーの奥深くで発生するエラーのように
- UIテキスト:ユーザーインターフェイスに表示されるテキスト(ラベル、ボタン、グリッドタイトル、メニュー)
- ユーザー定義テキスト:最終ユーザーの好みに応じて翻訳可能である必要があるテキスト(つまり、ユーザーは調査で質問を作成し、その調査の翻訳版を作成することもできます)
異なるカテゴリごとに、翻訳サービスを提供するために使用されるスキーマは異なります。
- エラーテキスト:リソースファイルにアクセスする静的関数を含むライブラリ
- UIテキスト:"ヘルパー"ビューエンジンにリンクされ、リモートアセンブリからの翻訳を提供するクラス
- ユーザー定義テキスト:(翻訳されたエンティティのtypeIDおよびオブジェクトIDに応じて)翻訳を提供し、1 x Nの関係を介してエンティティにリンクされるデータベース内のテーブル
ただし、タイムゾーン、さまざまなレイアウト、画像の翻訳(これが本当に必要な場合)など、他の明らかな問題を攻撃したことはありません。誰かが別の方法でこの問題に取り組んでいますか?
他の国際化問題に取り組んだ人はいますか