Angular translate - 同一语言的不同异步文件?

时间:2015-09-25 16:16:57

标签: javascript angularjs angular-translate

Angular translate可以很好地支持多种语言异步加载。但它不支持为同一种语言加载不同的文件,区别在于区域。

$translateProvider
 .determinePreferredLanguage( )
 .registerAvailableLanguageKeys( [ 'en', 'de' ], {
    en_us: 'us',
    en_uk: 'uk',
    de_de: 'de'
 })
 .useStaticFilesLoader( {
    prefix: '/localization/i18n/',
    suffix: '.json'
 })

我正在尝试使用回退和语言协商来实现这一点,但任何其他解决方案都会有所帮助。

我想避免的一种特别愚蠢的方法是为英国创建一种虚拟语言。以下代码有效,

$translateProvider
 .determinePreferredLanguage( )
 .registerAvailableLanguageKeys( [ 'en', 'uk', 'de' ], {
    us: 'us',
    uk: 'uk',
    de: 'de'
 })
 .useStaticFilesLoader( {
    prefix: '/localization/i18n/',
    suffix: '.json'
 })

这会改变应用中需要en_uk的许多其他地方(特定于地区的API调用)。

2 个答案:

答案 0 :(得分:0)

将后备语言设置为en和你的虚拟en_uk(应该真的是en_gb)只需要覆盖特定的翻译不起作用吗?

我遗失了某些内容,或者您​​遇到的是https://github.com/angular-translate/angular-translate/issues/563

答案 1 :(得分:0)

问题在于determinePreferredLanguage总是以en_US的形式获取浏览器语言,因此App最终调用了en.json。

我最终不得不在我的控制器中使用$translate.use( langKey ),其中langKey是基于我所需区域的语言。