|
|
|
| Задача стоит : вывод ТОЛЬКО меню на разных языках в зависимости от выбора
1 вариант: одна таблица с дублирующими полями (разные языки) -- выбираются только те поля ,которые требует данный язык
2 вариант : несколько таблиц под свой язык каждая -- в зависимости от языка подключается таблица
Но эти варианты плохи тем ,что при добавлении нового языка в первом варианте--придётся добавлять поля ,а во втором --таблицу
Есть ли лучшее решение? | |
|
|
|
|
|
|
|
для: oliss
(27.03.2010 в 10:09)
| | Лучше 3 вариант: одна таблица и одно поля для id языка (и конечно UTF8). | |
|
|
|
|
|
|
|
для: cheops
(27.03.2010 в 13:06)
| | Надеюсь, я вас правильно понял: вы имеете в виду такую структуру бд (пусть будем хранить новости)
languages:
id | name
news:
id | text | lang_id
Но тогда к одной новости на русском языке мы будем обращаться в адресной строке через id=1, а к той же новости, но на английском - id=2, что, конечно, не айс..
Тогда для решения этой задачи надо спроектировать news так:
id | news_id | text | lang_id
где id - первичный индекс
news_id и lang_id - обычные индексы..или будут являться одним индексом.
Как тут лучше сделать? | |
|
|
|
|
|
|
|
для: neadekvat
(27.03.2010 в 20:59)
| | >Но тогда к одной новости на русском языке мы будем обращаться в адресной строке через id=1, а к той же новости, но на английском - id=2, что, конечно, не айс..
Почему?
>Тогда для решения этой задачи надо спроектировать news так:
>id | news_id | text | lang_id
>
>где id - первичный индекс
первичный ключ
>news_id и lang_id - обычные индексы..или будут являться одним индексом.
От пары обычных эффекта не будет.
Частичный может быть от news_id
Полный - только от составного уникального индекса.
При чем я бы lang_id поставил слева. (насколько я понимаю, выборка всегда будет вестись с фиксированным признаком языка.) | |
|
|
|
|
|
|
|
для: Trianon
(27.03.2010 в 21:45)
| | > Почему?
Ну, представим адрес новости:
example.com/en/news.php?id=2
Но с английским не очень, и решили прочитать на русском. Я бы, например, чтобы долго не искать (хотя это привет юзабилити) переключение языков, просто изменил пару букв:
example.com/ru/news.php?id=2
Но, очевидно, был бы неприятно удивлен тем, что такой новости не существует..
> первичный ключ
Точно..еще писал и подумал, что как-то не так выглядит..
> Полный (эффект) - только от составного уникального индекса.
Это я и хотел услышать. Спасибо =) | |
|
|
|
|
|
|
|
для: neadekvat
(27.03.2010 в 22:18)
| | >> Почему?
>Ну, представим адрес новости:
>example.com/en/news.php?id=2
>Но с английским не очень, и решили прочитать на русском. Я бы, например, чтобы долго не искать (хотя это привет юзабилити) переключение языков, просто изменил пару букв:
>example.com/ru/news.php?id=2
>Но, очевидно, был бы неприятно удивлен тем, что такой новости не существует..
В лучшем случае.
В худшем вместо новости про церковь Вам покажут новость про кабак.
Либо Вы нажимаете кнопочку "Выбрать другой язык" и радуетесь.
Либо получаете по рукам за самоволку. | |
|
|
|
|
|
|
|
для: Trianon
(27.03.2010 в 22:29)
| | Возможно, применять такое решение схоластично, однако я при создании мультиязычного сайта поступлю тем образом, что я описал (педант, мб). | |
|
|
|
|
|
|
|
для: cheops
(27.03.2010 в 13:06)
| | Да ,без сомнения , ТОЛЬКО utf8
структура ссылок с использованием ЧПУ будет такой (алиасы)
http://site.com/news/ --------> по умолчанию английский
http://site.com/ru/news/ --------> русский вариант
http://site.com/de/news/ --------> немецкий вариант
|
Простите, мне ещё не всё прозрачно, с пониманием структуры | |
|
|
|
|
|
|
|
для: oliss
(28.03.2010 в 00:23)
| | имеет смысл сделать
http://site.com/en/news/ --------> английский вариант
http://site.com/ru/news/ --------> русский вариант
http://site.com/de/news/ --------> немецкий вариант
после чего влепить признак языка в cookies и выполнить редирект на http://site.com/news/ ,
который по умолчанию покажет вариант языка из cookies,
а уж если там пусто - тогда взять вариант браузера (ACCEPT_LANGUAGE),
а если последний не поддержан - тогда английский. | |
|
|
|
|
|
|
|
для: Trianon
(28.03.2010 в 00:35)
| | Только меняться должны анкоры ссылок ( вот их как реализовать в таблице?)
Нет, в ядре у меня реализовано проще ,фильтр через .htaccess и switch ( )
Про автоматизацию (ACCEPT_LANGUAGE) была мысль ,но пришлось отбросить --очень не надёжный параметр ,не все браузеры конкретно отдают его | |
|
|
|
|
|
|
|
для: oliss
(28.03.2010 в 00:44)
| | >Только меняться должны анкоры ссылок ( вот их как реализовать в таблице?)
а остальные динамические значения у Вас как на страницу попадают? | |
|
|
|
|
|
|
|
для: oliss
(27.03.2010 в 10:09)
| | Лучшее решение - gettext | |
|
|
|