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?
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