2013-03-08 64 views
0

我有一個改變我的應用程序的一個活動中的所有文本的問題...我使用此代碼更改語言:安卓:改變行爲語言

else if (LANGUAGE.equals("Russian")) 
     { 
      Resources res = this.getResources(); 
      // Change locale settings in the app. 
      DisplayMetrics dm = res.getDisplayMetrics(); 
      android.content.res.Configuration conf = res.getConfiguration(); 
      conf.locale = new Locale("ru-rRU"); 
      res.updateConfiguration(conf, dm); 
} 

在AndroidManifest我已經加入這個字符串:

<activity 
     android:name="com.vladimir.expert_suise.ThirdScreen" 
     android:label="@string/title_activity_third_screen" 
     android:configChanges="locale"> 
    </activity> 

,當我啓動我的手機上我的應用程序,語言沒有改變=( 這裏是screenshoot - screen where i need to change language

這樣有什麼不對我代碼?(

P.S我也創建值-RU-RRU文件夾,並插入有翻譯string.xml文件

+0

它不應該是'RU-RU'不是RU-RU或我錯了嗎? – codeMagic 2013-03-08 21:01:01

+0

@codeMagic是否代表代碼或文件夾名稱? – vladimir 2013-03-08 21:03:00

+0

兩者。我實際上認爲我看到了某處你可以使用'「re」'作爲代碼和值 - ru代表文件夾名稱。它在其他活動還是沒有活動? – codeMagic 2013-03-08 21:04:04

回答

1

首先,變化值-RU-RRU到值儒。

您可以使用此方法來獲取資源

public Resources getCustomResource(String lang){ 
     Locale locale = new Locale(lang); 
     Resources standardResources = activity.getResources(); 
     AssetManager assets = standardResources.getAssets(); 
     DisplayMetrics metrics = standardResources.getDisplayMetrics(); 
     Configuration config = new Configuration(standardResources.getConfiguration()); 
     config.locale = locale; 
     Resources res = new Resources(assets, metrics, config); 
     return res; 
    } 

你可以用它在你的代碼是這樣

else if (LANGUAGE.equals("Russian")) 
    { 
     Resources res = getCustomResource("ru"); 

}

希望這有助於你。

+0

據我瞭解,我只需要廣告此代碼,沒有別的? – vladimir 2013-03-09 10:08:51

+0

嗯,沒有工作=(與所有應用程序相同的語言 – vladimir 2013-03-09 10:14:41

+0

我在我的應用程序中使用此方法進行阿拉伯語言編寫,使用'values-ar'文件夾並使用方法'getCustomResource(「ar」);'。我的答案我用「ru」,試試看。 – AwadKab 2013-03-09 11:25:56