本地化资源可以在运行时下载吗?
Posted
技术标签:
【中文标题】本地化资源可以在运行时下载吗?【英文标题】:Can localization resources be downloaded in runtime? 【发布时间】:2012-03-11 00:59:41 【问题描述】:我有可以访问互联网的应用程序,不想为不同语言存储许多 string.xml
文件。
我想要什么:
-
应用程序仅包含一个带有英文字符串的
string.xml
。
当用户启动它时 - 我看到用户的电话区域设置,并要求我自己的服务器提供必要的语言文件。 (资源键将相同)
当新资源文件到来时,所有界面都应该使用新文件。
问题是如何在运行时更改现有的或添加新的string.xml
文件?
【问题讨论】:
【参考方案1】:您显然不能在运行时更改、下载或删除strings.xml
如果要存储位置,则必须使用 SQLite 存储来存储翻译。
类似:How to modify strings.xml file at runtimerun time modification of strings.xml
【讨论】:
这个解决方案的问题——你不能从xml文件中引用数据库,你不能使用标准的'Context.getString()'方法。 是的,这就是解决方案的阴暗面,但只要您想使用您提供的解决方案,没有区别,只是这显然与系统更分离,更简单、更精简实施。 我可以在我的资源中创建例如文件夹values-de
并将新的xml文件放在那里吗?
因为您无法编辑保存在.apk
中的文件,不,这是不可能的。【参考方案2】:
现在我只能看到解决方案:
-
创建一些“本地化代理”,它将返回必要的资源(来自
string.xml
或下载的资源)
将所有getString()
和getText()
替换为您自己的方法getStringFromLocalization
使用自定义视图覆盖 TextView
、Button
和其他一些视图,并在其中更改 init 和 setText
方法。
【讨论】:
一切正常,除了setText(String)
方法是 final 所以它不能被覆盖【参考方案3】:
使用已编译的资源文件覆盖标准资源/语言,然后您的自定义性能会受到限制。仅在您需要时才这样做。
【讨论】:
以上是关于本地化资源可以在运行时下载吗?的主要内容,如果未能解决你的问题,请参考以下文章
在本地系统下运行的 Windows 服务可以在运行它的计算机上创建新文件吗?
MPMusicPlayerController 可以从本地资源播放音乐吗?