Android l10n/i18n 数据库。表 android_metadata 是否用于此目的?

标签 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. 建议使用 l10n 表 android_metadata 而不是我自己的 l10n 字段?
  3. 如果我希望数据库存储不同语言的数据并为用户提供检索不同语言问题的选项怎么办?
  4. 我是否需要或最好为每种语言配备一个数据库?

最佳答案

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

SQLiteDatabase#openDatabase

db.setLocale(Locale.getDefault());

使用该字段应该是省事的,但我从未测试过。

据我所知,该表的目的是让您使用 COLLATE LOCALIZED在你的陈述中 - 或者如果你指定 NO_LOCALIZED_COLLATORS

如果你想要一个不同语言的文本数据库,那么考虑使用你自己的语言表作为你的文本表的外键。

关于Android l10n/i18n 数据库。表 android_metadata 是否用于此目的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10372860/

相关文章:

java - 当设备从纵向/横向旋转时,如何使 ImageView 旋转图像?

java - 与根本不删除事件监听器相比,添加和删除事件监听器是否更有效?

android - 如何删除返回堆栈 fragment 的菜单项?

java - 如何缩短类似按钮的 findViewById 和 setOnClickListener ?

android - 使用新数据从 simpleAdapter 更新 listview

java - Joda - DateTimeFormat - 根据默认区域设置切换 "MM"和 "dd"的位置

android - 客户端尚未准备好......在 Android Wear 表盘应用中

android - 滚动图片和应用栏标题,但在 Android 中保留标签

java - 我正在努力添加一个操作栏

java - 在 TextView 中保存数据