1

PhoneGap と Backbone JS を使用する HTML5 アプリに取り組んでいます。

問題は、Android デバイスで設定を介して変更された言語が HTML 5 アプリで取得されないことですが、独立した Browser インスタンスで変更されていることがわかります。

アプリのグローバル化をサポートするために、i18n プラグインを使用してアプリの現在の言語を選択しています。私のアプリは iOS で問題なく動作します。ただし、Androidでこれを試してみると、ユーザーが選択した言語が反映されません。たとえば、システム設定から言語としてフランス語を選択し、window.navigator.languageの値を確認しようとすると、frではなくenのままです、これは完全に 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.
    }
}`

誰かが問題が何であるかを理解するのを手伝ってくれませんか?

ありがとうビッグオー

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 では、userAgent が次のようになっているため、"99" が返されます。

Cordova-Crosswalk および Moto G2 を使用した userAgent

Cordova グローバリゼーション プラグインを使用するか、Java メソッドを使用して独自のシンプルなプラグインを作成することをお勧めします: Locale locale = Locale.getDefault();

于 2015-08-12T07:15:39.790 に答える