繁体   English   中英

Angular-translate和ngRoute $ routeParams

[英]Angular-translate and ngRoute $routeParams

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

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

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

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

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

这是我进入i18n之前的工作方式

// 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": "blue",
  "color": "Blue",
  "description": "The color blue is one of trust, honesty and loyalty"
 }

我有一个包含json文件的文件夹,该文件夹中装有该项目的ID。 和我的html看起来像这样:

<dl class="dl-horizontal" ng-controller="MyController">
    <dt>{{ 'item.label.color' | translate }}</dt>
    <dd>{{ item.color }}</dd>
    <dt>{{ 'item.label.description' | translate }}</dt>
    <dd>{{ item.description }}</dd>
</dl>

我能够转换项目的标签,因为在所有json文件中其标签始终相同,但是我真正需要的是转换值。

有什么解决办法吗?

提前致谢

代替静态文件加载器,看看PartialLoader。 这使您可以将模板分为多个部分,并分别请求每个部分。

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

有了这个,你

$translatePartialLoader.addPart('common');

会加载'common / i18n / .json'

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM