2011-10-16 13 views
3

これまでのところ、私はJavaScriptアプリケーションのi18nとl10n(jQuery UIで構築されたもの)にGlobalizeを使用しています。これは動作しますが、別の特定のライブラリに自分のコードを関連付けます。今、i18nをサポートしていないソースを再利用するため、この問題を克服する方法を探しています。これを変更しないでください。私はどこに実装することができるi18nのためのグローバルインターフェイスを使用することについて話しているわけではありません。要約:i18nとl10nのサポートを、ソースを変更せずに既存のアプリケーションに追加するにはどうすればよいですか?私はこれが良いアイデアかどうか尋ねることはありません、私はこれが可能かどうかと尋ねています。既存のJavaScriptアプリケーションの国際化とローカライズ

は、これまでのところ、私はこれらのアプローチを作ってみたが、両方が自分の弱点があります:私はjQueryの(私の場合は私ができる)の使用に依存したい場合は

  1. を、私は置き換えることができますtext/val/appendなどのメソッド、つまりDOMを操作するすべてのメソッドです。しかし、これらのうちかなり多くのものがあります。また、これをさらに進めて、DOMメソッドを置き換えることもできます。

  2. DOMを歩き、テキストノードとフォーム値を置き換えます。これはうまくいくが、高価で動的な変更は標準化された方法がないため検出が難しい。

これらは、i18n問題の部分的な解決策を提供しますが、どちらも問題ありません。

i18nとl10nのサポートを既存のアプリケーションに追加する方法にどのようにアプローチしますか?

答えて

2

短い答え:
それにソースを変更せずにアプリケーションにi18nサポートを追加する方法はありません。

私はそれについて詳しく説明します。 i18nで行う必要があるのは、

  1. 文字列を外部化します。
  2. 有効なロケールに基づいて日付、時刻、数字などをフォーマットします。
  3. 特定のロケールに応じてユーザー入力(日付、時刻、番号)を受け入れます。
  4. 文化的な偏見を正しく処理します(つまり、色、画像、音などを変更します)。これらの事の

なしは、ソースコードを変更せずにを行うことができます。ごめんなさい。

Ad1。外部化文字列は簡単ですね。 DOMを歩き、インスタンスを翻訳されたテキストに置き換えてください。
いいえ、そうではありません。まず、JavaScriptによるエラーや情報メッセージ(alert()関数など)のようなアクセシブルではないテキストもあります。これはDOMにアクセスできない。第2に、複合メッセージが常に存在します。つまり、数字を入力します(「12個のレコードはクエリに一致します」)。翻訳する際には、文の順序を変更する必要があります(つまり、最後に番号が来る)。それぞれの文章を数字や日付について分析し、それを特別に扱う必要があります。また、可変文字列を置くとどうなりますか?この状況をどのように克服するか(特にこの文字列が時間の経過とともに変化する可能性がある場合)?

Ad2。& Ad3。書式設定と解析は簡単です。はい、の場合、ロケールはです。残念ながら、ロケールを検出する唯一の賢明な方法は、サーバー側(Accept-Languageヘッダーから)で行うことです。それに対するクライアント側のサポートは事実上存在しない(多数のブラウザの場合)か、または重度に壊れている(他人の場合)。だから、あなたはどのロケールを使うべきか分からない。また、基礎となるJavaScriptを変更できない場合、ローカル日付をどのように受け入れますか?

Ad4。さまざまな色のサポートが可能ですが、これを実行する唯一の方法は、DOM要素ごとに手動で設定することです。それで幸運。 イメージやサウンドを追加するには、理論的には正しいディレクトリに配置し、適切なものが使用されるようにDOMを変更する必要があります。再び、それで幸運。

基本的に、努力の量を減らしたいのですが、そうですか?これは、標準外のソリューションを実装することで明らかになります(実際には業界標準の示唆ではありません)。さらにが動作するか、i18nサポートが貧弱なものになります。

+0

良い例。私の心を整理してくれてありがとう。 –