Мультиязычность сайта, способ переключения языка.

Discussion in 'PHP' started by FindeR, 8 Jan 2012.

  1. FindeR

    FindeR Elder - Старейшина

    Joined:
    15 Nov 2006
    Messages:
    623
    Likes Received:
    138
    Reputations:
    20
    Доброго вечера всем.

    Появилась необходимость добавить сайту мультиязычность.
    Все необходимые изменения структуры БД сделаны, но появился вопрос:

    изначально планировал хранить язык в куке (возможно, с гео-таргетингом при первом заходе). Но в таком случае URL будут одинаковые у страниц с разными языками - как отнесутся поисковики? Умеют ли они хранить куки или проиндексируют только язык, стоящий по умолчанию?

    На форумах много холиваров, а есть ли у кого-то реальные примеры? Каким образом всё же сделать переключение?
    Как вариант site.ru/(ru|en) - как лучше в итоге сделать?
     
  2. RINDAMAN

    RINDAMAN New Member

    Joined:
    6 Jan 2012
    Messages:
    14
    Likes Received:
    0
    Reputations:
    0
    у нас путь почти один)
    меня тоже интересует вопрос

    для FindeR
    аська есть?
     
  3. Sharky

    Sharky Elder - Старейшина

    Joined:
    1 May 2006
    Messages:
    487
    Likes Received:
    312
    Reputations:
    46
    сделай гет параметр с языком...пусть из твоих же куков берет его и делает редирект на нужный урл...если параметр отсутствует сделай допустим русский чтоб по умолчанию был
     
  4. FindeR

    FindeR Elder - Старейшина

    Joined:
    15 Nov 2006
    Messages:
    623
    Likes Received:
    138
    Reputations:
    20
    Я про это и спрашивал - site.ru/(ru|en) (перекинет mod_rewrite'ом на index.php с нужным параметром).
    Но остаётся вопрос - смогут ли поисковики проиндексировать обе языковые версии, если URL будет одинаковым? Дабы не менять алгоритм генерации ссылок (много менять придётся).
     
  5. red_joker

    red_joker New Member

    Joined:
    4 Nov 2010
    Messages:
    31
    Likes Received:
    3
    Reputations:
    0
    ИМХО лучше быть поосторожнее. Один и тот же урл, с разных ИП выглядящий по-разному - со стороны ПС это может быть подозрение на клоакинг. Обычно изначально делают отдельные урлы для языков типа /ru/content, /en/content, либо поддомены en.site.com, ru.site.com итд.
     
    1 person likes this.
  6. FindeR

    FindeR Elder - Старейшина

    Joined:
    15 Nov 2006
    Messages:
    623
    Likes Received:
    138
    Reputations:
    20
    Понятно. Значит будет site.ru/(ru|en)/
    Благодарю за ответы.
     
  7. FindeR

    FindeR Elder - Старейшина

    Joined:
    15 Nov 2006
    Messages:
    623
    Likes Received:
    138
    Reputations:
    20
    Апну свою же тему.

    Есть сайт с двумя языками (ru и en).
    Если у какого-то из элементов что-либо не переведено на английский, должен ли этот элемент отображаться в английской версии сайта? Как считаете?

    На данный момент реализовано так - если что-то не переведено, отображается на русском.
     
  8. Chaak

    Chaak Elder - Старейшина

    Joined:
    1 Jun 2008
    Messages:
    1,059
    Likes Received:
    1,067
    Reputations:
    80
    Правильно сделано. Кому надо может воспользоваться переводчиком, например. И вообще можно сделать ссылку на гугл транслэйт для непереведенного текста
     
  9. FindeR

    FindeR Elder - Старейшина

    Joined:
    15 Nov 2006
    Messages:
    623
    Likes Received:
    138
    Reputations:
    20
    Я когда реализовал, задумался - а как поисковики отнесутся? Не отнесут ли это к дублированному контенту?
    Если, к примеру, на site.ru/ru/item и site.ru/en/item будет одинаковый текст (т.е. просто не будет переведён).

    Не в курсе, случайно?
     
  10. mironich

    mironich Elder - Старейшина

    Joined:
    27 Feb 2011
    Messages:
    733
    Likes Received:
    73
    Reputations:
    19
    Как вариант перевод зделать плагином для Jquery тогда стр будет одна, но хз как поисковик на это посмотрит так как там вместо текста шабы, http://habrahabr.ru/blogs/jquery/112843/
     
  11. elion

    elion Banned

    Joined:
    10 Mar 2012
    Messages:
    1
    Likes Received:
    1
    Reputations:
    0
    Не забывайте в <head> указывать язык документа:

    PHP:
    <META HTTP-EQUIV="Content-language" content="ru" />
    PHP:
    <META HTTP-EQUIV="Content-language" content="en" />
     
  12. FindeR

    FindeR Elder - Старейшина

    Joined:
    15 Nov 2006
    Messages:
    623
    Likes Received:
    138
    Reputations:
    20
    elion, да, только лучше использовать уже не meta, а lang:
    PHP:
    <html lang="ru">
    Всё же, вопрос к сеошникам остаётся в силе: если на страницах
    site.ru/ru/item и
    site.ru/en/item будет одинаковых контент, не схлопочет ли сайт бан?