Дано: приложение для андроида, база данных sqlite откуда приложение берет строки.
Посоветуйте, пожалуйста, каким образом осуществить локализацию? Из текущих мыслей - создать базу под каждую локаль и выбирать нужную проверкой текущей локали пользователя, либо разместить строки под все локали в одну базу, в разные столбцы и вытаскивать нужные данные той же проверкой, но все это выглядит, как костыль. Может быть, есть более изящное решение?
Из текущих мыслей, создать базу под каждую локаль и выбирать нужную проверкой текущей локали
Зачем базу? Можно ведь для каждой локали свою таблицу с одинаковыми полями..
Например lang_ru lang_us... Обработка результатов одинаковая для всех а выборка с разных таблиц.
Можно конечно и к каждому полю добавить приставку _ru,_xx и положить в одну таблицу.
Но... У Андроида ведь своя система локализации. Зачем придумывать велосипед?
Зачем базу? Можно ведь для каждой локали свою таблицу с одинаковыми полями..
Например lang_ru lang_us... Обработка результатов одинаковая для всех а выборка с разных таблиц.
Да, так, наверное, удобнее, но по сути все таже проверка на локаль пользователя.
Но... У Андроида ведь своя система локализации. Зачем придумывать велосипед?
Это вы про ресурсы xml? Оно очень удобно для локализации интерфейса, но непонятно как с этим управляться при наличии десятка тысяч строк, которые постоянно меняются.
В БД:
1. Таблица языков. Перечисление вариантов языков и их свойств (в т.ч. имен таблиц)
2. Для каждого из языков, своя таблица со всеми переводами. + одна базовая или инвариантная таблица с первичным ключом.
Не знаю где почитать, я просто в своем проекте именно так делал. Это довольно просто, появляется таблица Langs со столбцами (id, name, translate_table) + таблицы вида EN_translate, FR_translate и т.д. со структурой (key, value) где key - id строки, value - переведенное значение.
А, то есть по сути вы сами указываете на каком языке получить строку. Я вас неправильно понял, и решил что система, при такой организации бд, будет сама вытаскивать нужные значения. Спасибо за ваше решение, видимо придется использовать что-то подобное.