Введите часть искомого слова, названия или фразы...
↑ ↓
  1. Новые темы озаглавленные с маленькой буквы - удаляются без предупреждения!
  2. Вопрос без рабочей ссылки на проблему считается риторическим. Без ссылки и скриншота - провокацией!

Плагин 'Say What' (описание) - изменение перевода "на лету" без правки файла перевода

Тема в разделе "Как изменить надпись, перевести текст и т. д.?", создана пользователем searchingman, 21 июл 2016.

  1. searchingman

    searchingman Местный

    Сообщения:
    1.634
    Симпатии:
    553
    Баллы:
    113
    Плагин 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 - дополнительная строка (контекст) по которой будет искаться перевод в файле перевода.
    Как использовать ?
    1. Установить и активировать плагин
      • После активации создается таблица перевода 'wp_say_what_strings', которая не удаляется (очищается) после деактивации или удаления плагина
    2. Перейти на страницу перевода («Инструменты» → «Text changes») (см.скриншот)
    3. Как искать фразы для перевода
      • Найти фразу, которую нужно перевести, н-р, текст кнопки «Добавить в корзину» (см.скриншот). Для поиска по исходным файлам можно воспользоваться текстовым редакторами 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'
    4. Добавить новую фразу для перевода, заполнив поля «Original string» и «Text domain» из 1го и 2го полей функции перевода. В поле «Replacement string» ввести новую фразу перевода.(см.скриншот)
    5. В итоге надпись на кнопке изменится. (см.скриншот)
    Контекст фразы перевода
    • При использовании функции _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 товар(ов)» (см.скриншот). Готовый результат замены перевода. (см.скриншот).
     
    Последнее редактирование: 24 июл 2016
    • Нравится Нравится x 5