You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
[Bug] Cart toast-нотификации игнорируют локаль страницы: api.php всегда initialize('web') #541
Тосты при добавлении/удалении товара из корзины (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 всегда делает:
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.
Activity
fix(web): harden page ctx switch and unify cart draft context (#541)
fix(web): локаль toast корзины через ctx страницы (#541) (#542)
chore: sync beta with upstream modx-pro/MiniShop3 (#1)