【问题标题】:Angular-translate and ngRoute $routeParamsAngular-translate 和 ngRoute $routeParams
【发布时间】:2016-02-17 12:17:36
【问题描述】:

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

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

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

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

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

这是我在进入 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 文件中始终相同,但我真正需要的是翻译值。

有什么解决办法吗?

提前致谢

【问题讨论】:

    标签: javascript angularjs json ngroute angular-translate


    【解决方案1】:

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

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

    这样就可以了

    $translatePartialLoader.addPart('common');
    

    这将加载“common/i18n/.json”

    【讨论】:

    • 谢谢你会看看。会回来告诉你是否有效
    • 我无法解决 PartialLoader 的问题。我找不到关于它的好文档。是否可以使用两种装载机?因为应用程序已经使用静态文件加载器完成了,如果可以在使用 http 获取 json 文件的控制器上使用 PartialLoader,那就太好了
    • 感谢您的回复,但由于我是 angularjs 新手(实际上是编程),我创建了静态 html 文件,而不是使用 http 动态加载 json 数据,这样我就可以使用静态文件加载器轻松翻译.我知道它改变了应用程序的工作方式,但我(还)觉得处理复杂的应用程序不太舒服。不过感谢您的遮阳篷,也许在未来的项目中我可能会使用该装载机
    猜你喜欢
    • 2016-02-07
    • 1970-01-01
    • 1970-01-01
    • 2023-03-14
    • 1970-01-01
    • 1970-01-01
    • 2015-11-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多