В экосистеме локализации JavaScript-библиотек, включая Globalize, работа с валютами опирается на международный стандарт International Organization for Standardization 4217. Этот стандарт определяет унифицированную систему кодов для представления валют, используемую в финансовых системах, API, банковских приложениях и форматировании денежных значений.
Код валюты в ISO 4217 состоит из трёх символов:
Примеры:
Стандарт дополняется числовым кодом валюты (numeric code), который используется в банковских системах и обеспечивает независимость от алфавита.
ISO 4217 определяет не только буквенный код, но и дополнительные характеристики:
Эти параметры критичны для корректного отображения и округления сумм.
Не все валюты используют одинаковое количество десятичных знаков:
Это различие напрямую влияет на форматирование и арифметику в международных приложениях.
Библиотека Globalize использует данные Unicode CLDR (Common Locale Data Repository), где ISO 4217 коды являются основой для валютного форматирования.
В Globalize валюта обрабатывается через несколько ключевых механизмов:
formatCurrency)parseCurrency)Пример форматирования:
Globalize("en").formatCurrency(1234.56, "USD");
Результат:
$1,234.56
Globalize не хранит валютные данные самостоятельно. Вместо этого он использует CLDR, где ISO 4217 коды связаны с:
Например:
Globalize("ru").formatCurrency(2500, "EUR");
Результат:
2 500,00 €
Globalize("en").parseCurrency("$1,200.50", "USD");
Возвращает числовое значение:
1200.5
Хотя разработчики чаще используют буквенные коды, числовые ISO 4217 коды важны для:
Пример:
ISO 4217 решает проблему неоднозначности символов валют:
Поэтому Globalize всегда опирается на код валюты, а не на символ:
Globalize("en").formatCurrency(100, "CAD");
ISO 4217 код сам по себе не содержит информации о формате отображения, но в связке с CLDR он определяет:
Пример различий:
В JavaScript-приложениях с Globalize код валюты становится ключевым идентификатором:
"USD""EUR"Типичная модель данных:
{
"amount": 1999.99,
"currency": "USD"
}
Отсутствие стандартизированного кода приводит к проблемам:
ISO 4217 устраняет эти проблемы за счёт строгой структуры идентификаторов.
В современных приложениях JavaScript ISO 4217 используется как фундамент:
Globalize обеспечивает высокоуровневый слой, который превращает эти коды в локализованные представления, опираясь на данные International Organization for Standardization и CLDR.