Налаштування мультиязичності та мультивалютності Magento 2
Magento 2 забезпечує повнофункціональну архітектуру для управління кількома мовами та валютами в рамках однієї інсталяції. Правильне налаштування вимагає розуміння ієрархії Global → Website → Store → Store View та того, як кожний рівень впливає на каталог, ціни та транзакції.
Ієрархія Store View та локалізація
Кожна Store View в Magento 2 відповідає одній локалі. Базова структура для мультимовного магазину:
- Website — домен або група доменів (example.com)
- Store — корінна категорія каталогу
-
Store View — мова:
en_US,de_DE,ru_RU
Створення Store View через CLI:
bin/magento store:website:create --code=eu --name="Europe" --sort-order=10
bin/magento store:group:create --website-id=2 --name="EU Store" --root-category-id=2
bin/magento store:store:create --name="German" --code=de --website-id=2 --group-id=2 --locale=de_DE --sort-order=10
Після створення Store View необхідно встановити мовні пакети. Magento використовує i18n CSV-файли, Composer-пакети для основних мов публікуються в репозиторії magento/language-*:
composer require magento/language-de_de
composer require magento/language-ru_ru
bin/magento setup:upgrade
bin/magento setup:static-content:deploy de_DE ru_RU en_US -f
Конфігурація мультивалютності
Magento 2 працює з базовою валютою (Base Currency) та відображаємими валютами (Display Currencies). Курси оновлюються через провайдерів: вбудований Webservicex застарів, рекомендуються fixer.io або currencyconverterapi.com.
Налаштування через app/etc/config.php або Admin Panel:
<!-- app/etc/env.php — не зберігайте API ключі в VCS -->
'currency' => [
'options' => [
'base' => 'EUR',
'default' => 'EUR',
'allow' => 'EUR,USD,GBP,PLN,RUB'
]
]
Налаштування провайдера курсів через core_config_data:
INSERT INTO core_config_data (scope, scope_id, path, value) VALUES
('default', 0, 'currency/import/service', 'Magento_CurrencySymbol/service/fixerio'),
('default', 0, 'currency/import/api_key', 'YOUR_FIXER_KEY'),
('default', 0, 'currency/import/time', '00:00:00');
Автоматичне оновлення курсів через cron:
<!-- etc/crontab.xml -->
<group id="default">
<job name="currency_rates_update" instance="Magento\CurrencySymbol\Model\System\Currencysymbol" method="scheduledUpdateCurrencyRates">
<schedule>0 */6 * * *</schedule>
</job>
</group>
Переводи контенту: товари та категорії
Атрибути товарів переводяться на рівні Store View. Для масового перекладу використовується механізм імпорту з указанням store_view_code:
sku,store_view_code,name,description,short_description
product-001,de,Produkt Eins,"Vollständige Beschreibung","Kurze Beschreibung"
product-001,ru,Продукт Один,"Полное описание","Краткое описание"
Імпорт через CLI:
bin/magento import:run --entity=catalog_product --behavior=update \
--validation-strategy=validation-stop-on-errors \
--allowed-error-count=0 \
--input-file=var/import/products_de.csv \
--import-dir=var/import
URL-структура та hreflang
Для SEO критично правильно налаштувати URL-структуру. Magento 2 підтримує два підходи:
| Підхід | Приклад | Конфігурація |
|---|---|---|
| Поддомен | de.example.com |
Окремий Website |
| Підпапка | example.com/de/ |
Store View з Base URL |
| GET-параметр | example.com?___store=de |
Не рекомендується |
Налаштування hreflang через XML layout:
<!-- view/frontend/layout/default_head_blocks.xml -->
<page>
<head>
<block class="Vendor\Module\Block\Hreflang" name="hreflang" template="Vendor_Module::hreflang.phtml"/>
</head>
</page>
Ценообразование за Store View та Website
Ціни в Magento 2 задаються на рівні Website. Для різних цін за регіонами використовуються catalog_product_entity_decimal записи з привязкою до website_id. Специфічне ценообразование реалізується через Tier Prices та Customer Group Prices:
// Програмне встановлення ціни для website
$product->setPrice(99.99);
$product->setWebsiteIds([1, 2]);
$product->setData('price', 89.99); // перезапис для scope
// Через repository з урахуванням scope
$this->productRepository->save($product, true); // saveOptions = true
Податки та відображення цін: налаштуйте Tax Zones за країнами та привяжіть до Customer Groups. Для ЄС обов'язкова підтримка інклюзивних/екскльюзивних цін з ПДВ — конфігурація в Stores → Configuration → Tax → Price Display Settings.
Типові терміни впровадження
- Базова конфігурація 2 мов + 2 валют: 2–3 дні
- Переклад каталогу (1000–5000 SKU): 3–5 днів (включаючи валідацію імпорту)
- SEO-конфігурація з hreflang та canonical: 1–2 дні
- Налаштування автоматичного оновлення курсів + моніторинг: 1 день







