Angular 翻译:针对特定区域设置使用不同的后备语言

Angular Translate: Use different fallback languages for specific locales

我想支持之间的翻译,例如不同版本的英语,但有共同的回退。

以下是设置的示例:

locales/en_AU.json
locales/en_US.json
locales/en.json
locales/fr_BE.json
locales/fr_FR.json
locales/fr.json
...

我想要例如en_AU.json 中有一些澳大利亚特定的字符串,但 en.json 中有其余字符串。

在代码中我想要这样的东西:

$translateProvider.fallbackLanguage(['en_*' : 'en', 'fr_*' : 'fr'])

或者通常尝试回退到下划线之前的任何内容。

我也想要一个通用的后备语言

有没有办法做到这一点?

我最终监听了语言更改,如果新语言键包含下划线(例如 da_DK),我将回退堆栈更改为 ['da','en'] 和调用的刷新。

$translate.use(languageKey);
// Check if language has a country code and add general language as fallback along with English
if (languageKey.indexOf('_') !== -1) {
  $translate.fallbackLanguage([languageKey.substring(0,languageKey.indexOf('_')), 'en']);
}
$translate.refresh();

我正在使用部分加载器,但它最初对我不起作用。它加载了我更改为 OK 的语言,但没有加载额外的后备语言。最后一个 $translate.refresh() 很重要