Angular-translate和ngRoute $ routeParams

时间:2016-02-17 12:17:37

标签: javascript angularjs json ngroute angular-translate

我正在使用angular-translate为3种语言添加支持(英语,葡萄牙语和西班牙语),一切正常。

NameError: name 'north' is not defined

这样我就有3个文件,包含3种语言的所有翻译。但我现在面临的问题是,

如果我需要翻译来自json文件的数据并通过带有ngRoute的$ routeParams动态更改,该怎么办?

这是我进入i18n之前的做法

    // config angular translate
app.config(['$translateProvider', function ($translateProvider) {
  // configures staticFilesLoader
  $translateProvider.useStaticFilesLoader({
    prefix: 'translations/locale-',
    suffix: '.json'
  });

  $translateProvider.preferredLanguage('en');
}]);

其中一个json文件

// MyController

app.controller('MyController', ['$scope', '$routeParams', '$http',
    function($scope, $routeParams,  $http) {
        $http.get('someFolder/' + $routeParams.itemId + '.json').success(function(data) {
            $scope.item = data;
        });
    }]);

我有一个带有json文件的文件夹,它载有项目的ID。我的HTML看起来像这样:

{
  "id": "blue",
  "color": "Blue",
  "description": "The color blue is one of trust, honesty and loyalty"
 }

我能够翻译项目的标签,因为它在所有json文件中始终相同,但我实际需要的是翻译这些值。

有没有解决方案?

提前致谢

1 个答案:

答案 0 :(得分:0)

而不是静态文件加载器,请查看PartialLoader。这允许您将模板分解为零件,并单独请求每个零件。

$translateProvider.useLoader('$translatePartialLoader', {
    urlTemplate: '{part}/i18n/{lang}.json',
    loadFailureHandler: 'TranslationErrorHandler'
});

用这个,你做

$translatePartialLoader.addPart('common');

将加载'common / i18n / .json'