【问题标题】:Change some translation during runtime在运行时更改一些翻译
【发布时间】:2018-02-07 23:35:05
【问题描述】:

我有一个 AngularJS 应用程序,它支持 3 种语言,它使用 .json 文件来加载所有语言键值对。

但是我想在运行时动态更改一些键值对。

例如,默认情况下,我将“ORDER.HEADING”设置为“Heading”。如果用户做了特定的事情,它应该是“不同的标题”。

我该怎么做?我无法访问控制器中的 translateProvider 服务,并且 $translate 服务似乎没有可以更新键值对的方法...

【问题讨论】:

  • 从未使用过角度翻译,但在运行时更改键值似乎不是最好的解决方案,使用两个不同的键,如 ORDERD.HEADING 和 ORDER.HEADING.SPECIAL 并在运行时更改绑定...发布您的代码或 jsfiddle 以获得更多帮助

标签: javascript html angularjs angular-translate ngx-translate


【解决方案1】:

很遗憾,您无法在运行时更新 json 文件及其键/值 paris。 我建议您执行以下操作:

在您的模板中调用一个函数来检索您的密钥:

<h1>{{ $ctrl.getI18nHeadingKey() | translate }}</h1>

在您的控制器内部:

this.someCondition = false;

getI18nHeadingKey() {
  return this.someCondition ? 'YOUR_TRANSLATION_KEY_IF_IT_IS_TRUE' : 'YOUR_TRANSLATION_KEY_IF_IT_IS_FALSE';
}

确保在您的 json 文件中添加和翻译这两个键,就像您对所有其他翻译所做的那样。 当然,如果您有多个条件,则可以扩展给定的示例。只需在给定条件的模板中返回您想要的翻译键即可。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-05
    • 2017-02-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-05
    • 1970-01-01
    相关资源
    最近更新 更多