Реализация мультиязычности на вашем сайте - Remarka

Дата публикации: 29.08.2011

Как-то странно, что этой теме посвящено так мало статей. Я, признаться, думал, что есть много красивых решений, но, немного погуглив, обнаружил только наборы плагинов. И никакой теории. Восполним этот пробел.

Реализация мультиязычности (сайт на нескольких языках) полностью зависит от постановки задачи. Фактически есть есть два возможных варианта: синхронный и асинхронный. В синхронном варианте (встречающемся не так уж и часто, как принято думать) все статьи и элементы сайта совпадают на разных языках. Или бытовым языком: на какой бы язык вы не перешли на сайте, все будет одинаково, только на другом языке.

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

Типичный способ реализации синхронного варианта — удвоение полей. Т.е. на каждый язык добавляются поля на другом языке. Обычно к названию таких полей в таблице MySQL добавляется префикс. В шаблоне и виджетах добавляется обработка переменной, отвечающей за текущий язык — вместо поля NAME выводится, например, NAME{LANG}, где {LANG} может быть равной _RUS или _ENG в зависимости от выбранного языка. Работа это муторная и длительная, так что обычно у любой студии уже есть наработки на этот случай для нужных модулей в системе управления сайтом (CMS).

После полной реализации у пользователя есть единый вход, но на каждую новость/статью/единицу контента он должен заполнять и поля на другом языке.

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

Есть еще два варианта реализации асинхронного сайта. Одностраничный и привязка контентной единицы к языку.

В одностраничном случае делается вывод одной (реже, нескольких) единицы контента вне основного шаблона сайта: убираются или заменяются на иноязычные аналоги все навигационные ссылки и графические элементы. Как ни странно, почти в любой CMS это реально. Уникальная ссылка на эту страницу вешается на флажок. Переход на полную версию вешается на другой флажок.

Привязка контентной единицы (статьи, новости, картинки и т.п.) к языку сложнее и требует существенного допиливания движка. К слову, мы делали это один единственный раз в своей практике. Суть: на нужный язык выводится только тот контент, который привязан к данному языку, а так все хранится в одной админке. В каком-то смысле это появление у контента еще одного измерения — языка. Обычно CMS обходится всего одним — привязкой к разделу или модулю. Если кратко вдаваться в технические детали, то у любой единицы контента при добавлении ее устанавливается критерий Язык. И в дальнейшем он определяет, на какой версии (по языку) статью или новость вывести. В итоге сайты на разных языках растут независимо, но каша в каталоге статей/новостей на разных языках все-таки смущает неопытных контентщиков.

Пару слов о смене дизайна (и/или навигации) под язык. Опытным путем мы давно остановились на контентных файлах под каждый язык. Тогда переход на любой другой язык не требует, к примеру, расширения языковой таблицы в базе — надо просто перевести текстовый файл с переменными и сделать подключение его по клику на флажке. В этом же файле прописываются и пути к графической части сайта (если есть элементы, которые заменяются). Такой способ используется не только для мультиязычных сайтов, но и для паркованных на один домен сайтов, когда множеству доменов надо присвоить разные шаблоны.

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

Автор статьи: Дмитрий Шахов - основатель группы компаний «REMARKA» и проекта «Безумные котики интернет-маркетинга»; один из самых известных и квалифицированных практиков SEO в Рунете; организатор тематической конференции BalticDigitalDays; автор и ведущий обучающего онлайн-курса «SEOHowto». Руководит студией «Ремарка» с момента основания в 2005 году.

Рассказать друзьям:

Оформить заявку

Согласен на обработку персональных данных

+7 (401) 252 05 60

ул. Большая окружная 3-я, д.1

mail@remarka.info

+7 (401) 252 05 60

ул. Щербаковская, д.3

mail@remarka.info