可能重複:
Change language programatically in Android運行系統語言改變的Android
我可以改變應用程序的語言運行時根據如用戶通過使用Android本地化支持(不是某些自己的/第三方解決方案)在菜單中選擇?
非常感謝
可能重複:
Change language programatically in Android運行系統語言改變的Android
我可以改變應用程序的語言運行時根據如用戶通過使用Android本地化支持(不是某些自己的/第三方解決方案)在菜單中選擇?
非常感謝
我實現按鈕按下語言切換中的應用程序。這在Android中並不直接,但可以完成。有兩個主要問題: 1)更改語言環境不會更改系統配置 - 系統區域設置。例如,在您的應用中將語言更改爲法語,並不會改變您的設備設置爲英語等事實。因此,在應用程序的任何其他配置更改 - 方向,鍵盤隱藏等,應用程序的區域設置將返回到系統區域設置。 2)另一個問題是,更改應用程序中的區域設置不會刷新UI,它不會重新繪製視圖。這使得在運行時很難切換。刷新/重新加載必須手動完成,這意味着必須有一種方法使用本地化的文本/消息/值刷新每個視圖。因此,首先您需要定義本地化資源:value,value-en,value-fr等。然後這將是按鈕按下開關的代碼。
private Locale myLocale;
private void onFR_langClicked(View v){
myLocale = new Locale("fr");
// set the new locale
Locale.setDefault(myLocale);
Configuration config = new Configuration();
config.locale = locale;
getBaseContext().getResources().updateConfiguration(config, getBaseContext().getResources().getDisplayMetrics());
// refresh UI - get values from localized resources
((RadioButton) findViewById(R.id.butn1)).setText(R.string.butn1);
((RadioButton) findViewById(R.id.butn2)).setText(R.string.butn2);
spin.setPromptId(R.string.line_spinner_prompt);
...
}
在兩種方法中分離兩個步驟是一種很好的做法:一種是切換調用UI刷新的區域設置。
然後你還需要處理配置更改,並確保語言保持你的意圖。 Google建議您不要自行處理配置更改。清單必須包含這每一個活動:
<activity
android:name=". ..."
android:configChanges="locale|orientation|keyboardHidden" >
,它允許你定義自己的變化處理程序:
@Override
public void onConfigurationChanged(Configuration newConfig){
super.onConfigurationChanged(newConfig);
if (myLocale != null){
newConfig.locale = myLocale;
Locale.setDefault(myLocale);
getBaseContext().getResources().updateConfiguration(newConfig, getBaseContext().getResources().getDisplayMetrics());
}
}
希望這有助於。希望你瞭解這個原則。
以下文章將幫助你[http://stackoverflow.com/questions/2900023/change-language-programatically-in-android](http://stackoverflow.com/questions/2900023/change-language-programatically-在Android) – ingsaurabh 2011-03-09 05:12:28