1. ホーム
  2. javascript

[解決済み] 文字列とラベルのローカライズとグローバリゼーションのベストプラクティス【終了しました

2022-07-24 06:35:23

質問

私は20人以上の開発者がいるチームのメンバーです。各開発者は、別々のモジュール(10近くのモジュール)で作業しています。各モジュールには少なくとも50のCRUDフォームがあり、これは現在、500近くあることを意味します。 追加ボタン , 保存ボタン , 編集ボタン など。

しかし、アプリケーションをグローバル化したいので、アプリケーション内のテキストを翻訳できるようにする必要があります。例えば、どこでも、単語 を追加する アジュタ に変更する必要があります。

私たちがこれまで行ってきたことは、UI またはプレゼンテーション レイヤーの各ビューについて、翻訳のキーと値のペアの辞書を持つということです。そして、ビューをレンダリングする際に、この辞書を使用して必要なテキストや文字列を翻訳します。しかし、このアプローチでは、500個近い を追加します。 が500個もあることになります。これはDRYの原則を破っていることになります。

一方、共通の文字列を一元化すると、例えば を追加する を一箇所に集め、開発者にあらゆる場所でそれを使うよう求めると、ある文字列が集中辞書にすでに定義されているかどうかがわからないという問題が発生します。

他の選択肢として、翻訳辞書を持たず、Google 翻訳や Bing Translator などのオンライン翻訳サービスを使用することも可能かもしれません。

私たちが遭遇したもうひとつの問題は、プロジェクトを期限内に納品しなければならないというストレスから、開発者の中には 翻訳キー . 例えば、追加ボタンのテキストについて、ある開発者は 追加 を使い、別の開発者は 新しい など。

アプリケーションの文字列リソースのグローバル化とローカライズのベストプラクティス、または最もよく知られている方法は何ですか?

どのように解決するのですか?

私が知っている限りでは localeplanet という、JavaScriptのローカライズと国際化のための良いライブラリがあります。さらに、それはネイティブであり、他のライブラリ(例えば、jQuery)に依存していないと思います。

ライブラリのウェブサイトはこちらです。 http://www.localeplanet.com/

Mozilla によるこの記事もご覧ください。クライアントサイドの翻訳に関する非常に優れた方法とアルゴリズムを見つけることができます。 http://blog.mozilla.org/webdev/2011/10/06/i18njs-internationalize-your-javascript-with-a-little-help-from-json-and-the-server/

これらの記事/ライブラリに共通する部分は、(1)(2)(3)(4)(5)(6)のように i18n クラスと get のような小さい関数名を定義しています。 _ のような小さな関数名も定義しています)。 keyvalue . 私の説明では key は翻訳したい文字列を意味し value は翻訳された文字列を意味します。

では、JSONドキュメントに keyvalue 's.

例えば

var _ = document.webL10n.get;
alert(_('test'));

そして、そのJSONです。

{ test: "blah blah" }

現在普及しているライブラリのソリューションを利用するのは良い方法だと思います。