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调用)。
答案 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
是基于我所需区域的语言。