code.google.com/p/gettext-js (プロトタイプ)
angular-gettext.rocketeer.be (Angular)
github.com/jakob-stoeck/jquery-gettext(jQuery )
そして、まさに「pure-js」ソリューションが欲しかったのです。 OK、自分で書いてください。
私が最初に探していたのは、JSでPOファイルを読み取る方法でした。 解析できますが、これは余分な負荷であるため、JavaScriptを強制せずに既成のJSONを提供することにしました。 したがって、最初に行う必要があるのは、POをJSONに変換することです。 このコンバータを使用することをお勧めします。
さらに、アルゴリズムはシンプルで、JSONファイルをサーバーに保存し、pojsでそのファイルへのリンクを転送します。 もちろん、このpo.min.jsの前にページに接続します。
<script src="po.min.js"></script> <script> pojs.init('/ru.json'); </script>
現在の言語がデフォルトの場合、JSONへのリンクを渡す必要はありません。
すべての転送は、キーが渡された関数呼び出しの後に返されます。 キーが見つからない場合、キー自体が返されます。
pojs._('Hello world');
また、po.jsには、sprintfに少し似た別の超小型機能があります。
pojs._('My name is %s, and I am %s years old', ['Sasha', 24]);
JSONがキャッシュされていない場合、非同期で受信されます。つまり、初期化の直後にpojs ._()を使用することはできません。 翻訳が使用される場所でコードをラップします。
pojs.ready(function() { pojs._('Hello world'); });
po.jsのいくつかの利点に注目する価値があります。そうしないと、これらすべてを実行しても意味がありません。
1.ナノサイズ:〜0.7KB
2. jQuery、Prototype、Angularなどのサードパーティの依存関係は必要ありません...
3. JSONはlocalStorageにキャッシュされます。 したがって、翻訳ファイルが非常に大きい場合は注意してください。 JSONファイルへのリンクに「?1」を追加するだけでキャッシュをリセットできます(はい、そのような古い学校)
githubのpo.js
PS
私は純粋に私のニーズのために書いた、多分あなたは何かを逃しているか、何かが正常に動作していません。 ルールを整える、改善する!