За последние 24 часа нас посетили 17128 программистов и 1834 робота. Сейчас ищут 1574 программиста ...

Мультиязычность

Тема в разделе "Прочие вопросы по PHP", создана пользователем engager, 28 окт 2012.

  1. engager

    engager Активный пользователь

    С нами с:
    21 янв 2009
    Сообщения:
    1.106
    Симпатии:
    1
    Всем привет, хочу услышать ваше мнение, щас будет много букаф...
    Решил я перевести свой сайт на мультиязычные рельсы. Сайт на ZendFramework.
    Собственно, с самой мультиязычностью никаких проблем, ее я седал.
    Когда пользователь приходит первый раз, ему прописывается в куку его дефолтный язык, который определяется через Accept-language. Далее в зависимости от значения этой куки пользователю показывается нужный контент. Само собой, есть принудительный переключатель ru/en, который делает ровно то же самое - присваивает значение куке.
    Теперь идеологический вопрос. С точки зрения карты сайта в такой конфигурации ничего не поменялось, все ссылки (permanent links) остались неизменными. Но в таком случае возникает конфуз. Допустим, англоязычный пользователь заходит по ссылке http://mysite.com/article1, видит контент на иглише, копирует линку и дает приятелю. Тот открывает линку и почему-то у него определяется русская локаль, он получает русскую версию. Вроде бы не беда - есть переключатель, но все-равно, чувство перфекционизма уязвлено.
    Есть выход, в зависимости от текущего языка делать редирект с таких страниц на
    http://mysite.com/en/article1
    http://mysite.com/ru/article1
    чтобы пользователь никогда не попадал на http://mysite.com/article1, и копировал линку, содержащую указание на язык (http://mysite.com/en/article1).
    Чем плох данный подход? В основном из соображений СЕО. Все проиндексированные на данный момент страницы окажутся потерянными для поисковиков.
    Как бы вы сделали?

    Добавлено спустя 2 минуты 33 секунды:
    наверное не в тот раздел запостил.
    наверное лучше было в Решения
     
  2. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
    Я никогда не парюсь.
    Обычно делаю через массив
    $lang['ru']=array(........);
    $lang['en']=array(........);

    Притом всего, то надо сделать так:

    get_lang('key');

    где будет:

    return $lang[$_COOKIE['lang']][$key];
     
  3. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.099
    Симпатии:
    1.243
    Адрес:
    там-сям
    Ради поисковиков я бы с адресов без языкового префикса делал 301 редирект на страницы с дефолтным префиксом (ru?). Постепенно весь контент переиндексируется. Не проблема.
     
  4. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    согласен, ради поисковиков же и надо ввести язык в урл.
     
  5. engager

    engager Активный пользователь

    С нами с:
    21 янв 2009
    Сообщения:
    1.106
    Симпатии:
    1
    Получается, нужно реализовать редирект поисковиков на ру-версию, а реальных юзеров на accept-language?
     
  6. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    юзеров можно по ip раскидать. а та часть, что останется, уж кликнет себе язык вверху/внизу
     
  7. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.099
    Симпатии:
    1.243
    Адрес:
    там-сям
    Редирект будет только со старого адреса, от которого ты отказываешься, который без префикса. Разве нет?
    Если юзер или поисковый спайдер шуршат по пространству /en/ или по пространству /ru/, никто никуда их вроде не должен редиректить.

    Добавлено спустя 5 минут 1 секунду:
    Чтобы не обсуждать сферических коней, реальный пример, стартовая: http://www.yiiframework.com/doc/guide/
    Слева выбор языка. Смотрим на адреса ссылок.

    Никто не запрещает пользователю посещать китайский квартал, он сам туда не пойдет.

    Добавлено спустя 1 минуту 39 секунд:
    accept-language может быть надо анализировать на одной странице — корне. поисковик же увидит корень на дефолтовом языке.

    Добавлено спустя 10 минут 32 секунды:
    На самом деле под "мультиязычностью" можно понимать разное.
    Если это язык контента - то об этом моя куча букв сверху.
    Если это язык интерфейса - главного меню и текст на кнопках - не надо этот язык привязывать к URL страницы.

    Пришел юзер на сайт по ссылке, увидел контент на том языке, про который была ссылка. А текст на вспомогательных элементах будет выбран по его accept-language.
     
  8. MiksIr

    MiksIr Активный пользователь

    С нами с:
    29 ноя 2006
    Сообщения:
    2.339
    Симпатии:
    44
    Оставь русский без префикса, английский с префиксом. И поисковики не пострадают, и ссылки будут разные.
     
  9. engager

    engager Активный пользователь

    С нами с:
    21 янв 2009
    Сообщения:
    1.106
    Симпатии:
    1
    не, accept-language нужно везде анализировать и редиректить - не известно с какой ссылки поисковой выдачи придет пользователь.
     
  10. MiksIr

    MiksIr Активный пользователь

    С нами с:
    29 ноя 2006
    Сообщения:
    2.339
    Симпатии:
    44
    Не совсем верно. Поисковая выдача будет именно на ту страницу, на каком языке был задан вопрос. Наверно, если я задаю вопрос по-русски и получаю ссылку на русскую страницу, я не хочу, что бы меня редиректило на английскую, вне зависимости от происхождения моего браузера.
     
  11. engager

    engager Активный пользователь

    С нами с:
    21 янв 2009
    Сообщения:
    1.106
    Симпатии:
    1
    в период стабилизации, когда в поисковом кэшэ будут еще ссылки без указания языка... нужно будет редиректить все страницы
     
  12. MiksIr

    MiksIr Активный пользователь

    С нами с:
    29 ноя 2006
    Сообщения:
    2.339
    Симпатии:
    44
    И насколько большой трафик англоязычных посетителей не понимающих русский придет с поисковых запросов сделанных на русском? ;) Я же правильно понял, что сайт изначально русский был?