Мультиязычный сайт на wordpress без плагинов

Впервые за три года работы с сайтами столкнулся с вопросом создания сайта wordpress на нескольких языках (в моем случае на трех — eng, fin, rus). Задачка вполне решаема. Есть здесь два пути, по которому нужно идти:

  1. Использовать плагины WP
  2. Без плагинов путем установки двух и более админок в одну папку домена

В моем случае камнем преткновения (он же и основная причина выбора способа) стал дизайн сайта. Дело в том, что я в header и footer при разработке дизайна загнал элементы, которые в зависимости от языковой версии должны меняться (картинки, информация, содержание слайдера и т.п.), а плагины WP не позволят полностью локализовать шаблон, т.к. в основном нацелены на работу с контентом при статичном содержании шапки и подвала.

И так, выбор пал на вариант №2 (установка без плагинов).

Основной недостаток этого способа — работа с несколькими админками (чем больше языков — тем запарнее и муторнее). В остальном данный способ позволяет сделать все, что душе угодно с вашими версиями сайта, а это как раз основное преимущество 🙂

От слов к делу. Выбранный способ так же подразделяется на два варианта:

  1. Развернуть версию сайта на поддомене. Выглядеть это будет так — en.site.ru
  2. Языковая версия будет размещаться в подпапке по адресу site.ru/en 

Я выбрал вариант с подпапкой. Тут смотрите сами — оба варианта имеют право на существование.

Первым делом устанавливаем WordPress в количестве 3 штук (т.к. у меня 3 языка). Основной версией у меня была финская, поэтому папки en и ru я создал в ее корне. Структура папок выглядит следующим образом:

2015-10-06 17-48-53 Скриншот экрана

Даешь папкам en и ru по админке! В смысле в этих папках так же разворачиваем WP. Базы данных для каждой версии у меня разные. Так же в количестве 3-х штук.

Важный момент. При установке на хостинг не забудьте отредактировать .htaccess для версий в папках (у меня для ru и eng) иначе возможна неприятная кака.  Если в стандартном варианте .htaccess выглядит так:

То для других версий необходимо в каждый .htaccess добавить папку размещения в пути (в моем примере русской версии добавлено /ru/):

Вторым делом создаем переключатели языков. По сути это всего-то дополнительное меню с пунктами eng fin rus, устанавливаемое стандартным способом. Каждый пункт меню — произвольная ссылка с относительными путями. Пути для всех трех версий будут выглядеть так:
Ссылка на основную версию:
2015-10-06 18-09-34 Скриншот экрана

Для английской версии:
2015-10-06 18-11-26 Скриншот экрана

Аналогичный URL для русской версии — /ru/

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

UPD: В одном из комментариев мне задали вопрос:

Добрый день. Спасибо за ваше решение. Для главной страницы и статики такой вариант будет работать. Вопрос в следующем, при таком варианте, возможно переключение между одинаковыми статьями/постами, только на разных языках? Например между 2 статьями:
example.com/example-post
example.com/пример-поста

Смотрите, для переключения между одинаковыми статьями, но на разных языках, я бы вам очень посоветовал хороший плагин — WPGlobus. Передо мной при работе с одним сайтом стоял вопрос либо сделать его так, как я написал в своем посте в блоге, т.е. с установкой нескольких систем управления, либо воспользоваться этим плагином. Т.к. концептуально мне главную страницу меня не нужно было на разных языковых версиях — я выбрал этот плагин и остался более чем доволен. Реализацию вы можете посмотреть на этом сайте: http://investtime.biz/ Откройте любую страницу и переключите язык в меню в шапке. Этот плагин решит ваш вопрос.
Но если устанавливать две и более системы управления, то боюсь переключаться между 2 статьями (example.com/example-post и example.com/пример-поста) вряд ли получится простым способом.
Если бы я сейчас решал ваш вопрос, то я бы сделал следующим образом:
— отказался от решения установки нескольких систем управления
— установил бы одну версию сайта и плагин WPGlobus
— статику на главной менял бы с помощью JS с таким условием (например):

Вот такие дела. Надеюсь, натолкнул вас на верные мысли.

 

19 комментариев

  1. Эрик

    Здравствуйте !
    Я сделал по инструкции, но при нажатии на RU говорит что станица не найдена (
    Из-за чего это ?

    • Sergey

      Дайте ссылку на вашу разработку. Не видя, что вы сделали — сложно сказать.

      • Эрик

        Я по локалке проверяю пока что, на хостинг еще не добавлял. На локалке пишет что страница не найдена 404 ошибка

        • Sergey

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

          Установленная RU версия сайта открывается у вас по месту установки wordpress (не по RU-ссылке)?

  2. Ру

    Добрый вечер!!! И с праздником всех, у меня такой вопрос, вот мы закачали ещо 2 вордпресса, для них создаются отдельные база данных них же тоже самая которая на основном домене? Как то это нигде никто не пишет, и с версией поддомена интересует, спс за ранее….

  3. Man

    Добрый день. Спасибо за ваше решение. Для главной страницы и статики такой вариант будет работать. Вопрос в следующем, при таком варианте, возможно переключение между одинаковыми статьями/постами, только на разных языках? Например между 2статьями:
    example.com/example-post
    example.com/пример-поста

      • Юлия

        Интересует также ответ на этот вопрос: «… Для главной страницы и статики такой вариант будет работать. Вопрос в следующем, при таком варианте, возможно переключение между одинаковыми статьями/постами, только на разных языках? Например между 2статьями:
        example.com/example-post
        example.com/пример-поста»

  4. Игорь

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

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *