2010-10-25 159 views
3

我已閱讀過有關本地化的信息:http://developer.android.com/guide/topics/resources/localization.html 但我需要在運行時切換我的android應用程序中的語言,例如,通過微調。如何在運行時更改語言

我試圖做SUBJ這樣

DisplayMetrics dm = res.getDisplayMetrics(); 
Configuration conf = res.getConfiguration(); 
conf.locale = new Locale(language_code.toLowerCase(), 
coutry_code.toUpperCase()); 
res.updateConfiguration(conf, dm); 

但所有更改只有在重新啓動應用程序 誰能幫我申請後?

回答

0

那麼在本地化指南中,它會自動更新......當我在應用程序中使用spinners時,它會正確更新..您在類的底部設置了spinner類嗎?或只是在你的微調的選擇,讓它重新啓動你的意圖,如:

//spinner class start... 
if(selected.equals("english") //given selected is a string returned by Spinner 
{ 
    //normal spinner content you have goes here, then 
    //for example, finish method, then restart with an intent 
    finish() 
    Intent myIntent = new Intent(main.this,main.class); 
    main.this.startActivity(myIntent); 
} 
//or.. 
if(selected.equals("french"){ // continued.. 
    refresh(); 
} 

//given that refresh(); 
public void refresh(){ 
    finish() 
    Intent myIntent = new Intent(main.this,main.class); 
    main.this.startActivity(myIntent); 
} 
+0

謝謝,山姆! 也許你可以回答如何從某些地區獲取資源字符串? – 2010-10-28 17:00:34

+0

我很抱歉,你將不得不再次嘮叨..我不確定你在問什麼。你是否問過,如何有多個地方獲取字符串? – Samuel 2010-11-02 17:01:29

+0

我有幾個語言環境 - en,ru,fr,de。當在選定的設備設置中時法語區域設置和我試圖調用getString(strId)返回給我的值將來自fr/strings.xml,但如果我想從另一個字符串獲取字符串,例如英語?是否存在某種獲得像getString(strId,locale)這樣的字符串的方法? – 2010-11-08 16:18:05