Многоязычность

Posted Опубликовал cross в Разработка сайтов     Comments 21 comments
Фев
21

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

Основное, что нужно сделать, осознать, что многоязычность должна быть реализованна для:

  • Контента
  • Дизайна сайта

Первое, что приходит на ум для реализации многоязычности  контента, тоесть информации в базе данных - это увеличение числа полей в базе, например добавлением title_rus, title_eng, title_eng. И в некоторых случаях это действительно легко, тем более, что в таком случае очень удобно будет пользоватся префиксами при выборках из базы данных.

Префикс же должен вытягиваться из глобального массива, относительно выбранного языка. И вот тут появляется маленький ньюанс в вопросе многоязычности сайтов. Скрипт, должен хранить переменную того, какой язык выбран, но нельзя забывать о поисковых системах и продвижении фактически нескольких разных сайтов, которые дарит нам многоязычность!

Самый легкий путь, это конечно же использование поддоменов и домена с основным языком по умолчанию. При переходе на другой поддомен распарсивать URL и получать язык. И поисковое продвижение в ажуре пользователи даже не заметят переходов на различные поддомены. Единственная сложность состоит в том, что прийдется делать 3 разных сайта, ведь этоже поддомены.

Но и из этого положения есть выход - использование канонических имен CNAME в DNS!

Запись типа CNAME (Canonical Name - Каноническое имя) дает возможность присваивать хостингу мнемонические имена. Мнемонические имена(псевдонимы) широко применяются для связки имени хоста с какой-либо функцией, или просто для сокращения имени.

Если для хоста имеется запись CNAME, содержащая его мнемонические имена, другие записи для данного хоста должны ссылаться на его реальное (каноническое) имя, а не на мнемоническое. В момент когда программы DNS встречают запись CNAME, они оканчивают запросы по мнемоническому имени и переключаются на реальное имя хоста.

Например:
ftp.domen.ru. CNAME  domen.ru
mail.domen.ru. CNAME  domen.ru
ssh.domen.ru. CNAME  domen.ru

Такие записи CNAME дают возможность доступа к Вашему домену через адреса ftp.domen.ru, mail.domen.ru, и т.д. Без таких записей CNAME Вы не сможете подключиться к Вашему серверу по таким адресам.

Вот такая вот темка. Думаю, далее все уже смогут разобраться самостоятельно! :)

21 Комментов к “Многоязычность”

  • господи, зачем так сложно?

  • И не говари навыдумывают блин

  • Легких путей не ищем, а вот оптимальных – это к нам :)

  • Кстати, возможность реализовать многоязычность таким способом не все, что можно придумать.

  • насчет оптимальных – оптимальностью здесь и не пахнет

  • Покажи ссылку или расскажи, если желаешь, как правильней можно придумать?

  • Запутано как то написано, но два раза прочитав, понять можно :)
    С удовольствием бы прочитал продолжение статьи, если оно конечно появится :)
    Автору – респект.

  • Тема многоязычности расскрыта, подход ясен, кто знает, тот найдет все тонкости и плюсы подхода.

  • Хорошо сказано

  • А что же будет происходить в случае динамического создания языковых версий сайта :?: :!:
    Таблицы будут рости в пропорции N(языков)*М(кол-во текстовых полей)!
    Но это же не все…. Как тогда быть с твоими каноническими и мнемоническими адресами? :wink:

  • Пусть будет 12 языков, хотя я себе такого предствать не могу :)

    Что получаем? 12 каконических имен и 12*N таблиц в базе, допустим 150 таблиц в итоге.

    А если ростить не таблицы, а префиксы необходимых полей? Вообще плевое дело…

    Какие-то сложности? :) А это граничный случай…

  • сколько таблиц???в своем уме?? господи, ну и анальный же выход ты нашел. Видимо понятие локализации никто никогда не слыхал…

  • Я не оспариваю правоту чужого подхода, cyrillyun. Это лишь альтернатива для пытливых умов. :)

    Сейчас работаю с сайтом на 1 языке с примерно 100 таблицами. Похоже, что в своем уме :)

  • почитай что-нибудь о проектировании баз данных… должно просветить…

  • Совершенно верно. А теперь продолжи мысль о том, как сайту понимать какой сейчас должен быть язык на сайте? (Ведь речь-то именно об этом)

  • сложно передать идентификатор культуры в запросе?

  • Допустим, “select … inner join … on … where t2.culterid=”.$culter

    А где этот $culter взять? В $_GET, в $_SESSION или лучше в имени поддомена хранить и иметь 3 сайта вместо одно?

    Ведь мы же на сео-блоге и с точки зрения простоты реализации и эффекта – поддомены выигрывают. Хотя опять таки, не за мною остается “Фее”. Возможно я не прав.

  • мда..
    я правильно понимаю, что:
    твоя задача, скажем, трехязычный сайт. ты планируешь для каждой версии сайта выставить собственный поддомен, и трижды клонировать базу данных для разных языков?

  • Не правильно. Я созданию 3 поддоменна, а организация структуры базы данных – любая из всех возможных…

    Суть в том, что из URI вытягивается этот самый $culter, который поисковиком будет кушаться лучше, чем любой геммор с сессиями, ?culter=rus или /rus/ …

    Я надеюсь теперь понятнее стало о чем речь :)

  • во -первых: “любая из всех возможных” – какой ты себе ее представляешь?
    во -вторых: моё имхо – что это неудачная архитектура.

  • 1. field_rus, field_eng, field_est
    2. field = < rus >< /rus >< eng >< /eng >< est >< /est >
    3. field = rus|eng|est
    4. Комбинации

    Суть поста не в структуре БД, а в структуре URL и пользе этого.

Оставить коммент

Donation Bar

Order Links

Топ комментаторов

  • No commentators.
Изготовление пластиковых карточек