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

Приветствую, дорогие друзья!

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

Записано простым и понятным языком, надеюсь вам понравится. :-)

Если вы хотите поблагодарить меня за материал — можете сделать это здесь :-)

Мультиязычность сайта на WordPress: 82 комментария

  1. Здравствуйте!

    После добавления переведенной страницы и связки двух страниц на разных языках перестали отображаться обе страницы. На этих страницах отображается следующая ошибка: Примечание. Попытка получить свойство ID объекта не-объекта в /var/www/u5822406/data/www/dkgroup.ltd/wp-content/plugins/duplicate-wp-page- post / duplicate-wp-page-post.php в строке 218.

    Вот что написано в этой строке: ‘href’ => admin_url (). ‘Admin.php? Action = dt_dpp_post_as_draft & post =’. $ Post-> ID

    Вы можете чем-то помочь?

  2. Добрый день.
    У меня сайт с 3-мя языками. Как мне связать страничку ру с СУЩЕСТВУЮЩЕЙ английской страничкой? Плагин Polylang.

  3. Добрый день!
    Я совсем новый в этом деле человек, подскажите пожалуйста как мне сделать, что бы при смене языка менялся так же язык названий в меню, все страницы перевёл, а вот с самим меню не могу разобраться… А также меня интересует может ли этот плагин менять язык в стандартных виджетах темы… Спасибо…

  4. Добрый день! Возможно кто-то сталкивался. Стоит шаблон на основе cherry frameworks. При добавлении pll_register_string сайт перестает работать. Аналогично с функциями pll__(‘…’);
    pll_e(‘…’);
    В какую сторону смотреть?

  5. Зравствуйте.подскажите,установил плагин Polylang

    Username or E-mail — название этого поля для ввода перевелось
    Password — это тоже
    Remember Me — даже кнопка «запомнить меня» тоже перевелась

    а вот ниже «Ругистрация» и «забыли пароль?» не перевелись. ну и всё то не переводится когда нажимаешь «Регистацию» и «Забыли пароль?» как перевести это?подскажите пожалуйста.и ту информацию когда воодишь поля не правильно.чтоб люди смогли прочитать на своем языке ошибку.

    Мне на англ нужно перевести.

  6. Здравствуйте! Подскажите пожалуйста, как с помощью Polylang плагина перевести некоторые строки в шаблоне. В данном случае это ссылки после статьи типа «новости по теме». В самом плагине настроек этой строки нет. Вижу такой ответ «Вместо функций _e() или __() используем функции pll__(), pll_e() вместе с pll_register_string() и переводим в админке WordPress на странице настроек Polylang.» Не пойму что и где прописать? Как это сделать? Спасибо!

  7. Здравствуйте!
    После установки и настройки плагина Polylang, перестали hаботать плагины MetaSlider и jQuery Vertical Accordion Menu.
    Подскажите с чем связано и где искать решение проблемы. Заранее спасибо!

    1. Здравствуйте, Андрей!

      Не знаю, с чем может быть связана эта проблема. Дайте ссылку на ваш сайт, возможно сбоит JavaScript, с этим проблема у многих плагинов, но не думаю, что дело именно в PolyLang. Попробуйте так же очистить кеш, например.

      1. Оказывается проблема была таки в другом: вносил кое-какие изменения в футер темы, пропала подгрузка js файлов.
        Поправил — все заработало)
        П.С. а блог, мне как новичку, очень интересный, спасибо :)

  8. Здравствуйте! Спасибо большое за видео!
    Подскажите, пожалуйста, как отобразить в переключатели языков не полное названия языка, например : «Русский», а сокращенное: «ru»?

    1. Не готов ответить на ваш вопрос, т.к. в данный момент этим плагином не пользуюсь. Но, как мне подсказывает интуиция, название языка берётся либо из кода плагина, либо из его локализации (файлы в директории languages или где-то ещё).

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

    У Polylang есть свои собственные маленькие функции, полезные для таких целей. Конкретно в этом случае, есть 3 варианта:

    1. Локализация строки обычным методом WordPRess — в шаблоне находим где этот текст и оборачиваем его в функцию _e() или __(). После этого делаем перевод строки в POedit, Как обычно.

    2. Локализация строки точно так же, как в п.1, только вместо внешнего POedit ставим плагин Loco Translate и переводим строку прямо в админке.

    3. Вместо функций _e() или __() используем функции pll__(), pll_e() вместе с pll_register_string() и переводим в админке WordPress на странице настроек Polylang.

    Вы сталкивались с такой проблемой? Может сможете подсказать и научит как это делается. Заранее спасибо за помощь.

      1. Только что этим развлекалась.
        1. В функции темы (functions.php) добавляете строчку
        pll_register_string(‘Читать далее’, ‘readmore’);
        2. В настройках Polylang в Переводе строк появляется строчка readmore. Добавляете русскую и английскую версию.
        3. В файле архивы или где у Вас встречается эта строка заменяете текст Читать далее на
        Всё.

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

      3. Возможно моя проблема кроется в том, что название кнопки Читать дальше у меня вводиться через функции настройки темы?

      4. Поскольку все надписи (найденные прямиком в файле), которые необходимо было заменить у меня получилось изменить благодаря вашему совету. За что отдельное вас спасибо ) А вот надпись, которую я ввела в настройках темы, и которой соответственно нет прямиком в файлах (Читать дальше) не получается изменить.

    1. Здравствуйте! Ниже в комментариях на этой странице уже обсуждали эту проблему и предложили ссылки с материалами :-)

      1. Может быть вы могли бы помочь мне и глянуть хотя бы один элемент «Читать дальше» для перевода. Возможно на примере я смогу понять, где я ошибаюсь. Поскольку я вставляю pll_e() и pll_register_string(), появляется строки для перевода в настройках языка, я ввожу текст, но элемент все равно не переводиться. Буду очень благодарна.

      2. Не в выходной день, Елизавета. Выходные я провожу целиком с семьёй, извините.
        Если напомните во второй половине дня понедельника — попробую выделить время :-)

      3. Прошу прощения, совершенно потерялась во времени, не заметила как наступила суббота. Спасибо большое за ответ, напомню в понедельник. Хороших выходных вам )

      4. Добрый день Александр, для того, чтобы изменить текст кнопки Читать дальше (на главной странице) я добавила вот такую строку в function.php:
        pll_register_string(‘Read more…’, ‘Read more…2’);
        Далее в админ панели заменила в шаблоне (standart.php):
        pll_e(‘Read more…’);
        После чего в настройках Языки, Перевод строк у меня появились 2 строки, в которых я ввела текст для на русском и на итальянском языках. Но никаких изменения не произошло, или я не туда вставила код pll_e или неправильно его вставила. Спасибо за внимание.

  10. Здравствуйте, Александр!
    После активации плагина развалилась вся шапка. С чем это может быть связано?
    Можно с этим что-то сделать, или нужно искать другой плагин?

    1. Здравствуйте! А покажите скриншот, что именно случилось и приложение ссылку на ваш сайт.

      1. А теперь отключите плагин и посмотрим, как будет без него.

      2. Странное дело, в первом случае когда плагин активирован в верхнем меню у вас 6 пунктов: Главная, Монография, Об авторе и так далее. А при отключенном плагине только три: Об авторе, Статьи автора, Контакты.

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

      3. То есть, такое поведение у вас сразу после активации плагина?

  11. Здравствуйте, Александр. Спасибо за понятное и информативное видео. У меня есть вопрос. Плагин установлен, меню на добавленном языке отображается корректно, статьи переведены пока только в одной рубрике. Когда переключаюсь с языка по умолчанию на новый язык — все прекрасно переходит на эту самую переведенную рубрику, однако если по ней (рубрике на добавленном языке) еще раз кликнуть, то страница не просто обновляется (на добавленном языке), а перекидывается на эту же статью, но на языке по умолчанию. Не могу разобраться почему. Что бы Вы посоветовали? Благодарю.

    1. Здравствуйте, Нина! А можете приложить пару-тройку ссылок, чтобы я посмотрел как это выглядит у вас? :-)

      1. Спасибо за отклик, Александр!
        http://www.localinasia.com/ — это сайт. Языком по умолчинию стоит английский. На русский переведена только одна рубрика: «Полезное». То есть при нажатии на российский флажок меню переключается на русский, но если нажать на «Полезное» то рубрика обновляется опять на английский вариант «Good to know».

      2. Вы имеете в виду главное меню (горизонтальное)? Если так, то вам надо поправить ссылки в этом меню, смотрите, куда оно ведёт: http://www.localinasia.com/category/good-to-know, а должно быть: http://www.localinasia.com/ru/category/good-to-know, вы пропустили маркер языка, я думаю в этом проблема.

        Обратите внимание на ту же ссылку в боковом меню, оно корректно переключает, там ссылка стоит нормальная.

      3. Супер! Большое вам спасибо, все сделала! Все оказалось не так страшно)) Ура!!
        п.с.: а голову ломала чуть ли не неделю! Буду следить за вашими обновлениями.

  12. Здравствуйте.
    Подскажите почему получило после первичной настройки так криво, и как поправить
    1. Как выглядит
    2. Что получается при активации плагина

    1. Здравствуйте, Роман. Я думаю вам стоит пройтись по всем пунктам меню во «Внешний вид» — «Меню» и определить, какие пункты будут показываться в том или ином языковом варианте вашего сайта. Мне кажется это поможет решить вашу проблему.

  13. Добрый день,
    1 — Настроил виджет в боковой панели, но он не отображается на сайте.
    2 — Если выбрать «Показывать как выпадающий список», то на сайте просто отображается выпадающее окно без списка.
    — Пробовал менять темы, не получается.

    Может вы посоветуете что делать?

    1. Здравствуйте, Руслан.
      1. Кеширование включено? Если да — попробуйте сбросить кеш. Либо проверьте настройки виджета, в каких случаях его отображать.
      2. По этому пункту не подскажу, не сталкивался.

  14. Здравствуйте, воспользовался данным плагином, перевел все страницы (для меню), теперь все они парами для двух языков присутствуют, переключать язык можно находясь на них. Но проблема возникла с самой главной, домашней страницей сайта по адресу.сом, например, т.е. когда активирую плагин — главной нет и ссылки на неё не работают. Она показывает белый экран, вообще без ошибки 404 или ещё какой. И перевод главной страницы по адресу.сом/язык/ тоже просто белый экран. Подскажите где копать? Главную получается тоже нужно как-то перевести и дать ей соответствие (пару) на другом языке?

  15. Здравствуйте! Подскажите, пожалуйста, если виджеты только на главной странице сайта, каким образом можно реализовать отображение переключения языков на каждой странице? Спасибо

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

  16. Здравствуйте!
    Каким образом можно добавить произвольные поля в перевод строк?
    Настраиваю шаблон vEstate от Themeforest, свойства недвижимости на английском языке. Так-же необходимо перевести админку темы, но в .po переводимые поля отсутствуют.

    1. Здравствуйте, Алексей.

      Вот чего не знаю, про то не подскажу, к сожалению. Админку темы можно модифицировать, создав дочернюю тему от вашей. Тогда можно перевести всё, что пожелаете.

  17. Здравствуйте!Подскажите,пожалуйста.Использовала по Вашей инструкции плагин Polylang.Но возник вопрос:как сделать так, что бы логотип для русской версии сайта был на русском, а для английской-на английском?Какое условие нужно прописать или есть какие-то еще хитрости в плагине Polylang?Буду благодарна Вам за помощь!

    1. Здравствуйте, Людмила.
      Я решила эту задачу так:
      1. в функции темы добавила строчку
      pll_register_string(‘Путь к логотипу’, ‘url-logo’);
      2. В настройках Polylang Перевод строк появилась новая строка url-logo. В ней указать путь к английскому и русскому логотипу.
      3. В header.php заменила на

      1. Добрый день, Елена! Спасибо огромное за Ваш отзыв! Все сделала по Вашей рекомендации, не получился сам вывод логотипов: вместо изображения логотипа появились просто ссылки на англ и русскую версии логотипа (путь к логотипу), который я прописала в настройках Polylang url-logo…

      2. Людмила, в header.php нужно заменить не сам тег img, а именно путь к нему. Например

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

      3. Александр, доброго дня!
        Интересный у вас блог, добавлю в закладки. Сам не очень давно тоже решил заняться фрилансом…
        Теперь есть необходимость сделать английскую версию сайта на wordpress.
        Видео посмотрел — за него тоже спасибо)
        Но вот остался вопрос — как то можно переводить то что выведено просто статическим образом?

        1. Здравствуйте, Роман!
          Если имеются в виду константы в коде шаблона, то да, для этого есть функция _e(): http://codex.wordpress.org/%D0%A1%D0%BF%D1%80%D0%B0%D0%B2%D0%BE%D1%87%D0%BD%D0%B8%D0%BA_%D0%BF%D0%BE_%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D1%8F%D0%BC/_e, но для корректной работы вам придётся ознакомиться и установить программу poedit, для редактирования локализаций вашей темы.

          1. Не совсем так, я имею ввиду можно ли как то перевести простой кусок кода к примеру (статический вывод элементов темы которые редактируются только через код) (в документации пока не нашел чего то подобного)
            Или тот же виджет произволный текст — тоже не понятно как сделать чтобы он переводился при смене языка

          2. плагин предлагает перевести только название виджета (здесь я беру пример произвольный текст) — а вот есть ли возможность как то переводить сам текст виджета

          3. Да, кусок кода это как раз через ту функцию, что я выше указал, _e() или __(). Но вам понадобится программа poedit для локализаций.

          4. ОК, спасибо за ответы
            прикрутил перевод виджета текст просто, через вывод названия виджета — polylang его прекрасно переводит

          5. Но поймите разницу, что он не будет связан с PolyLang никаким образом. Локализация темы и PolyLang — совсем разные задачи. Функции _e() и __() работают только с переменной WPLANG из wp-config.php.

      4. Здравствуйте.

        В принципе плагин хороший и я сам в нем разобрался.
        Работает отлично sait.com sait.com/ru и т.д.

        Но не как не пойму как на разных доменах или под доменах организовать сайты.
        sait.com и ru.sait.com

        Когда добавляю статьи через sait.com на ru.sait.com вроде запись формируется. Но при переходе выдавало мол сайта не существует.

        Попробовал установить в поддомен сайт.
        Записи с главного сайта на нем не создавались. В конечном результате попробовал создать сначала записи на sait.com и на ru.sait.com. Для связи между ними пришлось добавлять сначала sait.com (статья на En и RU), а потом на ru.sait.com (статья на RU и En). Тогда связь появилась.

        Нет более простого решения? Просто сайт новостной и планируется 3-4 языка. И на 3-4 сата заливать по несколько раз новости довольно напряжно самому, а журналистам будет еще сложнее, так как надо будет отслеживать сформированные ссылки на каждом поддомене для статей.

        1. Не скажу, как сделать это на поддоменах, потому что сам не использовал этот вариант. Может надо какие-то настройки в опции веб-сервера или в wp-config.php внести для корректной работы? Не гуглил этот момент, извините :-)

          1. Я уже гуглил, пока нет ответов на этот вопрос. (но я гуглил на русском, так как английский у меня очень слабый)

      5. Все, разобрался) Описываю как все сделал:
        Активировал 3 языка в админ панели (рус, чешский, англ). Взял языковые файлы .po и .mo из самой темы, переименовал их в polylang_cs_CZ.po или как-то так. Вообщем , заменил этими файлы языковые файлы чешского в папке languages плагина Polylang. Далее установил плагин «Локализация», выбрал тему, добавил чешский язык. соответственно плагин нашел тот «чешский», который я загрузил. На деле же это дублированный, но переименованный языковой файл темы. Ну и через админку плагина Локализация уже переводил на осетинский язык. заменил в папке flags чешский на осетинский и вуаля )) в принципе все просто, но не сразу додумался

      6. Спасибо большое за видео, Александр !
        Подскажите пожалуйста, можно ли перевести сайт на тот язык, которого нет в настройках плагина ? Мне нужно для фольклорного ансамбля перевести на осетинский язык сайт. Можно ли один из активированных языков (к примеру французский ) перевести на осетинский заменив при этом флаг и отредактировать поля ? Или каким-то другим способом можно ?

        1. Здравствуйте, Алан!

          Крайне интересный вопрос, но я не имею на него ответ… Хотя, судя по настройкам плагина, это можно реализовать. Для этого нужно будет:
          1) Сделать перевод любого языка из плагина с помощью программы Poedit
          2) Загрузить файлы .mo и .po в директорию Language
          3) Добавить этот перевод через интерфейс плагина Polylang

          Не сказал бы, что это под силу новичку.

          1. спасибо за ответ! Я попробую реализовать и потом поделюсь результатом

          2. Александр, я взял за основу чешский язык. -Его я знаю) и тупо перевел строки в Notepad++, загрузил их обратно в папку Langueages. В принципе все нормально, эта идея реализуема, но проблема в том, что при смене языка, области комментирования и виджетов не переводятся даже в оригинальном (чешском) языке. К примеру надпись «оставить комментарий » и на английский, и на чешский переводится одинаково «Leave a reply» В сайдбаре такая же тема. :(

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

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

Согласие на обработку персональных данных © 2024 Alexander Kadyrov
Яндекс.Метрика