角度翻译总是使用英语
希望这里有人能帮我弄清楚发生了什么。我有一个Angular 1.5.8应用程序,使用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'。
我在接下来要检查什么的理论的末尾。任何人有想法?
的命令如下设置默认语言:
$translateProvider.preferredLanguage('de');
我想这在下面的例子中plunker和语言设置为德语页面加载。请检查。
http://plnkr.co/edit/6ON0weZvpqczHjsW9gfw?p=preview
我看得出来,你有没有在你的配置尝试了上述命令。请检查这是否工作。
由于维贾伊·梅诺提到:
$translateProvider.fallbackLanguage('en');
这是你的后备,如果没有设置语言。而你的电脑语言与它无关。
翻译的工作原理是如何检查浏览器本地存储中是否存在名为NG_TRANSLATE_LANG_KEY的密钥,并检查其值和行为。如果是'en',它会加载文件
assets/languages/strings-en.json
根据文档,这一行应该从window,navigator.languages&window.navigator.language中读取。 $ translateProvider.determinePreferredLanguage(); https://angular-translate.github.io/docs/#/guide/07_multi-language –
对,我没有试图手动设置它。我要去检测预先通知的语言调用来从window.navigator.languages中获取它,如下所述:https://angular-translate.github.io/docs/#/guide/07_multilanguage –
当你做一个console.log (window.navigator.languages [0]),它显示日语吗? –
是的,它显示'ja'。与window.navigator.language相同 –