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

 

Как хранить контент мультиязычного сайта

Вариант 1. Отдельные базы данных

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

 

Вариант 2. Отдельные таблицы

Используется одна база данных, а для каждого языка создается отдельная таблица с префиксами, например: ru_blog, en_blog.  Данных вариант можно использовать на сложных и средних проектах.

 

Вариант 3. Отдельные поля

В таблице для каждого языка создавать поля с префиксами или постфиксами, например:

  • ru_name
  • en_name
  • name_ru
  • name_en

Вариант подойдет для небольших сайтов или блогов.

 

Вариант 4. Разделять на основе содержимого поля lang

Для каждого языка в таблице создается новая запись и в поле lang записывается какой используется язык, например, lang = ru, lang = en. Данный вариант может быть использован для небольших сайтов или блогов.

 

Где хранить тексты и слова переводов

Переводы небольших текстов, фраз и слов можно хранить двумя способами:

1) В базе данных сделать таблицу с полями где хранить переводы, например:

Таблица: languages

Поле

Тип

Описание

id

int (auto_increment)

айдишник

key

varchar

ключ, на англ. языке по которому получать значение перевода

value

varchar

значение перевода

lang

varchar

Тип языка: ru, en, de

2) В специальных файлах, например:

/lang/ru.json

/lang/en.json


 

Технические особенности

  • Для правильного отображения содержимого сайта необходимо подумать об используемой кодировке. Как правило используется Unicode - UTF-8.
  • Прежде чем запускать другие языковые версии сайта, необходимо перевести необходимый контент. Ведь если разделы или страницы будут пустые или с дублированным контентом, это может не понравиться поисковым системам.
  • Необходимо предусмотреть использование и загрузку изображений, баннеров, иконок и шрифтов для каждой языковой версии, если это необходимо.
  • Многие системы управления контентом или конструкторы сайтов не имеют возможности создать мультиязычный сайт. В этом случае стоит выбрать ту платформу, которая позволяет это сделать, или предоставляет специальные модули или плагины для этого, либо разрабатывать сайт индивидуально на каком-нибудь веб-фреймворке.

 

Для каждого языка отдельный сайт

Техническая реализация

Самый простой способ это сделать для каждого языка отдельный сайт. Например: если основной сайт с русскоязычной версией расположен по домену mysite.ru, то англоязычный сайт логично разместить на домене с таким же названием, то в доменной зоне .com - mysite.com.

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

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

 

Контент

Контент каждого сайта должен быть переведен на свой язык. У каждого сайта своя база данных в которой размещается весь контент, а также хранилище для файлов, изображений, видео.

 

Особенности SEO

Продвижение каждого языкового сайта значительно трудней, если бы все содержимое было размещено на одной сайте.

 

Разделение языков на разделы

Техническая реализация

Страницы сайт необходимо разбить на языковые сегменты, например:

  • /ru
  • /en
  • /es
  • и т.д.

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

 

Контент

Переведенный контент можно размещать несколькими способами:

1) В отдельных таблицах с префиксами, например: ru_blog, en_blog. На основе языкового префикса производить подключение к таблицам.

2) В одной таблице, но разных полях с префиксами или постфиксами, например:

  • ru_name
  • en_name
  • name_ru
  • name_en

 

Особенности SEO

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

 

Переключение языка с помощью сессий

Техническая реализация

Если в варианте с разделением сайта на языковые разделы, вам необходимо делать для каждого раздела языковые сегменты в URL, то для переключения языка с помощью сессий это не понадобится.

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

Пошагово переключение языка с помощью сессий можно представить в следующем виде:

1)  Вы делаете на сайте переключатель. Это могут быть обычные ссылки:

<a href=”/lang/u”>RU</a>

<a href=”/lang/en”>EN</a>

Либо ссылки с get параметрами:

<a href=”/lang?set=ru”>RU</a>

<a href=”/lang?set=en”>EN</a>

А также любые элементы с обработчиком события клика через JavaScript или библиотеку jQuery:

<span class=”js-lang-ru”>RU</span>

<span class=”js-lang-en”>EN</span>

 

$('.js-lang-ru').on('click', function(){

// здесь запрос к изменения языка через сессии

});

 

$('.js-lang-en').on('click', function(){

// здесь запрос к изменения языка через сессии

});

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

3) Как только пользователь совершит выбор языка, то на серверной части вам необходимо обработать запрос и определить, какой язык был выбран на основе сегмента из URL или get параметра.
 

Контент

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

 

Особенности SEO

Так как переключение языка происходит через сессии, то индексирование всех языков поисковыми системами имеет некоторые нюансы.  Чтобы поисковик мог индексировать все языки сайта, вам необходимо оставить для него ссылки, перейдя по которым должно производиться переключение языка и отображение переведенного контента по другим URL. Ведь если производить переключение содержимого текста на тех же самых страницах, то поисковик будет в замешательстве: почему так меняется содержимое одной и той же страницы. Неизвестно, как это может отразиться на SEO вашего сайта.

Если же вы не планируете продвижение сайта на других языках, то можно сделать просто переключение языка через JavaScript или закрыть ссылки с помощью атрибута rel указав ему nofollow, чтобы поисковые системы не переходили по ссылкам.

 

Машинный перевод

Техническая реализация

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

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

 

Контент

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

 

Особенности SEO

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

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

 

Движки и конструкторы создания мультиязычного сайта

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

 

WordPress

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

 

Polylang

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

Установить плагин


 

xili-language

xili-language обеспечивает для двуязычного (или многоязычного) веб-сайта автоматический выбор языка (.mo) в теме в соответствии с языком текущей записи или страниц. Поведение темы может быть полностью персонализировано с помощью настроек, хуков и API. Готов для разработчиков и дизайнеров CMS.

Установить плагин


 

Multisite Language Switcher

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

установки WordPress , т.е. нескольких поддоменов или папок (если вам нужно настроить несколько сайтов в нескольких доменах, вы также захотите использовать сопоставление доменов WordPress MU

плагин также - пока домены все размещены на одном сервере).

Установить плагин


 

NetCat

NetCat система управления и создания сайта абсолютно любой сложности: визитки, портфолио, лендинга, блога, новостного сайта, корпоративного сайта, портала, мини-магазина, интернет-магазина, гипермаркета, высоконагруженной информационной системы и т.д.

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

Чтобы подключить новый язык необходимо добавить в каталог /netcat/admin/lang/ новый языковой файл, например: de.php, fr.php, es.php и т.п. Языковой файл должен содержать специальные константы с переводом текста. Быстрей всего будет скопировать содержимое уже имеющегося файла с константами и затем изменять значения. Система автоматически подключит языковой файл. Пример констант в языковом файле:

define("NETCAT_MODULE_AUTH", "Интерфейс пользователя");

define("NETCAT_MODULE_AUTH_DESCRIPTION", "Интерфейс пользователя в системе ввода-вывода. Возможность регистрации внешней группы пользователей, изменение собственной анкеты, пароля, восстановление пароля. Данный модуль может интегрироваться с другими модулями системы.");

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

 

1) На поддоменах

Языки будут реализованы на разных доменах, что позволит создать через NetCat несколько сайтов под разный язык. При этом устанавливать CMS повторно не нужно будет.

  • http://example.com/ - основной, английский
  • http://ru.example.com/ - русский
  • http://de.example.com/ - немецкий
  • http://fr.example.com/ - французский

Каждый сайт будет иметь свои макеты дизайна. Шаблоны можно создать одни, но в этом случае учесть проверку языка для показа нужных элементов дизайна.

 

2) В разделах

В этом варианте языковые варианты будут располагаться на одном сайте, но в разных разделах:

  • http://example.com/ - основной, английский
  • http://example.com/ru - русский
  • http://example.com/de - немецкий
  • http://example.com/fr - французский

Каждый раздел будет иметь свои макеты дизайна. Шаблоны можно создать одни, нос проверкой языка для показа нужных элементов.