Когда вы установили Polylang в качестве плагина для перевода сайта на несколько языков, то вам придется переводить не только текстовый контент статей, но и различные тексты для картинок, которые, собственно, и являются с точки зрения WordPress медиа-файлами.Что подразумевается под переводом текстов для картинок? Это такие параметры, как alt - альтернативный текст, который по требованиям SEO обязательно должен присутствовать для каждого вашего изображения, title - заголовок, всплывающий при наведении на картинку, caption - подпись под изображением и в редких случаях description - более полное описание изображения.
Плагин Polylang при установке предоставляет вам выбор - переводить все эти данные для медиа-файлов, - а к ним относятся не только изображения, но и видео, и аудио-файлы, которые, правда, встречаются в десятки, если не сотни раз реже, чем фото. Такой выбор Polylang реализует в виде настройки Media (Languages > Settings > Media), которую вы можете активировать или деактивировать.
В случае, когда эта настройка не активна, для всех ваших статей, на всех языках, которые вы выбрали для вашего сайта, вы будете видеть те изображения, которые загрузили для любой записи или страницы. Соответственно, вставить из медиа-библиотеки эти изображения вы тоже можете на любую страницу/запись. И этот вариант вполне годится, если фото вам нужно использовать только в рамках какой-то статьи. В конце-концов что вам мешает изменить alt, title или caption медиа-файла в коде текстового классического редактора или в настройках блока редактора Гутенберг для соответствующего перевода, реализуемого с помощью Polylang?
Перевод изображений для галереи WordPress с помощью Polylang
Однако все не так просто, если вы вставляете фотогалерею средствами самого WordPress или делаете это с помощью какого-то другого плагина. В этой статье мы разберем, что делать, если вам нужно добавить фотогалерею на нескольких языках, причем к тому же вы еще являетесь сторонником классического редактора WordPress, а не нового редактора Гутенберг.
Тогда вы столкнетесь с тем, что все подписи, альтернативный текст и заголовки "вшиты" в код галереи, который в случае классического редактора будет выглядеть так:
То есть никаких alt, title, caption в таком шорткоде нет, и как к ним добраться - большой вопрос. Зато мы их видим, можем добавлять и изменять при создании или редактировании новой/существующей галереи.
Теперь, если мы попробуем вставить такую галерею в виде аналогичного шорткода в запись с переводом на другой язык, то на страницах сайта получим те же подписи, alt и title, которые сформировали в первой фотогалерее.
Какой выход? Включить опцию перевода в настройках Polylang (Languages > Settings > Media).
И после этого при открытии страницы с фотогалереей на втором языке мы будем любоваться ... шорткодом. А в медиа-библиотеке для второго языка будет пусто, т.к. плагин Polylang предполагает, что вы сначала займетесь переводом медиа-файлов.
Ситуация такова - вы можете несколько раз загрузить в медиа-библиотеку одни и те же файлы, чтобы задать для них подписи на нужном для вас языке, но в этом случае количество файлов в вашей папке uploads также увеличится, причем довольно существенно, т.к. для любого файла WordPress по умолчанию создает 3 размера - большие, средние и маленькие + ваша тема может добавлять к ним от 1 до 4-5. Поэтому это плохой выход. Хороший - чуть ниже.
Переводим медиа-файлы с помощью Polylang
Для того чтобы выполнить перевод изображения на все нужные для вашего сайта языки (в моем случае их 4 - английский - основной, а также русский, украинский и польский), лучше переключиться в медиа-библиотеке на вид, отображающий не только миниатюры фото, а всю информацию о нем. Вы увидите значок флажка под тем языком, для которого загружали этот файл. Под всеми остальными сначала у вас будут стоять плюсы, но, когда вы добавите альтернативный текст, заголовок и подпись и опубликуете запись, так как именно к типу "запись" (post) будет относиться ваш перевод, то под флажками появиться значок карандаша. Это значит, что любой из переводов вы можете отредактировать щелчком по этому карандашу.
Хорошая новость заключается в том, что дублирования файлов в папке uploads вашего сайта не происходит, увеличивается только размер базы данных, т.к. на одно изображение у вас приходится 4 описания. С другой стороны - это минимальные затраты при обслуживании 4-хязычного сайта.
Посмотрите на скриншоты ниже. Для первого изображения на английском языке, которое добавлялось в галерею, справа выделена ссылка, ведущая к папке, в которую оно было загружено, а вверху - ссылка на запись, клик по которой откроет страницу для просмотра изображения.
Второе изображение с русским переводом имеет ту же ссылку на файл в папке uploads, но ссылка на запись для просмотра изображения уже другая. Это и понятно - не может быть 2-х одинаковых адресов, ведущих на разные страницы. Кстати, если вам по соображениям SEO не хотелось бы предоставлять доступ к страницам изображений, прочитайте статью Как убрать в WordPress страницы-ссылки на изображения и кастомные записи.
Для того чтобы использовать все файлы изображений в фотогалереях на всех языках вашего сайта, вам придется последовательно перевести все изображения, которые в них содержатся, на все нужные вам языки. Это длительный и рутинный процесс, но без него никак не обойтись. Согласно документации разработчиков Polylang, в PRO-версии это происходит автоматически.
Дублируем галереи для переводов
После окончания перевода всех изображений вам нужно вернуться к добавлению фотогалерей на страницах/записях с нужными языками. Теперь, открывая медиа-библиотеку, вы будете видеть файлы с выбранным для записи языком перевода. Осталось сформировать фотогалерею и добавить ее на страницу - все текстовые описания подтянутся автоматически.
Кстати, id изображений в шорткоде будут такими же.
Для того чтобы упростить себе работу по созданию фотогалерей и дублирования переведенных изображений в статьях, можно воспользоваться плагином polylang-copy-content, который доступен на GitHub, от авторов Teemu Suoranta, leemon. Этот плагин состоит из одного файла и копирует заголовок, содержание и вложения для нового перевода.
Для того чтобы им воспользоваться, нужно скачать его из репозитория GitHub, скопировать папку с ним в директорию plugins вашего сайта и активировать плагин в меню Плагины. Настроек у плагина нет. Естественно, вам нужно, чтобы был активен плагин Polylang, но вряд ли вы бы сейчас читали эту статью, не так ли?
Плагин копирует контент из одной записи/страницы и вставляет все содержимое в новую, включая шорткоды (короткие коды).
На втором этапе плагин находит разметку с регулярным выражением, извлекает идентификаторы изображений, выполняет или извлекает перевод изображения и заменяет их внутри содержимого. Таким образом, плагин может заменять только переведенные изображения в разметке, которая является разметкой WordPress по умолчанию. Если у вас есть плагины с собственной разметкой, блоками или шорткодами, этот плагин копирует их, но не обрабатывает.
Плагин работает с классическим редактором WordPress и редактором Гутенберг. Не будет скопирован контент для:
- Блока мультимедиа и текста без подписей;
- Пользовательских блоков плагина ACF;
- Других блоков.
Этот плагин удобно использовать, если вы меняли местами изображения в своей галерее - он продублирует запись один в один. Вам нужно будет только поменять название этой записи или страницы, причем с подсказкой языка.
На страницах сайта галереи будут иметь подписи на тех языках, на которых пользователи будут просматривать сайт. То есть Polylang как плагин для создания мультиязычности тут полностью отрабатывает свой функционал, а ваша задача - корректно выполнить перевод.