5

過去数日間、MVCで記述されたWebアプリケーションのローカリゼーションを実装しています。私が指摘できるLozalizationの「問題」を解決する3つの主要なタスクがあります。

  1. ストレージ:アプリケーションで使用する複数の言語の文字列のキーと値のペアを格納します
  2. サーバーサイドアクセス:サーバーサイドスクリプトの特定のキー(ビュー、コントローラー、Webフォームなど)に従って値にアクセスします。
  3. クライアント側のアクセス:クライアント側のスクリプト(Javaスクリプトなど)の特定のキーに従って値にアクセスします
  4. 文化の切り替えメカニズムを作成します。

私が探求した各タスクを達成するためのいくつかの方法があり、私はそれらの間で選択するのに苦労しています。私が興味を持っている2つの質問があります:

  1. ローカリゼーションのベストプラクティスを知りたいのですが?あなたの視点から。一方の方法ともう一方の方法の長所と短所を書いてください。
  2. あなたが提案できる他の方法や機能強化はありますか?

1.ストレージ

リソースファイル:

  • ローカライズされた文字列のキーと値のペアをリソースファイルに保存します
  • myString.resx、myStrings.he-IL.resexなど、カルチャごとに同じキーを使用してリソースファイルを作成します。

XMLファイル:

  • 各キーの親ノードと各カルチャ固有の値の子ノードを含む構造化XMLファイルを作成します。

    <string key="myAppName">
        <heIL>some Hebrew value</heIL>
        <enUS>some English value</enUS>
    </string>
    

2.サーバー側アクセス

  • 両方のストレージオプションを使用すると、サーバー側からアクセスするのはかなり簡単です。
    • その場合、値へのアクセスを容易にするために自動生成されるクラスがあるため、リソースファイルの使用が少し簡単になります。したがって、リソースを静的プロパティを持つ通常のクラスとして使用して、キーに従って各文字列値にアクセスします。
    • XMLファイルを使用する場合は、Access Layerコードを自分で書き留める必要がありますが、これは必ずしも悪いことではありません。そうすることで、より詳細な制御が可能になるためです(必要な場合のみ)。

3.クライアント側のアクセス

ここが面白く、時には複雑になるところです。ここで私がここで検討した2つのオプションがあり、どのように進めるかがわかりません。

サーバー側で生成されたスクリプト:

  • View \ Web-Formで、<script>タグ内にサーバースクリプトレンダリングブロックを追加します
  • この時点から、動的にキーの配列、またはJavaスクリプトの静的変数を作成し、それらの中に必要な文字列を配置します。これはRazorエンジンを使用した例です。

       <script type="text/javascript">
                k_CultureInfo = "@CultureInfo.CurrentCulture.Name";
                K_ApplicationName = "@MyStrings.SomeStringKey";
                ....
       </script>
    

カスタムHTTPハンドラー:

私はここのブログの位置でアイデアを見つけました:ASP.NETのJavaScriptファイルのテキストをここでローカライズします

  • 最適なのは、「。js.axd」リクエストを処理するHTTPハンドラーを作成してサーバーに送信することです。
  • ScriptTranslatorHandler」はjavascripファイルを読み取り、JavaスクリプトのTranslate(SomeStringKey)などの事前定義されたトークンのインスタンスを、上記のいずれかのメソッドで使用される正しい文字列に置き換えます。
4

2 に答える 2

1

リソースファイル:

resx形式を使用します。同じファイルに複数の言語が含まれているため、翻訳ツールは提案した形式を処理できません。一般的な翻訳ツールは、ソースファイルを取得し、翻訳後に各言語に一致するファイルを生成します。私はあなたが提案したフォーマットを絶対に避けたいと思います。

XMLを使用する場合は、言語ごとに1つのファイルを使用してください。また、どの形式を選択する場合でも、翻訳者を支援するために、各セグメントのコンテキストコメントを含めるようにしてください。

サーバーサイドアクセス

resxを使用して、レイヤーを定義する時間を節約してください

クライアント側のアクセス

私の意見では、サーバー側で生成されたスクリプトはより単純で、サーバー側のアクセスとより一貫性があります。

文化切り替えメカニズム

UIではなくロジックについて質問していると思います。最も一般的な方法は、ユーザーのブラウザの言語設定を取得することです。言語がアプリケーションに存在しない言語に設定されている場合は、デフォルトの言語にフォールバックします。また、ユーザーが選択したCookieを設定して(ユーザーが手動で言語を変更した場合)、次回選択した言語が表示されるようにします。

于 2012-10-05T23:45:43.190 に答える
-2

ウェブアプリhttps://developers.google.com/chrome/web-store/docs/i18nの場合、これが役立つかもしれません

試してみる!!!

于 2012-10-05T10:38:33.930 に答える