Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Реализация мультиязычного сайта
 
 автор: oliss   (27.03.2010 в 10:09)   письмо автору
 
 

Задача стоит : вывод ТОЛЬКО меню на разных языках в зависимости от выбора

1 вариант: одна таблица с дублирующими полями (разные языки) -- выбираются только те поля ,которые требует данный язык

2 вариант : несколько таблиц под свой язык каждая -- в зависимости от языка подключается таблица

Но эти варианты плохи тем ,что при добавлении нового языка в первом варианте--придётся добавлять поля ,а во втором --таблицу

Есть ли лучшее решение?

  Ответить  
 
 автор: cheops   (27.03.2010 в 13:06)   письмо автору
 
   для: oliss   (27.03.2010 в 10:09)
 

Лучше 3 вариант: одна таблица и одно поля для id языка (и конечно UTF8).

  Ответить  
 
 автор: neadekvat   (27.03.2010 в 20:59)   письмо автору
 
   для: 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 - обычные индексы..или будут являться одним индексом.

Как тут лучше сделать?

  Ответить  
 
 автор: Trianon   (27.03.2010 в 21:45)   письмо автору
 
   для: 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 поставил слева. (насколько я понимаю, выборка всегда будет вестись с фиксированным признаком языка.)

  Ответить  
 
 автор: neadekvat   (27.03.2010 в 22:18)   письмо автору
 
   для: Trianon   (27.03.2010 в 21:45)
 

> Почему?
Ну, представим адрес новости:
example.com/en/news.php?id=2
Но с английским не очень, и решили прочитать на русском. Я бы, например, чтобы долго не искать (хотя это привет юзабилити) переключение языков, просто изменил пару букв:
example.com/ru/news.php?id=2
Но, очевидно, был бы неприятно удивлен тем, что такой новости не существует..

> первичный ключ
Точно..еще писал и подумал, что как-то не так выглядит..

> Полный (эффект) - только от составного уникального индекса.
Это я и хотел услышать. Спасибо =)

  Ответить  
 
 автор: Trianon   (27.03.2010 в 22:29)   письмо автору
 
   для: neadekvat   (27.03.2010 в 22:18)
 

>> Почему?
>Ну, представим адрес новости:
>example.com/en/news.php?id=2
>Но с английским не очень, и решили прочитать на русском. Я бы, например, чтобы долго не искать (хотя это привет юзабилити) переключение языков, просто изменил пару букв:
>example.com/ru/news.php?id=2
>Но, очевидно, был бы неприятно удивлен тем, что такой новости не существует..

В лучшем случае.
В худшем вместо новости про церковь Вам покажут новость про кабак.

Либо Вы нажимаете кнопочку "Выбрать другой язык" и радуетесь.
Либо получаете по рукам за самоволку.

  Ответить  
 
 автор: neadekvat   (27.03.2010 в 22:36)   письмо автору
 
   для: Trianon   (27.03.2010 в 22:29)
 

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

  Ответить  
 
 автор: oliss   (28.03.2010 в 00:23)   письмо автору
 
   для: cheops   (27.03.2010 в 13:06)
 

Да ,без сомнения , ТОЛЬКО utf8
структура ссылок с использованием ЧПУ будет такой (алиасы)

http://site.com/news/     --------> по умолчанию английский
http://site.com/ru/news/  --------> русский вариант
http://site.com/de/news/  --------> немецкий вариант


Простите, мне ещё не всё прозрачно, с пониманием структуры

  Ответить  
 
 автор: Trianon   (28.03.2010 в 00:35)   письмо автору
 
   для: 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),
а если последний не поддержан - тогда английский.

  Ответить  
 
 автор: oliss   (28.03.2010 в 00:44)   письмо автору
 
   для: Trianon   (28.03.2010 в 00:35)
 

Только меняться должны анкоры ссылок ( вот их как реализовать в таблице?)
News
Новости
Nachrichten


Нет, в ядре у меня реализовано проще ,фильтр через .htaccess и switch ( )
Про автоматизацию (ACCEPT_LANGUAGE) была мысль ,но пришлось отбросить --очень не надёжный параметр ,не все браузеры конкретно отдают его

  Ответить  
 
 автор: Trianon   (29.03.2010 в 02:24)   письмо автору
 
   для: oliss   (28.03.2010 в 00:44)
 

>Только меняться должны анкоры ссылок ( вот их как реализовать в таблице?)

а остальные динамические значения у Вас как на страницу попадают?

  Ответить  
 
 автор: nek-v   (27.03.2010 в 18:36)   письмо автору
 
   для: oliss   (27.03.2010 в 10:09)
 

Лучшее решение - gettext

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования