Android l10n / i18n数据库。表android_metadata是用于此吗?

时间:2012-04-29 14:25:06

标签: android

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

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. 每种语言都需要一个数据库吗?

1 个答案:

答案 0 :(得分:2)

每当您将数据库打开到当前默认语言环境时,

Android都会更新该字段。除非您更改应用中的默认值,否则应该是系统语言。

SQLiteDatabase#openDatabase

db.setLocale(Locale.getDefault());

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

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

则不会

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