Описание проблемы
Тосты при добавлении/удалении товара из корзины (response.message → iziToast) приходят на языке cultureKey контекста web, даже когда страница открыта в другом контексте с другим cultureKey (Babel / мультиязычность).
UI на странице (чанки, кнопки, {'…'|lexicon}) уже на нужной локали. Ломается только серверный текст в JSON Cart API.
Шаги воспроизведения
- Сайт с минимум двумя фронтовыми контекстами, у которых разный
cultureKey (например web = ru, en = en).
- Открыть каталог в не-
web контексте. Убедиться, что кнопки/лейблы корзины на языке этого контекста.
- Добавить или удалить товар.
- Посмотреть toast и Network →
api.php?route=/api/v1/cart/add (или remove) → поле message.
Ожидаемое поведение
message в ответе Cart API и toast используют cultureKey контекста текущей страницы (тот же, что уже в ms3Config.ctx после registerFrontend).
Фактическое поведение
assets/components/minishop3/api.php всегда делает:
$modx->initialize('web');
$ms3->initialize('web');
Utils::success() / error() переводят ключи (ms3_cart_add_success, ms3_cart_remove_success, …) через $modx->lexicon() в локали web. Фронт (ms3Message) строку не переводит — только показывает response.message.
ApiClient не передаёт контекст/культуру страницы в запрос.
Скриншоты
На странице с «правильной» локалью toast всё равно на языке web (часто ru): «Товар успешно добавлен в корзину…» / «Товар успешно удалён из корзины».
Окружение
- MiniShop3: current
beta / mainline
- MODX: 3.x
- PHP: 8.2+
- Браузер: любой (баг на сервере)
Логи ошибок
Логи из core/cache/logs/error.log
Не применимо — ошибки в error.log нет. Симптом в JSON message.
Дополнительный контекст
Ключи лексикона: topic minishop3:cart — ms3_cart_add_success, ms3_cart_remove_success, ms3_cart_change_success, ms3_cart_clean_success и связанные err-ключи.
Направление фикса (черновик):
- Пробрасывать в API контекст страницы из
ms3Config.ctx (query/header/body — выбрать один контракт).
- В
api.php (и/или middleware Web API) инициализировать $modx / $ms3 этим контекстом вместо хардкода web, с безопасным fallback на web.
- Убедиться, что
lexicon->load('minishop3:cart') и $modx->lexicon(...) идут уже после смены контекста/cultureKey.
- Не ломать корзину при
ms3_cart_context и draft context.
Временный обход: править переводы topic cart для cultureKey контекста web, либо выровнять cultureKey у web (не подходит для Babel).
Связано по смыслу с multi-app / shared frontend config, но это отдельный баг локали Web API, не #538/#539.
Описание проблемы
Тосты при добавлении/удалении товара из корзины (
response.message→ iziToast) приходят на языкеcultureKeyконтекстаweb, даже когда страница открыта в другом контексте с другимcultureKey(Babel / мультиязычность).UI на странице (чанки, кнопки,
{'…'|lexicon}) уже на нужной локали. Ломается только серверный текст в JSON Cart API.Шаги воспроизведения
cultureKey(напримерweb=ru,en=en).webконтексте. Убедиться, что кнопки/лейблы корзины на языке этого контекста.api.php?route=/api/v1/cart/add(илиremove) → полеmessage.Ожидаемое поведение
messageв ответе Cart API и toast используютcultureKeyконтекста текущей страницы (тот же, что уже вms3Config.ctxпослеregisterFrontend).Фактическое поведение
assets/components/minishop3/api.phpвсегда делает:Utils::success()/error()переводят ключи (ms3_cart_add_success,ms3_cart_remove_success, …) через$modx->lexicon()в локалиweb. Фронт (ms3Message) строку не переводит — только показываетresponse.message.ApiClient не передаёт контекст/культуру страницы в запрос.
Скриншоты
На странице с «правильной» локалью toast всё равно на языке
web(часто ru): «Товар успешно добавлен в корзину…» / «Товар успешно удалён из корзины».Окружение
beta/ mainlineЛоги ошибок
Логи из core/cache/logs/error.log
Дополнительный контекст
Ключи лексикона: topic
minishop3:cart—ms3_cart_add_success,ms3_cart_remove_success,ms3_cart_change_success,ms3_cart_clean_successи связанные err-ключи.Направление фикса (черновик):
ms3Config.ctx(query/header/body — выбрать один контракт).api.php(и/или middleware Web API) инициализировать$modx/$ms3этим контекстом вместо хардкодаweb, с безопасным fallback наweb.lexicon->load('minishop3:cart')и$modx->lexicon(...)идут уже после смены контекста/cultureKey.ms3_cart_contextи draftcontext.Временный обход: править переводы topic
cartдляcultureKeyконтекстаweb, либо выровнятьcultureKeyуweb(не подходит для Babel).Связано по смыслу с multi-app / shared frontend config, но это отдельный баг локали Web API, не #538/#539.