4

当使用 angular-translate 本地化我的 Angular 应用程序时,如果首选语言(通过静态文件加载器)无法加载或由于任何原因不存在,则不会尝试使用后备语言。

$translateProvider.useStaticFilesLoader({
    prefix: 'locale-',
    suffix: '.json'
});
$translateProvider
    .preferredLanguage('ja')
    .fallbackLanguage('en');

plnkr 可用:http ://plnkr.co/edit/tHrBeY0Ur0rhp0xNuWpA?p=preview

如果有一个空的 locale-ja.json 文件,则正确加载了回退。正如所指出的,这可能是一个库错误。有没有人找到解决方法?

4

2 回答 2

3

FallbackLanguge 函数还有另一个目的 - 如果翻译表没有特定的键,则将使用来自后备语言的翻译。如果要指定默认语言,可以在 registerAvailableLanguageKeys 函数中使用通配符:

.registerAvailableLanguageKeys(['en, da'], {
    'en_US': 'en',
    'en_UK': 'en',
    'da_DK': 'da',
    '*': 'en'
})

在此示例中,“en”是默认语言。如果首选语言不存在,它将加载。

于 2015-09-28T07:36:00.280 回答
0

目前偶然发现了同样的问题,我可以解决它的唯一方法是添加$translateProvider.use()选项。所以它看起来像这样:

 $translateProvider
    .preferredLanguage('ja')
    .use('ja')
    .fallbackLanguage('en');
于 2016-01-28T13:31:27.660 回答