AngularJs默认语言AngularTranslation

时间:2015-12-05 11:45:42

标签: angularjs angular-translate

我想按用户国家/地区设置默认语言,但我无法在$ .get中设置preferredLanguage。我正在使用“http://ipinfo.io”。有没有其他方法可以设置默认语言?

var app = angular.module('test', ['pascalprecht.translate'])
.config(function config($translateProvider, $translatePartialLoaderProvider) {
    $translateProvider
        .translations('en', {
            TRANLATION : 'Translation',
            BUTTON_LANG_EN : 'English',
            BUTTON_LANG_SK : 'Slovak',
            HOME: 'Home',
        })
        .translations('sk', {
            TRANLATION : 'Preklad',
            BUTTON_LANG_EN : 'Anglicky',
            BUTTON_LANG_SK : 'Slovensky',
            HOME: 'Zakladne informacie',
        });

    $.get("http://ipinfo.io", function(response) {
        if(response.country == 'SK'){
            $translateProvider.preferredLanguage('sk');
            }else{
                $translateProvider.preferredLanguage('en');
            }
        }, "jsonp");
});

1 个答案:

答案 0 :(得分:1)

您可能正在运行异步问题,因此,当ajax调用$.get(假设是jQuery)得到解决时,您已经离开了角度js的配置阶段......

尝试类似的东西:



in app.js 
var app = angular.module('langTest', ['pascalprecht.translate','calsethTranslate'])
  .config(function($injector, $translateProvider){
    jQuery
    .when({})
            .then(function() {
                return $.get('http://ipinfo.io', function(response) {
                    return response;
                },'jsonp')
            })
            .then(function(response) {
                var lang = response.country === 'SK' ? 'SK' : 'EN';
                var _$injector = angular.element(document.body).injector();
                console.log(lang);
                if (_$injector.has('$translate')) {
                    console.log("has "+lang);
                  return _$injector.get('$translate').use(lang);
                }
            })
        });




相关问题