6

Web アプリケーションの国際化を検討しています。翻訳を出力するのはサーバー側(.net 4 C#で書かれています)とクライアント側(Javascript)のどちらが良いでしょうか?

クライアントに表示される文字列である値を使用して、キーとして英語のフレーズを含む単一のオブジェクトを含む JS ファイルを作成することにより、クライアント側でこれを実行し始めています (開発者はコンテキストで各メッセージの意味を理解できます)。アラートとプロンプトの場合。これをフロントエンド全体のすべての文言に拡張することを考えています。

これは良い考えですか、それともこの種の作業をサーバー側で実行するのが最善ですか?

更新:議論を左右するのに役立つ場合は、Web アプリケーションでサーバー側のコントロールをあまり使用しません。コントロールの大部分は jQuery/JS ベースです。

更新:この特定のアプリケーションは (ログイン ページを除いて) 一般公開されていないため、SEO の問題は適用されません。

4

3 に答える 3

5

SEOに関しては、サーバー側で実行し、アプリケーションを別のURLで利用できるようにすることをお勧めします.

例えば:

www.application/en/

www.application/es/ ...

于 2012-07-05T14:01:03.763 に答える
2

I18n の最初のルール: 標準的な方法に従います。車輪を再発明しないでください。Asp.Net の場合、サーバー側の国際化を意味します。

そうですね。動的に作成されたコントロールが大量にある場合でも、クライアント側スクリプト用のローカリゼーション メカニズムが必要です。それを一元化できます。つまり、翻訳された文字列とモデル + コントローラーの 1 つのグローバル配列を作成して、AJAX 呼び出しを介して入力できます (ただし、X は JSON の場合は J に置き換えるのが最適です...)。
いずれにせよ、モデルはリソース ファイルから適切な文字列を取得し、コントローラーは JSON をクライアント側にフィードする必要があります (アプリケーション全体の翻訳ではなく、特定のビュー/画面の翻訳のみを実際にリクエストすることをお勧めします)。

ご覧のとおり、最良の方法は混合アプローチです。多くの理由から、アプリケーション全体で 1 つのローカリゼーション モデルを使用する方がよい場合があります。つまり、*.resx ファイルのみを使用します。
その上、国際化には単なる文字列の外部化以上のものがあります...

于 2012-07-05T16:30:06.130 に答える
1

ユーザーに静的コンテンツのみを表示している場合は、クライアント側の国際化を行ってください。動的なコンテンツ/メッセージを表示する場合は、サーバー側を使用する必要があります。しかし、ユーザーロケールをどのように検出していますか?

于 2012-07-05T14:36:59.917 に答える