Angular-translate总是使用英语

时间:2017-10-16 22:30:42

标签: angularjs angular-translate

希望这里有人可以帮我弄清楚发生了什么。我有一个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'

我的理论结束时我接下来要检查什么。有人有想法吗?

2 个答案:

答案 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