From 53349ef31f9319ad85b74d86d1377e84885aee28 Mon Sep 17 00:00:00 2001 From: pacamara Date: Tue, 15 May 2018 00:04:02 +0100 Subject: [PATCH] Fixes #4099: Localize currency according to selected currency Signed-off-by: Julien Eluard --- src/status_im/i18n.cljs | 72 ++++++++++++++++++++++ src/status_im/ui/screens/wallet/subs.cljs | 12 ++-- src/status_im/ui/screens/wallet/views.cljs | 2 +- 3 files changed, 81 insertions(+), 5 deletions(-) diff --git a/src/status_im/i18n.cljs b/src/status_im/i18n.cljs index 16b63cae00..4abe8f914f 100644 --- a/src/status_im/i18n.cljs +++ b/src/status_im/i18n.cljs @@ -387,3 +387,75 @@ (or (translation locale) (translation (subs locale 0 2)) fallback))) + +(defn format-currency [value currency-code] + (.addTier2Support goog.i18n.currency) + + (def currency-code-to-nfs-map + {"ZAR" (.-NumberFormatSymbols_af goog.i18n) + "ETB" (.-NumberFormatSymbols_am goog.i18n) + "EGP" (.-NumberFormatSymbols_ar goog.i18n) + "DZD" (.-NumberFormatSymbols_ar_DZ goog.i18n) + "AZN" (.-NumberFormatSymbols_az goog.i18n) + "BYN" (.-NumberFormatSymbols_be goog.i18n) + "BGN" (.-NumberFormatSymbols_bg goog.i18n) + "BDT" (.-NumberFormatSymbols_bn goog.i18n) + "EUR" (.-NumberFormatSymbols_br goog.i18n) + "BAM" (.-NumberFormatSymbols_bs goog.i18n) + "USD" (.-NumberFormatSymbols_en goog.i18n) + "CZK" (.-NumberFormatSymbols_cs goog.i18n) + "GBP" (.-NumberFormatSymbols_cy goog.i18n) + "DKK" (.-NumberFormatSymbols_da goog.i18n) + "CHF" (.-NumberFormatSymbols_de_CH goog.i18n) + "AUD" (.-NumberFormatSymbols_en_AU goog.i18n) + "CAD" (.-NumberFormatSymbols_en_CA goog.i18n) + "INR" (.-NumberFormatSymbols_en_IN goog.i18n) + "SGD" (.-NumberFormatSymbols_en_SG goog.i18n) + "MXN" (.-NumberFormatSymbols_es_419 goog.i18n) + "IRR" (.-NumberFormatSymbols_fa goog.i18n) + "PHP" (.-NumberFormatSymbols_fil goog.i18n) + "ILS" (.-NumberFormatSymbols_he goog.i18n) + "HRK" (.-NumberFormatSymbols_hr goog.i18n) + "HUF" (.-NumberFormatSymbols_hu goog.i18n) + "AMD" (.-NumberFormatSymbols_hy goog.i18n) + "IDR" (.-NumberFormatSymbols_id goog.i18n) + "ISK" (.-NumberFormatSymbols_is goog.i18n) + "JPY" (.-NumberFormatSymbols_ja goog.i18n) + "GEL" (.-NumberFormatSymbols_ka goog.i18n) + "KZT" (.-NumberFormatSymbols_kk goog.i18n) + "KHR" (.-NumberFormatSymbols_km goog.i18n) + "KRW" (.-NumberFormatSymbols_ko goog.i18n) + "KGS" (.-NumberFormatSymbols_ky goog.i18n) + "CDF" (.-NumberFormatSymbols_ln goog.i18n) + "LAK" (.-NumberFormatSymbols_lo goog.i18n) + "MKD" (.-NumberFormatSymbols_mk goog.i18n) + "MNT" (.-NumberFormatSymbols_mn goog.i18n) + "MDL" (.-NumberFormatSymbols_mo goog.i18n) + "MYR" (.-NumberFormatSymbols_ms goog.i18n) + "MMK" (.-NumberFormatSymbols_my goog.i18n) + "NOK" (.-NumberFormatSymbols_nb goog.i18n) + "NPR" (.-NumberFormatSymbols_ne goog.i18n) + "PLN" (.-NumberFormatSymbols_pl goog.i18n) + "BRL" (.-NumberFormatSymbols_pt goog.i18n) + "RON" (.-NumberFormatSymbols_ro goog.i18n) + "RUB" (.-NumberFormatSymbols_ru goog.i18n) + "RSD" (.-NumberFormatSymbols_sh goog.i18n) + "LKR" (.-NumberFormatSymbols_si goog.i18n) + "ALL" (.-NumberFormatSymbols_sq goog.i18n) + "SEK" (.-NumberFormatSymbols_sv goog.i18n) + "TZS" (.-NumberFormatSymbols_sw goog.i18n) + "THB" (.-NumberFormatSymbols_th goog.i18n) + "TRY" (.-NumberFormatSymbols_tr goog.i18n) + "UAH" (.-NumberFormatSymbols_uk goog.i18n) + "PKR" (.-NumberFormatSymbols_ur goog.i18n) + "UZS" (.-NumberFormatSymbols_uz goog.i18n) + "VND" (.-NumberFormatSymbols_vi goog.i18n) + "CNY" (.-NumberFormatSymbols_zh goog.i18n) + "HKD" (.-NumberFormatSymbols_zh_HK goog.i18n) + "TWD" (.-NumberFormatSymbols_zh_TW goog.i18n)}) + + (def custom-nfs (currency-code-to-nfs-map currency-code)) + (set! (.-NumberFormatSymbols goog.i18n) (if custom-nfs custom-nfs (.-NumberFormatSymbols_en goog.i18n))) + (.format + (new goog.i18n.NumberFormat (.-CURRENCY goog.i18n.NumberFormat.Format) currency-code) + value)) diff --git a/src/status_im/ui/screens/wallet/subs.cljs b/src/status_im/ui/screens/wallet/subs.cljs index d8ff5a7ece..142491a556 100644 --- a/src/status_im/ui/screens/wallet/subs.cljs +++ b/src/status_im/ui/screens/wallet/subs.cljs @@ -1,6 +1,7 @@ (ns status-im.ui.screens.wallet.subs (:require [re-frame.core :as re-frame] [status-im.constants :as constants] + [status-im.i18n :as i18n] [status-im.utils.ethereum.core :as ethereum] [status-im.utils.ethereum.tokens :as tokens] [status-im.utils.money :as money])) @@ -31,13 +32,15 @@ (re-frame/reg-sub :asset-value (fn [[_ fsym tsym]] [(re-frame/subscribe [:balance]) - (re-frame/subscribe [:price fsym tsym])]) - (fn [[balance price] [_ fsym tsym]] + (re-frame/subscribe [:price fsym tsym]) + (re-frame/subscribe [:wallet/currency])]) + (fn [[balance price currency] [_ fsym tsym]] (when (and balance price) (-> (money/wei->ether (get balance fsym)) (money/eth->fiat price) (money/with-precision 2) - str)))) + str + (i18n/format-currency (:code currency)))))) (defn- get-balance-total-value [balance prices currency] (->> balance @@ -61,7 +64,8 @@ (-> currency :code keyword)))] (-> balance-total-value (money/with-precision 2) - str)) + str + (i18n/format-currency (:code currency)))) "..."))) (re-frame/reg-sub :prices-loading? diff --git a/src/status_im/ui/screens/wallet/views.cljs b/src/status_im/ui/screens/wallet/views.cljs index 4a5711de5d..4f59a4fdff 100644 --- a/src/status_im/ui/screens/wallet/views.cljs +++ b/src/status_im/ui/screens/wallet/views.cljs @@ -68,7 +68,7 @@ [react/text {:style styles/asset-item-price :uppercase? true :number-of-lines 1} - (if @asset-value (str (:symbol currency) @asset-value) "...")]]]))) + (if @asset-value @asset-value "...")]]]))) (defn- asset-section [assets currency] [react/view styles/asset-section