diff options
| author | Baptiste Jonglez <git@bitsofnetworks.org> | 2020-04-26 16:40:35 +0200 |
|---|---|---|
| committer | Glandos <bugs-github@antipoul.fr> | 2020-11-13 21:40:39 +0100 |
| commit | 914482bc76954aef067ac73314a19f415a32c61c (patch) | |
| tree | 794976253205ceedcbb90417e2e5a06b01f1a629 /ihatemoney/run.py | |
| parent | de13945a914b648c2ae6ad9ef0795e83f4c357a9 (diff) | |
| download | ihatemoney-mirror-914482bc76954aef067ac73314a19f415a32c61c.zip ihatemoney-mirror-914482bc76954aef067ac73314a19f415a32c61c.tar.gz ihatemoney-mirror-914482bc76954aef067ac73314a19f415a32c61c.tar.bz2 | |
Use Flask-Babel to localize datetime in the History Page
By formatting datetime on the server, we get nice localized datetime
strings that are adapted to the currently-selected language. Example:
- English: "Apr 26, 2020, 3:58:54 PM"
- French: "26 avr. 2020 à 15:58:54"
- German: "26.04.2020, 15:58:54"
- Spanish: "26 abr. 2020 15:58:54"
- Indonesian: "26 Apr 2020 15.58.54"
- Chinese: "2020年4月26日 下午3:58:54"
However, there is a downside: time is not adapted to the user timezone.
The solution is to define a timezone on the server: we use the server OS
timezone by default, and it can be customized through the
BABEL_DEFAULT_TIMEZONE setting. It's still not ideal, because it assumes
that all users are in the same timezone (the one configured on the server).
Diffstat (limited to 'ihatemoney/run.py')
| -rw-r--r-- | ihatemoney/run.py | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/ihatemoney/run.py b/ihatemoney/run.py index 0f32dfb..1d2a575 100644 --- a/ihatemoney/run.py +++ b/ihatemoney/run.py @@ -2,6 +2,7 @@ import os import os.path import warnings +from babel.dates import LOCALTZ from flask import Flask, g, render_template, request, session from flask_babel import Babel, format_currency from flask_mail import Mail @@ -150,8 +151,10 @@ def create_app( app.jinja_env.globals["locale_from_iso"] = locale_from_iso app.jinja_env.filters["minimal_round"] = minimal_round - # Translations - babel = Babel(app) + # Translations and time zone (used to display dates). The timezone is + # taken from the BABEL_DEFAULT_TIMEZONE settings, and falls back to + # the local timezone of the server OS by using LOCALTZ. + babel = Babel(app, default_timezone=str(LOCALTZ)) # Undocumented currencyformat filter from flask_babel is forwarding to Babel format_currency # We overwrite it to remove the currency sign ¤ when there is no currency |
