6

Angular アプリでangular-translateを初めて使用します。

要件 :

AngularJSユーザーが自分の言語を設定するオプションがある多言語アプリケーションを作成する必要があります。そのため、ファイルから翻訳を読み込んで、その優先言語を に保存する必要がありますlocalStorage。そのため、ユーザーが再びアプリケーションにアクセスすると、以前に設定された言語が表示されます。

私がこれまでに行ったこと:

を使用してファイルから翻訳を読み込みました$translateProvider.useStaticFilesLoader

コード :

var app = angular.module("myLangApp", ['pascalprecht.translate'])
app.config(function($translateProvider) {
$translateProvider.useStaticFilesLoader({
        prefix: 'languages/',
        suffix: '.json'
      });
    $translateProvider.useLocalStorage();
});

次の行にコメントすると、アプリケーションは正常に動作します。

// $translateProvider.useLocalStorage();

しかし、それを使用すると、コンソールに次のエラーが表示されます。

上記のコードのコンソール エラー。

angular-translate-storage-local.min.jsファイルも含めましたが、index.html成功しませんでした。

SO でこれらの質問も見ましたが、役に立ちません: Angular-translate の localStorage: Unknown provider: $translateLocalStorageProvider

即時のヘルプは非常に高く評価されます。ありがとう

4

3 に答える 3

8

angular translate を使用したスト​​レージに関するドキュメントは次のとおりです。

angular-translate-storage-localライブラリはangular-translate-storage-cookieライブラリと一緒に使用することを意図していることを読んだ後すぐに気付くでしょう。ローカル ストレージは一部の古いブラウザー (例: IE 7 以下) ではサポートされていないため、ローカル ストレージではうまくいかない場合、angular translate は Cookie を使用するためのフォールバック オプションが必要です。

このエラーは、angular-translate-storage-localがフォールバック オプションangular-translate-storage-cookieを挿入しようとしたために発生します。

この問題を回避するには、 angular-translate-local-cookieをインストールする必要があります。

angular-translate-local-cookie は、アプリの依存性注入を設定するだけでなく、インストールする必要があるライブラリであるngCookieを注入しようとすることに注意してください。注射は

var app = angular.module('myApp', ['ngCookies', 'pascalprecht.translate']);

また、index.html 内のインクルード ファイルの順序が間違っていると、問題が発生する可能性もあります。適切な順序は

<script type="text/javascript" src="vendor/angular-cookies/angular-cookies.min.js"></script>
<script type="text/javascript" src="vendor/angular-translate-storage-cookie/angular-translate-storage-cookie.min.js"></script>
<script type="text/javascript" src="vendor/angular-translate-storage-local/angular-translate-storage-local.min.js"></script>
于 2015-11-04T20:42:46.153 に答える
0

私のアプリでもコメントし$translateProvider.useLocalStorage(); ますが、追加しました

$translateProvider.preferredLanguage('en');
$translateProvider.useStaticFilesLoader({
  prefix: 'languages/',
  suffix: '.json'
});

異なるjsonファイルがあり、langごとに1つずつ、funcを使用しています

$translate.use('fr') 

ユーザーが言語を変更するたびにUI言語を変更しますローカルストレージに保存し、起動時に$translate.use内で使用します

于 2015-10-06T10:55:15.020 に答える