angular-translate не переводит загруженный статический файл

Я использую следующие угловые файлы для переводов:

  • angular-translate.min.js (v2.2.0)
  • angular-translate-loader-static-files.min.js (v2.2.0)
  • angular-translate-storage-cookie.min.js (v2.2.0)
  • angular-translate-storage-local.min.js (v2.2.0)
  • angular-cookies.min.js (v1.2.22)

angular-translate работает, когда я делаю следующее:

$translateProvider.translations('en_us', {
    "label.test": "It works."
});

Но не тогда, когда я пытаюсь использовать статический файл...

Мой HTML:

<html data-ng-app="myApp">
...
{{"label.test" | translate}}

Мой app.js:

var myApp = angular.module('myApp', ['ngCookies', 'pascalprecht.translate']).config(['$translateProvider', function($translateProvider) {
    $translateProvider.preferredLanguage('en_us');
    $translateProvider.useStaticFilesLoader({
        prefix: '/app/resources/messages/i18n_',
        suffix: '.json'
    });
    $translateProvider.useLocalStorage();
    $translateProvider.storageKey('lang');
}]);

Мой ответ Get (с Content-Type, установленным на: application/json):

{
    "label.test":"It works from JSON."
};

Визуализированная HTML-страница показывает: label.test

Кроме того, в моей консоли нет ошибок. Я также пытался переименовать ключ в TEST, но это тоже не сработало.

Любые идеи?

Спасибо.


person h-bomb    schedule 20.08.2014    source источник
comment
Что произойдет, если вы используете директиву перевода вместо фильтра. <p translate="label.test"></p>   -  person BigHeadCreations    schedule 20.08.2014


Ответы (1)


Убедитесь, что путь к вашему .json указан правильно. Если он не найден в вашем шаблоне, он просто распечатает label.test вместо фактического перевода It works from JSON., как это делается.

Корень вашего приложения, скорее всего, является приложением, поэтому, если ваш файл перевода находится в /app/resources/messages/i18n_en_us.json, попробуйте:

$translateProvider.useStaticFilesLoader({
    prefix: '/resources/messages/i18n_',
    suffix: '.json'
});

Также убедитесь, что ваш JSON является допустимым JSON. Уберите точку с запятой в конце.

{
    "label.test":"It works from JSON."
}
person BigHeadCreations    schedule 20.08.2014
comment
Привет BigHeadCreations - это была точка с запятой. Я удалил его, и теперь работают оба: {{"label.test" | translate}} и <p translate="label.test"></p> Большое спасибо! - person h-bomb; 20.08.2014
comment
я знаю, что это старый пост, но просто добавлю его еще раз.. очень важно, чтобы путь был правильным.. если вы не уверены.. вы можете попробовать ввести его в свой браузер и попытаться узнать правильный путь, пока что-то не появится ... или посмотрите в отладке вашего браузера, если ваш файл json в network-> XHR показывает правильное содержимое, тогда вы уверены, что этот путь, который вы установили, правильный. - person damir; 15.06.2015