|
|
|
Дочерняя таблица выбирается в зависимости от страны пользователя. Как сделать?
|
|||
|---|---|---|---|
|
#18+
Здравствуйте. Нужен совет знающих людей. Я ради интереса и общего развития хочу сделать свой сайт, однако не знаю как именно реализовать то, что мне нужно, и можно ли вообще это сделать. Идея - сайт музыкальных, киношных и игровых новостей, связанных с конкретными релизами. Одной из особенностей является автоматическая мультиязычность. Как я себе это представляю (для упрощения вопроса пусть у нас будут только музыкальные новости): есть таблица "music news", содержащая следующие поля: ID новости (PK), ID типа события (FK) (анонс, начало записи, объявление треклиста, выход на CD и т.д.), ID объекта (FK) (конкретный музыкальный релиз), ID автора новости (FK), дата события, дата публикации новости. Так вот, каждая новость на сайте - это, по сути, текст вроде "2011.11.11 - Певица Adele выпустила альбом "21", который формируется из конкретной строчки в таблице "music news". Однако в этой таблице указаны только ID, которые уже ведут к конкретным типам новостей и названиям релизов в других таблицах. А теперь вопрос: можно ли сделать так, чтобы в зависимости от страны пользователя, дочерние таблицы - "objects" и "releases types", в данном случае, - были бы разными (например, "releases types russian" и "releases types english"? Т.е. ты заходишь с РФ и видишь "2011.11.11 - Певица Adele выпустила альбом "21", а заходишь с США - "2011.11.11 - Singer Adele released her album "21", при этом это одна и та же новость. Для меня, неразбирающегося человека, такая конструкция кажется более удобной, чем иметь несколько одинаковых копий "music news" для каждого языка: "music news russian", "music news english", "music news germany" и т.д. Если так делать можно, тогда следующие вопросы: а имеет ли смысл делать именно так? в каких БД можно такое сделать (я пробую в MySQL)? Какие команды использовать? Можно ли реализовать подобный механизм не средствами БД, а как-нибудь по-другому? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2011, 10:35 |
|
||
|
Дочерняя таблица выбирается в зависимости от страны пользователя. Как сделать?
|
|||
|---|---|---|---|
|
#18+
Пользуемся поиском. Недавно было http://www.sql.ru/forum/actualthread.aspx?tid=888283 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2011, 13:03 |
|
||
|
Дочерняя таблица выбирается в зависимости от страны пользователя. Как сделать?
|
|||
|---|---|---|---|
|
#18+
MAR91NALможно ли сделать так, чтобы в зависимости от страны пользователя, дочерние таблицы - "objects" и "releases types", в данном случае, - были бы разными Можно, но это будет геморрой страшный как для тебя, так и для пользователя. Тебе придётся громоздить динамические запросы, что просадит производительность. Пользователь будет видеть текст по текущей стране пребывания вместо того к которому он привык. Ты должен выбирать язык не по стране, а по предпочтениям, установленным в браузере. Никогда не видел там пункт "предпочитаемый язык", причём не как выбор, а как список по убыванию предпочтительности?.. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2011, 14:29 |
|
||
|
Дочерняя таблица выбирается в зависимости от страны пользователя. Как сделать?
|
|||
|---|---|---|---|
|
#18+
SERG1257Пользуемся поиском. Недавно было http://www.sql.ru/forum/actualthread.aspx?tid=888283 Спасибо за наводку, кое-что прояснил из похожих тем, но не все. Dimitry SibiryakovПользователь будет видеть текст по текущей стране пребывания вместо того к которому он привык. Ты должен выбирать язык не по стране, а по предпочтениям, установленным в браузере. Никогда не видел там пункт "предпочитаемый язык", причём не как выбор, а как список по убыванию предпочтительности?.. Проблемы с выбором языка на самом деле нет. Подразумевается, что большинство пользователей будут зарегистрированы, и нужный им язык будет выбран в настройках профиля. А для тех, кто зашел первый раз, видеть сайт на языке страны - нормально. Dimitry SibiryakovТебе придётся громоздить динамические запросы, что просадит производительность. Тогда какой вариант вы предлагаете? Делать копию гигантской главной таблицы с новостями для каждого языка? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2011, 15:18 |
|
||
|
Дочерняя таблица выбирается в зависимости от страны пользователя. Как сделать?
|
|||
|---|---|---|---|
|
#18+
MAR91NALТогда какой вариант вы предлагаете? Делать копию гигантской главной таблицы с новостями для каждого языка? Зачем копию? Все новости на всех языках в одной таблице. Каждая новость имеет уникальный ID (на всех языках). При показе выбирается запросом Код: plaintext новости на таком языке нет) - на языке по умолчанию. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2011, 15:35 |
|
||
|
Дочерняя таблица выбирается в зависимости от страны пользователя. Как сделать?
|
|||
|---|---|---|---|
|
#18+
Уточню, чтобы быть уверенным, что мы говорим об одном и том же. Сама новость у меня не содержит текстовой информации. Это просто совокупность значений: дата, id объекта и id типа события. Существуют отдельные таблицы объектов и таблицы типов событий для каждого языка, но значения в них по смыслу совпадают. Т.е. в таблице "russian news types" у id=12 будет name="анонс релиза", а в таблице "english news types" под тем же id=12 будет name="release announcement". Так вот я хочу, чтобы для одних пользователей главная таблица брала расшифровку из одной дочерней таблицы, для других - из другой и т.д. То, как вы предлагаете, это сделать в главной таблице вместо "ID типа события и ID объекта" такой вариант "ID типа события rus, ID объекта rus, ID типа события eng, ID объекта eng, ID типа события germ и т.д." и обращаться уже к нужным ячейкам. Это решение, конечно, но очень неудобное. Должно же быть что-то специально для такого случая? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2011, 17:07 |
|
||
|
Дочерняя таблица выбирается в зависимости от страны пользователя. Как сделать?
|
|||
|---|---|---|---|
|
#18+
Информация на всех языках должна храниться в одной таблице, имеющей поле ID языка. Для каждого языка своя строка а не поле. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2011, 21:11 |
|
||
|
Дочерняя таблица выбирается в зависимости от страны пользователя. Как сделать?
|
|||
|---|---|---|---|
|
#18+
MAR91NAL…Сама новость у меня не содержит текстовой информации. Это просто совокупность значений: дата, id объекта и id типа события. Существуют отдельные таблицы объектов и таблицы типов событий для каждого языка, но значения в них по смыслу совпадают. Т.е. в таблице "russian news types" у id=12 будет name="анонс релиза", а в таблице "english news types" под тем же id=12 будет name="release announcement". Так вот я хочу, чтобы для одних пользователей главная таблица брала расшифровку из одной дочерней таблицы, для других - из другой и т.д.… Вар. 1. В основной таблице оставить только ID и сделать дополнительные для переводов, напр., типов можно так: idlangtxt1enrelease announcement1ruанонс релиза Вар. 2. Генерировать текст новости из ID/кодов отдельной процедурой для каждого языка. Так проще с грамматикой, которая у всех языков разная. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2011, 22:25 |
|
||
|
|

start [/forum/topic.php?fid=32&fpage=55&tid=1541928]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
184ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
46ms |
get tp. blocked users: |
1ms |
| others: | 232ms |
| total: | 504ms |

| 0 / 0 |
