Имя пользователя:
Пароль:
 | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » MySQL - Интернационализация (i18n) БД

Ответить
Настройки темы
MySQL - Интернационализация (i18n) БД

Аватара для 9dogs

Новый участник


Сообщения: 3
Благодарности: 0

Профиль | Отправить PM | Цитировать


Доброго времени суток!
Рад, что сайт все еще на плаву, сто лет тут не был.
Поиск не выявил схожих тем, если это не так - прошу прощения.
Вопрос довольно общий, но использую MySQL, может там какая специфика есть


Есть база данных, довольно сложная. Около двух десятков таблиц с отношениями как 1:1, так и 1:M и M:M.
Вопрос в том, как правильно интернационализировать такие БД. Для начала достаточно одного дополнительного языка (en).
Какие есть способы?
Пока что приходят на ум решения с дополнительной БД или дополнительными полями (скажем, name_en). Наверняка есть более красивые варианты.

Отправлено: 16:37, 19-09-2010

 

Аватара для Delirium

Ветеран


Сообщения: 5624
Благодарности: 936

Профиль | Отправить PM | Цитировать


Цитата 9dogs:
Рад, что сайт все еще на плаву, сто лет тут не был. »
Форум не только на плаву, но и превратился в огромный корабль
Цитата 9dogs:
как правильно интернационализировать такие БД »
Не совсем понятен смысл. Вы хотите, чтобы данные в БД были на разных языках? А перевод как будет осуществляться?

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

-------

Пройденные курсы:
[Microsoft №10174 Sharepoint], [SharePoint]
Мои проекты:[CheckAdmins], [NetSend7], [System Uptime], [Remote RAdmin LogViewer],[Netdom GDI], [Holidays - напоминалка о днях рождения]

А я офис-гуру :)


Отправлено: 03:10, 20-09-2010 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

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


Аватара для 9dogs

Новый участник


Сообщения: 3
Благодарности: 0

Профиль | Отправить PM | Цитировать


Цитата Delirium:
Вы хотите, чтобы данные в БД были на разных языках? »
Именно. Чтобы, грубо говоря, пользователь мог ввести свою ФИО, дату рождения, биографию etc на русском, а потом, переключив язык, еще и на английском. То есть перевод будет осуществляться вручную.
Вариант с двумя базами смущает именно необходимостью синхронизации. Хотя это вроде не слишком сложно реализуется. Попробую сделать так, для начала.

Отправлено: 05:13, 20-09-2010 | #3


Аватара для Delirium

Ветеран


Сообщения: 5624
Благодарности: 936

Профиль | Отправить PM | Цитировать


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

-------

Пройденные курсы:
[Microsoft №10174 Sharepoint], [SharePoint]
Мои проекты:[CheckAdmins], [NetSend7], [System Uptime], [Remote RAdmin LogViewer],[Netdom GDI], [Holidays - напоминалка о днях рождения]

А я офис-гуру :)


Отправлено: 05:53, 20-09-2010 | #4


ИО Капитана Очевидности


Contributor


Сообщения: 5387
Благодарности: 1105

Профиль | Отправить PM | Цитировать


Цитата 9dogs:
Пока что приходят на ум решения с дополнительной БД или дополнительными полями (скажем, name_en). Наверняка есть более красивые варианты. »
Добавляем таблицу "строковые значения" из трёх столбцов, где LANG_ID и TEXT_ID будут первичным ключом, а TEXT - значением
Соответсвенно во всех остальных подменяем текстовые поля на коды, которые будут соответствовать значениям TEXT_ID. Запросы правим так, чтобы в результатах в выводились строки, соответствующие значениям ключа (LANG_ID TEXT_ID)

В*результате БД будет поддерживать сколько угодно языков. Главное, чтобы кто-нибудь вводил информацию для всех языков

-------
Самое совершенное оружие, которым забиты арсеналы богатых и процветающих наций, может легко уничтожить необразованного, больного, бедного и голодного. Но оно не может уничтожить невежество, болезнь, нищету и голод. (Фидель Кастро)

Почему всех осужденных за измену Родине при Сталине реабилитировали при Горбачёве по отсутствию состава преступления? Потому что при Горбачёве измену Родине перестали считать преступлением.

Это сообщение посчитали полезным следующие участники:

Отправлено: 07:34, 20-09-2010 | #5


Аватара для 9dogs

Новый участник


Сообщения: 3
Благодарности: 0

Профиль | Отправить PM | Цитировать


El Scorpio, хорошее решение.
Если еще добавить USER_ID, то появится возможность отдавать пользователю только его данные для перевода.

Отправлено: 22:53, 20-09-2010 | #6



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » MySQL - Интернационализация (i18n) БД

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено




 
Переход