Pull to refresh

Как бороться с многоязычностью в 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 еще пока имеет большой плацдарм для доработок, пишите новые фичи, дорабатывайте существующие, автоматизируйте рутинные процессы и делитесь ими с другими, пускай даже не бесплатно (ваше потраченное время ведь должно вознаградиться). И последнее – цените свое время, автоматизируйте, то что заставляет вас страдать от уныния.
Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.