Плагин Say What? (описание)
- Скачать плагин: https://wordpress.org/plugins/say-what/
- Цель: изменить фразы перевода «на лету» без использования файлов перевода.
- Работает с фразами, заданными в исходниках через функции:
- __( $text, $domain ) - переводит указанный текст, используя файл перевода и возвращает его для обработки. Переведенный текст. Если не удалось перевести, то вернет оригинальный текст $text
- $text - Текст, который нужно перевести.
- $domain - Идентификатор файла перевода, указывается при регистрации и подключении файла перевода. Если не указать, то будет использован дефолтный файл перевода, который используется в WordPress (по умолчанию: 'default').
- _e( $text, $domain ) - переводит указанный текст, используя файл перевода и выводит его на экран.
- _n( $single, $plural, $number, $domain ) - выбирает строку, которая будет использована для перевода единственного или множественного числа переданного в функцию (1 комментарий, 2 комментария)
- _x( $text, $context, $domain ) - переводит указанный текст, на основе указанного контекста. Использует файл перевода. Нужно использовать, чтобы не было путаницы, когда одинаковый текст может переводиться по разному, исходя из того в каком месте (в каком контексте) он используется. Н-р, _x( 'Categories', 'Admin menu name', 'woocommerce' )
- $context - дополнительная строка (контекст) по которой будет искаться перевод в файле перевода.
- __( $text, $domain ) - переводит указанный текст, используя файл перевода и возвращает его для обработки. Переведенный текст. Если не удалось перевести, то вернет оригинальный текст $text
- Установить и активировать плагин
- После активации создается таблица перевода 'wp_say_what_strings', которая не удаляется (очищается) после деактивации или удаления плагина
- Перейти на страницу перевода («Инструменты» → «Text changes») (см.скриншот)
- Как искать фразы для перевода
- Найти фразу, которую нужно перевести, н-р, текст кнопки «Добавить в корзину» (см.скриншот). Для поиска по исходным файлам можно воспользоваться текстовым редакторами NotePad++, Sublime Text и т.д.
- Сделать поиск по всем файлам WP. Фраза должна быть найдена в файлах перевода *.po (для фразы «Добавить в корзину» в файле wp-content\languages\plugins\woocommerce-ru_RU.po)
- В файле перевода будет указан идентификатор фразы перевода 'msgid «Add to cart»' и ссылка(и) на файл(ы) в котором содержится фраза перевода. (см.скриншот) Для фразы «Добавить в корзину» будут ссылки на файлы:
- includes/abstracts/abstract-wc-product.php:584
- includes/class-wc-product-simple.php:48
- includes/class-wc-product-variation.php:198
- Открываем файл «includes/class-wc-product-simple.php» и находим функцию перевода _('Add to cart','woocommerce') по идентификатору 'Add to cart'. (см.скриншот)
- 1й параметр функции будет использован для поля «Original string» при добавлении строки перевода
- 2й параметр функции ( woocommerce - домен) будет использован для поля 'Text domain'
- Добавить новую фразу для перевода, заполнив поля «Original string» и «Text domain» из 1го и 2го полей функции перевода. В поле «Replacement string» ввести новую фразу перевода.(см.скриншот)
- В итоге надпись на кнопке изменится. (см.скриншот)
- При использовании функции _x( $text, $context, $domain ) используется дополнительный параметр контекста $context.
- Для примера в админке изменим пункт меню «Категории» на «Категории товаров» (см.скриншот)
- После поиска по слову «Категории» находим в файле перевода фразу msgid «Categories» и ее контекст msgctxt «Admin menu name»(см.скриншот)
- Вносим данные в плагин (см.скриншот) и получаем результат (см.скриншот).
- В некоторых случаях в фразу перевода передают параметры, н-р, часть исходного кода
PHP:
printf( __( 'Showing all %d results', 'woocommerce' ), $total );
Код:#: templates/loop/result-count.php:40 msgid "Showing all %d results" msgstr "Показ всех — %d результатов"
- В этом случае фраза замены также должна включать параметр, т.е. «Найдено %d товар(ов)» (см.скриншот). Готовый результат замены перевода. (см.скриншот).
Последнее редактирование: