angular-翻译 link 不工作

angular-translate link not working

我无法使用 angular-translate 将 link 翻译成另一种语言。

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

见下文plunker.

它显示 "en.ORANGE" 而不是 "orange"。

有关参考,请参阅 documentation 部分 "Shortcuts and Links"。

文档中的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 从哪里取值。