【问题标题】:Is there a way to localize android app without using values/strings.xml?有没有办法在不使用 values/strings.xml 的情况下本地化 android 应用程序?
【发布时间】:2017-01-06 09:33:57
【问题描述】:
我的 android 应用程序支持 3 种语言(英语、韩语、俄语),我计划支持更多。
由于应用程序的特性,它在每个 strings.xml 文件中都有数百万行(翻译)。所以所有string.xml文件的大小都超过了1MB。
我觉得它太大了。
有没有办法在不使用 values/strings.xml 的情况下本地化 android 应用程序?
或者...修剪我的应用程序的大小?
【问题讨论】:
标签:
java
android
string
localization
translation
【解决方案1】:
一种可能的方法是将 data 字符串放入 SQLite 数据库中,而不是将它们全部放入 strings-xx 资源文件中。我曾经参与过一个包含大量不同语言字符串的项目。我们提出的解决方案是仅将与 UI 相关的字符串放在 strings-xx 资源文件中,并将数据字符串放在 SQLite 表中。这大大减少了 APK 的大小。
我所说的与 UI 相关的字符串是指屏幕标题、按钮/小部件文本、带有格式参数的常量字符串等。数据字符串是那些依赖于 API 响应或在 API 响应中接收到的字符串。
【解决方案2】:
您可以使用比 xml 更节省空间的文件格式来实现自定义资源加载,但我怀疑它是否值得。
如果您想这样做,请检查当前语言环境以决定要加载哪些资源:
getResources().getConfiguration().locale