Немного предыстории
Magento 2 это относительно новая версия довольно «мощного» решения для создания интернет магазинов. Что же ее делает такой «мощной» — конечно же, огромная масса уже готового функционала с коробки, причем даже в бесплатной версии, и да, есть бесплатная версия, и эта бесплатная версия является так же опенсорсной с очень активным комьюнити. В общем, разработка там идет на ура, релизы частые, фич много, код пишут вдумчиво, и особое спасибо за акцент на расширяемости. Но как я и говорил эта версия относительно новая и разных недоработок в ней еще достаточно, об одно из них и пойдет дальше речь.
То как есть
Как видно с названия данного раздела, дело пойдет о том, как все устроено. Не обо всем конечно, на это у меня и нескольких лет не хватит, дабы описать. Только та часть, которая касается многоязычности в Magento 2. И так, если вы имеете сайт на Magento 2, и если вам не подходит язык интерфейса по умолчанию (конечно же, английский), то вы, конечно же, сталкивались с тем чтобы добавить, скажем, русский язык на ваш сайт.
Примерный алгоритм:
- Скачиваем нужный язык (через композер, архивчиком и тд…), так же хочется добавить, что в интернете существует масса бесплатных языковых пакетов.
- Выполняем команду по деплою статики `php bin/magento setup:static-content:deploy ru_RU`
- Чистим кеш Magento
- Конфигурим в админке наш язык на язык по умолчанию для админа, и для фронт части сайта, либо как дополнительный
И видим, как наш сайт преобразился на новый лад, теперь он полностью на русском, ну почти полностью – это как раз таки и проблема. Почему? Ну почему не все переведено – я думаю не сложный вопрос: вы скачали бесплатный языковой пакет, который, скорее всего, делался энтузиастами со всего мира, но возможно не под основную тему, возможно давно и многие фразы уже не актуальны, а многих возможно и нет, или скажем, они прекратили поддержку данного языкового пакета. И, конечно же, кто использует базовую тему Magento на своих интернет магазинах? Я думаю никто. И вы точно-при-точно имеете хорошую сотню, а то и 2, новых фраз, которые принесла ваша новая тема и, конечно же, только на английском языке. Вторая же проблема исходит из первой – «Ок, спасибо тем ребятам, за большую часть перевода, но я в принципе могу и сам остальное перевести, но как?».
Примерный алгоритм:
- Подключаемся к вашему удаленному серверу, на котором установлена Magenta, по SSH (первое неудобство)
- Находим файлик перевода «ru_RU.csv». Где? Ну, если через композер скачивали его, то в папочке vendor, если как-то сами его ложили, то там куда ложили (второе неудобство)
- Открываем его консольным редактором, или скачиваем на рабочую машину дабы отредактировать его каким-нибудь человеческим редактором, Excel к примеру (третье неудобство)
- Заливаем файл обратно, в то же место, с перезаписью (четвертое неудобство)
- Далее все те же шаги что и в предыдущем алгоритме для инстала, только начинайте уже со второго шага, и не нужно делать последний шаг.
Как видно из алгоритма, неудобных шагов предостаточно. Первое неудобство заключается в том, что вам для этой задачи понадобится специально обученный человек с SSH доступом к данному серверу и вы должны быть уверены, что этот человек ничего там вам не сделает лишнего. Для второго шага мало одних умений в базовом пользовании Linux системой, он должен знать, где искать в Magento данный файл, это как-бы специальные знания, то есть нужен Magento разработчик. И если вы таки имеете в штате таких людей, то не кажется ли вам, что разбазаривание такого дорогого ресурса, как Magento разработчик или системный администратор слишком круто для такой пустяковой задачи как перевод? Неудобства 3 и 4 – просто сами по себе не удобны и требуют базовых знаний в обращении с Linux системой. От шага с деплоем статики мы, к сожалению никак не избавимся, это архитектура Magento.
Как же все исправить?
Я думаю, что не плохим вариантом было бы – иметь возможность изменять и добавлять переводы через админ панель Magento, и этому можно было бы обременить контент менеджера, либо любого человека, который хоть как-то умеет обращаться с компьютерами. И работал хотя-бы с Word/Excel.
Решение
Приведу один из вариант решения данной проблемы, детально о том, как с ним работать, можно, почитать на marketplace.magento.com, но покажу, основную идею, используя скриншоты и слова.
И так, выглядит это чудо примерно вот так:
На картинке видно, что мы имеем список языков в системе, которые тут оказались благодаря оранжевой кнопочке «Add New Language» (кроме «en», он будет у вас по умолчанию, после установки модуля).
А вот так выглядит непосредственно, форма для редактирования словаря для нужного языка:
Как видно со скриншота, используется встроенный, мощный и удобный инструмент «Grid», он позволяет фильтровать список словаря по многим атрибутам: модуль, часть слова перевода, часть оригинального слова, так же имеет возможность изменять нужную фразу прям одним кликом по ней.
Упрощенный вариант без фильтрации:
Для любого языка вы сможете сгенерировать CSV файл, который сразу разместится в нужное место, с которого в последующем его будет использовать команда деплоя статики Magento. Либо вы можете взять этот файл и подарить или продать кому-нибудь, поделиться с тем же человеком, который вам дал базовую версию данного языкового пакета или просто использовать его в других своих проектах. Так же можно просто сохранить его. Дополнительным удобством, является возможность синхронизировать базовый язык (en_EN). Скажем после очередного обновления до последней версии Magento, в кодовой базе появилась пара тройка новых слов, либо очень много новых слов, если обновление принесло с собой новый модуль. И на этот случай ребята, которые предоставляют бесплатные языковые пакеты для Magento, возможно, не сразу отреагируют и добавят их в свои репозитории, а вы уже имеете возможность, достаточно удобно, дописать нужные переводу, сгенерировать CSV файл и, возможно, поделиться ним с этими же бескорыстными энтузиастами.
Вывод
Magento 2 еще пока имеет большой плацдарм для доработок, пишите новые фичи, дорабатывайте существующие, автоматизируйте рутинные процессы и делитесь ими с другими, пускай даже не бесплатно (ваше потраченное время ведь должно вознаградиться). И последнее – цените свое время, автоматизируйте, то что заставляет вас страдать от уныния.
Автор: диванный аналитик