5

3 つのモバイル プラットフォーム (Android、iOS、Windows Mobile 8) で動作する HTML5 モバイル アプリを作成しています。ローカリゼーションに JavaScript を使用しています ( https://github.com/eligrey/l10n.js/#readme )。

アプリはブラウザ上で正常に動作します。しかし、モバイル エミュレーターにデプロイすると、ローカリゼーションが機能しません。

問題は JavaScript がブラウザから言語情報を取得することだと思いますが、モバイルでは PhoneGap を使用して HTML5 を実行します。

PhoeGap で JavaScript を使用してローカリゼーションを有効にする方法はありますか?

4

3 に答える 3

3

独自の JavaScript を記述して、ローカライズ言語を取得できます。これは、私がここで他の場所に書いたのとまったく同じ返信です。

一般に、JavaScriptwindow.navigator.languageは通常、iOS および新しい Android で機能しますが、以前のバージョンの Android では、en.

古い Android の場合、言語パラメーターを UserAgent 文字列から引き出すことをお勧めします (はい、スニッフィング!)。

if (navigator && navigator.userAgent && (androidLang = navigator.userAgent.match(/android.*\W(\w\w)-(\w\w)\W/i))) {
   lang = androidLang[1];
}

ここで、lang には国コード (例: 'en-IE') も含まれている可能性があるため、これも削除する必要がある場合があります。

if (lang.indexOf('-') != -1) lang = lang.substring(0, lang.indexOf('-'));

これは、HTML5 と PhoneGap を使用して最近のアプリで使用したもので、正常に動作します。

于 2013-02-14T08:33:48.513 に答える
1

ローカリゼーションにはよくある落とし穴が 1 つあります。おそらくこれが問題です。多くのデバイスはロケールを、など
の形式で報告します。アンダースコアに注意してください。de_DEen_GB

l10n (または私の場合はglobalize.js ) はハイフンを使用して言語と国を区切ります。したがって、一致するカルチャが見つからず、デフォルトのフォールバックが表示されます。

アプリに を入れて、console.log取得しているロケール文字列をダンプしてから、コンソールに移動して、adb logcatこれがデバイスに当てはまるかどうかを確認します。次に、一致を許可するように文字列を変更するだけです (例: locale.value.replace('_', '-'))

于 2013-04-14T21:16:55.527 に答える