是否可以使用 SQLite 来存储翻译而不是像 strings.xml 这样的 XML 资源

Posted

技术标签:

【中文标题】是否可以使用 SQLite 来存储翻译而不是像 strings.xml 这样的 XML 资源【英文标题】:Is it okay to use SQLite to store translations instead of XML resources like strings.xml 【发布时间】:2021-07-15 20:38:06 【问题描述】:

我想找到一种方法让用户选择应用程序的语言,而不是从设备设置中更改它。应用程序适用于使用稀有语言的人,大多数设备不支持这种语言。我正在寻找“如何以编程方式更改应用程序语言?”的答案,但我的头很痛。所以我只想使用 SQLite 不仅存储所有应用程序数据,还存储通常存储在“strings.xml”中的标题、标签等的翻译。那么可以吗?有人会认为这是一种不好的做法吗?

【问题讨论】:

这将是一个令人头疼的问题,因为每次您拨打getString(R.string.foo)时系统都会自动执行此操作 【参考方案1】:

当然你可以这样做,它通常可能被认为是“不好的做法”,但每条规则都有例外,如果设备不支持你的语言,那么在我看来这是合理的。

这将使向应用程序添加新翻译变得更加困难,并且根据您的操作方式,一般来说可能很难使用字符串,但它会起作用。

【讨论】:

【参考方案2】:

您可以为此使用数据库,但请记住,您需要为任何更改编写大量迁移

您可以为每种语言添加不同的字符串文件 res -> 右键单击​​ 'values' 文件夹 -> 新建 -> 值资源文件 -> 然后创建具有特定语言环境的新字符串文件:

之后,在带有字符串的文件夹中,您将有几个文件:

这将是一种更简单、更正确的应用程序本地化方法

阅读更多https://developer.android.com/guide/topics/resources/localization

【讨论】:

他正在使用不受支持的语言。

以上是关于是否可以使用 SQLite 来存储翻译而不是像 strings.xml 这样的 XML 资源的主要内容,如果未能解决你的问题,请参考以下文章

SQLite 中是不是有 Long 类型?

我们可以使用 ionic 框架将视频存储在 sqlite 数据库中吗?如果可以,我们如何存储它?

安卓手机开发,创建SQlite数据库后,默认路径是存储在哪?

在 SQLite 中将“String”存储为“TEXT”而不是“VarChar” - WP8

Core Data/SQLite 是不是压缩冗余信息?

在sqlite中插入时获取主键而不是rowID或通过其rowID获取主键