AngularJs 默认语言 AngularTranslation
AngularJs default language AngularTranslation
我想按用户国家/地区设置默认语言,但我无法在 $.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");
});
您可能 运行 处于异步问题中,因此,当 ajax 调用 $.get
(假设是 jQuery)得到解决时,您已脱离配置angular 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);
}
})
});
我想按用户国家/地区设置默认语言,但我无法在 $.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");
});
您可能 运行 处于异步问题中,因此,当 ajax 调用 $.get
(假设是 jQuery)得到解决时,您已脱离配置angular 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);
}
})
});