2012-02-20 42 views
6

我有應用程序與互聯網接入,並不想存儲許多string.xml文件爲不同的語言。可以在運行時下載本地化資源嗎?

我想要什麼:

  1. 應用程序只包含一個string.xml用英文字符串。
  2. 當用戶啓動它時 - 我看到用戶的手機區域設置,並向我自己的服務器詢問必要的語言文件。 (資源密鑰將相同)
  3. 當新的資源文件出現時,所有接口都應該與新文件一起工作。

問題是如何在運行時更改現有文件或添加新文件string.xml

回答

2

顯然,你無法改變,下載或在運行時

如果你想存儲位置刪除strings.xml,你將不得不使用SQLite存儲來存儲翻譯。

相似:
How to modify strings.xml file at runtime
run time modification of strings.xml

+0

此解決方案的問題 - 您不能從xml文件引用數據庫,並且不能使用標準的'Context.getString()'方法。 – Jin35 2012-02-20 17:21:12

+0

是的,這就是解決方案的黑暗面,但只要您想使用您提供的解決方案,就沒有什麼區別,只有這一點顯然與系統更加分離,實施起來更容易,更輕鬆。 – 2012-02-20 17:26:44

+0

我可以創建,例如文件夾'values-de'在我的資源中,並把新的XML文件在那裏? – Jin35 2012-02-20 17:31:16

2

現在我可以看到唯一的解決辦法:

  1. 創建一些 「本土化代理」,將返回我需要的資源(從string.xml或下載的資源)
  2. 將所有getString()getText()替換爲您自己的方法getStringFromLocalization
  3. 覆蓋TextView,Button和一些其他視圖與自定義一個和改變那裏init和setText方法。
+0

一切正常,除了'setText(String)'方法是** final **,所以它不能被覆蓋 – 2013-06-25 06:49:53

0

使用符合時間的資源文件覆蓋資源/語言的資源,然後通過自定義劃分性能。只有當你需要這個時纔會這樣做。

相關問題