【问题标题】:angular-translate link not working角度翻译链接不起作用
【发布时间】:2016-04-13 23:31:41
【问题描述】:

我无法使用 angular-translate 链接到另一种语言。

var translations = {
  "en": {
    "HELLO": "hello",
    "ORANGE": "orange"
  },
  "fr": {
    "HELLO": "salut",
    "ORANGE": "@:en.ORANGE"
  },
};

请参阅以下plunker

它显示“en.ORANGE”而不是“orange”。

有关参考,请参阅documentation,“快捷方式和链接”部分。

【问题讨论】:

  • 您到底想做什么?也就是说,什么不起作用?有没有理由甚至有@en 部分?
  • 据我所知,不可能引用另一种语言。您在哪里找到“@:”符号?
  • @fikkatra: here 在“快捷方式和链接”部分。
  • @kirkpatt:只是尝试将标签从命名空间链接到另一个标签,如“快捷方式和链接”部分中的here 所述。

标签: angularjs angular-translate


【解决方案1】:

文档中的NAMESPACE 指的是同一语言中的那个。

在你的 plunker 中,你有这个:

var translations = {
  "en": {
    "HELLO": "hello",
    "ORANGE": "orange"
  },
  "fr": {
    "HELLO": "salut",
    "ORANGE": "@:en.ORANGE"
  },
};
$translateProvider
  .translations('en', translations['en'])
  .translations('fr', translations['fr'])

当您设置.translations('fr', translations['fr']) 时,您将其作为法语的命名空间:

{
  "HELLO": "salut",
  "ORANGE": "@:en.ORANGE"
}

每当angular-translate 搜索en.ORANGE 时,它都会在上述对象中进行搜索。

使用其他语言翻译的功能尚未实现。看一下angular-translate的源码,有这么一段代码:

if (translation.substr(0, 2) === '@:') {
          getFallbackTranslation(langKey, translation.substr(2), interpolateParams, Interpolator)
            .then(deferred.resolve, deferred.reject);
        } else {...}

只要你有@: 字符,它就不会改变langKey,这意味着它会在当前语言的翻译字典中搜索翻译。

目前您的 plunker 工作正常。我制作了一个fork,以表明它正在使用命名空间中的链接。看看GREETING 的价值来自哪里。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多