2012-04-29 1 views
1

Я пытаюсь использовать ранее созданную базу данных после урока:База данных Android l10n/i18n. Для этого предназначена таблица android_metadata?

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. Является ли эта таблица своего рода встроенным l10n, используемым Android?
  2. Было бы желательно использовать таблицу android_metadata для l10n вместо моего собственного поля l10n?
  3. Что делать, если я хочу, чтобы база данных хранила данные разных языков и предоставляла возможность пользователю получать вопросы с разных языков?
  4. Нужно ли мне или вам лучше иметь одну базу данных на один язык?

ответ

2

Android обновляет это поле каждый раз, когда вы открываете базу данных для текущей локали по умолчанию. Это должен быть системный язык, если вы не измените значение по умолчанию в своем приложении.

SQLiteDatabase#openDatabase

db.setLocale(Locale.getDefault()); 

Следует сохранить, чтобы использовать это поле, но я никогда не испытывал его.

Цель этой таблицы AFAIK, чтобы позволить вам использовать COLLATE LOCALIZED в своих заявлениях - или нет, если вы укажете NO_LOCALIZED_COLLATORS

Если вы хотите иметь базу данных текстов на разных языках, то рекомендуется использовать собственную таблицу языки, возможно, как внешний ключ для текстовой таблицы.

+0

Спасибо zapl, это очень объяснительно. – viridis

Смежные вопросы