2016-07-12 10 views
0

静的ファイルローダーによってロードされるページのtraslationsをjsonに持っていますが、$ httpBackendを使用してapi呼び出しをシミュレートすると、does not loadと呼びます。私の設定は次のようになります。角度変換静的ファイルローダーhtml-backendで

$httpBackend.whenGET(/assets.*/).respond(200, ''); 

任意の提案:

$translateProvider.useStaticFilesLoader({ 
     prefix: "assets/lang-", 
     suffix: ".json" 
    });*/ 
    $translateProvider.useInterpolation('textBreaksInterpolation'); 
    $translateProvider.preferredLanguage('en'); 

私はこのようなhtmlBackend内のすべての資産をもホワイトリストに登録していますか?ありがとう。

+0

は、それがロードされていないか、応答が空である:

ちょうどあなたのバンドルにテキストJSONファイルをビルドしますか?あなたが '$ httpBackend.whenGET(/ assets。* /)。respond(200、 '');'を実行すると、あなたがするすべての呼び出しに空文字列が返されます。 '$ httpBackend.whenGET( 'assets/lang-en.json')。respond(200、 'json response here');' – maurycy

答えて

0

私はレイジーローディングをまったく使用しないことをお勧めします。 (もちろん、あまりにも多くの言語を持っていない場合)。

import textsEn from 'texts.en.json'; 
import textsDe from 'texts.de.json'; 
import textsEs from 'texts.es.json'; 

.config($translateProvider => { 
    $translateProvider.translations('en', textsEn); 
    $translateProvider.translations('de', textsDe); 
    $translateProvider.translations('es', textsEs); 
}) 
+0

どうやってそのインポートを使うことができますか? "app.js:1 Uncaught SyntaxError:予期しないトークンのインポート" – Gatekeeper

+1

私はそれをvar initInjector = angular.injector(['ng'])で修正しました。 var $ http = initInjector.get( '$ http'); $ http.get( '/ assets/lang-en.json') .then(function(result){ $ translateProvider.translations( 'en'、result.data); }); – Gatekeeper

+0

しかし、これは適切なアプローチでした。 – Gatekeeper

関連する問題