34 lines
1 KiB
Python
34 lines
1 KiB
Python
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')
|
|
|