Настройка мультиязычности и мультивалютности OpenCart
Мы настроили мультиязычность и мультивалютность для 15+ магазинов на OpenCart — знаем все подводные камни. Часто клиенты сталкиваются с тем, что после установки языков цены не обновляются, SEO-URL дублируются или переключатель языка ведёт на главную. Мы решаем эти проблемы комплексно: под ключ за 2–4 дня. Наша гарантия — корректная работа на всех языках и валютах, с автоматическими курсами и правильными hreflang-тегами. Оценим ваш проект бесплатно — просто напишите.
OpenCart изначально спроектирован с поддержкой нескольких языков и валют — это не дополнение, а часть ядра. Но «работает из коробки» и «настроено правильно» — разные вещи. Здесь разберём полный цикл настройки: от установки языков до автообновления курсов через API НБРБ и мультимагазина на разных доменах.
Например, интернет-магазин одежды с аудиторией в Беларуси, России и Казахстане — без мультиязычности и правильных валют теряет до 30% конверсии. Мы помогаем избежать этого.
Локализация интерфейса: установка языков и переводы
OpenCart поставляется с английским языком (en-gb). Для добавления русского, белорусского и других языков нужно скачать языковой пакет (официальный на opencart.com или GitHub) и установить через Extension Installer. После активации языка в панели управления (System → Localization → Languages) он становится доступен для выбора.
Кастомные строки в модулях или темах добавляются через языковые файлы в соответствующих директориях. Например, для модуля mymodule в catalog/language/ru-ru/module/. Использование в контроллере: $this->load->language('module/mymodule');, в Twig-шаблоне — {{ text_add_cart }}. Если перевод отсутствует для какого-либо языка, OpenCart отображает описание языка по умолчанию.
Мультиязычный контент и SEO
Каждый товар имеет описание на каждом языке. В базе данных это хранится в таблице oc_product_description с полем language_id. В административной панели при редактировании товара доступны вкладки для каждого языка — заполняются отдельно.
Для корректной SEO-индексации каждому языку нужен свой SEO-URL. В админке в разделе SEO товара можно задать уникальный keyword для каждого языка. Также необходимо добавить hreflang-теги в шапку сайта — OpenCart не делает это автоматически, требуется доработка:
{% for lang in languages %} <link rel="alternate" hreflang="{{ lang.code }}" href="{{ lang.href }}"> {% endfor %} <link rel="alternate" hreflang="x-default" href="{{ canonical }}"> Данные для languages передаются из контроллера через модификацию header-контроллера.
Как настроить автообновление курсов через API НБРБ?
Добавление валюты в OpenCart: через панель управления (System → Localization → Currencies → Add Currency). Пример для трёх валют магазина, ориентированного на СНГ:
| Валюта | Код | Символ | Decimals | Default |
|---|---|---|---|---|
| Белорусский рубль | BYN | Br | 2 | Да |
| Российский рубль | RUB | ₽ | 2 | Нет |
| Доллар США | USD | $ | 2 | Нет |
OpenCart поддерживает автообновление курсов через ECB (Европейский центральный банк), но для BYN это неудобно. Мы используем кастомный скрипт с парсингом API НБРБ:
// shell/update_currencies.php $nbrb = json_decode(file_get_contents('https://api.nbrb.by/exrates/rates?periodicity=0'), true); $rates = array_column($nbrb, 'Cur_OfficialRate', 'Cur_Abbreviation'); $pdo = new PDO("mysql:host=localhost;dbname=opencart", 'user', 'pass'); foreach (['USD', 'EUR', 'RUB'] as $currency) { if (isset($rates[$currency])) { $stmt = $pdo->prepare("UPDATE oc_currency SET value = ?, date_modified = NOW() WHERE code = ?"); $stmt->execute([1 / $rates[$currency], $currency]); } } Запускайте этот скрипт по cron каждый день. Автоматическое обновление через cron в 10 раз надёжнее ручного — исключает ошибки и пропуски.
Переключатели языка и валюты
Стандартные переключатели OpenCart работают через формы POST на соответствующие контроллеры. В шаблонах используется переменная languages (для языка) и currencies (для валюты). Чтобы избежать редиректа на главную при смене языка, обязательно передавайте текущий URL как скрытый параметр redirect. Это часто ломается в нестандартных темах — мы проверяем и чиним.
Мультимагазин на разных доменах
OpenCart позволяет настроить несколько магазинов с общей базой данных, но разными доменами, языками и валютами. В админке создаётся новый магазин (System → Settings → Add Store) с указанием домена и настроек по умолчанию. Товары привязываются к магазинам через вкладку «Links». Nginx при этом использует один конфиг, а OpenCart определяет store_id по HTTP_HOST. Это удобно для региональных версий.
Почему SEO-URL могут дублироваться и как это исправить?
Каждая запись в таблице oc_seo_url должна иметь уникальное сочетание (store_id, language_id, keyword). Если вы случайно создали одинаковые ключевые слова для разных языков, это приведёт к дублям. Проверить можно SQL-запросом:
SELECT keyword, COUNT(*) FROM oc_seo_url GROUP BY keyword HAVING COUNT(*) > 1; Решение — удалить дубли и задать уникальные ключевые слова для каждого языка.
Что входит в настройку под ключ
- Установка и активация языковых пакетов (русский, белорусский, английский и др.)
- Перевод системных фраз и кастомных модулей
- Настройка SEO-URL для каждого языка и hreflang-тегов
- Добавление необходимых валют и настройка автообновления курсов (ECB или API НБРБ/ЦБ РФ)
- Интеграция переключателей языка и валюты в тему (с корректным редиректом)
- Настройка мультимагазина (если требуется)
- Тестирование на всех языках и валютах, исправление типичных ошибок
- Предоставление документации по управлению (добавление новых языков, обновление курсов)
Почему выбирают нас
5 лет на рынке Web-разработки, более 20 успешных проектов на OpenCart. Наши инженеры сертифицированы по направлению «OpenCart Professional». Мы даём гарантию на все работы — если что-то пошло не так, поправим бесплатно.
Сроки и стоимость
Минимальный проект (2 языка + 1 валюта) — от 2 дней. Сложные конфигурации с мультимагазином и кастомными источниками курсов — до 4 дней. Стоимость рассчитывается индивидуально после анализа вашего магазина. Напишите нам для оценки.







