我正在开发一个使用PhoneGap和Backbone JS的HTML5应用程序。
问题是Android设备上通过设置更改的语言没有进入我的HTML 5应用程序,虽然我可以看到它在独立的浏览器实例中被更改。
为了支持应用程序的全球化,我使用i18n插件为应用程序选择当前语言。我的应用程序适用于iOS。然而,当我在Android上尝试这个时,用户选择的语言没有得到反映例如,如果我从系统设置中选择法语作为我的语言并尝试查看window.navigator.language的值是什么,它仍然是 en < / strong>与 fr 相反,这在iOS上得到了完美体现。只是为了您的信息,如PhoneGap所建议,在Android上我打电话
`public class myApp extends DroidGap {
private String pageURl = "somepath";
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
super.loadUrl(pageUrl); // this will load my app's main html page.
}
}`
有人可以帮我弄清问题是什么吗?
由于 大O
答案 0 :(得分:10)
尝试使用以下补丁从用户代理字符串中获取语言,它应该可以工作:
var lang;
if (navigator
&& navigator.userAgent
&& (lang = navigator.userAgent
.match(/android.*\W(\w\w)-(\w\w)\W/i))) {
lang = lang[1];
}
if (!lang && navigator) {
if (navigator.language) {
lang = navigator.language;
} else if (navigator.browserLanguage) {
lang = navigator.browserLanguage;
} else if (navigator.systemLanguage) {
lang = navigator.systemLanguage;
} else if (navigator.userLanguage) {
lang = navigator.userLanguage;
}
lang = lang.substr(0, 2);
}
console.log("current language is", lang);
答案 1 :(得分:1)
选择的答案似乎不适用于Cordova-Crosswalk项目。实际上,Moto G2和Cordova-Crosswalk返回“99”因为userAgent是这样的:
我建议使用Cordova Globalization plugin或使用Java方法创建自己的简单插件:Locale locale = Locale.getDefault();