1

我正在开发一个使用 PhoneGap 和 Backbone JS 的 HTML5 应用程序。

问题是通过设置在 Android 设备上更改的语言没有进入我的 HTML 5 应用程序,尽管我可以看到它在独立的浏览器实例中发生了更改。

为了支持应用程序的全球化,我使用 i18n 插件为应用程序选择当前语言。我的应用程序在 iOS 上运行良好。但是,当我在 Android 上尝试此操作时,用户选择的语言不会得到反映例如,如果我从系统设置中选择法语作为我的语言并尝试查看 window.navigator.language 的值是什么,它仍然是enfr相反,这在 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

4

2 回答 2

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);
于 2012-05-18T06:29:16.180 回答
1

选定的答案似乎不适用于 Cordova-Crosswalk 项目。实际上使用 Moto G2 和 Cordova-Crosswalk 返回“99”,因为 userAgent 是这样的:

userAgent 与 Cordova-Crosswalk 和 Moto G2

我建议使用Cordova 全球化插件或使用 Java 方法制作自己的简单插件:Locale locale = Locale.getDefault();

于 2015-08-12T07:15:39.790 回答