本地化资源可以在运行时下载吗?

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 使用自定义视图覆盖 TextViewButton 和其他一些视图,并在其中更改 init 和 setText 方法。

【讨论】:

一切正常,除了 setText(String) 方法是 final 所以它不能被覆盖【参考方案3】:

使用已编译的资源文件覆盖标准资源/语言,然后您的自定义性能会受到限制。仅在您需要时才这样做。

【讨论】:

以上是关于本地化资源可以在运行时下载吗?的主要内容,如果未能解决你的问题,请参考以下文章

下载 Google 字体以在本地运行

更改 iOS 应用本地化运行时间

在本地系统下运行的 Windows 服务可以在运行它的计算机上创建新文件吗?

MPMusicPlayerController 可以从本地资源播放音乐吗?

我们可以在本地系统下运行的windows服务中访问网络文件吗?

在 WKWebview 中使用本地资源