Error loco translate failed to start up

MIRROR of the official Loco Wordpress plugin "Loco Translate" - wp-loco/AdminHooks.php at master · loco/wp-loco
<?php /** * Common hooks for all admin contexts */ class Loco_hooks_AdminHooks extends Loco_hooks_Hookable { /** * @var Loco_mvc_AdminRouter */ private $router; /** * «admin_notices» callback, * If this is hooked and not unhooked then auto-hooks using annotations have failed. */ public static function print_hook_failure(){ echo ‘<div class=»notice error»><p><strong>Error:</strong> Loco Translate failed to start up</p></div>’; } /** * {@inheritdoc} */ public function __construct(){ // renders failure notice if plugin failed to start up admin hooks. add_action( ‘admin_notices’, [__CLASS__,‘print_hook_failure’] ); // initialize hooks parent::__construct(); // Ajax router will be called directly in tests // @codeCoverageIgnoreStart if( loco_doing_ajax() ){ $action = isset($_REQUEST[‘action’]) ? $_REQUEST[‘action’] : »; // initialize Ajax router before hook fired so we can handle output buffering if( ‘loco_’ === substr($action,0,5) && isset($_REQUEST[‘route’]) ){ $this->router = new Loco_mvc_AjaxRouter; Loco_package_Listener::create(); } } // @codeCoverageIgnoreEnd // page router required on all pages as it hooks in the menu else { $this->router = new Loco_mvc_AdminRouter; // we don’t know we will render a page yet, but we need to listen for text domain hooks as early as possible if( isset($_GET[‘page’]) && ‘loco’ === substr($_GET[‘page’],0,4) ){ Loco_package_Listener::create(); // trigger post-upgrade process if required Loco_data_Settings::get()->migrate(); } } } /** * «admin_init» callback. */ public function on_admin_init(){ // This should fire just before WP_Privacy_Policy_Content::privacy_policy_guide is called // View this content at /wp-admin/privacy-policy-guide.php#wp-privacy-policy-guide-loco-translate if( function_exists(‘wp_add_privacy_policy_content’) ) { $url = apply_filters(‘loco_external’,‘https://localise.biz/wordpress/plugin/privacy’); wp_add_privacy_policy_content( __(‘Loco Translate’,‘loco-translate’), esc_html( __(«This plugin doesn’t collect any data from public website visitors.«,‘loco-translate’) ).‘<br />’. wp_kses( sprintf( __(‘Administrators and auditors may wish to review Loco’s <a href=»%s»>plugin privacy notice</a>.’,‘loco-translate’), esc_url($url) ), [‘a’=>[‘href’=>true]], [‘https’] ) ); } } /** * «admin_menu» callback. */ public function on_admin_menu(){ // This earliest we need translations, and admin user locale should be set by now if( $this->router ){ $domainPath = dirname( loco_plugin_self() ).‘/languages’; load_plugin_textdomain( ‘loco-translate’, false, $domainPath ); } // Unhook failure notice that would fire if this hook was not successful remove_action( ‘admin_notices’, [__CLASS__,‘print_hook_failure’] ); } /** * plugin_action_links action callback * @param string[] * @param string * @return string[] */ public function on_plugin_action_links( $links, $plugin = » ){ try { if( $plugin && current_user_can(‘loco_admin’) && Loco_package_Plugin::get_plugin($plugin) ){ // coerce links to array if( ! is_array($links) ){ $links = $links && is_string($links) ? (array) $links : []; } // ok to add «translate» link into meta row $href = Loco_mvc_AdminRouter::generate(‘plugin-view’, [ ‘bundle’ => $plugin] ); $links[] = ‘<a href=»‘.esc_attr($href).‘»>’.esc_html__(‘Translate’,‘loco-translate’).‘</a>’; } } catch( Exception $e ){ // $links[] = esc_html( ‘Debug: ‘.$e->getMessage() ); } return $links; } /** * Purge in-memory caches that may be persisted by object caching plugins */ private function purge_wp_cache(){ global $wp_object_cache; if( function_exists(‘wp_cache_delete’) && is_object($wp_object_cache) && method_exists($wp_object_cache,‘delete’) ){ wp_cache_delete(‘plugins’,‘loco’); } } /** * pre_update_option_{$option} filter callback for $option = «active_plugins» * @param array active plugins * @return array */ public function filter_pre_update_option_active_plugins( $value = null ){ $this->purge_wp_cache(); return $value; } /** * pre_update_site_option_{$option} filter callback for $option = «active_sitewide_plugins» * @param array active sitewide plugins * @return array */ public function filter_pre_update_site_option_active_sitewide_plugins( $value = null ){ $this->purge_wp_cache(); return $value; } /** * deactivate_plugin action callback * public function on_deactivate_plugin( $plugin, $network = false ){ if( loco_plugin_self() === $plugin ){ // TODO flush all our transient cache entries // «DELETE FROM ___ WHERE `option_name` LIKE ‘_transient_loco_%’ OR `option_name` LIKE ‘_transient_timeout_loco_%'»; } }*/ /*public function filter_all( $hook ){ error_log( $hook, 0 ); }*/ }

Как перевести Тему wordpress на русский с помощью Loco Translate?

2019 Вопрос, как перевести Тему wordpress на русский с помощью loco translate, остается актуальным, несмотря на обилие информации. Это из-за того, что интерфейс плагина изменился. Поэтому, для того, чтобы разобраться, как им пользоваться, требуется новая пошаговая инструкция.

Почему Loco Translate не переводит?

Часто, несмотря на русский интуитивно понятный интерфейс Loco, при попытке русифицировать шаблон самостоятельно, ничего не выходит. Это из-за того, что, в первую очередь, необходима синхронизация с файлами перевода Темы. После этого полный список не переведенных слов станет доступен для редактирования. А русские значения будут интегрированы в Тему вордпресс (файлы с расширением .po и .mo).

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

Что и как переводит Loco Translate

Ознакомьтесь с особенностями плагина. Чтобы они не стали неожиданностью, поясню, как он «переводит». В каких случаях его используют. После этого решите: подходит такой переводчик вам или нет.

  1. Плагин Loco Translate (LT) ничего автоматически не переводит. С его помощью вы английские слова (фразы) замените на свои русские. Поэтому предварительно подготовьте для себя перевод нужных терминов.
  2. LT используют для Темы, когда при ее установке wordpress пишет, что та готова к переводу. Поэтому основная часть английского текста уже переведена на русский.
  3. В Loco не переводят шаблоны, которые к этому не готовы, имеют полностью английскую версию. Плагин используют для изменения небольшого количества слов или фраз Темы, параметров кастомных настроек, плагинов.
  4. После перевода расширение Loco Translate можно деактивировать. Русский текст сохранится. Но после обновления Темы, все вернется к прежнему виду. Ниже поясню, что нужно сделать, чтобы сохранить изменения.

Важное условие: Чтобы плагин Loco Translate правильно работал, админпанель на сайте должна отображаться на русском языке. Если это не так, то перейдите в Настройки — Общие — выберите Язык сайта — Русский.

Русская версия сайта

Проверьте, что язык сайта — русский

При соблюдении этих условий, плагин справится с большей частью перевода оставшихся слов и фраз. Хотя не исключается, что каких-то в списке не окажется, но это редко. В основном все слова, имеющиеся на сайте, в том числе в настройках, будут предложены для изменения.

Подготовка к переводу Темы wordpress

Если ставите новую Тему, предварительно протестируйте ее на Локалке: Denwer или OpenServer. Тогда вы точно будете знать, какие слова остались на английском. Установите ее на сайт в интернете, но не активируйте сразу. Сделаете это, завершив перевод.

элемент фона, оформления сайтаПримечание: В новой Теме необходимо проверить ряд параметров, чтобы исключить ошибки. Иначе, получив замечания от Гугла или Яндекса, придется искать замену или долго исправлять баги.

Если шаблон уже активирован, оставляйте как есть (или активируйте резервный). Просто, в этом случае, придется скачать и сохранить для себя файлы .mo и .po из Loco. И после обновления Темы, установить их вместо дефолтных (подробнее об этом см. далее). Затем синхронизировать перевод.

Запишите английские слова и ваши, как памятку для себя, чтобы не вспоминать точные фразы, которые нуждаются в переводе. Не используйте сленг или разговорный жанр. Придерживайтесь общепринятых терминов.

Скачайте и активируйте плагин Loco Translate из репозитория WordPress: Админпанель — Плагины — Добавить новый.

Установить Loco Translate

Установите и активируйте Loco Translate из репозиторя wordpress

После этого в Меню консоли появится одноименная вкладка с опциями: нажмите Темы.

Вкладка Темы в консоли wordpress

Откройте вкладку Темы плагина Loco

Если переводите в интернете, сделайте копию сайта перед внесением изменений. Вообще-то ошибок быть не должно, но вдруг… Могут возникнуть конфликты, поломаться сайт. Всего не предусмотришь, особенно, если шаблон с левого ресурса. Поэтому узнайте, где скачать бесплатные Темы, готовые к переводу. Тогда останется подправить 5 — 8 слов (фраз).

Как перевести Тему wordpress с Loco Translate Пошаговая инструкция

Шаг 1 Нажав на вкладку Loco…, затем, опцию Темы, выберите из списка ту, которую собираетесь переводить. Как минимум, две на сайте должны быть установлены. Одна активирована, вторая — нет. Переводить можно любую. Даже лучше, если Тема не активна. Тогда файлы с новым переводом сохранятся, в системе, после обновления.

Шаг 2 Если до этого для Темы плагин не использовали, появится окно, где написано, что переводов не найдено. Это правильно, так как, нужно сначала указать директорию (домен), где содержится файл списка переводов с расширением .pot. Перейдите по ссылке: Новый язык.

Вкладка Темы - переводов не найдено

Опция Loco Translate — Темы — Новый язык

Шаг 3 Выберите язык перевода в ручном режиме. Он должен совпадать с языком wordpress, о чем упоминала выше. То есть, когда адмипанель вордпресса отображается на русском. В противном случае появится ошибка. Так же, если Тема не активирована, а вы укажете местоположение 1, не сможете приступить к переводу. Какой вариант выбрать:

  1. Если Тема на сайте активирована, выбирайте верхнюю строку (1).
  2. Вторую отмечайте, когда она установлена, но не активирована.

Чтобы понять в чем разница, прочтите разъяснения, нажав на знак «?». Когда все сделаете правильно, перейдите в следующее окно, нажав внизу на синюю кнопку: Начать перевод.

Язык wordpress - русский; местоположение файлов перевода

Выберите язык wordpress — русский; директорию для файлов перевода .po и .mo

Шаг 4 Перед вами три основные окна, в которых будете работать. Просмотрите список, выберите поочередно нужные слова (соответствующий перевод подготовили заранее). Кликаете на английский вариант, исходный код отобразится во-втором поле. В третьем пишите свою версию на русском.

  • Первое поле — список всех не переведенных слов или фраз;
  • второе — отображение исходного кода на английском;
  • третье — ваш перевод.

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

Пропишите русский перевод

Сделайте перевод на русский, сохраняя кодировку

После того, как пропишите свой перевод, в строке, напротив английской версии появится ваша русская. Убедитесь, что все символы кода сохранены. Закончив перевод, не забудьте нажать вверху синюю кнопку «Сохранить».

элемент фона, оформления сайтаОбратите внимание: Некоторые слова повторяются. Если в одном месте на сайте русский вариант появился, а в другом нет, ищите то же значение и переводите. Иногда требуется дублирование, чтобы изменения произошли на разных страницах. Проверяя результат, не забывайте обновляться, нажимая Ctrl+F5.

Перевод Темы wordpress: сохранение результатов

Если до этого Тема была не активирована, активируйте ее. Проверьте качество перевода на сайте. Теперь можно деактивировать Loco. Дождитесь обновления. Если результаты сохранились, плагин можно удалить окончательно.

В случае, когда переводили активированную Тему (рабочую), просмотрите результат, на всех ли страницах все перевелось. Если ошибок нет, скопируйте файлы PO и MO. Пусть они хранятся на ПК до обновления. Плагин можно деактивировать.

Файлы перевода .PO и .MO в Loco Translate

Скачайте файлы .PO и .MO в Loco Translate

Если после обновления переведенные слова снова будут на английском, активируйте LT, замените файлы в Теме на скаченные. Путь к ним такой: wp-content/themes/название темы/languages/. Будьте внимательны, не перепутайте значения: ru_RU.mo; ru_RU.po.

Директория файлов ru_RU.mo и ru_RU.po Темы wordpress

Замените файлы перевода в Теме

Когда работаете на локальном сайте, нужные файлы находятся на ПК. В интернете — на серверах хостинга. В таком случае используйте ftp-клиент: файловый менеджер, типа FileZilla. Перед внесением правок, убедитесь, что у вас достаточно для этого прав. Иначе изменения не сохранятся.

элемент фона, оформления сайтаПримечание: Если не хотите возиться с файлами, можете вновь воспользоваться Loco Translate. Когда знаете, как он работает, быстро переведете несколько слов повторно.

Нашли ошибку: редактирование перевода

Проверив сайт, и найдя ошибку в переводе, вернитесь в Loco. Для повторного входа вводить язык и местоположение не нужно. Файлы с переводом уже локализованы. Для этого снова перейдите в Темы. Подведите курсор к названию шаблона. Перейдите по ссылке редактировать, которая появится чуть ниже. После этого можно опять переводить текст.

Как редактировать перевод в Теме

Повторное редактирование Темы

Заключение

Ознакомившись с пошаговой инструкцией, вы знаете, как перевести Тему wordpress c Loco Translate. Читать дольше, чем делать. Единственное, о чем стоит предупредить, чтобы не забыли очистить кеш сайта, особенно, когда установлены плагины-оптимизаторы. Убедитесь, что тексты на страницах отображаются на русском.

После того, как сделаете перевод, просмотрите сайт ни только из консоли WP, но и, как гость, инкогнито. Скорее всего, тексты будут на английском. Чтобы это исправить очистите кеш браузера вручную, вместе с куками и картинками. Перевод с помощью Loco Translate считается завершенным, когда в остальных браузерах обновится кеш страниц и вы увидите русские слова.

Я использую Loco Translate для перевода wordpress и woocommerce. Отличный плагин, но, к сожалению, некоторые переводы строк не видны / не работают в интерфейсе на странице оформления заказа и в корзине. Может быть, это проблема детской команды?

Строки в Loco Translate известны и правильно переведены, они только не отображаются во внешнем интерфейсе.

Проблемы со строкой перевода:

  • Есть купон? Щелкните здесь, чтобы ввести свой код.
  • Единая ставка:
  • Подписывайтесь на нашу новостную рассылку

Сайт www.narwal.shop/checkout

Помощь приветствуется.

4 ответа

Перейдите в каталог wp-content и uploads. создайте новый каталог и назовите его так же, как имя плагина. затем создайте новый каталог и назовите его languages. теперь загрузите в него свои файлы .po и .mo. проблема решена!


1

Aghil
17 Авг 2019 в 11:30

В моем случае это была проблема с языком wordpress. Я решил это, изменив его с английского на мой целевой язык перевода. Чтобы сделать это на панели WordPress, перейдите по ссылке: Settings -> General -> find language and change it.


0

Falcon
10 Июл 2022 в 13:22

Обновление : вам следует связаться с создателем (дочерней) темы.

Каждый компонент, отображающий текст (то есть почти все из них), включая темы и плагины, должен иметь многоязычную поддержку для его работы. Woocommerce делает это, но у вас могут быть другие компоненты, которых нет. Если у вас есть настраиваемая тема, это будет первое, что я проверю.

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

См. Также: https://localise.biz/wordpress/plugin/child-themes


0

Rad80
15 Май 2018 в 18:24

Заставьте WP загрузить языковой файл из каталога languages/loco/themes/.., например внутри functions.php:

add_action ( 'wp', 'load_translations' );
function load_translations() {
    load_theme_textdomain( 'theme-name-here' );
}


0

W.M.
23 Июл 2022 в 11:46

FAQ: Why don’t my translations show up?

If most of your translations are showing up, but you have a problem with just a few words, see this FAQ instead.

Possible causes

To help you solve your problem, here are some possible lines of inquiry. Please don’t ask us for help with specific themes or plugins.
Either investigate these issues yourself or ask the bundle author how to translate their product using whatever software they recommend.

  1. Your translation files are not being loaded
    Themes and plugins have to load their own translation files and Loco Translate cannot force them to.
    Check that themes are calling the "load_theme_textdomain" function, and plugins are calling "load_plugin_textdomain". If they’re not then ask the author nicely to fix it.

  2. The files are named wrongly
    It can happen that bundles declare incorrect information which causes your files to be saved with the wrong names.
    Check that the bundle declares the same Text Domain that it actually uses and configure Loco Translate as necessary.
    If you can’t check this yourself, ask the bundle author to confirm what your files should be called.

  3. The strings aren’t actually translatable
    The bundle’s template file defines the strings that are available for translation.
    This does not guarantee the string actually exists. Authors often ship template files that are not up to date with their source code, but Loco Translate will not argue with the author’s template file.

  4. Your language isn’t set correctly
    You need to set your language for translations to display on your site. Although we can’t provide personal help with this, see our brief guide to setting your WordPress language.

  5. Your files have been deleted
    If you’ve saved your own custom files in the «author» or «system» locations then WordPress may have deleted or modified them during an update. See the FAQ about disappearing translation files.

  6. You can’t use our custom (safe) folder
    We recommended you save your own translation files in Loco Translate’s «custom» folder at wp-content/languages/loco, but this can suffer from its own problems. Themes and plugins that haven’t been written properly can prevent this location from working. Please read the FAQ about custom loading problems.

  7. The translations are for JavaScript
    Loco Translate supports JSON language packs for use with wp_set_script_translations but there are other ways authors might localize JavaScript.
    Check with the vendor how they handle this and whether they use standard WordPress methods.

Dead end

If you’ve tried all the suggestions above then your best course of action is to contact the author of the theme or plugin you’re translating. Don’t confuse them by asking for help with Loco Translate (your choice of editor shouldn’t matter). Just tell them where your MO files are saved and ask them why the translations aren’t displaying.

Please don’t ask us why your translations are not showing up. There is no support for this problem unless you can demonstrate the fault is with Loco Translate. We will investigate any reproducible bug, but this requires you post steps to reliably demonstrate the fault in a way that we can see it too.

Понравилась статья? Поделить с друзьями:
  • Error locking project file
  • Error loadlibrary failed with error 1114 как исправить
  • Error loading xml file xml
  • Error package databinding does not exist
  • Error loading x64 driver did you forget to reboot