Prestashop как перевести модуль или шаблон быстро и без каких либо модулей.
Как быстро перевести шаблон интернет-магазина Prestashop на русский язык или просто отдельно модуль перевести.
Ранее я переводил шаблон с помощью модуля admin translate, но увы пришло время, когда данный модуль перестал поддерживаться и просто стал не работать.
Оказывается можно, спасибо ребятам программистам с знание java-script, перевести с помощью браузера Google Chrome и встроенного переводчика.
Перевод может в каких-то местах получится корявый, но это мы можем и так, поправить ручками, чем всё переводить (не менее 500 строк) ручками.
Переходим с лева на панели во вкладку «Локализация».
Выбираем либо тему, либо модуль. Смотря что именно что хотим переводить.
Жмем изменить.
Страница с полями переводов будет долго грузится. Не раз Вы увидите предупреждение от браузера Хром, что «Страница не отвечает, подождать или закрыть?». Мы будем ждать, в моем случае такое предупреждение выскакивало 3 раза.На странице с переводом Вы можете столкнутся с такой неприятностью, ка «Внимание, ваша конфигурация PHP ограничивает максимальное количество полей в форме 5000 для max_input_vars. Пожалуйста, попросите хостинг-провайдера увеличить этот лимит до по крайней мере 5216, или вам придется редактировать файлы перевода.» Ну или типо такого.
Поставьте в корне Вашего сайта в файле .htaccess данную запись к примеру 1200 строк: php_value max_input_vars 12000. И перезагрузите страницу.
Спускаемся до первого не переведённого поля.
Жмём правую кнопку мыши. И выбираем перевести страницу.
Вот у нас перевелась правая часть.
Важный момент: Браузер нам переводит только те поля, которые перед нашими глазами. То есть активны на экране. То есть все элементы, которые пока ниже – Хром их не переводит. Поэтому нам нужно пролистать всё окно до конца вниз.Теперь её нужно перенести в ячейки слева.
Заходим в вкладку инструменты разработчика или просто нажимаем Shift + Ctrl + i. Переходим в Console и там вставляем наш java-script. Enter и всё. Все переведённые поля – перенеслись.
Этот скрипт вносить перевод только в те поля, в которых нет перевода, то есть пустые ячейки. Но есть и глюк у него. Не переводит поля, где много символов. Если кто, увидит ошибку у этого кода напишите в комментариях. Что может быть не так.
$("div.panel") .filter(function(){ // прячем полностью переведенные блоки return $(this).find("h3 span.label-danger").text() == "0"; }).hide() .end() .filter(function(){ // выбираем блоки с неполными переводами return $(this).find("h3 span.label-danger").text() !== "0"; }) .each(function(){ $(this).find("table.table tr").each(function(){ $(this).find("td input[type='text'][value='']") .each(function(){ var inputField = $(this); var iVal = inputField.parents("tr").find("td:first-child").text(); inputField.css("outline","2px solid green"); inputField.val(iVal); }) }) })
А данный код, так же перезаписывает ячейки которые уже имеют перевод.
jQuery('tbody tr').each(function(i){ var vau = jQuery(this).find('input').val() || jQuery(this).find('textarea').val(); if(!vau){ jQuery(this).find('input').val(jQuery(this).find('td').eq(0).text()); jQuery(this).find('textarea').val(jQuery(this).find('td').eq(0).text()); //console.log(jQuery(this).find('td').eq(0).text()); } });
Обязательно потом проверьте все поля. Так как те поля, которые не перевелись браузером, так же переместятся на английском.
А вот Видосик: