私のサイトをangularjsに移動することを考えています。すべての静的サーバー側プレーンテキストテンプレートをDjango to angular(そうしないと、 '{{}}'で構文の問題が発生します)。
これを行う最善の方法は、次の2つのオプションのうちの1つになると思われます。
どちらのオプションでも、ページをリロードせずに言語を切り替えることができます。
どちらがいいですか?一般的に、これは良いアプローチですか、それとももっと正しい方法がありますか?
まず最初に、ここで回答されているように、angularの区切り文字を他の記号に変更する方法があります。 Angular JS custom delimiter
2.オプションの方が簡単です。あなたはそれを一度含めて、あなたはページロードですべての翻訳を持っています。非同期呼び出しも、約束もありません。
それでも、最初のものを使います。 $ translate のようなサービスは、オプション1に従うことであなたの人生を本当に楽にします。さらに、ロードされたデータをLocalStorageとCookieにロードおよび保存するための多くのオプションがあり、拡張とカスタマイズのための十分なスペースがあります。次に、$ translateサービス、ディレクティブ、またはフィルターを使用してコンテンツを翻訳できます。
また、2つのオプションは、キャッシュされたリクエストのオプションを無効にすることを忘れないでください。スタートページへのリクエストごとに、サーバーは静的ファイルを読み取り、htmlに含める必要があります。最初のオプションでは、ユーザーのブラウザーは.jsonを好きなだけキャッシュできます。
Angular Translateを含む)いくつかのオプションを試してみましたが、私は Angular-gettext がこれまでのところ最高でした。
非常に役に立った1つのことは、TodoMVCを国際化するための実用的なデモがあり、 angular-gettext-example と呼ばれることです。
ワークフローは簡単です:
ここに掲載されている他のソリューションも良いと思いますが、angular-gettext-exampleのようにうまく構成されたエンドツーエンドの例は見たことがありません。
乾杯、JD
AngularJSは、通貨、日付、数値のフィルターに対してのみil8n/L10nをサポートしています。 この本 によると:
(低品質で申し訳ありません!携帯電話のカメラ)
最初のアプローチに従い、翻訳を動的にロードします。多くの作業が必要になりますが、他に方法はありません
angular-translate を見てください:)
両方のシナリオを解決します!