From 981edd413acfdd4786faf5439d2a05d6d7e4649e Mon Sep 17 00:00:00 2001 From: Glandos Date: Thu, 7 May 2020 22:56:17 +0200 Subject: Improve currencies (#604) - Rename "No Currency" to ISO4217 "XXX" - Use Babel to render currency symbols and names in currency lists - Improve i18n in bill lists Fix #601 Fix #600 --- ihatemoney/utils.py | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) (limited to 'ihatemoney/utils.py') diff --git a/ihatemoney/utils.py b/ihatemoney/utils.py index 7fdad61..175b762 100644 --- a/ihatemoney/utils.py +++ b/ihatemoney/utils.py @@ -9,8 +9,9 @@ import os import re from babel import Locale +from babel.numbers import get_currency_name, get_currency_symbol from flask import current_app, redirect, render_template -from flask_babel import get_locale +from flask_babel import get_locale, lazy_gettext as _ import jinja2 from werkzeug.routing import HTTPException, RoutingException @@ -281,6 +282,20 @@ class FormEnum(Enum): return str(self.value) +def render_localized_currency(code, detailed=True): + if code == "XXX": + return _("No Currency") + locale = get_locale() or "en_US" + symbol = get_currency_symbol(code, locale=locale) + details = "" + if detailed: + details = f" − {get_currency_name(code, locale=locale)}" + if symbol == code: + return f"{code}{details}" + else: + return f"{code} − {symbol}{details}" + + def render_localized_template(template_name_prefix, **context): """Like render_template(), but selects the right template according to the current user language. Fallback to English if a template for the -- cgit v1.1