Як перекласти Magento на українську

Сьогодні ми розглянемо таке складне питання, як локалізація Magento, тобто переклад системи на потрібну нам мову. Тема серйозна, тому я постараюся якомога детальніше її висвітлити.

Спочатку трохи теорії:

  • двигун використовує PHP-код виду <?php echo $this__(‘Word’); ?>, де ‘Word’ – це слово (або словосполучення) для перекладу. Іншими словами, щоб зробити переклад, нам потрібно знайти всі такі слова (словосполучення) і перекласти на українську
  • в Мадженто є як статичний (незмінний) вміст, так і динамічний (тобто змінюваний). До статичного вмісту можна віднести файли системи, основні модулі, дефолтну тему та ін. Такий контент практично не змінюється, або змінюється дуже рідко. Статичний зміст найлегше перекладати за допомогою готових локалізацій, які доступні в Magento Connect. Наприклад, ось, українська локалізація Мадженто, яка вже містить готовий переклад основних слів та фраз системи.
  • складніше перекладати динамічний вміст (наприклад, товари та категорії, атрибути, CMS-блоки, модулі сторонніх розробників, віджети, деякі сторінки та ін.). Складніше, тому що такий переклад потрібно робити самому і «руками». Як правило, все це перекладається в адмін панелі сайту.

Тепер перейдемо від теорії до практики.

1. Переклад статичного вмісту

Щоб перекласти статичний вміст встановимо готовий український переклад через Мадженто Коннект. (тут більш детально описано, як це зробити на прикладі встановлення нової теми).



Все встановлення зводиться до того, що ми додаємо в систему нову папку з файлами перекладів. Коли ви зайдете по FTP на свій хостинг за адресою [magento_root]/app/locale/, то ви побачите там нову папку uk_UA з купою файлів у форматі .csv – ці файли і відповідають за переклад системних файлів PHP.

Як це працює?

Якщо ви відкрийте будь-який файл .csv в папці uk_UA через Notepad++ (найкраще), то ви побачите попарні значення в рядку, в лапках і розділені комами, наприклад, “24 Hours”,”24 години”.
Так і працює переклад в Magento: у першій парі лапок міститься системне значення (“24 Hours“), а у другій парі (“24 години“) – його переклад. Ці пари значень розділяються комою без пробілів, і кожна пара з нового рядка.
Системне значення береться з PHP-коду виду <?php echo $this__(‘Word’); ?>, де ‘Word’ – значення для перекладу. Тепер, якщо ми запишемо у відповідному файлі .csv строку “Word”,”Слово” – то цим ми скажемо CMS Мадженто, щоб він знайдені значення ‘Word’ виводив на екран як ‘Слово‘.

Ще не заплуталися? Сподіваюся, що ні!
Йдемо далі і ще трохи теорії:

  • як ви помітили в папці [magento_root]/app/locale/uk_UA/ багато різних файлів з дивними назвами. Відкриємо таємницю! Наприклад, файл Mage_Adminhtml.csv містить переклади файлів, які знаходяться в папці app/code/core/Mage/Adminhtml/ – тобто в системних файлах адмінпанелі. Таким чином, саме ім’я файлу вказує системі, де слід переводити значення. Кожен файл відповідає за певний модуль: Mage_Shipping.csv переводить модуль доставки, Mage_Newsletter.csv – переводить модуль підписки, і так далі.
  • системні значення чутливі до регістру і кількості символів, наприклад ‘Word’ і ‘word ‘ – це різні дані, тому в файлах перекладів перше значення потрібно записувати відповідно (з урахуванням регістру, пробілами, змінними виду %s і т.д.). Друге значення – переклад – ви можете писати на свій розсуд (враховуючи змінні виду %s).
  • після змін у файлах потрібно очищати кеш системи.

 

Спробуйте змінювати значення у файлах перекладів і побачите, як це працює на практиці.

Щоб задіяти файли локалізації перейдіть в адмінпанелі System > Configuration, потім в лівому блоці меню General виберіть вкладку Countries Options. У випадаючому списку Default Country виберіть «Ukraine», а у вкладці Locale Options – Locale виберіть Ukrainian (Ukraine). Збережіть конфігурацію, натиснувши Save Config. Оновіть кеш (в System > Cache Management). Тепер, якщо ви оновите головну сторінку сайту, то побачите, що стали з’являтися українські слова та літери. Але частина контенту залишиться не перекладеною, оскільки є динамічним вмістом (згаданим вище).

 

2. Переклад динамічного вмісту

 

  • Зробіть переклад всіх статичних блоків в адмінці, у пункті верхнього меню CMS > Статичні блоки. До статичних блоків можна віднести деякі посилання в хедері, посилання в футері, віджети, опитування і т.і. Відкривайте кожен блок і, при необхідності, робіть переклад із зазначенням в розділі Store View – Ukrainian.
  • Повторіть цей процес і для статичних сторінок в пункті меню CMS > Pages.
  • Також перекладіть на українську всі категорії (у розділі Catalog > Manage Categories) і товари (у розділі Catalog > Manage Products).
  • Можливо, потрібно буде перекласти і атрибути (у розділі Catalog > Attributes > Manage Attributes). Артибути – це, наприклад, колір товару, вага, наявність і т.д.
  • Деякий динамічний вміст можна перекладати тільки в налаштуваннях сайту, наприклад, текст копірайту в футері, адресу компанії і т.д. У цьому випадку перейдіть в адмінці System > Configuration > General, виберіть у верхньому лівому кутку Current Configuration Scope – Ukrainian і пройдіться по кожній закладці. Там, де потрібен переклад, знімайте галочку з опції Use Website (використовувати загальне значення сайту) і перекладайте текст. Не забувайте зберігати конфігурацію після редагування!

 

Є ще й третій спосіб – переклад через фронт-енд (за допомогою інструменту «Translate Inline»).
Translate Inline, іншими словами «построковий переклад», дозволяє здійснювати переклад прямо в браузері. Коли ви включите інструмент Translate Inline, на сторінці сайту будуть з’являтися іконки книжечок біля слів, які доступні для перекладу. Щоб перевести потрібне слово, натисніть на іконку книжечки і у спливаючому вікні введіть свій варіант перекладу. Оновіть сторінку, щоб побачити новий переклад в дії.

Щоб включити цей інструмент, перейдіть System > Configuration і в самому низу лівого меню виберіть Developer (Засоби розробника). Опція включається в секції Translate Inline (Enabled for Frontend – Yes, Enabled for Admin – Yes).

Особливості такого перекладу:

  • переклади не змінюють файли .csv локалізації
  • всі переклади зберігаються в базі даних (у таблиці shop_core_translate). Врахуйте це, якщо ви плануєте змінювати хостинг, або імпортуєте базу даних (ваші перекази можуть загубитися).
  • построковий переклад не працює для JavaScript і для певних файлів PHP.

 

Ось ми і розібрали складну тему по локалізації Magento на українську мову. Сподіваюся, що вам даний матеріал стане в нагоді.
P.S. Практика показує, що при роботі з Мадженто доводиться використовувати всі 3 розглянуті способи:(

Якщо у вас є питання або зауваження – буду радий відповісти на них у коментарях до даної теми!