2
A
回答
0
警告
一切我讀過說,它不是一個好主意,讓您的應用程序更改語言,因爲它不是由Android框架支持,它可能會導致問題。
說到這裏,我已經在我的應用程序中完成了它,儘管它有點痛苦,但它似乎工作至今。以下是我如何做到這一點,以防你想這樣做。每種語言都需要單獨的strings.xml
文件。 strings.xml
在values
文件夾作爲您的默認值,然後可能是一個strings.xml
在說西班牙語字符串values-es
文件夾。我用下面的代碼,具體取決於用戶選擇
final Configuration LANG_CONFIG = ChooseLocale.this.getResources().getConfiguration();
Locale newLocale = new Locale("English");
curLang = ChooseLocale.this.getLanguage();
if ((curLang.equals("English")) || (curLang.equalsIgnoreCase("Ingles")))
{
newLocale = new Locale("en_US");
}
else
{
newLocale = new Locale("es");
}
Toast.makeText(getApplicationContext(), newLangToast + " " + curLang , Toast.LENGTH_SHORT).show();
Configuration config = getBaseContext().getResources().getConfiguration();
Locale.setDefault(newLocale);
config.locale = newLocale;
getBaseContext().getResources().updateConfiguration(config,
getBaseContext().getResources().getDisplayMetrics());
SharedPreferences.Editor editor = langPref.edit();
editor.putString(LANG_PREF, curLang);
editor.commit();
有了這條線是最重要的更新配置
getBaseContext().getResources().updateConfiguration(config,
getBaseContext().getResources().getDisplayMetrics());
我從拿到語言環境的RadioButton
更改配置設置我getLanguage()
功能可以根據需要進行處理。我也不得不
@Override
public void onConfigurationChanged(Configuration newConfig) {
newConfig = Globals.getUserLanguage(this);
super.onConfigurationChanged(newConfig);
添加到每個活動,使方向變化,加入到我的每個
final SharedPreferences langPref = getSharedPreferences (LANG_PREF, 0);
if (Globals.langConfig != null)
this.onConfigurationChanged(Globals.langConfig);
我還添加了android:configChanges="orientation|locale"
在允許方向變化
onCreate()
相關問題
- 1. 從本地xml解析XML
- 2. 使用外部XML文檔本地化XSLT輸出
- 3. 從外部webservice獲取XML
- 4. XML在Laravel本地化4
- 5. Android本地化xml文件
- 6. 本地化XML文件
- 7. Xml評論本地化
- 8. 閱讀外部XML - XmlReader,XmlDocument,序列化
- 9. 從javascript讀取本地xml
- 10. 用於特定文化文本的外部XML /轉換映射
- 11. XMLSERIALIZE - Desrialize外部XML
- 12. 加載外部xml
- 13. XML - 外部訪問
- 14. 從AS3的外部URL加載XML
- 15. xml標籤內的本地化值
- 16. 外來文化XML文本解析
- 17. 使用AS3.0的外部XML
- 18. 本地XML文件或外部MySQL數據庫?
- 19. ListView contentview從外部xml文件更改
- 20. 從外部XML文件輸出
- 21. Actionscript 3.0,從外部類獲取xml?
- 22. 從外部網站獲取xml數據
- 23. 從外部網站下載XML
- 24. 從外部網站拉取XML數據
- 25. 從外部xml文件加載xml內容到php
- 26. XML從外部XML解析(閃光燈AS3)(web服務)
- 27. 使用C#中的內置xml反序列化從外部API反序列化xml時的重複值
- 28. Flash AS3 - 在本地服務器上從外部Web目錄加載XML
- 29. Rhomobile使用CSV或XML從外部Web服務器插入本地數據庫
- 30. 應用XSL到外部XML
我相當肯定答案是否定的。原因是「自動」語言選擇依賴於作爲資源一部分的不同本地化「字符串」文件。在運行時更新資源文件是不可能的。 – Squonk
@Squonk除非我想明白,那是不正確的。我只是在我的應用程序中做到了。有一個屏幕可以選擇西班牙語或英語,並允許用戶根據選擇更改使用哪個字符串文件。沒有通過服務接收XML,因爲它確實需要使用strings.xml,但可以在運行時更改 – codeMagic
@codeMagic:我並不是說在運行時不能更改語言選擇 - 這就是本地化的「字符串」文件。 OP(在問題的標題中)是問是否可以用「外部XML」來做到這一點......這正是我想要做的。 – Squonk