2016-07-12 26 views
0

Ich habe eine Json mit traslations für meine Seite, die von statischen Dateien lädt geladen wird, die gut funktioniert, aber wenn ich $ httpBackend verwenden, um API-Aufrufe zu simulieren, lädt es nicht. Meine Config sieht wie folgt aus:Angular translate statische Dateien loader mit html-Backend

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

Ich habe auch alle Vermögenswerte in htmlBackend wie dies der weißen Liste:

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

irgendwelche Vorschläge? Vielen Dank.

+0

Ist es nicht geladen oder die Antwort ist leer? Wenn Sie '$ httpBackend.whenGET (/ assets. * /). respond (200, '');' ausführen, wird bei jedem von Ihnen getätigten Aufruf eine leere Zeichenfolge zurückgegeben. Versuchen Sie '$ httpBackend.whenGET ('assets/lang-de.json'). Antworten (200, 'json response here');' – maurycy

Antwort

0

Ich würde vorschlagen, überhaupt keine Lazy Loading zu verwenden. (Natürlich, wenn Sie nicht zu viele Sprachen haben).

Nur Text JSON-Datei in Ihrem Paket enthalten bauen:

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

Wie/wo kann ich diesen Import verwenden? sieht so einfach aus, aber ich bekomme "app.js: 1 Uncaught SyntaxError: Unerwarteter Token-Import" – Gatekeeper

+1

Ok, ich habe es mit var initInjector = angular.injector (['ng']) behoben; var $ http = initInjector.get ('$ http'); $ http.get ('/ assets/lang-en.json') .dann (Funktion (Ergebnis) { $ translateProvider.translations ('en', result.data); }); – Gatekeeper

+0

Aber das war der richtige Ansatz, danke – Gatekeeper