2012-02-20 55 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

使用符合时间的资源文件覆盖资源/语言的资源,然后通过自定义划分性能。只有当你需要这个时才会这样做。

相关问题