30 сентября 2017 года международное сообщество WordPress объединилось в течение 24 часов, чтобы перевести экосистему WordPress. В третий раз #WPTranslationDay слил весь день, чтобы провести марафон по переводу с цифровыми и дневными мероприятиями, призванными содействовать созданию доступного опыта для глобальных пользователей, более известного как «локализация».
Как сообщество с открытым исходным кодом, мы все должны стремиться к локализации наших взносов с открытым исходным кодом. Прежде чем вы сможете расшифровать ваши цифровые активы, хотя, вы должны интернационализировать свою кодовую базу.
Термины «интернационализация» и «локализация» часто используются взаимозаменяемо, хотя технически они представляют два различных аспекта процесса перевода.
- Интернационализация (I18N) – это процесс интернационализации или адаптации вашей темы или плагина для перевода на любой язык в мире.
- Локализация (L10N) — это последующий процесс локализации или перевода интернационализированных инструментов на данный язык.
WordPress в настоящее время полностью локализован для более чем 65 языков и предлагает частичный перевод для дополнительных 95 языков. Международное использование продолжает расти по мере введения новых локализаций.
Неговорящие на английском языке пользователи WordPress превзошли англоговорящих пользователей в 2014 году, и они непреднамеренно продолжают разбавлять процент английских пользователей пирога в 2017 году, как усилия, как #WPTranslateDay расти.
Как WordPress становится все более и более лингвистически доступны, знание I18N и L10N имеет важное значение для плагина и тематических разработчиков процветать в глобальной экономике WordPress. Для масштабирования бизнеса, эти навыки развития могут открыть двери для зарубежных рынков. Доступность Интернета, включая доступность языка, хороша для бизнеса и лучше для людей.
В качестве продолжения #WPTranslationDay,вот обновленное руководство по интернационализации плагинов WordPress и темы.
Вот краткий обзор процесса, который мы будем изучать сегодня.
- Обнаружения
- Узнать файлы перевода
- Файл POT
- Файл PO
- Файл MO
- GlotPress и языковые пакеты
- Резервное копирование и подготовка окружающей среды
- Узнать файлы перевода
- Плагин I18N
- Плагин заголовок
- Загрузите текстовый домен
- Аудит строк
- Создание файла POT
- Тема I18N
- Тема заголовок
- Загрузите текстовый домен
- Аудит строк
- Создание файла POT
- JavaScript I18N
- Дополнительные ресурсы
Обнаружения
Узнать файлы перевода
WordPress использует библиотеку GNU gettext для облегчения I18N.
Во-первых, давайте познакомимся с файлами перевода gettext, созданными на протяжении всего процесса.
Портативный файл шаблона объектов (POT)
Во время процесса I18N мы будем использовать инструмент для поиска интернационализированных строк и создания файла POT, содержащего весь переводимый текст в плагинах и теме.
Портативный файл объектов (PO)
По внешнему виду нет замечательных различий между файлом POT и PO файлом. Они синтаксически одинаковы и отличаются только по их назначению.
После создания файла POT текстовые строки должны быть интерпретированы переводчиком на ваш предпочтительный язык. Файл PO в конечном итоге будет содержать строки текста на родном языке, а также соответствующие переводы.
Файл объектов машины (MO)
Наконец, файл PO преобразуется в машиночитаемый документ или файл Machine Object. Этот файл будет жить в вашей теме или плагин каталог для WordPress призвать, когда пришло время служить переведенной версии.
Резервное копирование и подготовка окружающей среды
Перед изменением любой разметки, возьмите резервную отпор вашего плагина, темы или весь сайт (независимо от того, что вы интернационализируете!) и получить ваши среды разработки в порядке.
Не забудьте сделать быстрый аудит плагина, если вы планируете локализовать свой сайт. Удалите или отключите все плагины, которые вы больше не активно используете. Этот быстрый аудит сэкономит вам время в долгосрочной перспективе.
Интернационализировать ваши плагины
ПЛАГИН ЗАГОЛОВОК
Во-первых, мы обновим плагин заголовок. В частности, текстовый домен и путь домена.
Пример плагина заголовок
/*
Plugin Name: My Rad Plugin
Plugin URI: http://myradplugin.com
Description: Custom Plugin That Makes My Site Rad
Author: Rad Plugin Creator
Version: 1.0
Author URI: http://radplugincreator.com
Text Domain: rad-plugin
Domain Path: /languages/
*/
Текстовый домен
Текстовый домен является уникальным идентификатором для WordPress распознать весь текст, принадлежащий плагину, и должен соответствовать пуле плагина.
Это особенно важно, если ваш плагин размещается на WordPress.org; они должны соответствовать для того, чтобы GlotPress правильно импортировать переводы для вашего плагина.
В нашем примере файл плагина называется rad-plugin.php, а текстовый домен — rad-plugin
Возможно, у вас уже есть набор доменов текста. Если вы этого не делаете, не забудьте использовать дефисы, а не подчеркивает.
Путь домена
Путь домена — это папка, в которой будут жить завершенные файлы перевода. Вы должны создать новую папку в каталоге плагинов, таких как /Языки /, и обновить путь домена, так WordPress точно знает, где искать файлы перевода.
ЗАГРУЗИТЕ ТЕКСТОВЫЙ ДОМЕН
Далее мы загружаем текстовый домен, добавляя в наш код следующую функцию.
load-plugin-textdomain()
load_plugin_textdomain( $domain, $abs_rel_path, $plugin_rel_path );
Если файл перевода доступен для языка пользователя, функция домена нагрузок будет говорить WordPress, чтобы доставить его.
Параметры
- $domain — текстовый домен (обязательно)
- $abs-релепути — ложный (необязательно, универсленный)
- $plugin’rel’path — /Языки/ (по желанию, это относительный путь к каталогу, содержащему ваши файлы перевода. В нашем примере /языки/. По состоянию на 4.6, WordPress будет искать эти файлы в плагина /Языки / каталог, если это идет неопределенным.)
Рад Плагин Пример
Чтобы загрузить текстовый домен, мы подключимся к действию ‘plugins’loaded’.
add_action( 'plugins_loaded', 'rad_plugin_load_text_domain' );
function rad_plugin_load_text_domain() {
load_plugin_textdomain( 'rad-plugin', false, dirname( plugin_basename( __FILE__ ) ) . '/languages/' );
}
STRINGS AUDIT
Следующим шагом является обертывание всех текстовых строк плагина в функции перевода.
Наиболее распространенными функциями перевода являются __()
возвращение переведенной строки и _e()
эхо переведенной строки.
Рад Плагин Пример
__()
$text = __( 'Super Rad!', 'rad-plugin' );
Эта функция будет работать для простых переводов. Он учитывает два параметра; текст строки и текстовый домен.
_e( 'Super Rad!', 'rad-plugin' );
Эта функция просто перекликается с значением. В противном случае, он работает точно так же, как и предыдущая функция.
Есть множество дополнительных функций перевода, которые также должны быть использованы, когда это необходимо.
Другие основные функции
__()
_e()
_x()
_ex()
_n()
_nx()
_n_noop()
_nx_noop()
translate_nooped_plural()
Функции даты и номера
number_format_i18n()
date_i18n()
Функции побега
Не забудьте избежать любых данных, которые выводятся с помощью следующих функций побега.
esc_html__()
esc_html__()
esc_html_x()
esc_attr__()
esc_attr_e()
esc_attr_x()
В нашем примере Rad у нас может быть строка плагина, которая выглядит следующим образом:
function create_section() {
esc_html_e( 'Below are your settings for Rad Plugin', 'rad-plugin' );
}
CREATE A POT FILE
Последним шагом является создание файла POT. Есть несколько различных инструментов, доступных для создания этого типа файла, но для этого учебника, мы будем придерживаться рекомендаций из WordPress codex и использовать Poedit, простой в использовании графический интерфейс для управления переводами.
Примечание:Если ваш плагин или тема уже находится в WordPress.org репозитории, вы можете пропустить этот процесс и создать файл POT со страницы админ. В этом случае нет необходимости создавать файл .po для каждого языка. Внедрение GlotPress и языковых пакетов в 2015 году упростило процесс перевода; все, что необходимо для GlotPress, это файл .pot, который будет импортироваться WordPress.org и подаваться переводчикам через translate.wordpress.org приборную панель. Сотрудники со всего мира будут использовать эту панель мониторинга для предоставления переводов на #WPTranslateDay.
Скачать Poedit
Настройка Poedit
Свойства перевода
Начните с перехода к файлу (new. Затем выберите родной язык вашего плагина и нажмите OK.
Далее, выберите Каталог (new. Введите название проекта, версию, контакт и язык.
Пути
Выберите вкладку «Пути источников» дальше. Если это новый файл, вам придется сохранить файл в первую очередь.
Следуя нашему примеру, мы бы выбрали файл sgt; Сохранить Как сохранить в качестве файла .po в / Языки / каталог внутри rad-plugin. Опять же, имя файла должно соответствовать пуле вашего плагина.
rad-plugin.po
После сохранения введите относительный путь в каталог, где будут жить файлы перевода. В этом сценарии языки.
Ключевые слова
Выберите вкладку «Ключевые слова источников». Нажмите значок «и» для добавления соответствующих имен функций.
Обман
__
_e
_x
_ex
_n
_nx
_n_noop
_nx_noop
translate_nooped_plural
number_format_i18n
date_i18n
esc_html__
esc_html__
esc_html_x
esc_attr__
esc_attr_e
esc_attr_x
После этого, вы можете нажать OK, а затем файл
Poedit сохранит как файл .mo, так и файл .po. Вы можете создать файл .pot, скопируя файл .po и добавив расширение .pot. Международные пользователи могут использовать файл шаблона .pot для перевода строк на свой язык.
Интернационализируйте вашу тему
Процесс интернационализации вашей темы практически идентичен I18N для плагинов. Мы начнем с проверки темы заголовок и в конце, генерируя еще один файл POT.
ТЕМА ЗАГОЛОВОК
Двойная проверка заголовок темы, чтобы убедиться, что ваш текстовый домен и путь домена установлены.
Пример Тема Заголовок
/*
Theme Name: Rad Theme
Author: Rad Theme Author
Text Domain: rad-theme
Domain Path: /languages/
*/
ЗАГРУЗИТЕ ТЕКСТОВЫЙ ДОМЕН
Следующим шагом является загрузка домена текста в файле функций вашей темы.php на этот раз.
load-theme-textdomain()
load_theme_textdomain( 'radtheme', get_template_directory() . '/languages' );
Для загрузки этих файлов необходимо зарегистрировать их с помощью действия после установки.
add_action( 'after_setup_theme', 'rad_theme_setup' );
function rad_theme_setup() {
load_theme_textdomain( 'radtheme', get_template_directory() . '/languages' );
}
STRINGS AUDIT
Время для еще одного аудита строк! Вы должны быть знакомы с основными функциями перевода на данный момент.
Давайте взглянем на некоторые более сложные переводы.
Заполнители
Переменные PHP, такие как приведенный ниже пример, не будут переведены должным образом без использования заполнителей.
echo "We added $count rad points.";
printf () и спринтф()
Эти функции используют заполнители, такие как %s, или %d для целых чисел, чтобы интерполировать строку текста с динамическим содержанием.
Рад Тема Пример
/* Translators: %d is the number of rad points added */
printf( esc_html__( 'We added %d rad points.', 'rad-plugin' ), $count );
Множественное число
_n()
Функция может обрабатывать более сложные строки переводов, как множественное число, но это не рекомендуется из-за его ограничений в программном обеспечении перевода. Вместо этого вы можете написать простой, если заявление различать сингулярные и множественные слова.
Рад Плагин Пример
If ( 1 === $rad_points_found ) {
$message = __( '1 rad point', 'rad-plugin' );
} else {
/* Translators: %s is the number of rad points found */
$message = sprintf( __( '%s rad points' , 'rad-plugin' ) , $rad_points_found );
}
СОЗДАНИЕ ФАЙЛА БАНКА
Процесс генерации файлов pot темы такой же, как генерация плагина POT файлов. Исследуйте некоторые методы ниже.
Командная линия
С WordPress Trunk и gettext GNU пакет установлен, вы можете ветер через этот шаг, запустив makepot.php скрипт в командной строке.
Откройте командную строку и перейдите в каталог инструментов I18N.
cd wpdev/tools/i18n/
Сценарий должен выглядеть примерно так:
php path/to/makepot.php wp-theme path/to/rad-theme rad-theme.pot
Скрипт будет делать свое дело и готовый файл, rad-theme.pot, будет в конечном итоге в текущем каталоге.
Задачи Grunt
Другой метод для создания файла POT является выполнение задач Grunt, используя либо хрюканье-wp-i18n или хрюканье-горшок. Такие бегуны, как Grunt, могут автоматизировать множество утомительных задач, таких как генерация файлов POT.
Чтобы создать файл POT, убедитесь, что сначала установлен node.js. Затем установите Grunt в свой языковой каталог через командную строку, и вы уходите. Теперь вы можете быстро запустить эти команды I18N и сделать файл перевода, не выходя из команды.
JavaScript I18N
Если вы современный разработчик темили или плагина, скорее всего, вы используете JavaScript для обработки некоторых компонентов вашего проекта. wp’localize-script является эффективной функцией для извлечения данных PHP для предоставления скриптов,и это единственный способ перевести JavaScript внутри WordPress.
WP-ЛОКАЛИЗУЕТСЯ СКРИПТ()
Эта функция позволит нам локализовать строки сервера стороне в PHP и предоставить текстовые строки в качестве объекта JavaScript к сценарию.
wp_localize_script( $handle, $name, $data );
Параметры
- $handle — скрипт ручки данных должны быть доступны для (требуется — необходимо, чтобы соответствовать ручке скрипта эти данные для, см. пример ниже)
- $name — название объекта для хранения данных (обязательно — должно быть уникальным)
- $data — массив данных для передачи в скрипт (требуется).
РАД ПЛАГИН ПРИМЕР
add_action( 'wp_enqueue_scripts', 'rad_theme_scripts' );
function rad_theme_scripts() {
wp_enqueue_script( 'rad-theme-script', get_template_directory_url() . '/js/rad-theme-script.js' );
wp_localize_script( 'rad-theme-script', 'rad-I18n',
array(
'message' => __( 'Super Rad!', 'rad-theme' ),
)
);
}
ДОСТУП К ДАННЫМ В JAVASCRIPT
Простой фрагмент кода ниже является примером того, как получить доступ к этим данным в файле JavaScript.
alert( rad-I18n.message );
Дополнительные ресурсы
- I18N для разработчиков WordPress
- WordPress Тема Справочник: Интернационализация
- WordPress Плагин Справочник: Интернационализация
- WordPress.tv: I18N
Упаковка его
Поздравляю! Вы только что интернационализировали вашу тему и / или плагин, что делает его доступным для людей всех родных языков, чтобы воспользоваться. Независимо от того, распространяется ли ваш проект через репозиторий WordPress или специально разработан для веб-сайта вашей организации, есть только недостаток интернационализации файлов с самого начала.
- Сделайте свой вклад с открытым исходным кодом доступным во всем мире.
- Создавайте разговоры с новыми клиентами на зарубежных рынках.
- Экономьте время и сокращайте кропотливые обновления в будущем.
Всегда интернационализировать.
Источник: smashingmagazine.com