![]() |
Интернационализация (i18n) БД
Доброго времени суток!
Рад, что сайт все еще на плаву, сто лет тут не был. Поиск не выявил схожих тем, если это не так - прошу прощения. Вопрос довольно общий, но использую MySQL, может там какая специфика есть Есть база данных, довольно сложная. Около двух десятков таблиц с отношениями как 1:1, так и 1:M и M:M. Вопрос в том, как правильно интернационализировать такие БД. Для начала достаточно одного дополнительного языка (en). Какие есть способы? Пока что приходят на ум решения с дополнительной БД или дополнительными полями (скажем, name_en). Наверняка есть более красивые варианты. |
Цитата:
Цитата:
Более красивых вариантов, чем предложенные вами, вряд ли присутствуют. Проще всего, конечно, сделать вторую БД и там все переименовать, а при выборе языка переключаться между базами. Но, в таком случае, надо будет делать зеркалирование баз, чтобы данные были актуальны в любой момент времени. |
Цитата:
Вариант с двумя базами смущает именно необходимостью синхронизации. Хотя это вроде не слишком сложно реализуется. Попробую сделать так, для начала. |
Вариант с доп полями неудобен тем, что придется в каждую таблицу добавлять это поле и в программе проверять и выводить данные с учетом языка. Но зато нет проблем с синхронизацией :)
|
Цитата:
Соответсвенно во всех остальных подменяем текстовые поля на коды, которые будут соответствовать значениям TEXT_ID. Запросы правим так, чтобы в результатах в выводились строки, соответствующие значениям ключа (LANG_ID TEXT_ID) В*результате БД будет поддерживать сколько угодно языков. Главное, чтобы кто-нибудь вводил информацию для всех языков |
El Scorpio, хорошее решение.
Если еще добавить USER_ID, то появится возможность отдавать пользователю только его данные для перевода. |
Время: 23:04. |
Время: 23:04.
© OSzone.net 2001-