Зацените план по реализации многоязычности на сайте?

12
P
На сайте с 20.05.2008
Offline
33
2189

Здравствуйте,

На данный момент есть давно работающий сайт mysite.com с сотнями постоянных посетителей. Определение языка, на котором будет выдаваться содержимое определяется либо явным параметром в урл ("?newlang=en"), либо с помощью куки.

Т.е. если в куки указан английский язык, то mysite.com/contacts.php выдаст страницу на английском, если русский - на русском.

Так же если пользователь нажмет на кнопку смены языка, то перейдет на страницу, например, mysite.com/contacts.php?newlang=ru, она выдастся на русском, и в куки сохранится, что теперь язык русский.

Однако, как я понимаю, это нежелательная реализация многоязычности на сайте. В частности, яндекс изредка подтупливает и в индексе оказывается страница либо только на русском, либо только на английском. Гугл всегда индексирует оба варианта..

В хелпе у яндекса прочитал, что они советуют версии сайта на разных языках выносить на поддомены. Т.к. уже есть немало ссылок на mysite.com и его страницы, то русскую версию я решил так и оставить (90% клиентов - русскоговорящие), а английскую вынести на en.mysite.com (при этом настрою редирект со страниц типа mysite.com/contacts.php?newlang=en на en.mysite.com/contacts.php).

Т.е. скрипт если будет видеть что в url есть поддомен en, то будет выдавать страницу на английском, в противном случае - на русском.

Далее у меня еще есть 2 мысли:

1) во-первых, если человек в первый раз заходит на mysite.com и у него нет куки с языком, но по HTTP заголовку accept-language стоит предпочитаемый язык английский, то можно его javascript'ом перенаправить на en.mysite.com. Javascript'ом, потому что редиректить из PHP я боюсь, потому как не знаю как отреагирует поисковик, когда зайдет на mysite.com, а его средиректит на en.mysite.com. С другой стороны если поисковик распознает что пользователя могут средиректить javascript'ом, то вдруг поисковик на это еще хуже посмотрит..

2) во-вторых, если человек зайдет на mysite.com и явно потом выберет английский язык, то его перенаправят на en.mysite.com, и в куки установится, что язык английский, в следующий раз если он зайдет на mysite.com, то сайт увидит что в куки английский язык и перенаправит javascript'ом на en.mysite.com.

Как вам такой план по изменению структуры сайта?

Заранее спасибо за ваше мнение и за то что дочитали до конца.

[umka]
На сайте с 25.05.2008
Offline
456
#1

Я бы посоветовал вовсе отказаться от куков.

Т.е. сделать так, чтобы из URL всегда можно было явно определить язык — либо, с помощью поддомена, либо с помощью части URI ("/ru/", "/en/", "/fr/" и т.д.).

Лог в помощь!
P
На сайте с 20.05.2008
Offline
33
#2
'[umka:
;9066703']Я бы посоветовал вовсе отказаться от куков.
Т.е. сделать так, чтобы из URL всегда можно было явно определить язык — либо, с помощью поддомена, либо с помощью части URI ("/ru/", "/en/", "/fr/" и т.д.).

А по какой причине посоветуете вовсе отказаться от куков?

В принципе можно и отказаться, но я думал что может так будет удобнее для пользователей: допустим заходит клиент из Украины и не хочет читать на русском :), переключает на английский, его редиректит на en.mysite.com, а он может не замечает что его средиректили. В следующий раз он опять по набирает mysite.com и видит текст на русском, и опять будет жать кнопку [EN].. А если бы были куки, то автоматом бы его редиректило..

А в остальном - все нормально по вашему мнению?

[umka]
На сайте с 25.05.2008
Offline
456
#3

Может возникнуть вот какая ситуация.

Заходит на ваш сайт поисковый робот.

Индексирует, например, русскую версию, которая просто на поддомене "www".

Потом накидывается на английскую версию, которая на поддомене "en".

Ему вешается кука, что, этот пользователь предпочитает английский язык.

Всё отлично, на первый взгляд. В индексе обе версии, все довольны.

Через какое-то время робот заходит снова, на главную страницу (на поддомен "www"), чтобы её переиндексировать, а ваш сервер ему и говорит "иди ка, мол, на поддомен "en", т.к. у тебя установлена кука).

Таким образом, из индекса вылетает сначала главная страница на поддомене "www" :) ... а затем и все остальные.

P
На сайте с 20.05.2008
Offline
33
#4

Да, поэтому я хотел редиректить javascript'ом, потому что поисковый робот вроде как javascript не выполняет и его не средиректит.

DiAksID
На сайте с 02.08.2008
Offline
236
#5
'[umka:
;9066773']///Через какое-то время робот заходит снова, на главную страницу (на поддомен "www"), чтобы её переиндексировать, а ваш сервер ему и говорит "иди ка, мол, на поддомен "en", т.к. у тебя установлена кука).
Таким образом, из индекса вылетает сначала главная страница на поддомене "www" :) ... а затем и все остальные.

у кого установлена кука? 😂 у поискового бота? Вы о них слишком хорошо/плохо думаете: боты "печенек" не едят в принципе. боты с куками не работают (не хранят) - не надо этого им абсолютно...

нормально подпиленный генератор сайтмэп решает все проблемы с индексацией многоязычности

show must go on !!!...
P
На сайте с 20.05.2008
Offline
33
#6

Кажется недавно у меня в индексе Яндекса оказалась страница http://mysite.com/contacts.php причем на английском языке! Т.е. версия на русском языке не находилась, а по адресу русской версии в выдаче показывался английский текст.

В сайт-мэп у меня прописаны все страницы таким образом:

http://mysite.com/contacts.php // для русской версии

http://mysite.com/contacts.php?newlang=en // для английской версии

Так что хз...

Pashka добавил 13.06.2011 в 00:01

Настроил логирование http запросов от ботов, чтобы не гадать :) посмотрим...

DiAksID
На сайте с 02.08.2008
Offline
236
#7
Pashka:
...Так что хз...

безо всяких "хз" ищите ошибку в собственной архитектуре, ПыСы до сих пор могут криво работать с динамическими страницами, если архитектура сайта не абсолютно кондовая. вполне могли съёсть англо-версию, а потом отбросить GET параметр с "en" как несущественный (по каким то своим причинам) и получить дубль.

с организацией многоязычности вообще проблем нет, особенно, если уяснить, что в многоязычном сайте главная страница (типа http://site.ru/) на самом деле пререстаёт быть реально "главной", а исполняет только служебные функции (без куков - переадресует на локализацию по умолчанию, с куками - на выбранную локализацию), а что светиться в адресной строке браузера вообще не имеет значения.

ЗЫ: выражение "многоязычный сайт на субдоменах" вообще бред. это не многоязычный сайт, а набор отдельных одноязычных сайтов, связанных только ссылками/редиректами с опять же служебного корневого домена...

P
На сайте с 20.05.2008
Offline
33
#8

В общем 2 недели пологировал ботов, куки они действительно не передают.

В общем, как и говорил, хочу английскую версию вынести на en.mysite.com, а у тех кто первый раз заходит на mysite.com определять язык и если надо редиректить на en.mysite.com. Вопрос в том - как редиректить - 302 редиректом или javascript'ом? Боюсь, что 302 редиректом опасно, т.к. можем бота средиректить и он не проиндексирует русскую версию. И наверное лучше javascript'ом.

Правильно ли я рассуждаю?

DiAksID
На сайте с 02.08.2008
Offline
236
#9

хотите что бы для ПыСы сйт был реально многоязычным отказывайтесь от поддоменов, делайте архитектуру на директориях (site.com/ru/ site.com/en/ и т.д.). если уж так нравятся поддомены - в каждой локализации делайте сковзняки на головные страницы других, а может и прямые ссылки, заодно, на перевод страницы - никуда боты не денутся, скушают все головы, а потом и все локализации. сайтмэп тут не рулит - домены (и ресурсы соответственно) будут тупо разные...

P
На сайте с 20.05.2008
Offline
33
#10

1) А зачем отказываться от поддоменов? Например у меня сейчас en.mysite.com ведет на самом деле на тот же каталог где и сам mysite.com, просто скрипт динамически смотрит url и если текущий url - en.mysite.com то отдает контент на английском, в противном случае - на русском. В шапке сайта всегда ссылка на соответствующую страницу на другом языке.

Яндекс же как я понял как раз советует делать именно так.

А чем по-вашему это плохо и чем использование директорий будет лучше?

2) А что скажете по поводу моего вопроса о редиректе?

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий