Android 多语言数据库
我正在开发一个支持阿拉伯语和英语的Android应用程序,但我仍然对数据库设计感到困惑: 我所采用的方法是Android 多语言数据库,android,database,database-design,localization,multilingual,Android,Database,Database Design,Localization,Multilingual,我正在开发一个支持阿拉伯语和英语的Android应用程序,但我仍然对数据库设计感到困惑: 我所采用的方法是 创建包含两条记录(阿拉伯语和英语)的语言表 创建包含普通数据(非特定语言)的表 创建包含特定语言内容的翻译表 例如,为了实现(帮助),我创建了以下表格: Language (int id, text Code) Help (int id) Help_translation(int id, int Help_id, int Language_id, t
- 创建包含两条记录(阿拉伯语和英语)的语言表
- 创建包含普通数据(非特定语言)的表
- 创建包含特定语言内容的翻译表
Language (int id, text Code)
Help (int id)
Help_translation(int id, int Help_id, int Language_id, text Question, text Answer)
我已经读了这么多次这个解决方案,但我仍然不知道为什么我们有一个单独的表(帮助),但没有任何作用
我的方法有问题吗?从表面上看,语言表将在系统中出现一次。我建议根据ISO国家代码(ISO 3166)和ISO语言代码(ISO 639-2),对语言和地域使用“ll_tt”符号。因此,英式英语可能有
en_gb
,美式英语可能有en_us
,沙特阿拉伯阿拉伯语可能有ar_sa
,埃及阿拉伯语可能有ar_eg
。这可能比您当前需要的功能更强大,但会为您的未来指明方向
因此,语言表可能有以下列:
integer(自动递增)主键id
char(5)-唯一code
integer(自动递增)。主键id
id
列在这里的值最小;我想省略它(但如果你愿意,你可以保留它)。Help\u ID
列是对帮助表的外键引用;Language\u ID
列是语言表的外键引用。对于您选择的应用程序,每个帮助项目似乎都有一个问题和一个答案
因此,Help_Translation表包含以下列:
integer(自动递增,可选,不确定何时使用)id
integer-外键引用帮助(ID)Help\u ID
integer-外键引用语言(ID)Language\u ID
文本-针对给定的帮助ID,以适当的语言提出的问题问题
text-以给定帮助ID的适当语言回答问题Answer
- 主键:
和Help\u ID
Language\u ID
ar_sa
,然后才返回到en_gb
)。然后,帮助表可能包含一个帮助ID,外加两个消息ID值,一个用于问题,一个用于答案。此方案的优点是所有翻译的消息都位于一个表中
毫无疑问,还有其他的方案可以设计。谢谢你,这对我帮助很大。。因为我混淆了创建多个列(每种语言一个)和我在这里编写的解决方案。这个解决方案比多个列、每种语言一个要好得多,尤其是在编写SELECT语句来检索数据时!