2012-05-17 21 views
1

我正在使用PhoneGap和Backbone JS的HTML5應用程序。在Android上檢測並應用HTML 5應用上的當前系統語言

問題是,通過設置在Android設備上的語言更改沒有得到我的HTML 5應用程序,但我可以看到它在獨立瀏覽器實例中得到更改。

爲了支持應用程序的全球化,我使用i18n插件爲應用程序選擇當前語言。我的應用在iOS上運行得很好。然而,當我在Android上嘗試這樣做時,用戶選擇的語言沒有得到反映例如,如果我從系統設置中選擇法語作爲我的語言,並嘗試查看window.navigator.language的值是什麼,它仍然是en反對到fr,這在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

回答

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); 
+0

真棒這個伎倆。謝謝:) –

+0

@BigO你能接受答案,如果它爲你工作? – dhaval

+0

@dhaval U救了我的一天!非常感謝天才! – BBHeeMAA

1

選擇的答案似乎並不與科爾多瓦,人行橫道項目工作。實際上摩托G2和科爾多瓦,人行橫道的回報「99」,因爲的userAgent是這樣的:

userAgent with Cordova-Crosswalk and Moto G2

我會建議使用Cordova Globalization plugin或使自己的簡單的插件和Java方法:區域設置區域設置= Locale.getDefault ();

相關問題