我正在使用 PhoneGap 2.2.0 中新的内置全球化支持,使用 navigator.globalization.getLocaleName 来确定设备区域设置是什么。然而,该应用程序只是停止并且微调器(由 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+ 上的行为相同。我真的走到了尽头。