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

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

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

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

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

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Комментарии

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

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

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

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

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

  • Добрый день. А как в WP с помощью этого плагина перевести «вредные» главные страницы темы?

  • Спасибо большое за видео!

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

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

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

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

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

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

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

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

    • Вот строки, которые не перевелись. Сайт http://www.italiatut.com

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

        • Спасибо огромное Елена за внимание и совет, я именно так и пыталась делать, но видимо моя ошибка в том, что я в неправильное место вставляю < ?php pll_e('readmore'); ?>, в файлах слова Читать дальше нигде нет, поэтому я вставляла в следующее место, но изменений не происходит. Посмотрите пожалуйста, может вы увидите в чем моя ошибка.

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

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

      • Сорри, у Вас итальянский :))
        У меня это сейчас вылядит вот так.
        http://world-evolution.ru/en/
        Осталось ещё пару десятков блох выловить :))

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

      • Спасибо за ответ, я воспользовалась данной ссылкой. Но проблема не решилась, видимо какие то проблемы в коде.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    • Здравствуйте, Роман!
      Если имеются в виду константы в коде шаблона, то да, для этого есть функция _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, для редактирования локализаций вашей темы.

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

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

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

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

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

    В принципе плагин хороший и я сам в нем разобрался.
    Работает отлично 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 сата заливать по несколько раз новости довольно напряжно самому, а журналистам будет еще сложнее, так как надо будет отслеживать сформированные ссылки на каждом поддомене для статей.

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

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

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

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

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

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

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

        • Буду благодарен за разбор ситуации :-)

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

          • Да и админка в чешском вся на англ.

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

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

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: