一部のアプリケーションに手動で $locale を設定できますか?
ローカルをサポートする唯一の方法は、現在のロケールの角度ライブラリからローカリゼーション ファイルを含めることです。複数の文化がある場合はどうなりますか?その場合、ローカリゼーション ファイルを動的にロードする必要がありますか? 私は何が欠けていますか?
一部のアプリケーションに手動で $locale を設定できますか?
ローカルをサポートする唯一の方法は、現在のロケールの角度ライブラリからローカリゼーション ファイルを含めることです。複数の文化がある場合はどうなりますか?その場合、ローカリゼーション ファイルを動的にロードする必要がありますか? 私は何が欠けていますか?
必要なロケールをロードしてlocalStorage
、ページを更新できます。以下のスクリプトで、必要な i18n ファイルをロードします。その場でのロケールの変更はまだサポートされていません。
<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.0.3/angular.min.js"></script>
<script>
var locale = JSON.parse(localStorage.getItem('locale'));
if (locale) {
document.write('<script src="scripts/i18n/angular-locale_'+locale+'.js"><\/script>');
}
</script>
i18n を処理する angular モジュールを作成しました。i18n に対する AngularJS のサポートは非常に原始的です。より詳細に制御し、より柔軟にしたい場合は、angular-translate をチェックしてください - http://angular-translate.github.io/
お手伝いできることがあればお知らせください。
現在、動的なローカリゼーションを探している人にとって、angular-dynamic-localeは素晴らしい仕事をします。
私は同じ問題に苦労し、ここですべての回答を読み、プロジェクトに i18n/l10n を導入しました。これは私の結果です:
したがって、解決策はangular-translateとangular-dynamic-locale の両方のプロジェクトを使用することです。
正直なところ、angular の $locale サービスはまだかなり原始的です。とても良いのですが、このあたりは柔軟性に欠けるようです。最大の問題は、適切なロケール ファイルを動的に再読み込みしてロケールを切り替えたとしても、セットアップ時にロケール情報を登録しているため、日付フィルターなどは変更されたことを認識できないことです。1. 選択したロケールでページをリロードする... または 2. 独自のロケール プロバイダーとそれを使用するフィルターを作成します。
適切なスクリプト ファイルを動的にロードし、影響を受けるすべてのフィルターとサービスを再初期化してからビューを更新するサービスを作成することは可能かもしれませんが、この時点で何が必要になるかはよくわかりません。
面白いものを見つけました。角度はありませんが、jquery であるため、統合は問題ありません。パフォーマンスをテストし、情報を返信します。
ブラウザーの angularJS ローカライズをロードする場合は、プロジェクトにhttps://github.com/angular/bower-angular-i18nとhttps://github.com/lgalfaso/angular-dynamic-localeをインストールします。
インストールする各ライブラリのドキュメントをお読みください。これは私の Ionic プロジェクトの例です。
私のindex.htmlで:
...
<!-- angular-dynamic-locale-->
<script src="lib/angular-dynamic-locale/tmhDynamicLocale.min.js"></script>
...
私のapp.jsで
var app = angular.module('project-name', ['ionic',..., 'tmh.dynamicLocale']);
...
// tmhDynamicLocaleProvider
app.config(function(tmhDynamicLocaleProvider) {
// override the default path (angular/i18n/angular-locale_{{locale}}.js) to the stored Angular i18n locale files
tmhDynamicLocaleProvider.localeLocationPattern('lib/angular-i18n/angular-locale_{{locale}}.js');
})
...
app.run(function($rootScope, $ionicPlatform, ..., tmhDynamicLocale){
// set locale for angular formats
var inArray = function(needle, haystack) {
var key = '';
for (key in haystack) {
if (haystack[key] === needle) {
return true;
}
}
return false;
};
var preferredLanguage = navigator.language || navigator.browserLanguage || navigator.systemLanguage || navigator.userLanguage;
if (typeof preferredLanguage === 'string') {
var code = preferredLanguage.substring(2, 0);
if (inArray(code, PROPERTIES.LANGUAGES)) {
tmhDynamicLocale.set(code);
}
}
...