Как бороться с многоязычностью в Magento 2

Немного предыстории


Magento 2 это относительно новая версия довольно «мощного» решения для создания интернет магазинов. Что же ее делает такой «мощной» — конечно же, огромная масса уже готового функционала с коробки, причем даже в бесплатной версии, и да, есть бесплатная версия, и эта бесплатная версия является так же опенсорсной с очень активным комьюнити. В общем, разработка там идет на ура, релизы частые, фич много, код пишут вдумчиво, и особое спасибо за акцент на расширяемости. Но как я и говорил эта версия относительно новая и разных недоработок в ней еще достаточно, об одно из них и пойдет дальше речь.

То как есть


Как видно с названия данного раздела, дело пойдет о том, как все устроено. Не обо всем конечно, на это у меня и нескольких лет не хватит, дабы описать. Только та часть, которая касается многоязычности в Magento 2. И так, если вы имеете сайт на Magento 2, и если вам не подходит язык интерфейса по умолчанию (конечно же, английский), то вы, конечно же, сталкивались с тем чтобы добавить, скажем, русский язык на ваш сайт.

Примерный алгоритм:

  1. Скачиваем нужный язык (через композер, архивчиком и тд…), так же хочется добавить, что в интернете существует масса бесплатных языковых пакетов.
  2. Выполняем команду по деплою статики `php bin/magento setup:static-content:deploy ru_RU`
  3. Чистим кеш Magento
  4. Конфигурим в админке наш язык на язык по умолчанию для админа, и для фронт части сайта, либо как дополнительный

И видим, как наш сайт преобразился на новый лад, теперь он полностью на русском, ну почти полностью – это как раз таки и проблема. Почему? Ну почему не все переведено – я думаю не сложный вопрос: вы скачали бесплатный языковой пакет, который, скорее всего, делался энтузиастами со всего мира, но возможно не под основную тему, возможно давно и многие фразы уже не актуальны, а многих возможно и нет, или скажем, они прекратили поддержку данного языкового пакета. И, конечно же, кто использует базовую тему Magento на своих интернет магазинах? Я думаю никто. И вы точно-при-точно имеете хорошую сотню, а то и 2, новых фраз, которые принесла ваша новая тема и, конечно же, только на английском языке. Вторая же проблема исходит из первой – «Ок, спасибо тем ребятам, за большую часть перевода, но я в принципе могу и сам остальное перевести, но как?».

Примерный алгоритм:

  1. Подключаемся к вашему удаленному серверу, на котором установлена Magenta, по SSH (первое неудобство)
  2. Находим файлик перевода «ru_RU.csv». Где? Ну, если через композер скачивали его, то в папочке vendor, если как-то сами его ложили, то там куда ложили (второе неудобство)
  3. Открываем его консольным редактором, или скачиваем на рабочую машину дабы отредактировать его каким-нибудь человеческим редактором, Excel к примеру (третье неудобство)
  4. Заливаем файл обратно, в то же место, с перезаписью (четвертое неудобство)
  5. Далее все те же шаги что и в предыдущем алгоритме для инстала, только начинайте уже со второго шага, и не нужно делать последний шаг.

Как видно из алгоритма, неудобных шагов предостаточно. Первое неудобство заключается в том, что вам для этой задачи понадобится специально обученный человек с SSH доступом к данному серверу и вы должны быть уверены, что этот человек ничего там вам не сделает лишнего. Для второго шага мало одних умений в базовом пользовании Linux системой, он должен знать, где искать в Magento данный файл, это как-бы специальные знания, то есть нужен Magento разработчик. И если вы таки имеете в штате таких людей, то не кажется ли вам, что разбазаривание такого дорогого ресурса, как Magento разработчик или системный администратор слишком круто для такой пустяковой задачи как перевод? Неудобства 3 и 4 – просто сами по себе не удобны и требуют базовых знаний в обращении с Linux системой. От шага с деплоем статики мы, к сожалению никак не избавимся, это архитектура Magento.

Как же все исправить?


Я думаю, что не плохим вариантом было бы – иметь возможность изменять и добавлять переводы через админ панель Magento, и этому можно было бы обременить контент менеджера, либо любого человека, который хоть как-то умеет обращаться с компьютерами. И работал хотя-бы с Word/Excel.

Решение


Приведу один из вариант решения данной проблемы, детально о том, как с ним работать, можно, почитать на marketplace.magento.com, но покажу, основную идею, используя скриншоты и слова.

И так, выглядит это чудо примерно вот так:

Language Manager

На картинке видно, что мы имеем список языков в системе, которые тут оказались благодаря оранжевой кнопочке «Add New Language» (кроме «en», он будет у вас по умолчанию, после установки модуля).

А вот так выглядит непосредственно, форма для редактирования словаря для нужного языка:

Language Manager

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

Упрощенный вариант без фильтрации:

Language Manager

Для любого языка вы сможете сгенерировать CSV файл, который сразу разместится в нужное место, с которого в последующем его будет использовать команда деплоя статики Magento. Либо вы можете взять этот файл и подарить или продать кому-нибудь, поделиться с тем же человеком, который вам дал базовую версию данного языкового пакета или просто использовать его в других своих проектах. Так же можно просто сохранить его. Дополнительным удобством, является возможность синхронизировать базовый язык (en_EN). Скажем после очередного обновления до последней версии Magento, в кодовой базе появилась пара тройка новых слов, либо очень много новых слов, если обновление принесло с собой новый модуль. И на этот случай ребята, которые предоставляют бесплатные языковые пакеты для Magento, возможно, не сразу отреагируют и добавят их в свои репозитории, а вы уже имеете возможность, достаточно удобно, дописать нужные переводу, сгенерировать CSV файл и, возможно, поделиться ним с этими же бескорыстными энтузиастами.

Вывод


Magento 2 еще пока имеет большой плацдарм для доработок, пишите новые фичи, дорабатывайте существующие, автоматизируйте рутинные процессы и делитесь ими с другими, пускай даже не бесплатно (ваше потраченное время ведь должно вознаградиться). И последнее – цените свое время, автоматизируйте, то что заставляет вас страдать от уныния.
Метки:
magento, magento 2, magenta, magento ecommerce

Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.