OpenCart - как добавить язык перевода отдельному модулю (локализация)
- Категория: Технические советы
- – Автор: Игорь (Администратор)
В рамках данного обзора, я расскажу вам как добавить язык перевода отдельному модулю в OpenCart 1.5, 2.0 - 2.2, 2.3 и 3.0.
После установки модулей, которая порой вызывает проблемы у обычных пользователей, следующей сложностью является их локализация. Возникает немало вопросов. Где хранятся настройки? Если готовые сборки переводов и инструкции по установке отдельных языков можно найти в интернете, то что делать с отдельными модулями? Как правильно добавить язык? Как переводить? Что нужно знать? Требуются ли какие-то сверх умения? И тому подобные.
Об этом всем и пойдет речь далее.
Добавляем модулям локализацию в OpenCart
Первое, что стоит знать читателям, это то, что переводы админки и основных страниц сайта (фронта) находятся в разных местах, однако принцип их очень схож. Поэтому инструкция будет одна, но с уточнением для разных версий OpenCart (1.5, 2.0-2.2, 2.3 и 3.0) и с разделением админки и каталога.
Второе это то, что начиная с версии 3.0 в OpenCart появился редактор языка, но в связи с тем, что в более ранних версиях проблема "ненужного дублирования кода" была весьма актуальной (осталась и в версии 3.0), некоторые авторы прибегали и продолжают прибегать к определенного рода хитростям и упрощениям. Так же отмечу, что данный редактор не позволяет делать ряд вещей, таких как добавление файлов для локализаций или же отдельных кодов.
Поэтому, рекомендуется добавлять переводы для языков по старинке (об этом и пойдет речь далее). Отмечу, что каких-то специфических знаний от читателей не потребуется.
Примечание: Для тех, кому интересно. Вот пример одного из варианта упрощений - OpenCart 2: Упрощаем использование локализации в коде.
Примечание: Стоит знать, что далеко не все модули полностью поддерживают добавление языка. Иногда бывает так, что часть строк "зашита" внутри основных файлов модулей.
Общее устройство локализации в OpenCart
1. Все файлы локализации админки хранятся тут:
admin/language
Все файлы локализации каталога (основного сайта) хранятся тут:
catalog/language
2. Следующий подкаталог это код языка (начиная с версии 2.2 и выше), такой как "ru-ru", или название (вплоть до версии 2.1), такое как "russian". Стоит знать, что именно эти каталоги уже представляют собой отдельные переводы языков. Например, "ru-ru" или "russian" - это русский язык.
Пример каталогов, admin/language/ru-ru или catalog/language/russian.
3. Если вы используете версии 2.3 и выше, то после этих подкаталогов дополнительным модулям необходимо добавлять приставку "extension" (это сделано, чтобы разделить переводы самой системы OpenCart и установленных дополнительных модулей). Если же у вас версия 2.2 и ниже, то этого не требуется.
Например, в OpenCart 2.3 локализации дополнительных модулей в админке хранятся в admin/language/ru-ru/extension, а в OpenCart 2.1 модули каталога хранятся в catalog/language/russian (вперемешку с переводами самой системы).
4. Далее каталоги разбиваются по группам. Например, все переводы обычных модулей, доставки, оплаты и общего подсчета стоимости хранятся отдельно. Обычные модули хранятся в каталоге "module", доставка в "shipping", оплаты в "payment", а общий подсчет в "total".
Например, в OpenCart 3.0 локализация обычного модуля (админской части) может храниться в admin/language/ru-ru/extension/module, а локализация модуля скидки для OpenCart 1.5 (для основного сайта) может храниться в catalog/language/russian/total.
Важно! Если модуль решает несколько задач, то каталогов может быть несколько. Так же может быть так, что админка располагается как обычный модуль, а локализация сайта уже в той части, для которой предназначен модуль. Например, настройка админки хранится в module (в admin), а подсчет скидки основного сайта в total (в catalog).
Совет! Если вы не знаете, где могут хранится файлы, то откройте исходный архив с модулем и найдите соответствующие переводы (каталоги). Посмотрите хотя бы для одного языка.
5. Сами переводы хранятся в отдельных файлах внутри каждого подкаталога. Например, для OpenCart 3.0 в файле /admin/language/ru-ru/extension/total/coupon.php хранятся переводы для административной части с настройками модуля купонов.
Обычно, в любой версии OpenCart название файла локализации должно совпадать с названием основных файлов модуля. Тем не менее, это не является обязательным. Поэтому совет! Если вы не знаете, как могут называться файлы переводов, то так же посмотрите их в исходном архиве с модулем.
6. Если вы откроете отдельный файл, то увидите в нем некий код. Однако, он очень просто устроен и выглядит как множество строк с переводами (одна строка - один перевод):
$_['Название некой константы 1'] = 'Перевод 1';
$_['Название некой константы 2'] = 'Перевод 2';
$_['Название некой константы 3'] = 'Перевод 3';
Рассмотрим формат строки. В левой части расположен некий код, который используется модулями и OpenCart как идентификатор, а в правой части каждого выражения задается конкретный перевод.
Примечание: Иногда, формат может быть немного иным (если авторы применяют хитрости), однако чаще всего они интуитивно понятны, поэтому не вызывают у пользователей особых проблем.
Общая инструкция для локализации отдельного модуля (добавления языка) в OpenCart
1. Откройте каталоги, где хранятся уже имеющиеся файлы с переводами. Например, /admin/language/russian/module.
2. Скопируйте файлы модуля с переводами. Например, /admin/language/russian/module/supermodule.php (supermodule.php - это файл с переводами для модуля supermodule)
3. Откройте каталоги в добавленном языке там, где должны были бы быть файлы с переводами. Например, /admin/language/russian2/module. Обратите внимание, вместо "russian" указан нужный язык "russian2" (для простоты).
4. Скопируйте в соответствующие каталоги соответствующие файлы. Продолжая пример, это файл "supermodule.php" в каталог /admin/language/russian2/module.
5. Откройте для редактирования файлы и задайте в них нужный перевод. Например, замените с
$_['Название некой константы 1'] = 'Перевод 1';
на
$_['Название некой константы 1'] = 'Перевод 1 для добавленного языка';
Теперь, вы знаете как добавить язык для отдельного модуля в OpenCart, а так же некоторые особенности.
☕ Понравился обзор? Поделитесь с друзьями!
Комментарии / отзывы
Встал вопрос с модулем всплывающей корзины, отдельно доставленной. Корзина была на русском и английском языках. Мне нужен был ещё и украинский. Дирректории файла корзины в архиве имели вид: catalog\language\ru-ru\extension\module и
catalog\language\en-gb\extension\module.
После установки модуля на сайт, где уже был добавлен украинский язык, образовалась третья дирректория: catalog\language\uk-ua\extension\module , но в ней не было файла корзины. Скопировала файлик [название_модуля].php из русской версии и перевела на украинский, залила в укр. дирректорию - корзина переведена!
OpenCart 3.0.3.2
Так что спасибо вам большущее за правильно заданный вектор мышления :)