Проект

Общее

Профиль

Улучшение #3886

Створення словника валют та можливістю вибора валюти (дооформити)

Добавил(а) Віталій Андрусяк 11 месяца назад. Обновлено 10 месяца назад.

Статус:
Новая
Приоритет:
Нормальный
Назначена:
-
Версия:
-
Дата начала:
19-05-2023
Дата завершения:
Готовность:

0%

Важность:
100
Сложность:
1
Цель:
Применение:
Время на тест:

Описание

Дивлячись на інтеграцію азербайджанської валюти в додатку, виникла ідея.

Оскільки рано чи пізно, нам доведеться брати валюту з білінга (бо хардкодити його в додатку така собі ідея), а оскільки параметр MONEY_UNIT_NAMES не виконує всіх задач які нам потрібно, а CURRENCY_ICON не підходить, то хорошою ідеєю було б:
1) Мати внутрішній словник валют
2) Мати інтернаціоналізацію валют
3) Надавати клієнту можливість дуже легко обирати валюти і не думати як воно і що

Враховуючи, як це реалізовано в додатку, наприклад: {
"currencies": {
"UAH": {
"symbol": "₴",
"short": "грн",
"wallet": {
"0": "гривня",
"1": "гривні",
"2": "гривень"
}
}
}
}

І потім обирається суто конфігурація currency: "UAH", і все, вся потрібна інформація обирається і підсвічується в додатку.

Що правда, треба доробити ще з вибором копійок та класу валюти для фронтенду приклад на JSON: {
"currencies": {
"UAH": {
"symbol": "₴",
"iconClass: "fas fa-hryvnia",
"short": "грн",
"shortSubunit": "коп",
"units": {
"0": "гривня",
"1": "гривні",
"2": "гривень"
},
"subunits": {
"0": "копійка",
"1": "копійки",
"2": "копійок"
}
}
}
}

Нагадую про те, що це тільки приклад, і потрібно придумати ще доопрацювати цю ідею +інтернаціоналізація.

І тому, для виконання задачі потрібно:
1) Створити словничок мов з заданими вище параметрами
2) Створити інтернаціоналізацію валют (українська, російська, англійська)
3) Створити опцію для вибору валюти суто кодом ISO 4217
4) Інтегрувати її в місцях використання опцій $conf{MONEY_UNIT_NAMES}, $conf{CURRENCY_ICON}

Також в рамках цього завдання потрібно зробити словник для валют:
- українська гривня (UAH)
- долар США (USD)
- євро (EUR)
- азербайджанський манат (AZN)
- узбекський сум (UZS)
- вірменський драм (AMD)

Технічне зауваження:
Через реліз - дропнути конфігурацію $conf{MONEY_UNIT_NAMES} та $conf{CURRENCY_ICON}

Очікуваний юзкейс:
Клієнт обирає умовну конфігурацію $conf{CURRENCY} = "UAH";, і повсюди в системі, залежачи від юзкейсу, пише валюту, значок валюти, скорочена та довгі plural форми.

Технічну реалізацію потрібно ще доопрацювати та дооформити.

История

#1 Обновлено Віталій Андрусяк 11 месяца назад

Оскільки в мене немає права редактувати, то ще для словника потрібно:
- киргизький сом (KGS)

#2 Обновлено Віталій Андрусяк 11 месяца назад

На рахунок інтераціоналізації, можливо варто зробити так:

Створити файл currencies.json, в якому відповідно зробити так, на прикладі UAH:

{
  "UAH": {
    "symbol": "₴",
    "iconClass": "fas fa-hryvnia",
    "langs": {
      "UK": {
        "short": "грн",
        "shortSubunit": "коп",
        "units": {
          "0": "гривня",
          "1": "гривні",
          "2": "гривень" 
        },
        "subunits": {
          "0": "копійка",
          "1": "копійки",
          "2": "копійок" 
        },
      },
      "EN": {
        "short": "grn",
        "shortSubunit": "kop",
        "units": {
          "0": "hryvna",
          "1": "hryvnas",
          "2": "hryvnas" 
        },
        "subunits": {
          "0": "kopiyka",
          "1": "kopecks",
          "2": "kopecks" 
        },
      }
    }
  }
}

Тобто, для мови створити об'єкт з ключами лянгів.

Відповідно, всі дані затягуються і вирішені.

#3 Обновлено Віталій Андрусяк 10 месяца назад

Через 2 місяці, перечитуючи даний тікет - думаю, що описано досить нормально, і очікувана реалізація досить нормальна.
Можливо, можна поставити в Перл через ключі лянга, але сумнівно, бо це створить більше плутанини. А може й ні.

Экспортировать в Atom PDF