デバイスのロケールを把握するために、navigator.globalization.getLocaleName を使用して、PhoneGap 2.2.0 の新しい組み込みグローバリゼーション サポートを使用しています。ただし、アプリは停止するだけで、スピナー (jQuery Mobile によって強化された) は無期限に回転するだけです。iOS と Android の両方でテストしましたが、結果は同じでした。これが私のコードです:
$('#home').live('pageinit', function()
{
var app_language = localValue('app_language');
//console.log('app_language variable holds: '+app_language);
if ( app_language === '' )
{
var successCB = function(locale)
{
alert('success');
//console.log('locale is: '+locale.value);
window.localStorage.setItem('app_language', locale.value);
};
var failureCB = function(error)
{
if (error = Globalization.UNKNOWN_ERROR)
{
console.log('error getting locale');
}
};
navigator.globalization.getLocaleName(successCB, failureCB);
}
else
{
console.log('got this far');
switch (app_language)
{
case 'en_CA':
//console.log('using English dictionary');
$.i18n.setDictionary(lang_english);
break;
case 'en_US':
//console.log('using English dictionary');
$.i18n.setDictionary(lang_english);
break;
case 'fr_CA':
//console.log('using Canadian French dictionary');
$.i18n.setDictionary(lang_french);
break;
default:
//console.log('default to English dictionary');
$.i18n.setDictionary(lang_english);
}
}
$('#hit_to_begin').text($.i18n._('helper_text'));
});
navigator.globalization.getLocaleName への呼び出しをコメントアウトすると、正常に動作します。動作は、iOS と Android 4.0 以降の両方で同じです。私は本当にここで終わりです。