gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[taler-taler-merchant-demos] 02/02: i18n


From: gnunet
Subject: [taler-taler-merchant-demos] 02/02: i18n
Date: Wed, 02 Nov 2022 11:21:07 +0100

This is an automated email from the git hooks/post-receive script.

ms pushed a commit to branch master
in repository taler-merchant-demos.

commit a80b6a5d8eada7c9d17bcc5964dd6ce3ac1478f2
Author: MS <ms@taler.net>
AuthorDate: Wed Nov 2 11:20:44 2022 +0100

    i18n
    
    manage unsupported languages
---
 talermerchantdemos/blog/blog.py           | 10 ++++++++++
 talermerchantdemos/donations/donations.py | 10 ++++++++++
 talermerchantdemos/httpcommon/__init__.py |  9 +++++++++
 talermerchantdemos/landing/landing.py     | 10 +++++++++-
 talermerchantdemos/survey/survey.py       |  9 +++++++++
 5 files changed, 47 insertions(+), 1 deletion(-)

diff --git a/talermerchantdemos/blog/blog.py b/talermerchantdemos/blog/blog.py
index 90ef3b9..263c7cf 100644
--- a/talermerchantdemos/blog/blog.py
+++ b/talermerchantdemos/blog/blog.py
@@ -164,6 +164,16 @@ def favicon():
 # @return response object of the index page.
 @app.route("/<lang>/")
 def start(lang):
+
+    # get_locale defaults to english, hence the
+    # condition below happens only when lang is
+    # wrong or unsupported, respond 404.
+    if lang != get_locale():
+        err_abort(
+            404,
+            message="Language {} not found".format(lang),
+        )
+
     if lang in ARTICLES:
         translated = ARTICLES[lang]
     else:
diff --git a/talermerchantdemos/donations/donations.py 
b/talermerchantdemos/donations/donations.py
index b522508..ea7138b 100644
--- a/talermerchantdemos/donations/donations.py
+++ b/talermerchantdemos/donations/donations.py
@@ -175,6 +175,16 @@ def index():
 # @return response object of the index page.
 @app.route("/<lang>/")
 def start(lang):
+
+    # get_locale defaults to english, hence the
+    # condition below happens only when lang is
+    # wrong or unsupported, respond 404.
+    if lang != get_locale():
+        err_abort(
+            404,
+            message=f"Language {lang} not found",
+        )
+
     return flask.render_template(
         "donations-index.html.j2", 
         page_title=gettext("GNU Taler Demo: Donations"),
diff --git a/talermerchantdemos/httpcommon/__init__.py 
b/talermerchantdemos/httpcommon/__init__.py
index 0b76111..56cfeda 100644
--- a/talermerchantdemos/httpcommon/__init__.py
+++ b/talermerchantdemos/httpcommon/__init__.py
@@ -5,6 +5,7 @@ from flask import request, url_for
 from datetime import datetime
 import time
 from flask_babel import gettext
+import babel # used for lang sanity check
 import os
 import re
 import logging
@@ -99,6 +100,14 @@ def get_locale():
         # Totally unexpected path format, do not localize
         return "en"
     lang = parts[1]
+
+    # Sanity check on the language code.
+    try:
+        babel.core.Locale.parse(lang)
+    except Exception as err:
+        # Not a locale, default to english.
+        LOGGER.error(f"language {lang} did not parse, default to english")
+        return "en"
     if lang == "static":
         # Static resource, not a language indicator.
         # Do not localize then.
diff --git a/talermerchantdemos/landing/landing.py 
b/talermerchantdemos/landing/landing.py
index b5142d6..23d11e8 100644
--- a/talermerchantdemos/landing/landing.py
+++ b/talermerchantdemos/landing/landing.py
@@ -23,6 +23,7 @@ import base64
 import logging
 import flask
 import uwsgi
+import werkzeug
 from flask import request, url_for
 from flask_babel import Babel
 from flask_babel import refresh
@@ -128,6 +129,12 @@ def index():
 @app.route("/<lang>/", methods=["GET"])
 def start(lang):
 
+    # get_locale defaults to english, hence the
+    # condition below happens only when lang is
+    # wrong or unsupported, respond 404.
+    if lang != get_locale():
+        raise werkzeug.exceptions.NotFound()
+
     if x := os.environ.get("TALER_ENV_URL_BANK"):
         bank_url = "/".join([x.strip("/"), f"?lang={lang}"])
         bank_register_url = bank_url
@@ -162,7 +169,8 @@ def start(lang):
     )
 
 
-@app.errorhandler(404)
+@app.errorhandler(404) # How to trigger this?
+@app.errorhandler(werkzeug.exceptions.NotFound)
 def handler_404(e):
     return flask.render_template(
         "landing-error.html.j2", 
diff --git a/talermerchantdemos/survey/survey.py 
b/talermerchantdemos/survey/survey.py
index fbdbf25..1f0fffb 100644
--- a/talermerchantdemos/survey/survey.py
+++ b/talermerchantdemos/survey/survey.py
@@ -22,6 +22,7 @@ import datetime
 import base64
 import uwsgi
 import logging
+import werkzeug
 from urllib.parse import urljoin
 import flask
 from flask import request
@@ -159,6 +160,13 @@ def index():
 @app.route("/<lang>/", methods=["GET"])
 def start(lang):
     LOGGER.info("Serving main page.  Currency: {}".format(CURRENCY))
+
+    # get_locale defaults to english, hence the
+    # condition below happens only when lang is
+    # wrong or unsupported, respond 404.
+    if lang != get_locale():
+        raise werkzeug.exceptions.NotFound()
+
     return flask.render_template(
         "survey-index.html.j2",
         page_title=gettext("GNU Taler Demo: Survey"),
@@ -167,6 +175,7 @@ def start(lang):
 
 
 @app.errorhandler(404)
+@app.errorhandler(werkzeug.exceptions.NotFound)
 def handler_404(e):
     return flask.render_template(
         "survey-error.html.j2",

-- 
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]