2011-01-21 5 views
5

Webサイトを構築する際に複数の言語をサポートする必要がありましたが、サーバーからの言語文字列を渡す良い方法はまだありませんダイアログ、メッセージなどのためにJavascriptで使用できるようにクライアントに送信します。Javascriptで表示されるテキストの複数言語サポートを有効にするにはどうすればいいですか

これに関するあなたの推奨や経験は?

EDIT:私はJavaScriptの言語ファイルをその場で生成することに傾いており、誰でもこれを行うことができるサードパーティのライブラリを知っていれば分かります。

答えて

2

私は通常、別々のファイルにすべての文字列仕様を移動し、ページ上の適切なもの、このようなものが含ま:ST/JS /メッセージ-ru.jsで

:で

hello = "Привет" 
bye = "Пока" 

をST/JS /メッセージ-en.js:ページが生成されると

hello = "Hello!" 
bye = "Good bye!" 

、あなたが言語を決定し、ページ上の適切なJSファイルを挿入することができます。

+0

私はこのようなことを考えていました。現時点では、C#でサーバー側で使用されていた言語ファイルは自動生成され、任意のjavascriptファイルも生成する必要があります。ファイルを自動生成するか手動で更新しますか? – eaglestorm

+0

@ealgestormインストール時に、すべての言語の値を含む単一のファイルからそれらを自動的に生成します。私はソースを処理するためにm4を使用しますが、私はそれが好きな人はあまりいないことを知っていますので、あなた自身の解決策を作成することができます:) –

0

私は、または私たちのチームは、異なる言語のjsで異なる文字列を書く重い方法を持っています。例えば、ukではuk.jsという名前のjを書き、frにはfr.jsは、ダイアログやメッセージの静的な表現に使用されます。

1

javascriptの言語に依存する部分を、処理中のロケールで生成します。パフォーマンスのために、特定のロケール用に生成された言語固有のJavaScriptをキャッシュします。 javascript関数で

<script type="text/javascript"> 
    var dialogl10n = { 
     caption: '<%= Resources.GetString(x => x.DialogCaption) %>', 
     okButton: '<%= SharedResources.GetTerm(x => x.Ok) %>' 
     cancelButton: '<%= SharedResources.GetTerm(x => x.Cancel) %>' 
    }; 
</script> 

:これはあまりにも多くの言語固有のJavaScript

1

私たちは、翻訳を必要とするJavaScriptのメソッドにオブジェクトを渡すと、サーバー側のコードから、そのオブジェクトに移入を維持するから節約

Foo.Bar.doSomething = function(l10n) { 
    alert(l1n0.caption); 
} 

我々は自動的にJSONオブジェクトを作成するには、この向上を探している:

onClick='Foo.Bar.doSomething(<%= Resources.GetPackageAsJson(); %>);' 

これは、手で作成された同等のオブジェクトを作成します。

+0

現在のところ、数値キーを使用して文字列を格納するために名前空間を使用しています。サーバー側で既にその形式を使用していますが、開発者にはそれほど親和的ではありません。私はもっ​​と一般的なものを設計しようとしています – eaglestorm

0

ASP.NET AJAXフレームワークを使用している場合、ScriptManagerコントロールには、ローカライズされた.resxファイルからJavaScriptを自動的に生成し、残りの部分の標準CultureInfo設定に基づいてユーザーに正しい言語を送信するためのさまざまなメカニズムが含まれています。ウェブサイトが使用しています。チュートリアルについては、this MSDN articleを参照してください。

+0

ScriptManagerを使っていないことは間違いありません。 – eaglestorm

+0

私はその視点を理解しています;-)あなた自身で書くか、サードパーティのツールを見つけなければならないと思います。 –

関連する問題