Как конвертировать валюту при смене языка в Yii2?

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
hermaeus.seeker
Сообщения: 14
Зарегистрирован: 2022.02.11, 17:42

Как конвертировать валюту при смене языка в Yii2?

Сообщение hermaeus.seeker »

На сайте есть 2 языка: ENG, RU. Допустим, есть заказ с суммой 50.

✖️ При смене языка на ENG — поменяется только символ валюты:
Язык RU => 50₽.
Язык ENG => $50.

☑️ А нужно конвертировать валюту по курсу заданную в настройках, чтобы было так:
Язык RU => 50₽.
Язык ENG => $0.86.

В документации интернационализации, форматтера и нескольких вариаций в запросе Google не нашел никакой информации.

Из идей повесить конвертацию на `afterFind`, но неизвестно к каким побочным эффектам это приведёт. Может кто поделиться опытом?
Аватара пользователя
samdark
Администратор
Сообщения: 9489
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: Как конвертировать валюту при смене языка в Yii2?

Сообщение samdark »

Этого в фреймворке нет. Самим нужно реализовывать.
hermaeus.seeker
Сообщения: 14
Зарегистрирован: 2022.02.11, 17:42

Re: Как конвертировать валюту при смене языка в Yii2?

Сообщение hermaeus.seeker »

Понимаю.

-------
На реализации получился такой подход:
Изображение

В динамике:
https://i.imgur.com/6gu6PTb.png

Аналогичное на JS:
Изображение

Динамика:
Изображение
Аватара пользователя
proctoleha
Сообщения: 298
Зарегистрирован: 2016.07.10, 19:00

Re: Как конвертировать валюту при смене языка в Yii2?

Сообщение proctoleha »

Как говорит уважаемый Дмитрий Елисеев - давайте просто проговорим этот процесс на обычном языке, а уже потом будет воплощать это в коде.

1. Посетитель нажал кнопку смены языка. Это событие. Мы можем повесить на него триггер и как-то это событие обрабатывать. Самое простое, что приходит на ум - где-то в кеше, в сессии, или еще где сохранить примитивный DTO
locale:
language - EN
symbol - $
коэффициент - 0.5
Как будет этот триггер отрабатывать - дело второе. Главное, что на входе ему поступает локаль, отрабатывает какая-то фабрика, и где-то сохраняются данные в том, или ином виде

2. При выводе продуктов на странице в нужной валюте, мы говорим тоже какому-то классу: дай нам стоимость такого-то продукта. Этот класс смотрит: а что у нас по локали в кеше, сессии, или еще где-то? Нет ничего? Записываем локаль по умолчанию, конвертируем цены, отдаем результат.

А вот как реализовать это в коде, зависит от проекта. Может у вас будет другая логика. Но, в любом случае важно разделять сущности.
Вот за что я не люблю линукс, так это за свои кривые, временами, руки
Ответить