powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Добавление локализации в БД
12 сообщений из 12, страница 1 из 1
Добавление локализации в БД
    #36997613
Yaroslav82
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени суток!

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

news_id news_titile news_announce news_text

faq_id faq_question faq_answer

и т.д.

Собственно вопрос: как добавить в БД гибкую поддержку для локализации? В примере БД AdventureWorks видел в нескольких таблицах поля для переводов, типа EnglishCountryRegionName, SpanishCountryRegionName и т.д., но делать так же, чтобы получилось нечто подобное
news_id russian_news_titile russian_news_announce russian_news_text english_news_titile english_news_announce english_news_text

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

language_id language_name

а как потом ее связывать с другими таблицами? Все равно получится что-то нечто вышеприведенного примера с кучей полей. Может кто-то занимался подобным и предложит гибкую структуру? Спасибо заранее
...
Рейтинг: 0 / 0
Добавление локализации в БД
    #36997798
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Наиболее простое "универсальное" решение - добавить во все таблицы поле language_id с заменой первичного ключа (id) на пару (id, language_id), внешние ключи, аналогично, где нужно сделать по двум полям. Кроме того и таблицы языков сделать таблицу предпочтений пользователей (в каком порядке они предпочитают языки). Тогда у одной новости (id) будет некоторое количество версий (по языкам), а запрос сможет отобрать текст на более удобном пользователю языке.
...
Рейтинг: 0 / 0
Добавление локализации в БД
    #36997850
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> news_id, news_titile, news_announce, news_text
> language_id, language_name

new_news_id, news_rel, language_rel, ...
...
Рейтинг: 0 / 0
Добавление локализации в БД
    #36997878
Yaroslav82
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо, буду пробовать
...
Рейтинг: 0 / 0
Добавление локализации в БД
    #36997905
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Yaroslav82, локализация - это как бы больше, чем просто языковые эквиваленты. Если вы реально хотите локализованную версию, то рефакторинг базы данных скорее всего будет полным. Локализация - это и технические различия, и культурные особенности, и законодательные ограничения. Т. е. достаточно большое количество геморроя.
...
Рейтинг: 0 / 0
Добавление локализации в БД
    #36997916
Yaroslav82
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
guest_20040621,

это понятно. но в данном случае под локализацией понимается просто перевод контента на другие языки (новости, вопросы, предложения и т.д.), а также страниц (но это уже стандартный ASP.NET-овский механизм), чтобы с сайтом могли работать заказчики из других стран
...
Рейтинг: 0 / 0
Добавление локализации в БД
    #37115650
Yaroslav82
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Снова подниму вопрос (только сейчас дошли руки до этой задачи). Насколько я понял, схема должна быть примерно такая?

...
Рейтинг: 0 / 0
Добавление локализации в БД
    #37115760
Yaroslav82
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Надо получить записи такого вида
news_lang_id news_idlang_idnews_headernews_previewtextnews_fulltextnews_posteddate111049тексттексттекст14.02.2011211033texttexttext14.02.2011

Тогда я, наверное, неправильно поставил в ER-диаграмме PK для news_id? В этом случае я не смогу присвоить полю news_id для двух разных записей одно и то же значение. Если так, как тогда формировать одинаковые id для двух записей, отличающихся только значением локали?
...
Рейтинг: 0 / 0
Добавление локализации в БД
    #37116038
JohnSparrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вероятно, на примере новостей и FAQ можно реализовать вот такую схему:
LANGUAGE (LANG_ID, NAME)
NEWS (NEWS_ID, PUBLISH_DATE)
NEWS_CONTENT (NEWS_ID, LANG_ID, HEADER, PREVIEW_TEXT, FULL_TEXT)
FAQ (FAQ_ID, PUBLISH_DATE)
FAQ_CONTENT (FAQ_ID, LANG_ID, QUESTION, ANSWER)
...
Рейтинг: 0 / 0
Добавление локализации в БД
    #37116540
Yaroslav82
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
JohnSparrow,

Спасибо, идея понятна. А что делать в случае, если в первую таблицу не удастся выделить какое-то поле (как, например, news_id, publich_date). Вводить какое-то искусственное?
...
Рейтинг: 0 / 0
Добавление локализации в БД
    #37117299
АнатоЛой
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yaroslav82, да хоть одно единственное оставляй :).
вопрос в другом - тебе же нужно связать одну и ту же новость на разных языках - это и есть её id (внутренний) + атрибуты прикладные.... ну как-то же ты понимаешь, что новость одна и та же? Код, автор, дата - атрибуты по-любэ найдутся...
...
Рейтинг: 0 / 0
Добавление локализации в БД
    #37117396
Yaroslav82
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Хорошо, всем спасибо за советы. Буду пробовать
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Добавление локализации в БД
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]