【问题标题】:angular-translate nested JSON and filter角度翻译嵌套的 JSON 和过滤器
【发布时间】:2016-11-03 14:18:22
【问题描述】:

当使用angular-translate 时,我可以像这样过滤我的字符串:

<ANY>{{'TRANSLATION_ID' | translate}}</ANY>

它适用于以下平面 JSON:

 {
  TRANSLATION_ID: 'A value',
};

但是,我不知道如何使用嵌套翻译使其工作:

<ANY>{{'NAMESPACE.TRANSLATION_ID' | translate}}</ANY>

还有嵌套的 JSON:

{
    "NAMESPACE": {
         "TRANSLATION_ID": "A value"
    }
};

我使用$translateProvider.useStaticFilesLoader({prefix: 'i18n/locale-', suffix: '.json'});成功加载翻译,并使用提供者的其他功能,例如$translateProvider.addInterpolation('$translateMessageFormatInterpolation');

documentation 显示了直接使用service 而不是filter 的嵌套翻译示例。

I found a possibly related issue here。 首先,使用 JSFifddle 中的代码会破坏 $translateProvider 函数(我通过像这样扩展替换变量以某种方式修复它:$TranslateProvider = angular.extend(m, $TranslateProvider); 在注入 $translateProviderm 并添加 pascalprecht.translate 作为模块后依赖项,并添加var 声明以能够'use strict') - 所以马上它似乎不是一个可靠的解决方案。

使用该 JSFiddle 代码,我得到了 指令 工作,至少对于非嵌套情况(这很好,但不是这里需要的,所以我没有费心测试嵌套案例)但不是过滤器(我需要为嵌套和非嵌套翻译工作)。

在我看来,命名空间翻译应该是一件大事,因此应该适用于所有 3 种翻译方法(服务、指令和过滤器)。

"service" 方法相当有限($translate 服务不提供双向数据绑定,这意味着需要更多代码来监听事件 - see doc - 而且,加载所有接口的字符串翻译的事实在应用程序的控制器/服务中似乎是一个非常糟糕的做法;如果我没记错的话,视图/模板就在这里)。

有没有人找到解决方案,或者角度翻译嵌套 JSON 仅适用于服务?

【问题讨论】:

  • 似乎我找到了如何在不使用额外代码的情况下使其工作。令人沮丧的是我不知道如何......

标签: angularjs json filter nested angular-translate


【解决方案1】:

我知道我现在哪里搞砸了——嵌套翻译中可怕的逗号结束:

{
    "NAMESPACE": {
         "TRANSLATION_ID": "A value",
         "ANOTHER_ID": "Another value",
    }
};

所以,是的,完全不相关。

【讨论】:

  • 那个逗号怎么样?它应该在那里还是不在那里?不管怎样,可悲的是它对我不起作用。
  • 我不好,因为没有让它更精确 - 在上面的例子中,它不应该出现在“另一个值”之后。不太清楚为什么它在你的情况下不起作用。感谢您指出这一点,祝您好运!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-15
  • 1970-01-01
  • 2017-06-27
  • 1970-01-01
相关资源
最近更新 更多