1

我正在尝试按照教程使用以前创建的数据库:

http://www.reigndesign.com/blog/using-your-own-sqlite-database-in-android-applications/

我计划使用数据库来存储类似琐事的游戏的问题。以一张桌子的基本设计:

CREATE TABLE QUESTIONS (
 answer TEXT,             --text for answer
 create_by_user NUMERIC,  --boolean flag, true if question created by user
 _id INTEGER PRIMARY KEY, --required by Android
 l10n TEXT,               --ISO 3-letter code for localization
 question TEXT            --text for question
);

并将字段 l10n 用于 l10n/i18n 目的,但我不确定 Android 如何使用android_metadata表。在教程中插入了一行带有“en_US”值的行,

  1. 这个表是 Android 使用的一种内置 l10n 吗?
  2. 建议将表 android_metadata 用于 l10n 而不是我自己的 l10n 字段?
  3. 如果我希望数据库存储不同语言的数据并为用户提供从不同语言检索问题的选项怎么办?
  4. 每种语言都需要一个数据库还是更好?
4

1 回答 1

2

每次您将数据库打开到当前默认语言环境时,Android 都会更新该字段。除非您更改应用程序中的默认设置,否则这应该是系统语言。

SQLiteDatabase#openDatabase

db.setLocale(Locale.getDefault());

使用该字段应该可以保存,但我从未测试过它。

该表的目的是 AFAIK,以允许您在语句中使用COLLATE LOCALIZED - 如果您指定NO_LOCALIZED_COLLATORS 则不使用

如果您想拥有不同语言的文本数据库,请考虑使用您自己的语言表作为文本表的外键。

于 2012-04-29T14:36:46.283 回答