如何轻松动态加载strings.xml?

时间:2017-11-23 10:03:31

标签: java android string dynamic internationalization

我现在在android i18n工作。在很多strings.xml目录中有一些values-xxxx个文件,但产品经理想要将这些漏洞strings.xml文件放入服务器,app get strings.xml通过以下方式提交rom网络动态地使用语言参数。但strings.xml以这些方式使用:@ string / xx,Widget.setText(R.string.xx),getString(R.string.xx),Toast.make(x,R.string .x,x)等等...如何动态加载android strings.xml?或者你有一个更简单的方法来解决我的问题?谢谢!

2 个答案:

答案 0 :(得分:0)

我工作的一个应用程序:

启动应用程序后进行api调用。服务器以JSON响应,包含所有字符串。解析之后,我们可以在正确的上下文中动态设置所有字符串,或者保留对象甚至json以在需要时获取字符串。

希望这个想法可以帮助你。

答案 1 :(得分:0)

我明白产品经理想要改变这个原因。

我的解决方案如下:

  1. 使用不同的url模式在服务器上保留与不同语言相关的所有字符串。简而言之,获取字符串的网址应该像http://www.example.com/strings/{lang_param}/示例:http://www.example.com/strings/en/http://www.example.com/strings/pt-br/这样的内容。
  2. 让服务器返回JSON,其中字符串的键相同,但值根据url参数更改,即lang_param。与json服务器一起必须返回一个标识必须指示某些字符串项是否已更改。此标识哈希必须保持共享首选项,以便下次应用程序启动时您可以查询服务器检查哈希,如果它们不同则意味着会有一些新的更改。
  3. 必须使用https://developer.android.com/training/data-storage/files.html上的File file = new File(context.getFilesDir(), filename);将默认strings.xml保留在应用程序的内部存储器中。
  4. 一旦获得新文件更新内部内存json文件并创建一个解析此json的实用程序方法。请注意,您需要根据不同的语言维护不同的哈希和json字符串文件。