2017-03-21 1 views
1

Nous utilisons angulaire 1.2.16 et i18next 0.2.6 pour le développement. Dans notre application, la localisation fonctionne correctement lorsque JSON provient du même serveur.localisation AngularJS + i18n chargement JSON d'un autre serveur

Maintenant, nous avons rencontré la nouvelle exigence, pour charger la chaîne de ressources, c'est-à-dire les fichiers JSON d'un autre serveur de contenu. Disons que la charge de JSON "http://mysite/locales/en-us/sample.json"

<head> 
    <meta charset="utf-8"/> 
    <title>i18next test</title> 
    <script src="i18next.js"></script> 
    <script src="angularjs/1.2.16/angular.min.js"></script> 
    <script src="ngI18next.js"></script> 

    <script> 

    angular.module('jm.i18next').config(function ($i18nextProvider) { 

      'use strict'; 

      $i18nextProvider.options = { 
       lng: 'dev', 
       useCookie: false, 
       useLocalStorage: false, 
       fallbackLng: 'dev', 
       resGetPath: '../locales/__lng__/__ns__.json', 
       ns: { 
        namespaces: ['messages', 'options'], 
        defaultNs: 'messages' 
       } 
      }; 

    }); 
    angular.module('MyApp', ['jm.i18next']).controller('MyProviderCtrl', function ($rootScope, $scope, $i18next) { 
     $rootScope.$on('i18nextLanguageChange', function() { 
      $scope.hello = $i18next('messages:header.name'); 
     }); 
    }); 
    </script> 
</head> 
<body ng-app="MyApp"> 
    <div ng-controller="MyProviderCtrl"> 
     <div>{{hello}}</div> 
     <div ng-i18next="options:moment-i18n"></div> 
     <div ng-i18next="messages:header.name"></div> 
     <div ng-i18next="header.name"></div> 
    </div> 
</body> 

J'ai essayé de changer resGetPath: '../locales/__lng__/__ns__.json' à resGetPath: 'http://mysite/locales/en-us/sample.json' son fichier JSON de chargement du serveur cependant ce n'est pas la traduction du texte sur l'interface utilisateur.

Des suggestions comment traduire?

+1

Je dirais que d'une certaine manière sur votre serveur local le fichier est chargé, puis l'événement 'i18nextLanguageChange' incendies alors que le contraire arrive avec l'autre serveur. Essayez d'écouter l'événement 'onload' (http://i18next.com/docs/api/#on-loaded) puis de déclencher l'événement' i18nextLanguageChange' peut-être? – Piou

Répondre