有没有办法在不使用 values/strings.xml 的情况下本地化 android 应用程序?
Is there a way to localize android app without using values/strings.xml?
我的 android 应用程序支持 3 种语言(英语、韩语、俄语),我打算支持更多语言。
由于应用程序的特性,它在每个 strings.xml 文件中有数百万行(翻译)。所以所有 string.xml 个文件的大小都超过 1MB。
我觉得太大了。
有没有办法在不使用 values/strings.xml 的情况下本地化 android 应用程序?
或者...trim 我的应用程序的大小?
您可以使用比 xml 更 space 高效的文件格式来实现自定义资源加载,但我怀疑这样做是否值得。
如果要执行此操作,请检查当前语言环境以确定加载哪些资源:
getResources().getConfiguration().locale
一种可能的方法是将 data 字符串放入 SQLite 数据库中,而不是将它们全部放入 strings-xx
资源文件中。我曾经参与过一个项目,其中包含大量不同语言的字符串。我们想出的解决方案是 仅 strings-xx
资源文件中的 UI-related 字符串,以及 SQLite 表中的数据字符串。这显着减小了 APK 的大小。
UI-related 字符串是指屏幕标题、button/widget 文本、带有格式参数的常量字符串等。数据字符串将是那些依赖于或在 API 响应中接收的字符串。
我的 android 应用程序支持 3 种语言(英语、韩语、俄语),我打算支持更多语言。 由于应用程序的特性,它在每个 strings.xml 文件中有数百万行(翻译)。所以所有 string.xml 个文件的大小都超过 1MB。
我觉得太大了。
有没有办法在不使用 values/strings.xml 的情况下本地化 android 应用程序? 或者...trim 我的应用程序的大小?
您可以使用比 xml 更 space 高效的文件格式来实现自定义资源加载,但我怀疑这样做是否值得。
如果要执行此操作,请检查当前语言环境以确定加载哪些资源:
getResources().getConfiguration().locale
一种可能的方法是将 data 字符串放入 SQLite 数据库中,而不是将它们全部放入 strings-xx
资源文件中。我曾经参与过一个项目,其中包含大量不同语言的字符串。我们想出的解决方案是 仅 strings-xx
资源文件中的 UI-related 字符串,以及 SQLite 表中的数据字符串。这显着减小了 APK 的大小。
UI-related 字符串是指屏幕标题、button/widget 文本、带有格式参数的常量字符串等。数据字符串将是那些依赖于或在 API 响应中接收的字符串。