Как перевести Magento на русский

Сегодня мы рассмотрим такой сложный вопрос, как локализация Мадженто, т.е. перевод системы на нужный нам язык. Тема серьезная, поэтому я постараюсь как можно детальнее ее осветить.

Сначала немного теории:

  • движок использует PHP-код вида <?php echo $this__(‘Word’); ?>, где ‘Word’ — это слово (или словосочетание) для перевода. Другими словами, чтобы сделать перевод, нам нужно найти все такие слова (словосочетания) и перевести на русский
  • в Мадженто есть как статическое (неизменяемое) содержимое, так и динамическое (т.е. изменяемое). К статическому содержимому можно отнести файлы системы, основные модули, дефолтную тему и др. Это содержимое практически не меняется, либо меняется очень редко. Статическое содержимое легче всего переводить с помощью готовых локализаций, которые доступны в Мадженто Коннект. Например, вот, русская локализация Мадженто, которая уже содержит готовый перевод основных слов и фраз движка.
  • сложнее переводить динамическое содержимое (например, товары и категории, атрибуты, CMS-блоки, модули сторонних разработчиков, виджеты, некоторые страницы и др.). Сложнее, потому что такой перевод нужно делать самому и «ручками». Как правило, все это переводится в админ панели сайта.

Теперь перейдем от теории к практике.

1. Перевод статического содержимого

Чтобы перевести статическое содержимое установим готовый русский перевод через Мадженто Коннект (здесь более детально описано, как это сделать на примере установки новой темы).



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

Как это работает?

Если вы откройте любой файл .csv в папке ru_RU через Notepad++ (лучше всего), то вы увидите попарные значения в строках, заключенные в кавычки и разделенные запятыми, например, «24 Hours»,»24 часа».
Так и работает перевод в Мадженто: в первой паре кавычек заключено системное значение («24 Hours«), а во второй паре («24 часа«) – его перевод. Эти пары значений разделяются запятой без пробелов, и каждая пара начинается с новой строки.
Системное значение берется с PHP-кода вида <?php echo $this__(‘Word’); ?>, где ‘Word’ – значение для перевода. Теперь, если мы запишем в подходящем файле .csv строку «Word»,»Слово» – то мы скажем движку, чтобы он найденные значения ‘Word’ выводил на экран как ‘Слово‘.

Еще не запутались? Надеюсь, что нет!
Идем дальше и еще немного теории:

  • как вы заметили в папке [magento_root]/app/locale/ru_RU/ много разных файлов со странными названиями. Откроем тайну! Например, файл 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 выберите «Russia», а во вкладке Locale Options – Locale выберите Russian (Russia). Сохраните конфигурацию, нажав Save Config. Обновите кеш (в System > Cache Management). Теперь, если вы обновите главную страниц сайта, то увидите, что стали появляться русские буквы. Но часть контента останется не переведенной, поскольку является динамическим содержимым (упомянутым выше).

 

2. Перевод динамического содержимого

 

  • Переведите все статические блоки в админке, в пункте верхнего меню CMS > Статические блоки. К статическим блокам могут относиться некоторые ссылки в хедере, ссылки в футере, виджеты, опросы и т.д. Открывайте каждый блок и, при необходимости, делайте перевод с указанием в разделе Store View — Russian.
  • Повторите этот процесс и для статических страниц в пункте меню CMS > Pages.
  • Также переведите все категории (в разделе Catalog > Manage Categories) и товары (в разделе Catalog > Manage Products).
  • Возможно, потребуется перевод и атрибутов (в разделе Catalog > Attributes > Manage Attributes). Артибуты – это, например, цвет товара, вес, наличие и т.д.
  • Некоторое динамическое содержимое можно переводить только в настройках сайта, например, текст копирайта в футере, адрес компании и т.д. В этом случае перейдите в админке System > Configuration > General, выберите в верхнем левом углу Current Configuration Scope — Russian и пройдитесь по каждой закладке. Там, где требуется перевод, снимайте галочку с опции Use Website (использовать общее значение сайта) и переводите текст. Не забывайте сохранять конфигурацию после редактирования!

 

Есть еще и 3-й способ – перевод через фронт-энд (с помощью инструмента «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 рассмотренных способа:(

Если у вас есть вопросы или замечания – буду рад ответить на них в комментариях к данной теме!