Двуязычный site
Двуязыный сайт uCoz Данный пост посвящен в первую очередь  продвинутой аудитории системы, да и пригодится на практике, скорее всего, узкой её части. Но найти что-то полезное или познавательное, думаю, в нем сможет каждый.
Вопрос, о том как сделать сайт на нескольких языках приходит время от времени в техподдержку. Тут я постараюсь коснуться не только технической стороны дела, но и идеологического подхода к нему.
Если вам точно не нужна патетика на тему двуязычности, то можете сразу перейти к идее или скрипту .
В первую очередь, озадачившись мыслью о мультиязычном сайте, стоит четко понимать, а зачем оно тебе надо. Это не самая легкая задача и силы, затраченные на её решение, порой стоит потратить в другом направлении. В каких случаях вам действительно нужно несколько языков (я не буду сейчас приводить сайты международных корпораций типа Adobe или Microsoft ибо если вы делаете для них сайт, мои советы вам точно не нужны):
1. Сайты-визитки фирм, работающих с зарубежными партнерами.
2. Сайты, связанные с услугами, актуальными на зарубежных рынках (например, сайт переводческой фирмы).
3. Интернет-магазин с доставкой зарубеж или с электронными товарами, которые могут быть интересны зарубежным покупателям.
4. Сайт предназначенный для априори мультиязычной аудитории. Как вариант - Израиль, где три государственных языка, часть населения при этом не знает ни одного из них, но бизнес сайты нужно как-то ориентировать на всех или  Украина, где население знает два языка, но частично предпочитает читать и общаться только на одном.

Допустим, ваш сайт относится к одному из 4-х видов и вам действительно нужно как-то реализовывать несколько языков. В зависимости от сложности задачи - решение её в рамках системы uCoz может быть разной степени замороченности.

В наиболее простом варианте, когда сайт  является статическим (визитка) -  самое верное решение это продублировать все страницы на втором языке при помощи "Редактора страниц”.
Пример такого - сайт тулбара от uCoz:

http://utoolbar.ucoz.net/index/english/0-7
http://utoolbar.ucoz.net/

Еще один вариант подобной реализации:
http://abasov.net/ru/
http://abasov.net/

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

сайт.ucoz.ru/ru
сайт.ucoz.ru/en
сайт.ucoz.ru/es

Это совсем не обязательно, но приятно для глаза и внутренней логики.

Для более сложных проектов, состоящих не только из статичных страниц, а из модулей, самый оптимальный вариант создания дву(да и в общем-то сколько угодно)язычного сайта будет следующий:
1. Создаем сайт на первом, допустим, русском языке - сайт1.ucoz.ru
2. Одновременно с этим создаем второй сайт на втором, к примеру, английском языке - сайт2.ucoz.ru
3. Делаем двум этим сайтам аналогичные настройки, дизайн, за одним только различием: для сайта1 ставим в админке язык сайта - "русский", а для сайта2 - "английский".
4. Для того, чтобы связать сайты в одно целое к одному из сайтом крепим домен.
Например, к сайт1.ucoz.ru крепим домен1.ru. Далее в панели управления доменом создаем поддомен en.домен1.ru  и крепим на этот домен сайт сайт2.ucoz.ru
Теперь, в глазах посетителя два сайта становятся одним целым - так как их объединяет  общий домен. Плюс ко всему приставка en интуитивно понятна и хорошо воспринимается для языковой локализации сайта.
5.Следующий шаг - это в шапку ставим переключатель:


или
русский/english

с соответствующими ссылками на сайты.

Причем её можно сделать как абсолютной так и относительной.
При абсолютной задаем ссылкой четкий адрес на главную страницу:

<a href=http://домен1.ru>русский</a>/<a href= http:// en.домен1.ru>english</a>

При использовании же относительной ссылки, появится потенциальная возможность осуществить интересное решение техническое. И на мой взгляд такой вариант будет поприятнее. Вы сможете отправлять пользователя не на главную страницу локализации, а на иноязычный аналог текущей страницы. То есть если он находится на странице обратной связи, то по ссылке он попадет на неё же, но на втором языке.
Выглядеть ссылки  в общем виде будут вот так:
<a href= http://домен1.ru/<?substr($ENTRY_URL$,M+3,N)?> >русский</a>/<a href= http://en.домен1.ru/<?substr($ENTRY_URL$,M,N)?>>english</a>
В этой конструкции используется системная функция <?substr($ENTRY_URL$,M,N)?> которая отсекает часть  строки, начиная с указанной позиции.
В самом простом примере <?substr1('Ромашка', 1, 2)?> выведет на печать "ом". 
M=1 - c какой позиции начинать отсекать (отсчет ведется с нуля, т.е. 0 это "Р", 1 это "о"  и т.д.)
N=2  - сколько символов брать.

Так же используется системный код $ENTRY_URL$2 - содержащий URL текущей страницы.
При реальном использовании вместо M  подставляем длину вашего домена (вычитаем целиком, вместе с http:// и / в конце),  вместо N подставляем как можно большую потенциальную длину ссылки, например 70.
Как это будет выглядеть на реальном примере:
Допустим ну нас домен http://dfhs.ru
c английским субдоменом http://en.dfhs.ru
Тогда относительные ссылки будут выглядеть вот так:
<a href= http://dfhs.ru/<?substr($ENTRY_URL$,18,70)?> >русский</a>/<a href= http://en.dfhs.ru/<?substr($ENTRY_URL$,15,70) ?>>english</a>

Почему в первом случае 18, а во втором 15? Потому что длинна субдомена с en. на три символа длиннее и соответственно, нам нужно отсечь больше.
Безусловно, при таком подходе нужно вести два сайта абсолютно одинаково и на всякий случай оформить 404 страницу в духе "Запрашиваемый вами материал, на искомом языке отсутствует".
Помимо субдоменов, существует вариант с национальными доменами, такими как:
домен.ru, домен.com, домен.es, домен.de и т.д.
Как вы организуете сайт: субдоменами или национальными зонами - вопрос вкуса.

Что же мы будем иметь в результате такого подхода? Для пользователя -  один двуязычный сайт, а для администратора  -  два независимых.  На самом деле это гораздо удобнее, чем иметь один сайт, в котором просто переключаются служебные надписи.
В большинстве случаев, когда у вас действительно есть нужда в общении с аудиторией, говорящей на разных языках, информация для них должна быть разной. К примеру, та же контактная информация. Русских лучше направлять в "Москву, д. 12, офис 120", у американцев же большее доверие вызовет "Вашингтон, Белый дом, Овальный кабинет".
Для сайтов фирм на немецком языке обязательна ссылка на такой раздел, как "Impressum",  в то время как на русском языке это не нужно.
Касательно дизайна - вы наверняка замечали, что даже сайты очень крупных корпораций имеют индивидуальный дизайн для разных стран, стараясь "замаскироваться” под местного. Это связанно с тем, что интернет в разных странах выглядит по разному. Например англоязычные сайты любят петь (временами даже неотключаемым фоном), испанские - сверкать и искриться дикими цветами, арабские и израильские - заточены под правостороннюю письменность, японский интернет  кажется похожим на полоску с объявлениями газеты "Из рук в руки” - до того от квадратный и мелкошрифтный. При серьезном подходе - это все стоит изучать, чтобы не отпугивать клиента.  Но это у конечно же вопросы правильного подхода к локализации, нежели технической реализации.

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

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

Ну и напоследок немножко о вопросах SEO.
Некоторые движки предлагают встроенный вариант мультиязычности такого плана, что  для любого товара/статьи/новости вам придется заполнять два описания и два названия. Оставить что-то одно пустым не получится.  Пожалейте поисковых ботов - они с ума сойдут индексируя это - а для поисковика порой важно понимать, на каком языке сайт. Ну и подобный подход не решает проблемы форумов, гостевых, досок объявлений и других мест, где возможна коммуникация пользователей.

1 Для данной функции есть ограничение. Строка в которой ищем (т.е. в нашем случае это $ENTRY_URL$ ) не может быть длинее 1000 символов, условие (M)  - не может быть длинее 100  символов.
Но скорее всего вам это мешать не будет, так как url в 1000 символов это перебор, как и домен - в сто.
2Если вдруг этот системный код не активен, активируйте функцию "Посоветовать другу" в почтовых формах.

126 комментариев
1 2 3 4 »
avatar
1 Написал upnetel 20 Июля 2010, 23:50
Хороший пост
avatar
122 Написал KOcccTya4897 09 Апреля 2017, 19:51
Ребята АЛЁ!!! За окном 2017й год, не ужто мозгов не хватает за 7 лет сделать мультиязычность стандартным или хотя бы  премиум модулем ? Я понимаю что для всего сайта может она не нужна, ну хотя бы для интернет магазина сообразили бы уже! Только вдумайтесь 7 лет уже прошло, а прогресса нету, интернет магазин по стандартному функционалу аля 2000, нету не выбора цвета товара, нету сортировок по размеру, суме от а до я, материалу изделий, нефига нету. Не интересно расширять интернет магазин стандартным модулем, так сделайте отдельный платный модуль на php с разовой оплатой за него, дайте установку и настройку в 1-2 клика, и будет счастье всем !
2 Написал crysis007 20 Июля 2010, 23:57
Довольно забавная информация!
3 Написал taro 20 Июля 2010, 23:59
Классно. Так и сделаю. А скрипт куда вставлять, а то я чайник smile
avatar
12 Написал ironkiss 21 Июля 2010, 00:44
как всегда, в <head>
13 Написал taro 21 Июля 2010, 00:45
Спасибо! biggrin
avatar
15 Написал ironkiss 21 Июля 2010, 00:47
пожалуйста
avatar
4 Написал Admin2615 21 Июля 2010, 00:07
Все как всегда "легко" и "просто" ))
В принципе перевод сайта делается со знанием того языка.
А как попало перевести переводчиком, это уже любой браузер умеет.
5 Написал zachom 21 Июля 2010, 00:09
Quote
...типа Abobe....
?
8 Написал Meddy 21 Июля 2010, 00:14
и Микросуфт... biggrin
Спасибо, поправила.
6 Написал DPolyakov 21 Июля 2010, 00:12
Вариант с поддоменами лучше. И для поисковиков и для пользователей.
Идеально конечно под каждую локализацию завести сайт в необходимой доменной зоне. Но если средства поджимают - то поддомены самое то.

А за интересное решение со ссылками на аналогичные страницы других локализаций спасибо.
Тут нужно отметить что в этом случае администратору стоит следить за соответствию страниц на разных языках друг другу

10 Написал Meddy 21 Июля 2010, 00:14
Да, я это отметила - нужно быть очень аккуратным или иметь мало страниц на сайте.
avatar
95 Написал Miller1059 17 Августа 2011, 23:32
Спасибо за статью!
А можно для неумных рассказать как флажки сделать!
7 Написал MaxL 21 Июля 2010, 00:13
Давно ждал что-то на техническую тематику.
Ира, это все подходит для обычных моделей, а вот для модуля магазина стает уже денежный вопрос, хоть он и не такой существенный. Но также будет сложно сделать копию всех товаров на двух-трех языках.
В общем предложенный вариант считаю самым простым и универсальным, легких путей нет :-)
24 Написал abasovMike 21 Июля 2010, 12:53
Если ты можешь позволить себе выйти на иностранный рынок, то вопроса об оплате еще одного модуля, я думаю, стоять не будет.
9 Написал taro 21 Июля 2010, 00:14
Люди, подскажите, плиз, куда скрипт вставить? sad
avatar
11 Написал Bogggdan 21 Июля 2010, 00:42
На свой сайт же наверное?
avatar
38 Написал nikita-y 22 Июля 2010, 00:24
Сарказм здесь не к чему.
19 Написал DPolyakov 21 Июля 2010, 02:19
думаю между тегами <head></head> ему самое место.
20 Написал taro 21 Июля 2010, 06:56
Спасибо!
avatar
14 Написал ironkiss 21 Июля 2010, 00:46
Ирина, спасибо за статью, а то уже надоело в сообществе неоднократно объяснять как сделать многоязычный сайт.
16 Написал Meddy 21 Июля 2010, 00:49
Да, такой мануал явно был нужен.
avatar
17 Написал Lomster7 21 Июля 2010, 01:08
Отличная статья, ток вот тут надо бы исправить

Допустим, ваша сайт относится к одному из 4-х видов и вам действительно нужно как-то реализовывать несколько языков. В зависимости от сложности задачи - решение её в рамках системы uCoz может быть р...

18 Написал Meddy 21 Июля 2010, 01:45
Исправлено, спс.
21 Написал Rusarmia 21 Июля 2010, 08:26
Статья полезная и информативная. Но покупать два домена и качественный перевод, позволят себе не многие, да и нужно это скорее крупным фирмам и официальным сайтам. Поэтому беру на себя смелость предложить рецепт менее качественный, но для многих более удобный - на моем сайте 4 языка (русский, английский, немецкий и украинский) и реализовано это с помощью translate.google.com
В шапке сайта стоят флажки стран, а ссылки оформлены по типу http://translate.google.com/translate?prev=_t&hl=ru&ie=UTF-8&u=http://blog.ucoz.ru&sl=ru&tl=de&history_state0=
Повторюсь что этот способ проще, но менее качественный (к тому же вверху страницы появляется шапка гугла, а сайт во фрейме)
22 Написал CIA0578 21 Июля 2010, 09:34
был у меня такой вариант с помощью гугл транслит, но перевод очень не точный - иностранные пользователи сражу же покидали сайт
avatar
31 Написал FullBlooded 21 Июля 2010, 17:53
Если просто кнопочками гугла перевод делать - ничего хорошего с этого не выйдет.
Нужно сам контент перевести, чтобы это была отдельная страница.
Потом эта страница попадет в индекс, и, возможно, на нее будут переходить по иностранным поисковым фразам.
33 Написал Rusarmia 21 Июля 2010, 18:23
Ну конечно переход по иностранным поисковым фразам это аргумент весомый и решать его нужно, безусловно, одним из предложенных в статье методом, но лично мне хватает русскоговорящей аудитории в том числе и заграницей. Например одна из постоянных пользовательниц сайта проживает в Нью Йорке и не испытывает затруднений.
Как правильно было замечено в самом верху статьи перевод сайтов актуален для нескольких категорий вэбмастеров, а что для остальных, то эта статья очень даже полезна так сказать "в копилку знаний"
64 Написал ogorodUA 26 Июля 2010, 15:19
Ставил, такое "чудо" - страницу, нагружает сильно... Хотел, чтобы индексация шла по другим языкам, но умные люди из uCoz объяснили, что индексации, то не будет... А если кому действительно на коммерческой основе нужно будет несколько языков, значит дела идут не плохо, поэтому можно заплатить и за перевод и наполнение отдельного домена - единственное в случае с интернет-магазином - это ДВА сайта - ДВЕ базы товаров, а количество одно и тоже,- вот этом скрыт по моему самый основной геморрой...
avatar
93 Написал Miller1059 17 Августа 2011, 22:00
перевод отвратительный к тому же в отдельных случаях может перевести на полностью противоположное например да на нет
23 Написал CIA0578 21 Июля 2010, 09:40
Да, поддомены не плохой вариант.
А, если будут скидки для премиум пакетов этих поддоменов, то вообще будет супер.
Спасибо за пост.
25 Написал AlexPS 21 Июля 2010, 12:58
Эх если бы год назад статья появилась. Сейчас слишком поздно для моего сайта. 15000 материалов с разных модулей будет затратно перевести smile
avatar
26 Написал ЮМороз 21 Июля 2010, 16:15
Простите возможную наивность вопроса, я новичек.
Возможно ли создать новый сайт просто скопировав старый? Потом перевести тексты и меню, не трогая картинки и пр. Потом все процедуры по Вашей статье: поддомены и т.д.
27 Написал Meddy 21 Июля 2010, 16:35
Нет, продублировать сайт автоматически нельзя.
avatar
29 Написал Некий 21 Июля 2010, 17:49
А как же бекап?
34 Написал Kurt 21 Июля 2010, 18:55
можно через бекап
avatar
28 Написал Некий 21 Июля 2010, 17:48
Очередное решение в обход логике... По сути... Удалил случайно страницу какую-нибудь и всё... не получится двухязычного сайта. Да и две админки для одного сайта не лучший вариант...

Я вообще как вижу работу админки для многоязыяного сайта.
1. Поле на русском
2. Поле на английском
3. Поле на ещё каком-то
...
и так для каждого значения. Всё правится в одном месте. Увы в юкозе пока что такое не организовать...

32 Написал Meddy 21 Июля 2010, 17:59
На самом деле такой метод хорош только на первый взгляд. Он не очень удачен под задачи SEO, у вас не получится правильной локализации дизайна и придется переводить много не нужного на второй язык. (Т.е. должна быть полная идентичность меню). Ну а со случайным удалением... тут уж ничего не поможет, так же можно случайно и в описанном вами варианте удалить.
avatar
41 Написал Некий 22 Июля 2010, 10:10
А что мешает сделать полностью идентичное меню? Я не вижу в этом никакой проблемы...

В описанном мною случае если удалится, то удалится, то можно запросто восстановить страницу по тому же адресу.

44 Написал Meddy 22 Июля 2010, 11:19
Касательно меню - я имела в виду, что обычно в продуманной локализации оно не бывает идентичным, так как обычно разные языки имеют разные особенности построения сайтов на них. Но это все на самом деле очень тонкие и частные случаи.
avatar
46 Написал Некий 22 Июля 2010, 11:25
Ну так в любом случае я не вижу никаких проблем сделать меню так, как это нужно.
avatar
30 Написал FullBlooded 21 Июля 2010, 17:49
Еще вариант есть - перевести главную страницу в переводчике гугла, сохранить эту страницу, удалить там фрейм гугла. А потом страницу залить на сайт, и добавить в индекс поисковых систем.
Помню, один парень про это писал, на forum.ucoz.ru.
35 Написал Kurt 21 Июля 2010, 18:57
Это не будет переводом. Это будет фиг знает что. Это нет никакого смысла делать. Никакого разумного смысла.
Равно как и кнопку на перевод ставить, как тут выше предлагалось.
Это не создание сайта на нескольких языках - это просто информирование о существование сервиса гугл-транслейтер, на случай если не все посетители сайта о нем знают, и он может быть потенциально полезен.
48 Написал Rusarmia 22 Июля 2010, 18:25
Частично не согласен. Я вот пользуюсь функцией перевода встроенной в uToolBar, хоть и получаю фиг знает что, но смысл понять можно, так же кто то из иностранцев, плохо знающих язык может воспользоваться предложенным сервисом, который сразу интегрирован ввиде кнопочки и получить хоть какой то, но перевод. Тем более сайт лично у меня специфический и содержит не мало не привычных иностранцам слов.
Но как я уже и говорил выше, если сайт ориентирован и на иностранную публику, то безусловно нужно воспользоваться одним из предложенных в статье рецептов.
avatar
67 Написал FullBlooded 28 Июля 2010, 12:56
Небольшая доля смысла есть во всем.
Такого перевода, как я предложил, будет вполне достаточно, для привлечения небольшого иностранного трафика.
36 Написал Drinko 21 Июля 2010, 22:04
Как-то очень легко обошли в статье момент оплаты платных услуг за 2 сайта вместо одного...
37 Написал Meddy 21 Июля 2010, 22:49
Можно оба сделать не прибегая ни к каким платным услугам. А если у человека реально есть необходимость в двуязычии, то ему что 3 доллара в месяц - что 6 одинаково несущественно. (Я еще я два домена предложила купить - вот ужас-то...)
P.S. Кстати, вариант решения в рамках одного сайта тоже дан.
avatar
39 Написал SleepWalker 22 Июля 2010, 00:40
В начале статьи поправьте пожалуйста: Вопрос, о там как
avatar
40 Написал Serega111 22 Июля 2010, 02:03
smok да да да
avatar
42 Написал Некий 22 Июля 2010, 10:11
Не в тему, но всё же...

Добавьте в код:
<link rel="alternate" type="application/rss+xml" title="RSS-канал" href="http://blog.ucoz.ru/blog/rss" />
Неудобно без этого подписываться...

1-20 21-40 41-60 61-71
Ваш комментарий