--- a/service.py Sat Jun 10 22:30:55 2017 +0300 +++ b/service.py Sun Jun 11 01:28:25 2017 +0300 @@ -11,7 +11,19 @@ app = Flask(__name__) # Varmista ettei järjestelmän kieliasetukset sotke muotoiluja -locale.setlocale(locale.LC_ALL, locale.getdefaultlocale()) +def reset_locale(): + locale.setlocale(locale.LC_ALL, locale.getdefaultlocale()) + +def activate_locale(language = None): + language = language or language_for_page() + class result: + def __enter__(self): + locale.setlocale(locale.LC_ALL, tr('locale', 'other', language = language)) + def __exit__(self, *args): + reset_locale() + return result() + +reset_locale() # Lataa käännökset class Translator: @@ -77,9 +89,25 @@ linkki_karttaan = pysäkki.sijainti.link_to_map, alue = pysäkki.alue, sijainti = pysäkki.sijainti, - cluster = pysäkki.cluster.name, + cluster = pysäkki.cluster.name if len(pysäkki.cluster.stops) > 1 else None, + tr = tr, ) +def time_representation(aika, suhteellinen = True): + erotus = aika - nyt() + if suhteellinen and erotus < timedelta(minutes = 1): + return tr('right-now', 'misc-text') + elif suhteellinen and erotus < timedelta(minutes = 10): + return '%dm' % round(erotus.seconds / 60) + elif aika.date() == tänään(): + return '%d:%02d' % (aika.hour, aika.minute) + elif erotus < timedelta(7): + with activate_locale(): + return aika.strftime('%-a %H:%M') + else: + with activate_locale(): + return aika.strftime('%-d.%-m. %H:%M') + @app.route('/pysäkkiryhmä/<cluster_name>') def cluster_schedule(cluster_name): from buses import pysäkit, clusters_by_name @@ -110,7 +138,8 @@ 'name': tr(stop.nimi, 'pysäkit'), } for stop in cluster.stops), key = lambda stop: (len(stop['id']), stop['id']) - ) + ), + tr = tr, ) @app.route('/ajovuoro/<numero>') @@ -145,13 +174,14 @@ kyltti = supista_reitti([k['alue'] for k in suppea_reitti], kokonainen = True) sivu = suppea and 'ajovuoro-suppea.html' or 'ajovuoro.html' return render_template(sivu, - reitti = reitti, - suppea_reitti = suppea_reitti, - numero = numero, - linja = ajovuoro.linja.viite, - selite = ' - '.join(tr(paikka, 'paikat') for paikka in kyltti), - yö = time_representation(datetime.combine(tänään(), time()) + ajovuoro.reitti[-1].saapumisaika), - ) + reitti = reitti, + suppea_reitti = suppea_reitti, + numero = numero, + linja = ajovuoro.linja.viite, + selite = ' - '.join(tr(paikka, 'paikat') for paikka in kyltti), + yö = is_night_time(datetime.combine(tänään(), time()) + ajovuoro.reitti[-1].saapumisaika), + tr = tr, + ) @app.route('/static/<path:path>') def static_file(path):