salvi/salvi/i18n.py

35 lines
1 KiB
Python
Raw Normal View History

2025-09-05 21:42:18 +02:00
import datetime
from flask import g
import os
from functools import partial
from suou.i18n import JsonI18n
from . import APP_BASE_DIR
i18n = JsonI18n(os.path.join(APP_BASE_DIR, 'i18n'), 'salvi')
def get_string(loc, s) -> str:
return i18n.lang(loc).t(s)
def human_elapsed_time(then: datetime.datetime, lang = None) -> str:
if lang is None: ## XXX make it explicit?
try:
lang = g.lang
except AttributeError:
lang = None ## TODO replace with default lang (?)
delta = datetime.datetime.now() - then
T = partial(get_string, g.lang)
if delta < datetime.timedelta(seconds=60):
return T('just-now')
elif delta < datetime.timedelta(seconds=3600):
return T('n-minutes-ago').format(delta.seconds // 60)
elif delta < datetime.timedelta(days=1):
return T('n-hours-ago').format(delta.seconds // 3600)
elif delta < datetime.timedelta(days=15):
return T('n-days-ago').format(delta.days)
else:
return then.strftime('%B %-d, %Y')