From 449f1d5765ffffcf2c708f4ccf6278e9c79081d0 Mon Sep 17 00:00:00 2001 From: Christian Grothoff Date: Sun, 11 Oct 2020 15:40:39 +0200 Subject: improve i18n for survey --- talermerchantdemos/httpcommon/__init__.py | 28 ++++++++++++++++++++-------- 1 file changed, 20 insertions(+), 8 deletions(-) (limited to 'talermerchantdemos/httpcommon') diff --git a/talermerchantdemos/httpcommon/__init__.py b/talermerchantdemos/httpcommon/__init__.py index d07fe69..650228d 100644 --- a/talermerchantdemos/httpcommon/__init__.py +++ b/talermerchantdemos/httpcommon/__init__.py @@ -4,7 +4,7 @@ from urllib.parse import urljoin from flask import request from datetime import datetime import time - +from flask_babel import gettext ## # Return a error response to the client. @@ -32,19 +32,19 @@ def backend_post(backend_url, endpoint, json): final_url, json=json, headers=headers ) except requests.ConnectionError: - err_abort(500, message="Could not establish connection to backend") + err_abort(500, message=gettext("Could not establish connection to backend")) try: response_json = resp.json() except ValueError: err_abort( 500, - message="Could not parse response from backend", + message=gettext("Could not parse response from backend"), status_code=resp.status_code ) if resp.status_code != 200: err_abort( 500, - message="Backend returned error status", + message=gettext("Backend returned error status"), json=response_json, status_code=resp.status_code ) @@ -68,21 +68,29 @@ def backend_get(backend_url, endpoint, params): final_url, params=params, headers=headers ) except requests.ConnectionError: - err_abort(500, message="Could not establish connection to backend") + err_abort(500, message=gettext("Could not establish connection to backend")) try: response_json = resp.json() except ValueError: - err_abort(500, message="Could not parse response from backend") + err_abort(500, message=gettext("Could not parse response from backend")) if resp.status_code != 200: err_abort( 500, - message="Backend returned error status", + message=gettext("Backend returned error status"), json=response_json, status_code=resp.status_code ) print("Backend responds to {}: {}".format(final_url, str(response_json))) return response_json +def get_locale(): + parts = request.path.split('/', 2) + if (2 >= len(parts)): + # Totally unexpected path format, do not localize + return "en" + lang = parts[1] + return lang + ## # Helper function used inside Jinja2 logic to create a links # to the current page but in a different language. Used to @@ -107,7 +115,11 @@ def self_localized(lang): # @param abort_status_code status code to return along the response. # @param params _kw_ arguments to passed verbatim to the templating engine. def err_abort(abort_status_code, **params): - t = flask.render_template("templates/error.html.j2", **params) + t = flask.render_template( + "templates/error.html.j2", + lang=get_locale(), + **params + ) flask.abort(flask.make_response(t, abort_status_code)) -- cgit v1.2.3