2016-07-12 1 views
0

J'ai un JSON avec traslations pour ma page qui est chargé par le chargeur de fichiers statiques qui fonctionne très bien, mais quand j'utilise $ httpBackend pour simuler api appels il ne marche pas la charge. Ma config ressemble à ceci:angulaire traduire loader fichiers statiques avec html-backend

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

J'ai également whitelisted tous les actifs dans htmlBackend comme ceci:

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

des suggestions? Merci.

+0

est-il pas chargé ou la réponse est vide? quand vous faites '$ httpBackend.whenGET (/ assets. * /). respond (200, '');' il renvoie une chaîne vide à chaque appel que vous faites. Essayez '$ httpBackend.whenGET ('actifs/lang-en.json') répondre (200, 'réponse JSON ici.');' – maurycy

Répondre

0

je suggère de ne pas utiliser le chargement paresseux du tout. (Bien sûr, si vous n'avez pas trop de langues).

Il suffit de construire fichier texte JSON dans votre paquet:

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

Comment/Où puis-je utiliser cette importation? semble si simple, mais je reçois "app.js: 1 Uncaught SyntaxError: import Unexpected token" – Gatekeeper

+1

Ok je l'ai fixé par var = initInjector angular.injector ([ 'ng']); var $ http = initInjector.get ('$ http'); $ http.get ('/ assets/lang-en.json') .then (fonction (résultat) { $ translateProvider.translations ('en', result.data); }); – Gatekeeper

+0

Mais ce fut la bonne approche, je vous remercie – Gatekeeper