/ Адаптивность / Переводы (.po .mo)

Переводы (.po .mo)

HIT

Многие плагины созданы зарубежными разработчиками и содержат файлы переводов на различные языки (.po .mo). Разберемся как их редактировать.

Программа Poedit

Редактировать переводы нужно программой poedit. Скачать ее можно здесь.
.po — это основной формат перевода
.mo — перекодированный .po для непосредственной работе в системе.

У всех русскоязычных переводов в конце названия должны стоять -ru_RU

Редактируем перевод woocommerce

Файлы переводов woocommerce находятся в папке wp-content/languages/plugins/
woocommerce-ru_RU.mo
woocommerce-ru_RU.po

Скачиваем woocommerce-ru_RU.po, открываем программу poedit и в ней открываем файл woocommerce-ru_RU.po.

Если будет предупреждение об ошибке, обязательно надо открывать через Файл/Открыть с указанием расширения файла, чтоб ошибок не было, иначе послетают некоторые переводы.

Поиском находим нужные нам слова и меняем перевод (переписывая его). После окончания редактирования сохраняем изменения, и в меню Файл компилируем формат .mo.
После этого загружаем оба файла в исходную папку, заменяя исходные файлы.

Локализация перевода woocommerce

Переводы woocommerce (если изменения вносить в папке wp-content/languages/plugins/) периодически слетают. Как поставить запрет на обновление перевода? Нужно создать новую (свою) директорию с переводом в папке wp-content/languages/ например папку woocommerce и поместить отредактированные переводы в нее. А в файл functions.php поместить следующий код, переопределяющий откуда брать перевод:

add_filter( 'load_textdomain_mofile', 'load_custom_plugin_translation_file', 10, 2 );

function load_custom_plugin_translation_file( $mofile, $domain ) {
  if ( 'woocommerce' === $domain ) {
    $mofile = WP_LANG_DIR . '/woocommerce/woocommerce-' . get_locale() . '.mo';
  }
  return $mofile;
}

Файлы перевода должны быть названы также как и были в папке /plugins/ (woocommerce-ru_RU.po, woocommerce-ru_RU.mo).

Теперь переводы woocommerce не будут затираться!

Также можно локализовать перевод из самой темы, для этого надо создать в папке темы папку local-translate (с переводами) и немного изменить путь:

add_filter( 'load_textdomain_mofile', 'load_custom_plugin_translation_file', 10, 2 );

function load_custom_plugin_translation_file( $mofile, $domain ) {
  if ( 'woocommerce' === $domain ) {
    $mofile = get_template_directory() . '/local-translate/woocommerce-' . get_locale() . '.mo';
  }
  return $mofile;
}

Отображается единственный результат

Пытался исправить через файлы переводов — безуспешно. Решил проблему ручным переводом файла woocommerce/loop/result-count.php

Showing all %d results заменил на Отображено товаров — %d

Showing %1$d–%2$d of %3$d results заменил на Отображено товаров %1$d–%2$d из %3$d

Нашел необходимую строку и в файле перевода Showing the single result

Исправил перевод на: Отображение %1$d–%2$d из %3$d товаров

Поделиться в соц. сетях:

  • Похожие записи
  • Комментарии
  • Вложения
Запись на прием

Запись на прием

Внедряем в сайт функционал записи на прием. Данная возможность может пригодится в медицинской сфере, а также в сфере образования (репетиторство). Плагин Booked Appointments Плагин платный (59 $), но если хорошо Читать далее »

/
Мультиязычность сайта

Мультиязычность сайта

Мультиязычность сайта можно обеспечить несколькими способами: ручной перевод, автоматический перевод, либо с помощью системы мультисайт. В данной статье рассмотрим первые 2 способа. Ручной перевод сайта — Polylang Для того чтобы Читать далее »

/

Добавить комментарий

3 комментария

  1. Александр

    А гром и молния была говорят что нельзя так делать, работу сайта — это не нарушило?

    1. Alexandr

      На работу сайта это не влияет. Считается более валидно редактировать файл перевода, а не файл шаблона. Но если вы делаете сайт только на русском языке — это не принципиально.

  2. Андрей

    Спасибо!

    Отличное решение.

    Долго терзал Poedit — не помогло.

Переводы (.po .mo)
Шаблон вывода категорий woocommerce
Рекомендации для васШаблон вывода категорий woocommerceOpttour.ru
Спасибо! Наш менеджер свяжется с Вами в течении 5 минут.