Многие плагины созданы зарубежными разработчиками и содержат файлы переводов на различные языки (.po .mo). Разберемся как их редактировать.
Программа Poedit
Редактировать переводы нужно программой poedit. Скачать ее можно здесь.
.po — это основной формат перевода
.mo — перекодированный .po для непосредственной работе в системе.
Редактируем перевод 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).
Также можно локализовать перевод из самой темы, для этого надо создать в папке темы папку 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 товаров
А гром и молния была говорят что нельзя так делать, работу сайта — это не нарушило?
На работу сайта это не влияет. Считается более валидно редактировать файл перевода, а не файл шаблона. Но если вы делаете сайт только на русском языке — это не принципиально.
Спасибо!
Отличное решение.
Долго терзал Poedit — не помогло.