Мультиязычный сайт на WordPress

Создать сайт на нескольких языках не сложно. Существует специальный плагин, называется Polylang.

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

lang_1Более подробно о настройке плагина можно посмотреть ниже

Плагин Polylang. Часть первая. Настройка и установка

Плагин Polylang. Часть вторая. Настройка записей

Плагин Polylang. Вставка переключателя языков

Переключатель языков можно установить по-разному:

  • в боковой панели через виджеты

lang_2

  • в меню

lang_2

Как добавить переключатель языков в любом месте шаблона?

Можно обратиться к документации на плагин и использовать специальную функцию

Где $args может принимать следующие аргументы

  • ‘dropdown’ => 0 — простой список, 1 — выпадающий список (по умолчанию: 0)
  • ‘show_names’ => вывод названий языков (по умолчанию: 1)
  • ‘display_names_as’ => или ‘name’ или ‘slug’ (по умолчанию: ‘name’)
  • ‘show_flags’ => 1 — показывать картинки флагов (по умолчанию: 0)
  • ‘hide_if_empty’ => 1 — скрывает записи и страницы без контента (по умолчанию: 1)
  • ‘force_home’ => 1 — добавляется ссылка на главную страницу (по умолчанию: 0)
  • ‘hide_if_no_translation’ => 1- скрывает язык если перевода не существует (по умолчанию: 0)
  • ‘hide_current’=> 1 — скрывает текущий язык (по умолчанию: 0)
  • ‘raw’ => 1 — создание собственного переключателя с нужными параметрами (по умолчанию:0)

Примеры:

Если вдруг вам не хватает данных параметров, то можно и собственный переключатель сделать

Функция вернет массив данных

  • [id] => идентификатор языка
  • [slug] => код языка используемый в ссылке
  • [name] => название языка
  • [url] => ссылка на перевод
  • [flag] => ссылка на флаг
  • [current_lang] => вернет true если текущий язык, если нет, то false
  • [no_translation] => вернет true если нет перевода, иначе — false

Более подробно с документацией и дополнительными функциями можно ознакомиться вот здесь.

Добавление переключателя языков в нужном месте шаблона

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

Урок конечно общий, так можно вставлять в нужное место не только переключатели

Код для вывода переключателя в виде флажков

И стили, что бы флажки  были в одну строку:

Код для переключателя в виде выпадающего списка

Данная функция сразу формирует нужный хтмл код.

Возможные проблемы при работе плагина Polylang

Пока я встретился с тремя проблемами.

1. Ошибка 404

После настройки плагина могут поехать все ссылки на сайте и начнет выдавать ошибку 404. Страшного ничего в этом нет, достаточно по новой пересохранить постоянные ссылки, по адресу Консоль — Настройки — Постоянные ссылки просто нажмите Сохранить.

2. Использование технологии AJAX

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

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

3. Не переводиться главная страница

Допустим, вам требуется сделать главную страницу в виде одностраничника, что бы на ней выводить некий контент. И при этом, еще используется несколько языков. Проблема будет только в одном — нет возможности перевести главную страницу, потому что для создания этой самой главной страницы используется не отдельная страница, а сам файл index.php Проверить это можно только заглянув в код самого этого файла… Ну а так, как невозможно сделать дублирующую страницу для файла index.php то и перевод к ней прикрутить не получиться.

Решений может быть два — менять шаблон или создавать отдельную страницу для главной…

4. Куда пропадают рубрики-записи-страницы?

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

Как работает такой переключатель?

Допустим, у вас на сайте есть несколько страниц, записей, рубрик. Вы решили добавить мультиязычности и выбрали два языка: английский и русский. Устанавливаете плагин Polylang и при первом запуске настроек плагин вас спрашивает

lang_4

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

lang_5

Если записей на этом языке нет, то естественно он их и не показывает. Переключаем на другой язык

lang_6

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

lang_7

Ставьте переключатель в положение «Показать все языки» и все увидите.

5. Куда пропадает переключатель языков в меню?

Здесь по проще. Если вы вдруг при создании меню не видите раздела «Переключатель языков»

lang_8

Обратите внимание на вкладку «Настройки экрана», в ней должна стоять галочка «Переключатель языков»

lang_9

Установите галочку и появиться раздел «Переключатель языков»

6. Объединение комментариев на разных языках

Решение такое: добавляем в файл functions.php такой код

[alert-warning]Данное решение мной не проверялось. Найдено читателем сайта [/alert-warning]

Вот, как-то так…

Если есть вопросы задавайте в комментариях. Всегда рад помочь.

Всегда ваш, Артем.

364 комментария

  1. Carmel 19.01.2015
    • artikus 19.01.2015
      • Carmel 19.01.2015
        • artikus 19.01.2015
          • Carmel 19.01.2015
          • artikus 20.01.2015
  2. Elena 20.01.2015
    • artikus 20.01.2015
  3. Carmel 20.01.2015
    • artikus 20.01.2015
      • Carmel 21.01.2015
        • Артем 21.01.2015
          • Carmel 21.01.2015
  4. Carmel 21.01.2015
    • Carmel 22.01.2015
      • Артем 22.01.2015
  5. Carmel 22.01.2015
  6. Carmel 22.01.2015
    • Артем 22.01.2015
  7. Ольга [Текстхакер] 03.03.2015
    • Артем 03.03.2015
      • Ольга [Текстхакер] 04.03.2015
        • Артем 04.03.2015
      • Тамара 05.04.2017
        • Артем 08.04.2017
  8. Андрей 12.03.2015
    • Артем 12.03.2015
      • Владимир 18.04.2015
        • Владимир 18.04.2015
          • Артем 19.04.2015
  9. Азамат 08.04.2015
    • Артем 08.04.2015
  10. Jul 28.04.2015
    • Артем 28.04.2015
      • Jul 28.04.2015
        • Артем 28.04.2015
          • Jul 28.04.2015
          • Артем 28.04.2015
          • Jul 28.04.2015
          • Артем 28.04.2015
  11. Pasha 16.05.2015
    • Артем 17.05.2015
      • Pasha 17.05.2015
        • Артем 17.05.2015
          • Pasha 18.05.2015
          • Артем 18.05.2015
          • Pasha 18.05.2015
  12. Мирослав 23.05.2015
    • Артем 23.05.2015
    • Артем 23.05.2015
      • Мирослав 24.05.2015
        • Артем 26.05.2015
          • Мирослав 27.05.2015
          • Артем 27.05.2015
          • Мирослав 27.05.2015
          • Артем 27.05.2015
          • Мирослав 28.05.2015
          • Артем 28.05.2015
          • Мирослав 11.06.2015
          • Артем 11.06.2015
  13. Jul 23.05.2015
    • Артем 23.05.2015
      • Jul 24.05.2015
        • Артем 24.05.2015
  14. Валерий 31.05.2015
    • Артем 31.05.2015
  15. Валерий 31.05.2015
    • Артем 31.05.2015
  16. Валерий 31.05.2015
    • Артем 31.05.2015
      • Валерий 31.05.2015
        • Артем 31.05.2015
  17. Nykolai 04.06.2015
    • Артем 04.06.2015
      • Nykolai 07.06.2015
        • Артем 07.06.2015
  18. Jul 08.06.2015
    • Артем 08.06.2015
      • Jul 08.06.2015
        • Артем 08.06.2015
          • Jul 10.06.2015
          • Артем 10.06.2015
  19. Jul 10.06.2015
    • Артем 10.06.2015
  20. Nykolai 18.06.2015
    • Артем 18.06.2015
  21. Татьяна 23.06.2015
    • Артем 23.06.2015
  22. Иван 16.07.2015
    • Артем 16.07.2015
  23. Дмитрий 18.08.2015
    • Артем 18.08.2015
  24. Руслан 31.08.2015
    • Артем 31.08.2015
      • Руслан 31.08.2015
        • Артем 01.09.2015
          • Руслан 01.09.2015
          • Артем 01.09.2015
  25. Арсен 03.09.2015
    • Артем 03.09.2015
      • Арсен 03.09.2015
  26. Cionur 03.09.2015
    • Артем 03.09.2015
  27. Юрий 10.09.2015
    • Артем 10.09.2015
      • Юрий 10.09.2015
        • Артем 10.09.2015
  28. Елена 10.09.2015
    • Артем 10.09.2015
      • Елена 10.09.2015
        • Артем 10.09.2015
  29. Salman 14.09.2015
    • Артем 14.09.2015
      • Salman 14.09.2015
        • Артем 15.09.2015
          • Salman 16.09.2015
          • Артем 16.09.2015
          • Salman 16.09.2015
          • Salman 16.09.2015
          • Артем 16.09.2015
          • Salman 16.09.2015
          • Артем 16.09.2015
      • Salman 15.09.2015
  30. EkosOne 21.10.2015
    • Артем 21.10.2015
  31. Виктория 30.10.2015
    • Артем 30.10.2015
  32. Александр 11.11.2015
    • Артем 11.11.2015
      • Александр 11.11.2015
        • Артем 11.11.2015
        • Александр 11.11.2015
  33. Егор 25.11.2015
    • Артем 25.11.2015
      • Егор 25.11.2015
        • Егор 25.11.2015
          • Артем 25.11.2015
        • Артем 25.11.2015
          • Егор 25.11.2015
          • Артем 25.11.2015
  34. Егор 25.11.2015
    • Егор 25.11.2015
      • Артем 25.11.2015
  35. Дмитрий 28.11.2015
    • Артем 28.11.2015
  36. Дмитрий 29.11.2015
  37. Вильгельм 30.11.2015
    • Артем 30.11.2015
  38. Вильгельм 30.11.2015
    • Артем 01.12.2015
      • Вильгельм 01.12.2015
  39. Вильгельм 01.12.2015
    • Артем 01.12.2015
  40. Вильгельм 01.12.2015
    • Артем 01.12.2015
  41. Вильгельм 01.12.2015
  42. Юрий 04.12.2015
  43. Вильгельм 04.12.2015
    • Юрий 04.12.2015
    • Артем 05.12.2015
  44. Вильгельм 05.12.2015
  45. Толик 12.01.2016
    • Артем 12.01.2016
  46. Антон 14.01.2016
  47. URALSKBOY 16.01.2016
    • Артем 16.01.2016
      • URALSKBOY 16.01.2016
        • Артем 16.01.2016
          • URALSKBOY 16.01.2016
          • Артем 16.01.2016
  48. URALSKBOY 16.01.2016
    • Артем 16.01.2016
      • URALSKBOY 16.01.2016
  49. Анна 25.01.2016
    • Артем 25.01.2016
  50. Анна 27.01.2016
  51. Валерий 05.02.2016
    • Артем 05.02.2016
  52. Zafar 08.02.2016
    • Артем 08.02.2016
  53. Zafar 08.02.2016
    • Артем 08.02.2016
  54. Zafar 08.02.2016
    • Артем 08.02.2016
  55. Zafar 09.02.2016
  56. Zafar 10.02.2016
    • Артем 10.02.2016
  57. Эдуард 10.02.2016
    • Артем 10.02.2016
      • Эдуард 11.02.2016
        • Артем 11.02.2016
          • Эдуард 11.02.2016
          • Артем 11.02.2016
  58. Алексей 11.02.2016
    • Артем 11.02.2016
  59. Руслан 17.02.2016
    • Артем 17.02.2016
  60. Наталья 19.02.2016
    • Артем 19.02.2016
  61. Дмитрий 25.02.2016
    • Артем 26.02.2016
      • Дмитрий 26.02.2016
  62. Miha 07.03.2016
    • Артем 07.03.2016
      • Miha 07.03.2016
  63. Михаил 15.03.2016
    • Артем 15.03.2016
      • Михаил 15.03.2016
        • Артем 15.03.2016
  64. Михаил 15.03.2016
  65. Михаил 17.03.2016
  66. Михаил 18.03.2016
    • Артем 18.03.2016
  67. Антон 21.03.2016
    • Артем 22.03.2016
      • Антон 22.03.2016
        • Артем 22.03.2016
  68. Антон 24.03.2016
  69. Лариса 16.04.2016
    • Артем 16.04.2016
  70. Лариса 16.04.2016
  71. Лариса 16.04.2016
    • Артем 16.04.2016
      • Лариса 16.04.2016
        • Артем 16.04.2016
  72. Андрей 05.05.2016
    • Артем 05.05.2016
  73. Андрей 15.05.2016
    • Артем 15.05.2016
  74. Руслан 16.05.2016
    • Артем 16.05.2016
      • Руслан 17.05.2016
        • Артем 17.05.2016
  75. Карина 27.05.2016
  76. Сергей 29.05.2016
    • Артем 29.05.2016
    • Артем 29.05.2016
  77. Алексей 12.06.2016
    • Артем 12.06.2016
  78. Мила 29.06.2016
    • Артем 29.06.2016
      • Мила 29.06.2016
        • Артем 29.06.2016
  79. Мила 29.06.2016
    • Артем 29.06.2016
  80. Мила 29.06.2016
    • Артем 29.06.2016
    • Ирина 01.07.2016
      • Артем 04.07.2016
      • Мила 04.07.2016
        • Артем 04.07.2016
          • Мила 04.07.2016
  81. Дмитрий 25.07.2016
    • Артем 25.07.2016
      • Дмитрий 26.07.2016
        • Артем 26.07.2016
  82. Nikita 29.07.2016
    • Артем 29.07.2016
      • Nikita 29.07.2016
  83. Людвик 09.08.2016
    • Артем 09.08.2016
  84. Людвик 09.08.2016
    • Артем 09.08.2016
  85. Людвик 09.08.2016
    • Артем 09.08.2016
  86. Александр 17.08.2016
    • Артем 17.08.2016
      • александр 17.08.2016
        • Артем 17.08.2016
          • александр 17.08.2016
          • Артем 17.08.2016
  87. александр 17.08.2016
    • Артем 17.08.2016
  88. александр 17.08.2016
  89. Lacoster 28.09.2016
  90. Fend 09.10.2016
    • Артем 12.10.2016
  91. Александр 01.11.2016
    • Артем 01.11.2016
      • Александр 02.11.2016
  92. Ирина 06.11.2016
    • Артем 07.11.2016
  93. Spartak 20.11.2016
    • Артем 20.11.2016
  94. Spartak 20.11.2016
  95. Polina 01.12.2016
    • Артем 01.12.2016
      • Виктор 22.01.2017
  96. Игорь 10.12.2016
    • Артем 10.12.2016
      • игорь 10.12.2016
        • Артем 11.12.2016
  97. LesenBuch 22.12.2016
    • Артем 22.12.2016
      • LesenBuch 22.12.2016
        • Артем 23.12.2016
  98. LesenBuch 23.12.2016
    • Артем 23.12.2016
      • LesenBuch 23.12.2016
        • Артем 25.12.2016
          • LesenBuch 25.12.2016
          • Артем 25.12.2016
  99. Дмитрий 25.12.2016
    • Артем 27.12.2016
  100. Борис 05.01.2017
    • Артем 06.01.2017
  101. Александр 05.01.2017
    • Артем 08.01.2017
      • Александр 08.01.2017
        • Артем 09.01.2017
          • Александр 09.01.2017
  102. Владислав 17.01.2017
    • Артем 19.01.2017
      • Владислав 19.01.2017
  103. дмитрий 03.02.2017
    • Артем 05.02.2017
  104. Сергей 24.02.2017
    • Артем 24.02.2017
  105. леврон 03.03.2017
    • Артем 03.03.2017
  106. леврон 03.03.2017
  107. Александр 05.03.2017
    • Артем 06.03.2017
      • Александр 06.03.2017
        • Артем 06.03.2017
  108. Сергей 16.03.2017
    • Артем 18.03.2017
  109. Риза 20.03.2017
    • Артем 23.03.2017
      • Риза 24.03.2017
        • Артем 24.03.2017
  110. Дархан 27.03.2017
    • Дархан 27.03.2017
      • Артем 27.03.2017
        • Дархан 27.03.2017
  111. Специалист 21.04.2017
  112. Андрей 26.04.2017
    • Артем 26.04.2017
  113. Анатолий 21.05.2017
    • Артем 21.05.2017
  114. Дизайнер 03.06.2017
  115. Андрей 05.06.2017
    • Артем 09.06.2017
  116. Chif 13.06.2017
    • Артем 22.06.2017
  117. Риза 16.06.2017
    • Артем 22.06.2017
  118. Андрей 19.06.2017
    • MS Chif 19.06.2017
    • Артем 22.06.2017
  119. Мастер 21.06.2017

Оставить комментарий

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

Подписывайся!

Подписывайся!

Подписывайтесь на новости сайта, чтобы ничего не пропустить

Спасибо, что подписались!