Двуязычный site
Данный пост посвящен в первую очередь продвинутой аудитории системы,
да и пригодится на практике, скорее всего, узкой её части. Но найти что-то
полезное или познавательное, думаю, в нем сможет каждый.
Вопрос, о том как сделать сайт на нескольких языках приходит время от времени в техподдержку. Тут я постараюсь коснуться не только технической стороны дела, но и идеологического подхода к нему.
Если вам точно не нужна патетика на тему двуязычности, то можете сразу перейти к идее или скрипту .
В первую очередь, озадачившись мыслью о мультиязычном сайте, стоит четко понимать, а зачем оно тебе надо. Это не самая легкая задача и силы, затраченные на её решение, порой стоит потратить в другом направлении. В каких случаях вам действительно нужно несколько языков (я не буду сейчас приводить сайты международных корпораций типа 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>
При использовании же относительной ссылки, появится потенциальная возможность осуществить интересное решение техническое. И на мой взгляд такой вариант будет поприятнее. Вы сможете отправлять пользователя не на главную страницу локализации, а на иноязычный аналог текущей страницы. То есть если он находится на странице обратной связи, то по ссылке он попадет на неё же, но на втором языке.
Выглядеть ссылки в общем виде будут вот так:
В самом простом примере <?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
Тогда относительные ссылки будут выглядеть вот так:
Безусловно, при таком подходе нужно вести два сайта абсолютно одинаково и на всякий случай оформить 404 страницу в духе "Запрашиваемый вами материал, на искомом языке отсутствует".
Помимо субдоменов, существует вариант с национальными доменами, такими как:
домен.ru, домен.com, домен.es, домен.de и т.д.
Как вы организуете сайт: субдоменами или национальными зонами - вопрос вкуса.
Что же мы будем иметь в результате такого подхода? Для пользователя - один двуязычный сайт, а для администратора - два независимых. На самом деле это гораздо удобнее, чем иметь один сайт, в котором просто переключаются служебные надписи.
В большинстве случаев, когда у вас действительно есть нужда в общении с аудиторией, говорящей на разных языках, информация для них должна быть разной. К примеру, та же контактная информация. Русских лучше направлять в "Москву, д. 12, офис 120", у американцев же большее доверие вызовет "Вашингтон, Белый дом, Овальный кабинет".
Для сайтов фирм на немецком языке обязательна ссылка на такой раздел, как "Impressum", в то время как на русском языке это не нужно.
Касательно дизайна - вы наверняка замечали, что даже сайты очень крупных корпораций имеют индивидуальный дизайн для разных стран, стараясь "замаскироваться” под местного. Это связанно с тем, что интернет в разных странах выглядит по разному. Например англоязычные сайты любят петь (временами даже неотключаемым фоном), испанские - сверкать и искриться дикими цветами, арабские и израильские - заточены под правостороннюю письменность, японский интернет кажется похожим на полоску с объявлениями газеты "Из рук в руки” - до того от квадратный и мелкошрифтный. При серьезном подходе - это все стоит изучать, чтобы не отпугивать клиента. Но это у конечно же вопросы правильного подхода к локализации, нежели технической реализации.
Независимость сайтов так же позволяет обеспечить сайту больше динамики - не нужно ждать, когда у вас будет копия статьи на всех языках, можно выложить на имеющихся, и по мере перевода добавить.
Сильно много времени такой принцип постинга у вас не займет, а плюсы разделения - на лицо
Если у вас какой-то материал на двух языках - то комментарии к нему тоже лучше не смешивать - иначе получится редкая путаница.
Определяя язык браузера, при помощи скриптов можно сразу перенаправлять пользователя на подходящую ему версию сайта. Например, вот такой скрипт будет переключать главную страницу на различные языки:
Вопрос, о том как сделать сайт на нескольких языках приходит время от времени в техподдержку. Тут я постараюсь коснуться не только технической стороны дела, но и идеологического подхода к нему.
Если вам точно не нужна патетика на тему двуязычности, то можете сразу перейти к идее или скрипту .
В первую очередь, озадачившись мыслью о мультиязычном сайте, стоит четко понимать, а зачем оно тебе надо. Это не самая легкая задача и силы, затраченные на её решение, порой стоит потратить в другом направлении. В каких случаях вам действительно нужно несколько языков (я не буду сейчас приводить сайты международных корпораций типа 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 »
Ваш комментарий