2010-09-30 86 views
5

我的應用程序中有一項設置,允許用戶選擇不同的本地化(語言),即Chinese, German, etcandroid:在運行中反映UI語言更改,無需重新加載/重新啓動應用程序

我想要做的是,一旦用戶做出選擇,立即用當前所選語言的字符串更新佈局。當然,我希望lang更改傳播到所有當前活動,無需重新加載應用程序。

我發現這(尚未嘗試過),但想知道是否有一個更乾淨的方式來做到這一點。

http://www.tutorialforandroid.com/2009/01/force-localize-application-on-android.html

格拉西亞斯

+0

你好,你找到最佳做法嗎? thx – 2012-06-30 09:23:16

回答

2

我也有過這樣issue.I使用下面的代碼,然後它改變了語言,而不用刷新活動

public void setLocale(String lang) { 

    myLocale = new Locale(lang); 
    Resources res = getResources(); 
    DisplayMetrics dm = res.getDisplayMetrics(); 
    Configuration conf = res.getConfiguration(); 
    conf.locale = myLocale; 
    res.updateConfiguration(conf, dm); 
    onConfigurationChanged(conf); 
    /*Intent refresh = new Intent(this, AndroidLocalize.class); 
    startActivity(refresh);*/ 
} 
@Override 
public void onConfigurationChanged(Configuration newConfig) { 
    // refresh your views here 
    lblLang.setText(R.string.langselection); 
    super.onConfigurationChanged(newConfig); 
} 

我希望它會幫助你.. .....

+1

已從以下鏈接的投票數最多的答覆複印。即使是評論的代碼。 http://stackoverflow.com/questions/12908289/how-change-language-of-app-on-user-select-language – 2015-06-24 00:48:32

0

您應該執行一些步驟

首先,您需要更改配置的區域

Resources resources = context.getResources(); 

    Configuration configuration = resources.getConfiguration(); 
    configuration.locale = new Locale(language); 

    resources.updateConfiguration(configuration, resources.getDisplayMetrics()); 

其次,如果你希望你的變化,直接適用於可見的佈局,你要麼可以直接更新的意見,也可以直接撥打活動.recreate()重新啓動當前活動。

而且你必須堅持你的改變,因爲在用戶關閉你的應用程序後,你將失去語言的改變。

我在我的博客文章解釋更詳細的解決方案Change Language Programmatically in Android

基本上,你只需要調用LocaleHelper.onCreate()在你的應用程序類,如果你想改變,你可以調用LocaleHelper.setLocale飛區域()

相關問題