希望这里有人可以帮我弄清楚发生了什么。我有一个Angular 1.5.8 app,使用angular-translate 2.15.2。我为英语和日语设置了语言文件,并且可以在运行时交换语言,但页面加载时的默认语言始终是' en'。我已将计算机语言设置为日语,但我无法将我的网站设为默认语言。
这是我的翻译配置:
'use strict';
(function() {
angular.module('app')
.config(translation);
/**
* @name translation
* @desc Loads the string resource file associated with the selected language code.
* @ngInject
*/
function translation($translateProvider) {
// Specifies mappings of alternative language codes to a root language.
$translateProvider.registerAvailableLanguageKeys([
'en',
'ja',
], {
'en': 'en',
'en_*': 'en',
'ja': 'ja',
'ja_JP': 'ja',
});
$translateProvider.useLocalStorage();
$translateProvider.useSanitizeValueStrategy('escape');
$translateProvider.useLocalStorage();
$translateProvider.useStaticFilesLoader({
prefix: 'assets/languages/strings-',
suffix: '.json',
});
$translateProvider.fallbackLanguage('en');
$translateProvider.determinePreferredLanguage();
}
})();
我将计算机设置为日语,其他网站默认为日语。 如果我检查NG_TRANSLATE_LANG_KEY,那就是' en'。如果我控制日志navigator.languages,它是[' ja',' en',' en-US']。 Navigator.language是' en'
我的理论结束时我接下来要检查什么。有人有想法吗?
答案 0 :(得分:0)
以下命令设置默认语言:
$translateProvider.preferredLanguage('de');
我在下面的示例plunker上尝试了这个,并且在页面加载时将语言设置为german。请检查。
http://plnkr.co/edit/6ON0weZvpqczHjsW9gfw?p=preview
我可以看到你在配置中没有尝试过上面的命令。请检查一下是否有效。
答案 1 :(得分:0)
正如Vijay Menon所说:
$translateProvider.fallbackLanguage('en');
如果没有设置语言,这是您的后备。而你的计算机语言与它无关。
翻译的工作原理是它在您的浏览器本地存储中检查名为NG_TRANSLATE_LANG_KEY的密钥,并检查其值和行为。如果是'en',它将加载文件
assets/languages/strings-en.json