Введение в фильтр Gettext
Опубликовано: 2023-02-12Найти плагин или тему для вашего сайта WordPress, отвечающую всем вашим требованиям, может быть непросто. Многие могут подойти близко, но все еще нуждаются в корректировках или настройках. Кроме того, для разработчика жизненно важно убедиться, что ваш код достаточно гибок, чтобы поддерживать пользователей со всего мира.
К счастью, есть некоторые функции ядра WordPress, которые могут помочь вам адаптировать определенные элементы вашего сайта. Это позволяет вам настраивать текст кнопки или метки, а не отказываться от полезного в других отношениях плагина, или даже подготовить свой сайт к переводу.
В этой статье мы дадим более полное представление о фильтре gettext, в том числе о том, как он работает с процессом перевода вашего сайта. Нам предстоит многое рассказать, так что давайте сразу приступим!
Что такое Gettext?
Фильтр gettext позволяет вам изменять текстовые элементы на вашем сайте WordPress. Лучше всего это понять на примере.
Допустим, ваша форма комментариев имеет два поля: «Имя» и «Электронная почта». Если вы предпочитаете, чтобы они читались как «Имя» и «Адрес электронной почты», вы можете использовать фильтр gettext для их изменения вместо того, чтобы вручную заменять каждый экземпляр каждого термина в файлах вашей темы.
Фильтр gettext работает только в том случае, если ваш сайт подготовлен к переводу. Поэтому, прежде чем мы углубимся в то, как вы можете использовать его для настройки текста, мы должны обсудить, как интернационализировать ваш код.
Несколько терминов, которые нужно понять, прежде чем продолжить, включают:
- Интернационализация (i18n). Это означает, что ваш код WordPress подготовлен для перевода на другие языки.
- Локализация (l10n). Процесс, с помощью которого вы можете взять программирование i18n и локализовать установку WordPress для использования на родном языке.
- Библиотека gettext GNU. GNU — бесплатная операционная система с открытым исходным кодом. Его библиотека gettext позволяет оборачивать текст в строки кода, которые затем можно извлечь для перевода.
- Файл POT: для извлечения переводимых строк, созданных с помощью функций gettext, создаются файлы Portable Object Template (POT).
- Файл PO: такой инструмент, как Poedit, использует файл POT для создания файлов Portable Object (PO), которые включают завершенные переводы, а также переводимые строки.
- Файл MO: файл Machine Object (MO) создается из файла PO. Он находится в каталоге вашего плагина или темы и доставляется вашим сервером, если запрашивается переведенная версия вашего веб-сайта.
Все эти элементы играют роль в подготовке продуктов WordPress к переводу, как вы увидите в следующих шагах.
Gettext и PHP для перевода
Ниже мы объяснили рабочий процесс интернационализации темы или плагина. Прежде чем экспериментировать с такими изменениями, рекомендуется создать дочернюю тему для работы. Это защитит ваш сайт от любых потенциальных бедствий.
Шаг 1. Извлеките текстовые строки в виде файлов POT
Первое, что вам нужно сделать, это проверить, содержит ли ваша тема или плагин файлы POT. Если нет, вам нужно будет сгенерировать их автоматически, создать их вручную с помощью терминала или использовать приложение, рекомендованное WordPress, которое мы упоминали ранее, под названием Poedit:
Версия Pro предлагает быструю функцию WordPress для создания нужных вам файлов. Тем не менее, вы все равно можете создать файл POT несколькими дополнительными щелчками мыши с помощью бесплатного приложения.

Для начала вам нужно скачать и установить Poedit, который будет работать на вашем рабочем столе. Сделав это, перейдите в File > New . Вам будет предложено выбрать язык для перевода:
Затем вам нужно будет сохранить новый проект, прежде чем продолжить. Далее у вас будет возможность обновить существующий файл POT или извлечь из источников :
При необходимости вы также можете начать с пустого файла POT, а затем изменить текстовые строки в Poedit. Кроме того, вы можете поискать в Glotpress существующие файлы плагинов и тем для использования. Однако для этого примера предположим, что вам нужно использовать другой вариант.
После того, как вы нажмете «Извлечь из источников», у вас будет три вкладки настроек для настройки:
Вам нужно будет установить пути для источников ваших текстовых строк. Вы также можете исключить определенные пути. Затем вы захотите настроить свойства перевода:
Здесь вы назовете свой проект и настроите параметры для множественного числа и других элементов, зависящих от языка. Наконец, вы можете использовать вкладку «Ключевые слова источников» , чтобы завершить настройку файла POT:
Когда вы нажмете на знак «плюс», вы сможете добавить ключевые слова gettext, чтобы завершить настройку перевода. Вы также сможете просматривать и искать текстовые строки в исходных файлах.
Шаг 2: Создайте файл Portable Object (PO)
Затем вам нужно преобразовать файл POT в файл PO для каждого языка, который вы хотите добавить. Если вы не переводите свою тему или плагин и планируете использовать фильтр gettext только для замены английского языка на английский, установите оба языка (исходный и перевод) на английский.
Если вы перейдете в «Каталог» > «Обновить из файла POT» в Poedit, вы сможете выбрать файл, который хотите перевести:
Затем файл пройдет процесс извлечения, во время которого все переводимые строки будут перенесены в Poedit. Это создает файл PO. Вы захотите назвать его, чтобы он соответствовал другим вашим файлам для этого проекта.
Затем нажмите «Создать новый перевод» внизу списка текстовых строк, чтобы начать вносить изменения:
Чтобы изменить текст с английского на английский, просто щелкните строку, которую вы хотите изменить, и используйте окно «Перевод» под текстом «Исходный текст» , чтобы ввести замененное слово:
Выполните этот процесс для любого текста, который вы хотите изменить в своей теме или плагине. Далее вы создадите последний из трех необходимых файлов.
Шаг 3. Преобразование в файлы машинных объектов (MO)
До сих пор вы предпринимали шаги по созданию инструкций по программированию для ваших переводов. Теперь вам нужно преобразовать каждый PO-файл, чтобы он мог быть прочитан сервером и доставлен посетителям желаемого текста.
В зависимости от того, как вы проходите рабочий процесс Poedit, файл MO может быть уже создан в папке «Языки» вашей темы. Если нет, перейдите в File > Compile to MO :
Теперь у вас должны быть компоненты, необходимые для выполнения функций, которые стали возможными благодаря фильтру gettext в WordPress.
Когда полезен WordPress Gettext Filter?
Хотя процесс, который мы описали выше, может помочь вам перевести ваш сайт на многие языки, это не является целью фильтра gettext. Другими словами, вы не захотите использовать этот хук для преобразования английского текста в испанский.
Скорее, это скорее функция дизайна, которую вы можете использовать для изменения текста по умолчанию, добавленного на ваш сайт плагином или темой, например, через:
- Настройка этикетки
- Текст кнопки меняется
- Изменения заголовка
Этот процесс можно использовать для настройки любого текста, который считается переводимым в файлах вашего веб-сайта. В качестве другого примера, если в вашей теме есть предустановленные кнопки с надписью «Купить сейчас», но вашему сайту нужно, чтобы они были с надписью «Подписаться», gettext это фильтр, который может сделать это изменение реальностью.
Важно отметить, что слишком частое использование gettext может негативно сказаться на производительности вашего сайта. Это дополнительный код, который должен выполняться каждый раз при загрузке вашего сайта, поэтому используйте его экономно, чтобы избежать снижения скорости страницы.
Распространите свое сообщение с помощью WP Engine
Принятие решения о том, использовать ли плагины или вносить ручные изменения кода на свой веб-сайт, может быть сложной задачей. Вот почему наличие лучших ресурсов для разработчиков является ключевым моментом. Вооружившись экспертной и профессиональной поддержкой WP Engine, у вас будет все, что вам нужно для создания индивидуально настроенного веб-сайта.
Ознакомьтесь с нашими планами управляемого выделенного хостинга WordPress для вашего следующего проекта. Мы обеспечим обслуживание вашего сервера, чтобы вы могли с легкостью внедрять инновации!