commit 01ca56aadd3e10355f1d546af50e335001dd60fd
parent e3c1f75ce17199bf183d49673ade931f12299288
Author: Florian Dold <florian@dold.me>
Date: Mon, 18 Aug 2025 17:02:30 +0200
clean up unused imports, fix donations app config
Diffstat:
23 files changed, 744 insertions(+), 793 deletions(-)
diff --git a/talermerchantdemos/blog/blog.py b/talermerchantdemos/blog/blog.py
@@ -26,22 +26,17 @@ import base64
import flask
from flask import request, url_for
from flask_babel import Babel
-from flask_babel import refresh
-from flask_babel import force_locale
from flask_babel import gettext
from werkzeug.middleware.proxy_fix import ProxyFix
import time
import sys
-from urllib.parse import urljoin, urlencode, urlparse
from ..appconfig import load_taler_config
-from ..util.talerconfig import TalerConfig, ConfigurationError
from ..blog.content import ARTICLES, get_article_contents
from talermerchantdemos.httpcommon import (
backend_get,
backend_get_with_status,
backend_post,
backend_payment_url,
- self_localized,
Deadline,
BackendException,
make_utility_processor,
@@ -62,8 +57,7 @@ app.wsgi_app = ProxyFix(app.wsgi_app, x_host=1, x_prefix=1)
app.debug = True
app.secret_key = base64.b64encode(os.urandom(64)).decode("utf-8")
-logging.basicConfig()
-LOGGER = logging.getLogger(__name__)
+logger = logging.getLogger(__name__)
config = load_taler_config()
@@ -82,11 +76,11 @@ app.config.from_object(__name__)
babel = Babel(app)
babel.localeselector(get_locale)
-LOGGER.info("Using translations from:" + ":".join(list(babel.translation_directories)))
+logger.info("Using translations from:" + ":".join(list(babel.translation_directories)))
translations = [str(translation) for translation in babel.list_translations()]
if not "en" in translations:
translations.append("en")
-LOGGER.info(
+logger.info(
"Operating with the following translations available: " + " ".join(translations)
)
@@ -174,7 +168,7 @@ def index():
# @return the favicon.ico file.
@app.route("/favicon.ico")
def favicon():
- LOGGER.info("will look into: " + os.path.join(app.root_path, "static"))
+ logger.info("will look into: " + os.path.join(app.root_path, "static"))
return flask.send_from_directory(
os.path.join(app.root_path, "static"),
"favicon.ico",
@@ -304,11 +298,11 @@ def render_article(article_name, lang, data, order_id, refundable):
)
err_abort(500, message=m)
if data is not None:
- #if data in article_info.extra_files:
+ # if data in article_info.extra_files:
# return flask.send_file(get_image_file(data))
- #m = gettext("Supplemental file ({}) for article ({}) not found.").format(
+ # m = gettext("Supplemental file ({}) for article ({}) not found.").format(
# data, article_name
- #)
+ # )
err_abort(404, message=m)
# the order_id is needed for refunds
article_contents = get_article_contents(article_info)
diff --git a/talermerchantdemos/blog/content.py b/talermerchantdemos/blog/content.py
@@ -18,19 +18,14 @@
from collections import OrderedDict, namedtuple
import logging
-import os
import re
from bs4 import BeautifulSoup
-from os import listdir
-from os.path import isfile, join
-from urllib.parse import quote
import importlib.resources
-
-LOGGER = logging.getLogger(__name__)
-NOISY_LOGGER = logging.getLogger("chardet.charsetprober")
-NOISY_LOGGER.setLevel(logging.INFO)
+logger = logging.getLogger(__name__)
+noisy_logger = logging.getLogger("chardet.charsetprober")
+noisy_logger.setLevel(logging.INFO)
Article = namedtuple("Article", "slug title teaser main_file extra_files lang")
##
@@ -85,7 +80,7 @@ def add_from_html(resource_name, lang):
soup = BeautifulSoup(resource_name.read_bytes(), "html.parser")
title_el = soup.find("h2")
if title_el is None:
- LOGGER.warning("Cannot extract title from '%s'", resource_name)
+ logger.warning("Cannot extract title from '%s'", resource_name)
return
title = title_el.get_text().strip()
slug = title.replace(" ", "_")
@@ -97,12 +92,12 @@ def add_from_html(resource_name, lang):
if len(paragraphs) > 0:
teaser = paragraphs[0].prettify()
if len(teaser) < 100:
- LOGGER.warning(
+ logger.warning(
"Cannot extract adequate teaser from '%s'", resource_name
)
return
else:
- LOGGER.warning("Cannot extract teaser from '%s'", resource_name)
+ logger.warning("Cannot extract teaser from '%s'", resource_name)
return
else:
teaser = teaser.prettify()
@@ -151,7 +146,7 @@ for l in pkgfiles.joinpath("blog/articles/").iterdir():
lang = l.name
if lang not in supported_langs:
continue
- LOGGER.info("importing %s" % l)
+ logger.info("importing %s" % l)
for a in l.iterdir():
if not a.is_file():
continue
diff --git a/talermerchantdemos/cli.py b/talermerchantdemos/cli.py
@@ -21,18 +21,14 @@
import click
import logging
-import argparse
import sys
import os
-import site
-from .util.talerconfig import TalerConfig, ConfigurationError
+from .util.talerconfig import TalerConfig
import importlib
-import multiprocessing
import gunicorn.app.base
-LOGGER = logging.getLogger(__name__)
-
+logger = logging.getLogger(__name__)
def bindspec(config, which_shop, port):
confsection = f"frontend-demo-{which_shop}"
@@ -106,6 +102,8 @@ class StandaloneApplication(gunicorn.app.base.BaseApplication):
def demos(config_filename, http_port, which_shop):
"""WHICH_SHOP is one of: blog, donations, provision, or landing."""
+ logging.basicConfig(level=logging.INFO)
+
if which_shop not in ["blog", "donations", "provision", "landing"]:
print("Please use a valid shop name: blog, donations, provision, landing.")
sys.exit(1)
diff --git a/talermerchantdemos/donations/donations.py b/talermerchantdemos/donations/donations.py
@@ -20,17 +20,12 @@
import base64
import logging
import flask
-from flask import request, url_for
+from flask import url_for
from flask_babel import Babel
-from flask_babel import refresh
-from flask_babel import force_locale
from flask_babel import gettext
from werkzeug.middleware.proxy_fix import ProxyFix
import os
import time
-import traceback
-import urllib
-from urllib.parse import urljoin
from ..httpcommon import backend_post, backend_get, make_utility_processor, get_locale
from ..appconfig import load_taler_config
import sys
@@ -44,18 +39,17 @@ if not sys.version_info.major == 3 and sys.version_info.minor >= 6:
)
sys.exit(1)
-logging.basicConfig()
-LOGGER = logging.getLogger(__name__)
+logger = logging.getLogger(__name__)
-BASE_DIR = os.path.dirname(os.path.abspath(__file__))
+BABEL_TRANSLATION_DIRECTORIES = "../translations"
app = flask.Flask(__name__, template_folder="../templates", static_folder="../static")
app.wsgi_app = ProxyFix(app.wsgi_app, x_host=1, x_prefix=1)
app.debug = True
app.secret_key = base64.b64encode(os.urandom(64)).decode("utf-8")
+
app.config.from_object(__name__)
-BABEL_TRANSLATION_DIRECTORIES = "../translations"
babel = Babel(app)
babel.localeselector(get_locale)
@@ -75,12 +69,12 @@ add_backend("taler")
add_backend("gnunet")
-LOGGER.info("Using translations from:" + ":".join(list(babel.translation_directories)))
-LOGGER.info("currency: " + CURRENCY)
+logger.info("Using translations from:" + ":".join(list(babel.translation_directories)))
+logger.info("currency: " + CURRENCY)
translations = [str(translation) for translation in babel.list_translations()]
if not "en" in translations:
translations.append("en")
-LOGGER.info(
+logger.info(
"Operating with the following translations available: " + " ".join(translations)
)
@@ -159,7 +153,7 @@ def internal_error(e):
# @return the favicon.ico file.
@app.route("/favicon.ico")
def favicon():
- LOGGER.info("will look into: " + os.path.join(app.root_path, "static"))
+ logger.info("will look into: " + os.path.join(app.root_path, "static"))
return flask.send_from_directory(
os.path.join(app.root_path, "static"),
"favicon.ico",
diff --git a/talermerchantdemos/httpcommon/__init__.py b/talermerchantdemos/httpcommon/__init__.py
@@ -1,7 +1,7 @@
import flask
import requests
from urllib.parse import urljoin, urlencode, urlparse, urlunparse
-from flask import request, url_for
+from flask import request
from datetime import datetime
import time
from flask_babel import gettext
@@ -10,7 +10,7 @@ import os
import re
import logging
-LOGGER = logging.getLogger(__name__)
+logger = logging.getLogger(__name__)
class BackendException(Exception):
@@ -113,7 +113,7 @@ def get_locale():
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")
+ logger.error(f"language {lang} did not parse, default to english")
return "en"
if lang == "static":
# Static resource, not a language indicator.
@@ -190,7 +190,7 @@ all_languages = {
"es": "Español [es]",
"sv": "Svenska [sv]",
"tr": "Türkçe [tr]",
- "uk": "Українська [uk]"
+ "uk": "Українська [uk]",
}
diff --git a/talermerchantdemos/landing/landing.py b/talermerchantdemos/landing/landing.py
@@ -17,25 +17,17 @@
# @brief Minimal Website for the landing page.
import os
-import re
-import datetime
import base64
import logging
import flask
import werkzeug
-from flask import request, url_for
+from flask import url_for
from flask_babel import Babel
-from flask_babel import refresh
-from flask_babel import force_locale
from flask_babel import gettext
from werkzeug.middleware.proxy_fix import ProxyFix
import traceback
from ..appconfig import load_taler_config
-from ..util.talerconfig import TalerConfig, ConfigurationError
from ..httpcommon import (
- backend_get,
- backend_post,
- self_localized,
get_locale,
make_utility_processor,
)
@@ -55,7 +47,6 @@ app.wsgi_app = ProxyFix(app.wsgi_app, x_host=1, x_prefix=1)
app.debug = True
app.secret_key = base64.b64encode(os.urandom(64)).decode("utf-8")
-logging.basicConfig()
LOGGER = logging.getLogger(__name__)
config = load_taler_config()
diff --git a/talermerchantdemos/provision/provision.py b/talermerchantdemos/provision/provision.py
@@ -21,22 +21,15 @@ import logging
import flask
from flask import request, url_for
from flask_babel import Babel
-from flask_babel import refresh
-from flask_babel import force_locale
from flask_babel import gettext
from werkzeug.middleware.proxy_fix import ProxyFix
import os
-import time
import babel
from datetime import datetime
-import traceback
import re
import hashlib
import struct
import subprocess
-import urllib
-from ..util.talerconfig import TalerConfig, ConfigurationError
-from urllib.parse import urljoin
from ..httpcommon import backend_post, backend_get, make_utility_processor
from ..appconfig import load_taler_config
import sys
@@ -50,10 +43,7 @@ if not sys.version_info.major == 3 and sys.version_info.minor >= 6:
)
sys.exit(1)
-logging.basicConfig()
-LOGGER = logging.getLogger(__name__)
-
-BASE_DIR = os.path.dirname(os.path.abspath(__file__))
+logger = logging.getLogger(__name__)
app = flask.Flask(__name__,
template_folder="../templates",
@@ -84,7 +74,7 @@ def get_locale():
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")
+ logger.error(f"language {lang} did not parse, default to english")
return "en"
if lang == "static":
# Static resource, not a language indicator.
@@ -116,12 +106,12 @@ add_backend("bank")
-LOGGER.info("Using translations from:" + ":".join(list(babbel.translation_directories)))
-LOGGER.info("currency: " + CURRENCY)
+logger.info("Using translations from:" + ":".join(list(babbel.translation_directories)))
+logger.info("currency: " + CURRENCY)
translations = [str(translation) for translation in babbel.list_translations()]
if not "en" in translations:
translations.append("en")
-LOGGER.info(
+logger.info(
"Operating with the following translations available: " + " ".join(translations)
)
@@ -263,13 +253,13 @@ def create(lang):
], capture_output=True)
if ret.returncode != 0:
- LOGGER.error("taler-harness returned {d},\nstdout:>>>>{o}<<<<\nstderr:>>>>{e}<<<<<\n"
+ logger.error("taler-harness returned {d},\nstdout:>>>>{o}<<<<\nstderr:>>>>{e}<<<<<\n"
.format(d=ret.returncode,o=ret.stdout.decode(),e=ret.stderr.decode()))
return internal_error("Internal error, couldn't create instance. Soooo sorry! 🤷")
- LOGGER.debug("taler-harness output:>>>>{o}<<<<)".format(o=ret.stdout.decode()))
- LOGGER.info("merchant instance {id} created with hash: {hash}".format(id=merchant_id,hash=hash))
+ logger.debug("taler-harness output:>>>>{o}<<<<)".format(o=ret.stdout.decode()))
+ logger.info("merchant instance {id} created with hash: {hash}".format(id=merchant_id,hash=hash))
return flask.render_template(
"provision-done.html.j2",
page_title=gettext("GNU Taler Demo: Self-Provision"),
diff --git a/talermerchantdemos/translations/ar/LC_MESSAGES/messages.po b/talermerchantdemos/translations/ar/LC_MESSAGES/messages.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: eintritt@hotmail.com\n"
-"POT-Creation-Date: 2025-06-09 16:19+0200\n"
+"POT-Creation-Date: 2025-08-18 17:00+0200\n"
"PO-Revision-Date: 2024-12-12 17:44+0000\n"
"Last-Translator: Stefan Kügel <skuegel@web.de>\n"
"Language: ar\n"
@@ -20,96 +20,96 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.17.0\n"
-#: talermerchantdemos/blog/blog.py:151 talermerchantdemos/blog/blog.py:230
-#: talermerchantdemos/blog/blog.py:395 talermerchantdemos/blog/blog.py:553
-#: talermerchantdemos/blog/blog.py:562 talermerchantdemos/blog/blog.py:572
-#: talermerchantdemos/donations/donations.py:151
-#: talermerchantdemos/donations/donations.py:322
-#: talermerchantdemos/landing/landing.py:98
+#: talermerchantdemos/blog/blog.py:145 talermerchantdemos/blog/blog.py:224
+#: talermerchantdemos/blog/blog.py:389 talermerchantdemos/blog/blog.py:547
+#: talermerchantdemos/blog/blog.py:556 talermerchantdemos/blog/blog.py:566
+#: talermerchantdemos/donations/donations.py:145
+#: talermerchantdemos/donations/donations.py:316
+#: talermerchantdemos/landing/landing.py:89
+#: talermerchantdemos/landing/landing.py:169
#: talermerchantdemos/landing/landing.py:178
-#: talermerchantdemos/landing/landing.py:187
-#: talermerchantdemos/provision/provision.py:183
+#: talermerchantdemos/provision/provision.py:173
msgid "GNU Taler Demo: Error"
msgstr ""
-#: talermerchantdemos/blog/blog.py:152 talermerchantdemos/landing/landing.py:99
+#: talermerchantdemos/blog/blog.py:146 talermerchantdemos/landing/landing.py:90
msgid "Internal error"
msgstr "خطأ داخلي"
-#: talermerchantdemos/blog/blog.py:205
+#: talermerchantdemos/blog/blog.py:199
msgid "GNU Taler Demo: Essay Shop"
msgstr ""
-#: talermerchantdemos/blog/blog.py:223
+#: talermerchantdemos/blog/blog.py:217
msgid "Cannot refund unpaid article"
msgstr "تعذر استرداد المقالة غير المدفوعة"
-#: talermerchantdemos/blog/blog.py:231
+#: talermerchantdemos/blog/blog.py:225
msgid "Article is not anymore refundable"
msgstr "المقال غير قابل للاسترداد بعد الآن"
-#: talermerchantdemos/blog/blog.py:235
+#: talermerchantdemos/blog/blog.py:229
msgid "GNU Taler Demo: Confirm refund"
msgstr ""
-#: talermerchantdemos/blog/blog.py:268
+#: talermerchantdemos/blog/blog.py:262
msgid "You did not pay for this article (nice try!)"
msgstr "لم تقم بالدفع لهذا المقال (محاولة جيدة!)"
-#: talermerchantdemos/blog/blog.py:273
+#: talermerchantdemos/blog/blog.py:267
msgid "Item not refundable (anymore)"
msgstr "المقال غير قابل للاسترداد (بعد الآن)"
-#: talermerchantdemos/blog/blog.py:299
+#: talermerchantdemos/blog/blog.py:293
#, python-brace-format
msgid "Internal error: Files for article ({}) not found."
msgstr "خطأ داخلي: ملفات المقال ({}) غير موجودة."
-#: talermerchantdemos/blog/blog.py:314
+#: talermerchantdemos/blog/blog.py:308
msgid "GNU Taler Demo: Article"
msgstr ""
-#: talermerchantdemos/blog/blog.py:396
+#: talermerchantdemos/blog/blog.py:390
msgid "Please enable cookies."
msgstr ""
-#: talermerchantdemos/blog/blog.py:465
+#: talermerchantdemos/blog/blog.py:459
msgid "GNU Taler Demo: Refunded"
msgstr ""
-#: talermerchantdemos/blog/blog.py:476
+#: talermerchantdemos/blog/blog.py:470
#: talermerchantdemos/httpcommon/__init__.py:54
#: talermerchantdemos/httpcommon/__init__.py:77
msgid "Backend returned error status"
msgstr "عادت الخلفية لحالة الخطأ"
-#: talermerchantdemos/blog/blog.py:554
+#: talermerchantdemos/blog/blog.py:548
msgid "Internal server error"
msgstr "خطأ في الserver الداخلي"
-#: talermerchantdemos/blog/blog.py:563
-#: talermerchantdemos/donations/donations.py:323
-#: talermerchantdemos/landing/landing.py:179
-#: talermerchantdemos/provision/provision.py:292
+#: talermerchantdemos/blog/blog.py:557
+#: talermerchantdemos/donations/donations.py:317
+#: talermerchantdemos/landing/landing.py:170
+#: talermerchantdemos/provision/provision.py:282
msgid "Page not found"
msgstr "الصفحة غير موجودة"
-#: talermerchantdemos/donations/donations.py:137
+#: talermerchantdemos/donations/donations.py:131
#, python-brace-format
msgid "parameter '{}' required"
msgstr "المَعلَمة '{}' مطلوبة"
-#: talermerchantdemos/donations/donations.py:199
-#: talermerchantdemos/donations/donations.py:234
-#: talermerchantdemos/donations/donations.py:308
+#: talermerchantdemos/donations/donations.py:193
+#: talermerchantdemos/donations/donations.py:228
+#: talermerchantdemos/donations/donations.py:302
msgid "GNU Taler Demo: Donations"
msgstr ""
-#: talermerchantdemos/donations/donations.py:217
+#: talermerchantdemos/donations/donations.py:211
msgid "GNU Taler Demo: Donations checkout"
msgstr ""
-#: talermerchantdemos/donations/donations.py:278
+#: talermerchantdemos/donations/donations.py:272
msgid "Backend could not create the order"
msgstr ""
@@ -127,35 +127,35 @@ msgstr "تعذر تحليل الاستجابة من الخلفية"
msgid "Could not parse response from backend"
msgstr "تعذر تحليل الاستجابة من الخلفية"
-#: talermerchantdemos/landing/landing.py:164
+#: talermerchantdemos/landing/landing.py:155
#: talermerchantdemos/templates/common-base.html.j2:20
#, fuzzy
msgid "GNU Taler Demo"
msgstr "العرض التجريبي لنظام الدفع Taler"
-#: talermerchantdemos/landing/landing.py:188
+#: talermerchantdemos/landing/landing.py:179
msgid "HTTP method not allowed for this page"
msgstr "طريقة HTTP غير مسموح بها لهذه الصفحة"
-#: talermerchantdemos/provision/provision.py:217
+#: talermerchantdemos/provision/provision.py:207
#, fuzzy
msgid "GNU Taler Demo: Provision"
msgstr "العرض التجريبي لنظام الدفع Taler"
-#: talermerchantdemos/provision/provision.py:237
+#: talermerchantdemos/provision/provision.py:227
msgid "Full name required."
msgstr ""
-#: talermerchantdemos/provision/provision.py:239
+#: talermerchantdemos/provision/provision.py:229
msgid "Full name not acceptable."
msgstr ""
-#: talermerchantdemos/provision/provision.py:275
+#: talermerchantdemos/provision/provision.py:265
#, fuzzy
msgid "GNU Taler Demo: Self-Provision"
msgstr "العرض التجريبي لنظام الدفع Taler"
-#: talermerchantdemos/provision/provision.py:291
+#: talermerchantdemos/provision/provision.py:281
#, fuzzy
msgid "GNU Taler Demo: Provision Error"
msgstr "العرض التجريبي لنظام الدفع Taler"
diff --git a/talermerchantdemos/translations/de/LC_MESSAGES/messages.po b/talermerchantdemos/translations/de/LC_MESSAGES/messages.po
@@ -5,113 +5,112 @@
#
msgid ""
msgstr ""
-"Project-Id-Version: taler-merchant-demos\n"
+"Project-Id-Version: taler-merchant-demos\n"
"Report-Msgid-Bugs-To: eintritt@hotmail.com\n"
-"POT-Creation-Date: 2025-06-09 16:19+0200\n"
+"POT-Creation-Date: 2025-08-18 17:00+0200\n"
"PO-Revision-Date: 2025-06-27 06:11+0000\n"
"Last-Translator: Stefan <eintritt@hotmail.com>\n"
-"Language-Team: German <https://weblate.gnunet.org/projects/gnu-taler/"
-"demonstration-pages/de/>\n"
"Language: de\n"
+"Language-Team: German <https://weblate.gnunet.org/projects/gnu-taler"
+"/demonstration-pages/de/>\n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Generator: Weblate 5.12.2\n"
"Generated-By: Babel 2.17.0\n"
-#: talermerchantdemos/blog/blog.py:151 talermerchantdemos/blog/blog.py:230
-#: talermerchantdemos/blog/blog.py:395 talermerchantdemos/blog/blog.py:553
-#: talermerchantdemos/blog/blog.py:562 talermerchantdemos/blog/blog.py:572
-#: talermerchantdemos/donations/donations.py:151
-#: talermerchantdemos/donations/donations.py:322
-#: talermerchantdemos/landing/landing.py:98
+#: talermerchantdemos/blog/blog.py:145 talermerchantdemos/blog/blog.py:224
+#: talermerchantdemos/blog/blog.py:389 talermerchantdemos/blog/blog.py:547
+#: talermerchantdemos/blog/blog.py:556 talermerchantdemos/blog/blog.py:566
+#: talermerchantdemos/donations/donations.py:145
+#: talermerchantdemos/donations/donations.py:316
+#: talermerchantdemos/landing/landing.py:89
+#: talermerchantdemos/landing/landing.py:169
#: talermerchantdemos/landing/landing.py:178
-#: talermerchantdemos/landing/landing.py:187
-#: talermerchantdemos/provision/provision.py:183
+#: talermerchantdemos/provision/provision.py:173
msgid "GNU Taler Demo: Error"
msgstr "GNU Taler Demo: Fehler"
-#: talermerchantdemos/blog/blog.py:152 talermerchantdemos/landing/landing.py:99
+#: talermerchantdemos/blog/blog.py:146 talermerchantdemos/landing/landing.py:90
msgid "Internal error"
msgstr "Interner Fehler"
-#: talermerchantdemos/blog/blog.py:205
+#: talermerchantdemos/blog/blog.py:199
msgid "GNU Taler Demo: Essay Shop"
msgstr "GNU Taler Demo: Buchhandlung"
-#: talermerchantdemos/blog/blog.py:223
+#: talermerchantdemos/blog/blog.py:217
msgid "Cannot refund unpaid article"
msgstr ""
"Den Kaufpreis eines Artikels, der nicht bezahlt wurde, können wir nicht "
"erstatten"
-#: talermerchantdemos/blog/blog.py:231
+#: talermerchantdemos/blog/blog.py:225
msgid "Article is not anymore refundable"
msgstr "Den Kaufpreis für diesen Aufsatz können wir leider nicht mehr erstatten"
-#: talermerchantdemos/blog/blog.py:235
+#: talermerchantdemos/blog/blog.py:229
msgid "GNU Taler Demo: Confirm refund"
msgstr "GNU Taler Demo: Rückerstattung bestätigen"
-#: talermerchantdemos/blog/blog.py:268
+#: talermerchantdemos/blog/blog.py:262
msgid "You did not pay for this article (nice try!)"
msgstr "Für diesen Aufsatz wurde noch kein Kaufpreis entrichtet"
-#: talermerchantdemos/blog/blog.py:273
+#: talermerchantdemos/blog/blog.py:267
msgid "Item not refundable (anymore)"
msgstr "Dieser Artikel kann nicht (mehr) erstattet werden"
-#: talermerchantdemos/blog/blog.py:299
+#: talermerchantdemos/blog/blog.py:293
#, python-brace-format
msgid "Internal error: Files for article ({}) not found."
msgstr "Interner Fehler: Die Datei für diesen Aufsatz ({}) wurden nicht gefunden."
-#: talermerchantdemos/blog/blog.py:314
+#: talermerchantdemos/blog/blog.py:308
msgid "GNU Taler Demo: Article"
msgstr "GNU Taler Demo: Artikel"
-#: talermerchantdemos/blog/blog.py:396
+#: talermerchantdemos/blog/blog.py:390
msgid "Please enable cookies."
msgstr "Bitte erlauben Sie das Speichern von Cookies."
-#: talermerchantdemos/blog/blog.py:465
+#: talermerchantdemos/blog/blog.py:459
msgid "GNU Taler Demo: Refunded"
msgstr "GNU Taler Demo: Zurückerstattet"
-#: talermerchantdemos/blog/blog.py:476
+#: talermerchantdemos/blog/blog.py:470
#: talermerchantdemos/httpcommon/__init__.py:54
#: talermerchantdemos/httpcommon/__init__.py:77
msgid "Backend returned error status"
msgstr "Das Backend lieferte einen Fehlerstatus zurück"
-#: talermerchantdemos/blog/blog.py:554
+#: talermerchantdemos/blog/blog.py:548
msgid "Internal server error"
msgstr "Interner Server-Fehler"
-#: talermerchantdemos/blog/blog.py:563
-#: talermerchantdemos/donations/donations.py:323
-#: talermerchantdemos/landing/landing.py:179
-#: talermerchantdemos/provision/provision.py:292
+#: talermerchantdemos/blog/blog.py:557
+#: talermerchantdemos/donations/donations.py:317
+#: talermerchantdemos/landing/landing.py:170
+#: talermerchantdemos/provision/provision.py:282
msgid "Page not found"
msgstr "Seite nicht gefunden"
-#: talermerchantdemos/donations/donations.py:137
+#: talermerchantdemos/donations/donations.py:131
#, python-brace-format
msgid "parameter '{}' required"
msgstr "Parameter '{}' erforderlich"
-#: talermerchantdemos/donations/donations.py:199
-#: talermerchantdemos/donations/donations.py:234
-#: talermerchantdemos/donations/donations.py:308
+#: talermerchantdemos/donations/donations.py:193
+#: talermerchantdemos/donations/donations.py:228
+#: talermerchantdemos/donations/donations.py:302
msgid "GNU Taler Demo: Donations"
msgstr "GNU Taler Demo: Die ‚Spenden‘-Funktion"
-#: talermerchantdemos/donations/donations.py:217
+#: talermerchantdemos/donations/donations.py:211
msgid "GNU Taler Demo: Donations checkout"
msgstr "GNU Taler Demo: Spende durchführen"
-#: talermerchantdemos/donations/donations.py:278
+#: talermerchantdemos/donations/donations.py:272
msgid "Backend could not create the order"
msgstr "Das Backend konnte die Bestellung nicht erzeugen"
@@ -128,33 +127,33 @@ msgstr "Die Antwort des Backend konnte nicht verstanden werden"
msgid "Could not parse response from backend"
msgstr "Die Antwort des Backend konnte nicht verstanden werden"
-#: talermerchantdemos/landing/landing.py:164
+#: talermerchantdemos/landing/landing.py:155
#: talermerchantdemos/templates/common-base.html.j2:20
msgid "GNU Taler Demo"
msgstr "GNU Taler Demo"
-#: talermerchantdemos/landing/landing.py:188
+#: talermerchantdemos/landing/landing.py:179
msgid "HTTP method not allowed for this page"
msgstr "Die HTTP-Methode ist auf dieser Webseite nicht erlaubt"
-#: talermerchantdemos/provision/provision.py:217
+#: talermerchantdemos/provision/provision.py:207
#, fuzzy
msgid "GNU Taler Demo: Provision"
msgstr "GNU Taler Demo: Die ‚Spenden‘-Funktion"
-#: talermerchantdemos/provision/provision.py:237
+#: talermerchantdemos/provision/provision.py:227
msgid "Full name required."
msgstr ""
-#: talermerchantdemos/provision/provision.py:239
+#: talermerchantdemos/provision/provision.py:229
msgid "Full name not acceptable."
msgstr ""
-#: talermerchantdemos/provision/provision.py:275
+#: talermerchantdemos/provision/provision.py:265
msgid "GNU Taler Demo: Self-Provision"
msgstr "GNU Taler Demo: Geführtes Anlegen und Konfigurieren"
-#: talermerchantdemos/provision/provision.py:291
+#: talermerchantdemos/provision/provision.py:281
#, fuzzy
msgid "GNU Taler Demo: Provision Error"
msgstr "GNU Taler Demo: Fehler"
@@ -754,8 +753,8 @@ msgstr "Geführtes Anlegen"
#: talermerchantdemos/templates/provision-base.html.j2:13
msgid "This is the self-provision page for merchant instances on our demo site."
msgstr ""
-"Diese Seite hilft Ihnen zum geführten Anlegen einer Händler-Instanz, die auf "
-"unseren Demo-Seiten ausprobiert werden kann."
+"Diese Seite hilft Ihnen zum geführten Anlegen einer Händler-Instanz, die "
+"auf unseren Demo-Seiten ausprobiert werden kann."
#: talermerchantdemos/templates/provision-done.html.j2:4
msgid "Your merchant instance has been created"
@@ -883,8 +882,7 @@ msgstr ""
#: talermerchantdemos/templates/provision-index.html.j2:26
msgid "Enter the full name for your merchant:"
-msgstr ""
-"Geben Sie hier die vollständige Bezeichnung für Ihre Händler-Instanz ein:"
+msgstr "Geben Sie hier die vollständige Bezeichnung für Ihre Händler-Instanz ein:"
#: talermerchantdemos/templates/provision-index.html.j2:31
msgid "Create!"
@@ -1251,3 +1249,4 @@ msgstr "Anlegen!"
#~ "and see the incoming wire transfers "
#~ "from the payment service provider."
#~ msgstr ""
+
diff --git a/talermerchantdemos/translations/en/LC_MESSAGES/messages.po b/talermerchantdemos/translations/en/LC_MESSAGES/messages.po
@@ -3,7 +3,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2025-06-09 16:19+0200\n"
+"POT-Creation-Date: 2025-08-18 17:00+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language: en\n"
@@ -14,96 +14,96 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.17.0\n"
-#: talermerchantdemos/blog/blog.py:151 talermerchantdemos/blog/blog.py:230
-#: talermerchantdemos/blog/blog.py:395 talermerchantdemos/blog/blog.py:553
-#: talermerchantdemos/blog/blog.py:562 talermerchantdemos/blog/blog.py:572
-#: talermerchantdemos/donations/donations.py:151
-#: talermerchantdemos/donations/donations.py:322
-#: talermerchantdemos/landing/landing.py:98
+#: talermerchantdemos/blog/blog.py:145 talermerchantdemos/blog/blog.py:224
+#: talermerchantdemos/blog/blog.py:389 talermerchantdemos/blog/blog.py:547
+#: talermerchantdemos/blog/blog.py:556 talermerchantdemos/blog/blog.py:566
+#: talermerchantdemos/donations/donations.py:145
+#: talermerchantdemos/donations/donations.py:316
+#: talermerchantdemos/landing/landing.py:89
+#: talermerchantdemos/landing/landing.py:169
#: talermerchantdemos/landing/landing.py:178
-#: talermerchantdemos/landing/landing.py:187
-#: talermerchantdemos/provision/provision.py:183
+#: talermerchantdemos/provision/provision.py:173
msgid "GNU Taler Demo: Error"
msgstr ""
-#: talermerchantdemos/blog/blog.py:152 talermerchantdemos/landing/landing.py:99
+#: talermerchantdemos/blog/blog.py:146 talermerchantdemos/landing/landing.py:90
msgid "Internal error"
msgstr ""
-#: talermerchantdemos/blog/blog.py:205
+#: talermerchantdemos/blog/blog.py:199
msgid "GNU Taler Demo: Essay Shop"
msgstr ""
-#: talermerchantdemos/blog/blog.py:223
+#: talermerchantdemos/blog/blog.py:217
msgid "Cannot refund unpaid article"
msgstr ""
-#: talermerchantdemos/blog/blog.py:231
+#: talermerchantdemos/blog/blog.py:225
msgid "Article is not anymore refundable"
msgstr ""
-#: talermerchantdemos/blog/blog.py:235
+#: talermerchantdemos/blog/blog.py:229
msgid "GNU Taler Demo: Confirm refund"
msgstr ""
-#: talermerchantdemos/blog/blog.py:268
+#: talermerchantdemos/blog/blog.py:262
msgid "You did not pay for this article (nice try!)"
msgstr ""
-#: talermerchantdemos/blog/blog.py:273
+#: talermerchantdemos/blog/blog.py:267
msgid "Item not refundable (anymore)"
msgstr ""
-#: talermerchantdemos/blog/blog.py:299
+#: talermerchantdemos/blog/blog.py:293
#, python-brace-format
msgid "Internal error: Files for article ({}) not found."
msgstr ""
-#: talermerchantdemos/blog/blog.py:314
+#: talermerchantdemos/blog/blog.py:308
msgid "GNU Taler Demo: Article"
msgstr ""
-#: talermerchantdemos/blog/blog.py:396
+#: talermerchantdemos/blog/blog.py:390
msgid "Please enable cookies."
msgstr ""
-#: talermerchantdemos/blog/blog.py:465
+#: talermerchantdemos/blog/blog.py:459
msgid "GNU Taler Demo: Refunded"
msgstr ""
-#: talermerchantdemos/blog/blog.py:476
+#: talermerchantdemos/blog/blog.py:470
#: talermerchantdemos/httpcommon/__init__.py:54
#: talermerchantdemos/httpcommon/__init__.py:77
msgid "Backend returned error status"
msgstr ""
-#: talermerchantdemos/blog/blog.py:554
+#: talermerchantdemos/blog/blog.py:548
msgid "Internal server error"
msgstr ""
-#: talermerchantdemos/blog/blog.py:563
-#: talermerchantdemos/donations/donations.py:323
-#: talermerchantdemos/landing/landing.py:179
-#: talermerchantdemos/provision/provision.py:292
+#: talermerchantdemos/blog/blog.py:557
+#: talermerchantdemos/donations/donations.py:317
+#: talermerchantdemos/landing/landing.py:170
+#: talermerchantdemos/provision/provision.py:282
msgid "Page not found"
msgstr ""
-#: talermerchantdemos/donations/donations.py:137
+#: talermerchantdemos/donations/donations.py:131
#, python-brace-format
msgid "parameter '{}' required"
msgstr ""
-#: talermerchantdemos/donations/donations.py:199
-#: talermerchantdemos/donations/donations.py:234
-#: talermerchantdemos/donations/donations.py:308
+#: talermerchantdemos/donations/donations.py:193
+#: talermerchantdemos/donations/donations.py:228
+#: talermerchantdemos/donations/donations.py:302
msgid "GNU Taler Demo: Donations"
msgstr ""
-#: talermerchantdemos/donations/donations.py:217
+#: talermerchantdemos/donations/donations.py:211
msgid "GNU Taler Demo: Donations checkout"
msgstr ""
-#: talermerchantdemos/donations/donations.py:278
+#: talermerchantdemos/donations/donations.py:272
msgid "Backend could not create the order"
msgstr ""
@@ -120,32 +120,32 @@ msgstr ""
msgid "Could not parse response from backend"
msgstr ""
-#: talermerchantdemos/landing/landing.py:164
+#: talermerchantdemos/landing/landing.py:155
#: talermerchantdemos/templates/common-base.html.j2:20
msgid "GNU Taler Demo"
msgstr ""
-#: talermerchantdemos/landing/landing.py:188
+#: talermerchantdemos/landing/landing.py:179
msgid "HTTP method not allowed for this page"
msgstr ""
-#: talermerchantdemos/provision/provision.py:217
+#: talermerchantdemos/provision/provision.py:207
msgid "GNU Taler Demo: Provision"
msgstr ""
-#: talermerchantdemos/provision/provision.py:237
+#: talermerchantdemos/provision/provision.py:227
msgid "Full name required."
msgstr ""
-#: talermerchantdemos/provision/provision.py:239
+#: talermerchantdemos/provision/provision.py:229
msgid "Full name not acceptable."
msgstr ""
-#: talermerchantdemos/provision/provision.py:275
+#: talermerchantdemos/provision/provision.py:265
msgid "GNU Taler Demo: Self-Provision"
msgstr ""
-#: talermerchantdemos/provision/provision.py:291
+#: talermerchantdemos/provision/provision.py:281
msgid "GNU Taler Demo: Provision Error"
msgstr ""
diff --git a/talermerchantdemos/translations/es/LC_MESSAGES/messages.po b/talermerchantdemos/translations/es/LC_MESSAGES/messages.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: eintritt@hotmail.com\n"
-"POT-Creation-Date: 2025-06-09 16:19+0200\n"
+"POT-Creation-Date: 2025-08-18 17:00+0200\n"
"PO-Revision-Date: 2024-12-12 17:44+0000\n"
"Last-Translator: José Huamán <princetomato@firemail.cc>\n"
"Language: es\n"
@@ -19,97 +19,97 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.17.0\n"
-#: talermerchantdemos/blog/blog.py:151 talermerchantdemos/blog/blog.py:230
-#: talermerchantdemos/blog/blog.py:395 talermerchantdemos/blog/blog.py:553
-#: talermerchantdemos/blog/blog.py:562 talermerchantdemos/blog/blog.py:572
-#: talermerchantdemos/donations/donations.py:151
-#: talermerchantdemos/donations/donations.py:322
-#: talermerchantdemos/landing/landing.py:98
+#: talermerchantdemos/blog/blog.py:145 talermerchantdemos/blog/blog.py:224
+#: talermerchantdemos/blog/blog.py:389 talermerchantdemos/blog/blog.py:547
+#: talermerchantdemos/blog/blog.py:556 talermerchantdemos/blog/blog.py:566
+#: talermerchantdemos/donations/donations.py:145
+#: talermerchantdemos/donations/donations.py:316
+#: talermerchantdemos/landing/landing.py:89
+#: talermerchantdemos/landing/landing.py:169
#: talermerchantdemos/landing/landing.py:178
-#: talermerchantdemos/landing/landing.py:187
-#: talermerchantdemos/provision/provision.py:183
+#: talermerchantdemos/provision/provision.py:173
msgid "GNU Taler Demo: Error"
msgstr "GNU Taler Demo: Error"
-#: talermerchantdemos/blog/blog.py:152 talermerchantdemos/landing/landing.py:99
+#: talermerchantdemos/blog/blog.py:146 talermerchantdemos/landing/landing.py:90
msgid "Internal error"
msgstr "Error interno"
-#: talermerchantdemos/blog/blog.py:205
+#: talermerchantdemos/blog/blog.py:199
msgid "GNU Taler Demo: Essay Shop"
msgstr "Demostración de GNU Taler: Tienda de Pruebas"
-#: talermerchantdemos/blog/blog.py:223
+#: talermerchantdemos/blog/blog.py:217
msgid "Cannot refund unpaid article"
msgstr "No se puede realizar el reembolso de un artículo no pagado"
-#: talermerchantdemos/blog/blog.py:231
+#: talermerchantdemos/blog/blog.py:225
msgid "Article is not anymore refundable"
msgstr "El artículo ya no es reembolsable"
-#: talermerchantdemos/blog/blog.py:235
+#: talermerchantdemos/blog/blog.py:229
msgid "GNU Taler Demo: Confirm refund"
msgstr "GNU Taler Demo: Confirmar reembolso"
-#: talermerchantdemos/blog/blog.py:268
+#: talermerchantdemos/blog/blog.py:262
msgid "You did not pay for this article (nice try!)"
msgstr "No has pagado por este artículo (¡buen intento!)"
-#: talermerchantdemos/blog/blog.py:273
+#: talermerchantdemos/blog/blog.py:267
msgid "Item not refundable (anymore)"
msgstr "Artículo no reembolsable"
-#: talermerchantdemos/blog/blog.py:299
+#: talermerchantdemos/blog/blog.py:293
#, python-brace-format
msgid "Internal error: Files for article ({}) not found."
msgstr "Error interno: Archivos para el artículo ({}) no encontrados."
-#: talermerchantdemos/blog/blog.py:314
+#: talermerchantdemos/blog/blog.py:308
msgid "GNU Taler Demo: Article"
msgstr "GNU Taler Demo: Artículo"
-#: talermerchantdemos/blog/blog.py:396
+#: talermerchantdemos/blog/blog.py:390
msgid "Please enable cookies."
msgstr "Porfavor, habilita las cookies."
-#: talermerchantdemos/blog/blog.py:465
+#: talermerchantdemos/blog/blog.py:459
msgid "GNU Taler Demo: Refunded"
msgstr "GNU Taler Demo: Reembolsado"
-#: talermerchantdemos/blog/blog.py:476
+#: talermerchantdemos/blog/blog.py:470
#: talermerchantdemos/httpcommon/__init__.py:54
#: talermerchantdemos/httpcommon/__init__.py:77
msgid "Backend returned error status"
msgstr "El backend ha retornado un estado de error"
-#: talermerchantdemos/blog/blog.py:554
+#: talermerchantdemos/blog/blog.py:548
msgid "Internal server error"
msgstr "Error interno de servidor"
-#: talermerchantdemos/blog/blog.py:563
-#: talermerchantdemos/donations/donations.py:323
-#: talermerchantdemos/landing/landing.py:179
-#: talermerchantdemos/provision/provision.py:292
+#: talermerchantdemos/blog/blog.py:557
+#: talermerchantdemos/donations/donations.py:317
+#: talermerchantdemos/landing/landing.py:170
+#: talermerchantdemos/provision/provision.py:282
msgid "Page not found"
msgstr "Página no encontrada"
-#: talermerchantdemos/donations/donations.py:137
+#: talermerchantdemos/donations/donations.py:131
#, python-brace-format
msgid "parameter '{}' required"
msgstr "parámetro '{}' requerido"
-#: talermerchantdemos/donations/donations.py:199
-#: talermerchantdemos/donations/donations.py:234
-#: talermerchantdemos/donations/donations.py:308
+#: talermerchantdemos/donations/donations.py:193
+#: talermerchantdemos/donations/donations.py:228
+#: talermerchantdemos/donations/donations.py:302
msgid "GNU Taler Demo: Donations"
msgstr "GNU Taler Demo: Donaciones"
-#: talermerchantdemos/donations/donations.py:217
+#: talermerchantdemos/donations/donations.py:211
#, fuzzy
msgid "GNU Taler Demo: Donations checkout"
msgstr "GNU Taler Demo: Pago de donaciones"
-#: talermerchantdemos/donations/donations.py:278
+#: talermerchantdemos/donations/donations.py:272
msgid "Backend could not create the order"
msgstr "El backend no ha podido crear el pedido"
@@ -126,34 +126,34 @@ msgstr "No se puede analizar la respuesta del backend"
msgid "Could not parse response from backend"
msgstr "No se puede analizar la respuesta del backend"
-#: talermerchantdemos/landing/landing.py:164
+#: talermerchantdemos/landing/landing.py:155
#: talermerchantdemos/templates/common-base.html.j2:20
msgid "GNU Taler Demo"
msgstr "Demostración GNU Taler"
-#: talermerchantdemos/landing/landing.py:188
+#: talermerchantdemos/landing/landing.py:179
msgid "HTTP method not allowed for this page"
msgstr "El método HTTP no está permitido para esta página"
-#: talermerchantdemos/provision/provision.py:217
+#: talermerchantdemos/provision/provision.py:207
#, fuzzy
msgid "GNU Taler Demo: Provision"
msgstr "GNU Taler Demo: Donaciones"
-#: talermerchantdemos/provision/provision.py:237
+#: talermerchantdemos/provision/provision.py:227
msgid "Full name required."
msgstr ""
-#: talermerchantdemos/provision/provision.py:239
+#: talermerchantdemos/provision/provision.py:229
msgid "Full name not acceptable."
msgstr ""
-#: talermerchantdemos/provision/provision.py:275
+#: talermerchantdemos/provision/provision.py:265
#, fuzzy
msgid "GNU Taler Demo: Self-Provision"
msgstr "GNU Taler Demo: Error"
-#: talermerchantdemos/provision/provision.py:291
+#: talermerchantdemos/provision/provision.py:281
#, fuzzy
msgid "GNU Taler Demo: Provision Error"
msgstr "GNU Taler Demo: Error"
diff --git a/talermerchantdemos/translations/fr/LC_MESSAGES/messages.po b/talermerchantdemos/translations/fr/LC_MESSAGES/messages.po
@@ -7,109 +7,108 @@ msgid ""
msgstr ""
"Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: eintritt@hotmail.com\n"
-"POT-Creation-Date: 2025-06-09 16:19+0200\n"
+"POT-Creation-Date: 2025-08-18 17:00+0200\n"
"PO-Revision-Date: 2025-06-26 09:58+0000\n"
"Last-Translator: Emmanuel Benoist <emmanuel.benoist@bfh.ch>\n"
-"Language-Team: French <https://weblate.taler.net/projects/gnu-taler/"
-"demonstration-pages/fr/>\n"
"Language: fr\n"
+"Language-Team: French <https://weblate.taler.net/projects/gnu-taler"
+"/demonstration-pages/fr/>\n"
+"Plural-Forms: nplurals=2; plural=n > 1;\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=n > 1;\n"
-"X-Generator: Weblate 5.5.5\n"
"Generated-By: Babel 2.17.0\n"
-#: talermerchantdemos/blog/blog.py:151 talermerchantdemos/blog/blog.py:230
-#: talermerchantdemos/blog/blog.py:395 talermerchantdemos/blog/blog.py:553
-#: talermerchantdemos/blog/blog.py:562 talermerchantdemos/blog/blog.py:572
-#: talermerchantdemos/donations/donations.py:151
-#: talermerchantdemos/donations/donations.py:322
-#: talermerchantdemos/landing/landing.py:98
+#: talermerchantdemos/blog/blog.py:145 talermerchantdemos/blog/blog.py:224
+#: talermerchantdemos/blog/blog.py:389 talermerchantdemos/blog/blog.py:547
+#: talermerchantdemos/blog/blog.py:556 talermerchantdemos/blog/blog.py:566
+#: talermerchantdemos/donations/donations.py:145
+#: talermerchantdemos/donations/donations.py:316
+#: talermerchantdemos/landing/landing.py:89
+#: talermerchantdemos/landing/landing.py:169
#: talermerchantdemos/landing/landing.py:178
-#: talermerchantdemos/landing/landing.py:187
-#: talermerchantdemos/provision/provision.py:183
+#: talermerchantdemos/provision/provision.py:173
msgid "GNU Taler Demo: Error"
msgstr "Démo de GNU Taler : Erreur"
-#: talermerchantdemos/blog/blog.py:152 talermerchantdemos/landing/landing.py:99
+#: talermerchantdemos/blog/blog.py:146 talermerchantdemos/landing/landing.py:90
msgid "Internal error"
msgstr "Erreur interne"
-#: talermerchantdemos/blog/blog.py:205
+#: talermerchantdemos/blog/blog.py:199
msgid "GNU Taler Demo: Essay Shop"
msgstr "Démo de GNU Taler : Librairie"
-#: talermerchantdemos/blog/blog.py:223
+#: talermerchantdemos/blog/blog.py:217
msgid "Cannot refund unpaid article"
msgstr "Impossible de rembourser l'article non payé"
-#: talermerchantdemos/blog/blog.py:231
+#: talermerchantdemos/blog/blog.py:225
msgid "Article is not anymore refundable"
msgstr "L'article n'est plus remboursable"
-#: talermerchantdemos/blog/blog.py:235
+#: talermerchantdemos/blog/blog.py:229
msgid "GNU Taler Demo: Confirm refund"
msgstr "Démo de GNU Taler : Confirmez le remboursement"
-#: talermerchantdemos/blog/blog.py:268
+#: talermerchantdemos/blog/blog.py:262
msgid "You did not pay for this article (nice try!)"
msgstr "Vous n'avez pas payé pour cet article (bien essayé !)"
-#: talermerchantdemos/blog/blog.py:273
+#: talermerchantdemos/blog/blog.py:267
msgid "Item not refundable (anymore)"
msgstr "Article pas ou plus remboursable"
-#: talermerchantdemos/blog/blog.py:299
+#: talermerchantdemos/blog/blog.py:293
#, python-brace-format
msgid "Internal error: Files for article ({}) not found."
msgstr "Erreur interne : Fichiers pour l'article ({}) non trouvés."
-#: talermerchantdemos/blog/blog.py:314
+#: talermerchantdemos/blog/blog.py:308
msgid "GNU Taler Demo: Article"
msgstr "Démo de GNU Taler : Article"
-#: talermerchantdemos/blog/blog.py:396
+#: talermerchantdemos/blog/blog.py:390
msgid "Please enable cookies."
msgstr "Veuillez activer les cookies."
-#: talermerchantdemos/blog/blog.py:465
+#: talermerchantdemos/blog/blog.py:459
msgid "GNU Taler Demo: Refunded"
msgstr "Démo de GNU Taler : Remboursement effectué"
-#: talermerchantdemos/blog/blog.py:476
+#: talermerchantdemos/blog/blog.py:470
#: talermerchantdemos/httpcommon/__init__.py:54
#: talermerchantdemos/httpcommon/__init__.py:77
msgid "Backend returned error status"
msgstr "Le backend a renvoyé un statut d'erreur"
-#: talermerchantdemos/blog/blog.py:554
+#: talermerchantdemos/blog/blog.py:548
msgid "Internal server error"
msgstr "Erreur interne du serveur"
-#: talermerchantdemos/blog/blog.py:563
-#: talermerchantdemos/donations/donations.py:323
-#: talermerchantdemos/landing/landing.py:179
-#: talermerchantdemos/provision/provision.py:292
+#: talermerchantdemos/blog/blog.py:557
+#: talermerchantdemos/donations/donations.py:317
+#: talermerchantdemos/landing/landing.py:170
+#: talermerchantdemos/provision/provision.py:282
msgid "Page not found"
msgstr "Page non trouvée"
-#: talermerchantdemos/donations/donations.py:137
+#: talermerchantdemos/donations/donations.py:131
#, python-brace-format
msgid "parameter '{}' required"
msgstr "paramètre '{}' obligatoire"
-#: talermerchantdemos/donations/donations.py:199
-#: talermerchantdemos/donations/donations.py:234
-#: talermerchantdemos/donations/donations.py:308
+#: talermerchantdemos/donations/donations.py:193
+#: talermerchantdemos/donations/donations.py:228
+#: talermerchantdemos/donations/donations.py:302
msgid "GNU Taler Demo: Donations"
msgstr "Démo de GNU Taler : Donations"
-#: talermerchantdemos/donations/donations.py:217
+#: talermerchantdemos/donations/donations.py:211
msgid "GNU Taler Demo: Donations checkout"
msgstr "Démo de GNU Taler : Encaissement des dons"
-#: talermerchantdemos/donations/donations.py:278
+#: talermerchantdemos/donations/donations.py:272
msgid "Backend could not create the order"
msgstr "Le backend n'a pas pu créer la commande"
@@ -126,32 +125,32 @@ msgstr "Impossible de comprendre la réponse du backend"
msgid "Could not parse response from backend"
msgstr "Impossible de comprendre la réponse du backend"
-#: talermerchantdemos/landing/landing.py:164
+#: talermerchantdemos/landing/landing.py:155
#: talermerchantdemos/templates/common-base.html.j2:20
msgid "GNU Taler Demo"
msgstr "Démo de GNU Taler"
-#: talermerchantdemos/landing/landing.py:188
+#: talermerchantdemos/landing/landing.py:179
msgid "HTTP method not allowed for this page"
msgstr "Méthode HTTP non autorisée pour cette page"
-#: talermerchantdemos/provision/provision.py:217
+#: talermerchantdemos/provision/provision.py:207
msgid "GNU Taler Demo: Provision"
msgstr "Démo de GNU Taler : Inscription"
-#: talermerchantdemos/provision/provision.py:237
+#: talermerchantdemos/provision/provision.py:227
msgid "Full name required."
msgstr "Nom complet (obligatoire)"
-#: talermerchantdemos/provision/provision.py:239
+#: talermerchantdemos/provision/provision.py:229
msgid "Full name not acceptable."
msgstr "Nom complet non acceptable."
-#: talermerchantdemos/provision/provision.py:275
+#: talermerchantdemos/provision/provision.py:265
msgid "GNU Taler Demo: Self-Provision"
msgstr "Démo de GNU Taler : Auto-inscription"
-#: talermerchantdemos/provision/provision.py:291
+#: talermerchantdemos/provision/provision.py:281
msgid "GNU Taler Demo: Provision Error"
msgstr "Démo de GNU Taler : Erreur d'inscription"
@@ -416,9 +415,9 @@ msgid ""
"other payment options are just placeholders and not really working in the"
" demonstration."
msgstr ""
-"Notez que vous devez sélectionner «Taler» ici pour que la démo se poursuive, "
-"car les autres options de paiement ne sont que des exemples et ne "
-"fonctionnent pas vraiment dans la démonstration."
+"Notez que vous devez sélectionner «Taler» ici pour que la démo se "
+"poursuive, car les autres options de paiement ne sont que des exemples et"
+" ne fonctionnent pas vraiment dans la démonstration."
#: talermerchantdemos/templates/donations-checkout.html.j2:18
msgid ""
@@ -426,9 +425,9 @@ msgid ""
"previous page (with the shopping cart); we just separated the two steps "
"to keep each step as simple as possible."
msgstr ""
-"Il aurait été possible de demander à l'utilisateur de faire ce choix dès la "
-"page précédente (avec le panier d'achat) ; nous avons séparé les deux étapes "
-"pour qu'elles soient aussi simples que possible."
+"Il aurait été possible de demander à l'utilisateur de faire ce choix dès "
+"la page précédente (avec le panier d'achat) ; nous avons séparé les deux "
+"étapes pour qu'elles soient aussi simples que possible."
#: talermerchantdemos/templates/donations-checkout.html.j2:44
msgid "Confirm selection"
@@ -515,12 +514,13 @@ msgid ""
" from the merchant in the Taler wallet. That way, Taler protects you "
"from committing to erroneous payments."
msgstr ""
-"(*) Pour rendre la démo un peu plus intéressante, l'option 5 {currency} est "
-"délibérément conçue avec un problème : le marchand essaiera de vous faire "
-"donner 6 {currency} au lieu des 5 {currency} indiquées dans le formulaire. "
-"Mais ne vous inquiétez pas, vous aurez la possibilité d'examiner l'offre "
-"finale du commerçant dans le portefeuille Taler. De cette façon, Taler vous "
-"protège contre les demandes de paiements erronées."
+"(*) Pour rendre la démo un peu plus intéressante, l'option 5 {currency} "
+"est délibérément conçue avec un problème : le marchand essaiera de vous "
+"faire donner 6 {currency} au lieu des 5 {currency} indiquées dans le "
+"formulaire. Mais ne vous inquiétez pas, vous aurez la possibilité "
+"d'examiner l'offre finale du commerçant dans le portefeuille Taler. De "
+"cette façon, Taler vous protège contre les demandes de paiements "
+"erronées."
#: talermerchantdemos/templates/donations-provider-not-supported.html.j2:4
msgid "Payment Provider Not Supported"
@@ -543,8 +543,8 @@ msgstr "Ceci est la démo de GNU Taler."
#: talermerchantdemos/templates/landing-base.html.j2:8
msgid "Here you can try out the GNU Taler payment system using a toy currency."
msgstr ""
-"Ici, vous pouvez essayer le système de paiement GNU Taler en utilisant une "
-"monnaie imaginaire."
+"Ici, vous pouvez essayer le système de paiement GNU Taler en utilisant "
+"une monnaie imaginaire."
#: talermerchantdemos/templates/landing-index.html.j2:4
msgid "Step 1: Install the Taler wallet"
@@ -628,8 +628,8 @@ msgid ""
"Afterwards, use the bank's Web interface to authorize the transfer of "
"{currency} to your wallet."
msgstr ""
-"Ensuite, utilisez l'interface web de la banque pour autoriser le transfert "
-"de {currency} vers votre portefeuille."
+"Ensuite, utilisez l'interface web de la banque pour autoriser le "
+"transfert de {currency} vers votre portefeuille."
#: talermerchantdemos/templates/landing-index.html.j2:30
msgid ""
@@ -646,8 +646,8 @@ msgstr "Étape 3 : Payer"
#: talermerchantdemos/templates/landing-index.html.j2:38
msgid "We have two demo merchants where you can spend your coins:"
msgstr ""
-"Nous avons deux marchands de démonstration chez qui vous pouvez dépenser vos "
-"pièces :"
+"Nous avons deux marchands de démonstration chez qui vous pouvez dépenser "
+"vos pièces :"
#: talermerchantdemos/templates/landing-index.html.j2:44
#, python-brace-format
@@ -664,8 +664,8 @@ msgstr ""
#, python-brace-format
msgid "The book is also available for free at <a href=\"{fsf}\">the FSF</a>."
msgstr ""
-"Le livre est également disponible gratuitement et sous licence libre à <a "
-"href=\"{fsf}\">la FSF</a>."
+"Le livre est également disponible gratuitement et sous licence libre à <a"
+" href=\"{fsf}\">la FSF</a>."
#: talermerchantdemos/templates/landing-index.html.j2:50
#, python-brace-format
@@ -674,9 +674,9 @@ msgid ""
"respect to a software project of your choice by donating {currency} to "
"them."
msgstr ""
-"Sur le site <a href=\"{donations}\">donations</a> vous pouvez exprimer votre "
-"reconnaissance à un projet de logiciel libre de votre choix en lui faisant "
-"un don en {currency}."
+"Sur le site <a href=\"{donations}\">donations</a> vous pouvez exprimer "
+"votre reconnaissance à un projet de logiciel libre de votre choix en lui "
+"faisant un don en {currency}."
#: talermerchantdemos/templates/landing-index.html.j2:56
msgid "Step 4: Check money flow"
@@ -690,8 +690,8 @@ msgid ""
"bank."
msgstr ""
"Vous pouvez voir les virements partant du compte de fiduciaire de la "
-"plateforme vers les commerçants sur <a href=\"{bank}\">la page des comptes "
-"publics</a> de la banque."
+"plateforme vers les commerçants sur <a href=\"{bank}\">la page des "
+"comptes publics</a> de la banque."
#: talermerchantdemos/templates/landing-index.html.j2:60
msgid ""
@@ -758,8 +758,8 @@ msgid ""
"Login to the <a href='{url}'>bank for this environment</a> to see "
"incoming wire transfers from the exchange."
msgstr ""
-"Connectez-vous à <a href='{url}'>la banque pour cet environnement</a> afin "
-"de voir les virements entrants en provenance de l'exchange."
+"Connectez-vous à <a href='{url}'>la banque pour cet environnement</a> "
+"afin de voir les virements entrants en provenance de l'exchange."
#: talermerchantdemos/templates/provision-done.html.j2:26
#, python-brace-format
@@ -768,16 +768,17 @@ msgid ""
"href='{url}/instances/{id}/webui/#/orders'>backend instance</a> for "
"administration."
msgstr ""
-"Connectez-vous à votre <a target='_blank' href='{url}/instances/{id}/webui/#/"
-"orders'>instance de backend</a> pour l'administration."
+"Connectez-vous à votre <a target='_blank' "
+"href='{url}/instances/{id}/webui/#/orders'>instance de backend</a> pour "
+"l'administration."
#: talermerchantdemos/templates/provision-done.html.j2:27
msgid ""
"For example, you might want to add products to the inventory, add "
"categories etc."
msgstr ""
-"Par exemple, vous pouvez ajouter des produits à l'inventaire, ajouter des "
-"catégories, etc."
+"Par exemple, vous pouvez ajouter des produits à l'inventaire, ajouter des"
+" catégories, etc."
#: talermerchantdemos/templates/provision-done.html.j2:28
msgid ""
@@ -785,9 +786,9 @@ msgid ""
"backoffice/instance'>tutorial on Instance management</a> for more "
"details."
msgstr ""
-"Consultez notre <a href='https://tutorials.taler.net/merchant/"
-"merchant-backoffice/instance'>tutoriel sur la gestion des instances</a> pour "
-"plus de détails."
+"Consultez notre <a href='https://tutorials.taler.net/merchant/merchant-"
+"backoffice/instance'>tutoriel sur la gestion des instances</a> pour plus "
+"de détails."
#: talermerchantdemos/templates/provision-done.html.j2:30
#, python-brace-format
@@ -796,9 +797,10 @@ msgid ""
"Android App to use your merchant's base URL <pre><a target='_blank' "
"href='{url}/instances/{id}'>{url}/instances/{id}</a></pre>"
msgstr ""
-"Après avoir créé un inventaire, configurez l'application Android de point de "
-"vente GNU Taler pour utiliser l'URL de base de votre marchand <pre><a "
-"target='_blank' href='{url}/instances/{id}'>{url}/instances/{id}</a></pre>"
+"Après avoir créé un inventaire, configurez l'application Android de point"
+" de vente GNU Taler pour utiliser l'URL de base de votre marchand <pre><a"
+" target='_blank' "
+"href='{url}/instances/{id}'>{url}/instances/{id}</a></pre>"
#: talermerchantdemos/templates/provision-done.html.j2:31
msgid ""
@@ -806,8 +808,9 @@ msgid ""
"href='https://tutorials.taler.net/merchant/pos/pos-config'>tutorial on "
"the Point-of-Sale application</a>."
msgstr ""
-"Pour plus de détails, consultez notre <a href='https://tutorials.taler.net/"
-"merchant/pos/pos-config'>tutoriel sur l'application Point de vente</a>."
+"Pour plus de détails, consultez notre <a "
+"href='https://tutorials.taler.net/merchant/pos/pos-config'>tutoriel sur "
+"l'application Point de vente</a>."
#: talermerchantdemos/templates/provision-done.html.j2:33
#, python-brace-format
@@ -819,8 +822,9 @@ msgid ""
msgstr ""
"Créez des commandes (pour la devise {currency}), via l'API REST à "
"l'<pre>adresse {url}/instances/{id}/private/orders</pre> Pour plus de "
-"détails, consultez notre <a target='_blank' href='https://tutorials.taler."
-"net/dev/merchant-api/index'>tutoriel sur l'API backend commerçant</a>."
+"détails, consultez notre <a target='_blank' "
+"href='https://tutorials.taler.net/dev/merchant-api/index'>tutoriel sur "
+"l'API backend commerçant</a>."
#: talermerchantdemos/templates/provision-done.html.j2:37
msgid "<b>Note:</b> the merchant instance will be automatically removed when"
@@ -851,10 +855,10 @@ msgid ""
" merchant API on this site!"
msgstr ""
"Si vous êtes un développeur frontend et que vous souhaitez simplement "
-"intégrer les paiements avec Taler dans votre interface utilisateur, il vous "
-"suffit de vous créer ici une instance marchande et un compte bancaire "
-"correspondant dans cet environnement, et de commencer à utiliser l'API "
-"marchande sur ce site !"
+"intégrer les paiements avec Taler dans votre interface utilisateur, il "
+"vous suffit de vous créer ici une instance marchande et un compte "
+"bancaire correspondant dans cet environnement, et de commencer à utiliser"
+" l'API marchande sur ce site !"
#: talermerchantdemos/templates/provision-index.html.j2:13
msgid ""
@@ -871,9 +875,9 @@ msgid ""
"the merchant's inventory at our own <a href='{backend}'>merchant "
"backend</a>, and"
msgstr ""
-"pour créer des commandes via l'API du backend de votre logiciel commerçant "
-"et apporter des modifications à l'inventaire du marchand sur notre propre <a "
-"href='{backend}'>backend marchand</a>, et"
+"pour créer des commandes via l'API du backend de votre logiciel "
+"commerçant et apporter des modifications à l'inventaire du marchand sur "
+"notre propre <a href='{backend}'>backend marchand</a>, et"
#: talermerchantdemos/templates/provision-index.html.j2:16
#, python-brace-format
@@ -882,9 +886,9 @@ msgid ""
"this environment and see the incoming wire transfers from the payment "
"service provider."
msgstr ""
-"d'utiliser le compte bancaire du commerçant à la <a href='{bank}'>banque</a> "
-"pour cet environnement et de voir les virements entrants du prestataire de "
-"services de paiement."
+"d'utiliser le compte bancaire du commerçant à la <a "
+"href='{bank}'>banque</a> pour cet environnement et de voir les virements "
+"entrants du prestataire de services de paiement."
#: talermerchantdemos/templates/provision-index.html.j2:26
msgid "Enter the full name for your merchant:"
@@ -927,7 +931,7 @@ msgstr "Créer !"
#~ msgstr "Demo de GNU Taler : Introduction"
#~ msgid "GNU Taler Demo: Survey"
-#~ msgstr "Démo de GNU Taler : Enquête"
+#~ msgstr "Démo de GNU Taler : Article"
#~ msgid "Bank"
#~ msgstr "Banque"
@@ -948,69 +952,54 @@ msgstr "Créer !"
#~ "href=\"{site}\">site web</a>."
#~ msgid "Supplemental file ({}) for article ({}) not found."
-#~ msgstr "Fichier supplémentaire ({}) pour l'article ({}) non trouvé."
+#~ msgstr "Erreur interne : Fichiers pour l'article ({}) non trouvés."
#~ msgid "Direct access forbidden"
-#~ msgstr "Accès direct interdit"
+#~ msgstr ""
#~ msgid "Survey"
-#~ msgstr "Enquête"
+#~ msgstr ""
#~ msgid "Step 5: Survey"
-#~ msgstr "Étape 3 : Enquête"
+#~ msgstr "Étape 3 : Payer"
#~ msgid "Websites can give rewards to visitors for completing tasks."
#~ msgstr ""
-#~ "Les sites Web peuvent récompenser les"
-#~ " visiteurs qui accomplissent des tâches."
#~ msgid ""
#~ "You can earn some {currency} coins "
#~ "by filling in our <a "
#~ "href=\"{url}\">survey</a>."
#~ msgstr ""
-#~ "Vous pouvez gagner quelques pièces de"
-#~ " {currency} en remplissant notre <a "
-#~ "href=\"{url}\">enquête</a>."
#~ msgid "Step 6: Reach out to us"
-#~ msgstr "Étape 6 : contactez-nous"
+#~ msgstr "Étape 5 : contactez-nous"
#~ msgid ""
#~ "This page demonstrates how to reward "
#~ "visitors for completing small tasks."
#~ msgstr ""
-#~ "Cette page montre comment donner des "
-#~ "récompenses aux visiteurs qui accomplissent"
-#~ " de petites tâches."
#~ msgid ""
#~ "Rewarding is a way of offering "
#~ "cash rewards that go straight into "
#~ "a user's wallet."
#~ msgstr ""
-#~ "La récompense est un moyen d'offrir "
-#~ "des récompenses en espèces qui vont "
-#~ "directement dans le portefeuille d'un "
-#~ "utilisateur."
#~ msgid "Unexpected result"
-#~ msgstr "Résultat inattendu"
+#~ msgstr ""
#~ msgid ""
#~ "Please participate in our survey about"
#~ " payment systems and receive a reward"
#~ " in return."
#~ msgstr ""
-#~ "Participez à notre enquête sur les "
-#~ "systèmes de paiement et recevez une "
-#~ "récompense en retour."
#~ msgid "Which payment system do you prefer?"
-#~ msgstr "Quel système de paiement préférez-vous ?"
+#~ msgstr ""
#~ msgid "Submit Survey"
-#~ msgstr "Soumettre l'enquête"
+#~ msgstr ""
#~ msgid ""
#~ "Login to the <a href='{url}'>demo "
@@ -1055,3 +1044,4 @@ msgstr "Créer !"
#~ "and see the incoming wire transfers "
#~ "from the payment service provider."
#~ msgstr ""
+
diff --git a/talermerchantdemos/translations/hi/LC_MESSAGES/messages.po b/talermerchantdemos/translations/hi/LC_MESSAGES/messages.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: eintritt@hotmail.com\n"
-"POT-Creation-Date: 2025-06-09 16:19+0200\n"
+"POT-Creation-Date: 2025-08-18 17:00+0200\n"
"PO-Revision-Date: 2024-12-12 17:44+0000\n"
"Last-Translator: Anonymous <noreply@weblate.org>\n"
"Language: hi\n"
@@ -19,96 +19,96 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.17.0\n"
-#: talermerchantdemos/blog/blog.py:151 talermerchantdemos/blog/blog.py:230
-#: talermerchantdemos/blog/blog.py:395 talermerchantdemos/blog/blog.py:553
-#: talermerchantdemos/blog/blog.py:562 talermerchantdemos/blog/blog.py:572
-#: talermerchantdemos/donations/donations.py:151
-#: talermerchantdemos/donations/donations.py:322
-#: talermerchantdemos/landing/landing.py:98
+#: talermerchantdemos/blog/blog.py:145 talermerchantdemos/blog/blog.py:224
+#: talermerchantdemos/blog/blog.py:389 talermerchantdemos/blog/blog.py:547
+#: talermerchantdemos/blog/blog.py:556 talermerchantdemos/blog/blog.py:566
+#: talermerchantdemos/donations/donations.py:145
+#: talermerchantdemos/donations/donations.py:316
+#: talermerchantdemos/landing/landing.py:89
+#: talermerchantdemos/landing/landing.py:169
#: talermerchantdemos/landing/landing.py:178
-#: talermerchantdemos/landing/landing.py:187
-#: talermerchantdemos/provision/provision.py:183
+#: talermerchantdemos/provision/provision.py:173
msgid "GNU Taler Demo: Error"
msgstr ""
-#: talermerchantdemos/blog/blog.py:152 talermerchantdemos/landing/landing.py:99
+#: talermerchantdemos/blog/blog.py:146 talermerchantdemos/landing/landing.py:90
msgid "Internal error"
msgstr ""
-#: talermerchantdemos/blog/blog.py:205
+#: talermerchantdemos/blog/blog.py:199
msgid "GNU Taler Demo: Essay Shop"
msgstr ""
-#: talermerchantdemos/blog/blog.py:223
+#: talermerchantdemos/blog/blog.py:217
msgid "Cannot refund unpaid article"
msgstr ""
-#: talermerchantdemos/blog/blog.py:231
+#: talermerchantdemos/blog/blog.py:225
msgid "Article is not anymore refundable"
msgstr ""
-#: talermerchantdemos/blog/blog.py:235
+#: talermerchantdemos/blog/blog.py:229
msgid "GNU Taler Demo: Confirm refund"
msgstr ""
-#: talermerchantdemos/blog/blog.py:268
+#: talermerchantdemos/blog/blog.py:262
msgid "You did not pay for this article (nice try!)"
msgstr ""
-#: talermerchantdemos/blog/blog.py:273
+#: talermerchantdemos/blog/blog.py:267
msgid "Item not refundable (anymore)"
msgstr ""
-#: talermerchantdemos/blog/blog.py:299
+#: talermerchantdemos/blog/blog.py:293
#, python-brace-format
msgid "Internal error: Files for article ({}) not found."
msgstr ""
-#: talermerchantdemos/blog/blog.py:314
+#: talermerchantdemos/blog/blog.py:308
msgid "GNU Taler Demo: Article"
msgstr ""
-#: talermerchantdemos/blog/blog.py:396
+#: talermerchantdemos/blog/blog.py:390
msgid "Please enable cookies."
msgstr ""
-#: talermerchantdemos/blog/blog.py:465
+#: talermerchantdemos/blog/blog.py:459
msgid "GNU Taler Demo: Refunded"
msgstr ""
-#: talermerchantdemos/blog/blog.py:476
+#: talermerchantdemos/blog/blog.py:470
#: talermerchantdemos/httpcommon/__init__.py:54
#: talermerchantdemos/httpcommon/__init__.py:77
msgid "Backend returned error status"
msgstr ""
-#: talermerchantdemos/blog/blog.py:554
+#: talermerchantdemos/blog/blog.py:548
msgid "Internal server error"
msgstr ""
-#: talermerchantdemos/blog/blog.py:563
-#: talermerchantdemos/donations/donations.py:323
-#: talermerchantdemos/landing/landing.py:179
-#: talermerchantdemos/provision/provision.py:292
+#: talermerchantdemos/blog/blog.py:557
+#: talermerchantdemos/donations/donations.py:317
+#: talermerchantdemos/landing/landing.py:170
+#: talermerchantdemos/provision/provision.py:282
msgid "Page not found"
msgstr ""
-#: talermerchantdemos/donations/donations.py:137
+#: talermerchantdemos/donations/donations.py:131
#, python-brace-format
msgid "parameter '{}' required"
msgstr ""
-#: talermerchantdemos/donations/donations.py:199
-#: talermerchantdemos/donations/donations.py:234
-#: talermerchantdemos/donations/donations.py:308
+#: talermerchantdemos/donations/donations.py:193
+#: talermerchantdemos/donations/donations.py:228
+#: talermerchantdemos/donations/donations.py:302
msgid "GNU Taler Demo: Donations"
msgstr ""
-#: talermerchantdemos/donations/donations.py:217
+#: talermerchantdemos/donations/donations.py:211
msgid "GNU Taler Demo: Donations checkout"
msgstr ""
-#: talermerchantdemos/donations/donations.py:278
+#: talermerchantdemos/donations/donations.py:272
msgid "Backend could not create the order"
msgstr ""
@@ -125,32 +125,32 @@ msgstr ""
msgid "Could not parse response from backend"
msgstr ""
-#: talermerchantdemos/landing/landing.py:164
+#: talermerchantdemos/landing/landing.py:155
#: talermerchantdemos/templates/common-base.html.j2:20
msgid "GNU Taler Demo"
msgstr ""
-#: talermerchantdemos/landing/landing.py:188
+#: talermerchantdemos/landing/landing.py:179
msgid "HTTP method not allowed for this page"
msgstr ""
-#: talermerchantdemos/provision/provision.py:217
+#: talermerchantdemos/provision/provision.py:207
msgid "GNU Taler Demo: Provision"
msgstr ""
-#: talermerchantdemos/provision/provision.py:237
+#: talermerchantdemos/provision/provision.py:227
msgid "Full name required."
msgstr ""
-#: talermerchantdemos/provision/provision.py:239
+#: talermerchantdemos/provision/provision.py:229
msgid "Full name not acceptable."
msgstr ""
-#: talermerchantdemos/provision/provision.py:275
+#: talermerchantdemos/provision/provision.py:265
msgid "GNU Taler Demo: Self-Provision"
msgstr ""
-#: talermerchantdemos/provision/provision.py:291
+#: talermerchantdemos/provision/provision.py:281
msgid "GNU Taler Demo: Provision Error"
msgstr ""
diff --git a/talermerchantdemos/translations/it/LC_MESSAGES/messages.po b/talermerchantdemos/translations/it/LC_MESSAGES/messages.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: eintritt@hotmail.com\n"
-"POT-Creation-Date: 2025-06-09 16:19+0200\n"
+"POT-Creation-Date: 2025-08-18 17:00+0200\n"
"PO-Revision-Date: 2024-12-12 17:44+0000\n"
"Last-Translator: Wrath <Wrath@users.noreply.weblate.taler.net>\n"
"Language: it\n"
@@ -19,97 +19,97 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.17.0\n"
-#: talermerchantdemos/blog/blog.py:151 talermerchantdemos/blog/blog.py:230
-#: talermerchantdemos/blog/blog.py:395 talermerchantdemos/blog/blog.py:553
-#: talermerchantdemos/blog/blog.py:562 talermerchantdemos/blog/blog.py:572
-#: talermerchantdemos/donations/donations.py:151
-#: talermerchantdemos/donations/donations.py:322
-#: talermerchantdemos/landing/landing.py:98
+#: talermerchantdemos/blog/blog.py:145 talermerchantdemos/blog/blog.py:224
+#: talermerchantdemos/blog/blog.py:389 talermerchantdemos/blog/blog.py:547
+#: talermerchantdemos/blog/blog.py:556 talermerchantdemos/blog/blog.py:566
+#: talermerchantdemos/donations/donations.py:145
+#: talermerchantdemos/donations/donations.py:316
+#: talermerchantdemos/landing/landing.py:89
+#: talermerchantdemos/landing/landing.py:169
#: talermerchantdemos/landing/landing.py:178
-#: talermerchantdemos/landing/landing.py:187
-#: talermerchantdemos/provision/provision.py:183
+#: talermerchantdemos/provision/provision.py:173
msgid "GNU Taler Demo: Error"
msgstr "GNU Taler Demo: Errore"
-#: talermerchantdemos/blog/blog.py:152 talermerchantdemos/landing/landing.py:99
+#: talermerchantdemos/blog/blog.py:146 talermerchantdemos/landing/landing.py:90
msgid "Internal error"
msgstr "Errore interno"
-#: talermerchantdemos/blog/blog.py:205
+#: talermerchantdemos/blog/blog.py:199
msgid "GNU Taler Demo: Essay Shop"
msgstr "GNU Taler Demo: Negozio di Saggi"
-#: talermerchantdemos/blog/blog.py:223
+#: talermerchantdemos/blog/blog.py:217
msgid "Cannot refund unpaid article"
msgstr "Impossibile rimborsare un articolo non pagato"
-#: talermerchantdemos/blog/blog.py:231
+#: talermerchantdemos/blog/blog.py:225
msgid "Article is not anymore refundable"
msgstr "L'articolo non è più rimborsabile"
-#: talermerchantdemos/blog/blog.py:235
+#: talermerchantdemos/blog/blog.py:229
msgid "GNU Taler Demo: Confirm refund"
msgstr "GNU Taler Demo: Conferma rimborso"
-#: talermerchantdemos/blog/blog.py:268
+#: talermerchantdemos/blog/blog.py:262
msgid "You did not pay for this article (nice try!)"
msgstr "Non hai pagato questo articolo (bel tentativo!)"
-#: talermerchantdemos/blog/blog.py:273
+#: talermerchantdemos/blog/blog.py:267
msgid "Item not refundable (anymore)"
msgstr "Articolo non (più) rimborsabile"
-#: talermerchantdemos/blog/blog.py:299
+#: talermerchantdemos/blog/blog.py:293
#, python-brace-format
msgid "Internal error: Files for article ({}) not found."
msgstr "Errore interno: File per l'articolo ({}) non trovati."
-#: talermerchantdemos/blog/blog.py:314
+#: talermerchantdemos/blog/blog.py:308
msgid "GNU Taler Demo: Article"
msgstr "GNU Taler Demo: Articolo"
-#: talermerchantdemos/blog/blog.py:396
+#: talermerchantdemos/blog/blog.py:390
msgid "Please enable cookies."
msgstr "Per favore, abilita i cookie."
-#: talermerchantdemos/blog/blog.py:465
+#: talermerchantdemos/blog/blog.py:459
msgid "GNU Taler Demo: Refunded"
msgstr "GNU Taler Demo: Rimborsato"
-#: talermerchantdemos/blog/blog.py:476
+#: talermerchantdemos/blog/blog.py:470
#: talermerchantdemos/httpcommon/__init__.py:54
#: talermerchantdemos/httpcommon/__init__.py:77
msgid "Backend returned error status"
msgstr "Il backend ha segnalato uno stato di errore"
-#: talermerchantdemos/blog/blog.py:554
+#: talermerchantdemos/blog/blog.py:548
msgid "Internal server error"
msgstr "Errore del server"
-#: talermerchantdemos/blog/blog.py:563
-#: talermerchantdemos/donations/donations.py:323
-#: talermerchantdemos/landing/landing.py:179
-#: talermerchantdemos/provision/provision.py:292
+#: talermerchantdemos/blog/blog.py:557
+#: talermerchantdemos/donations/donations.py:317
+#: talermerchantdemos/landing/landing.py:170
+#: talermerchantdemos/provision/provision.py:282
msgid "Page not found"
msgstr "Pagina non trovata"
-#: talermerchantdemos/donations/donations.py:137
+#: talermerchantdemos/donations/donations.py:131
#, python-brace-format
msgid "parameter '{}' required"
msgstr "parametro '{}' richiesto"
-#: talermerchantdemos/donations/donations.py:199
-#: talermerchantdemos/donations/donations.py:234
-#: talermerchantdemos/donations/donations.py:308
+#: talermerchantdemos/donations/donations.py:193
+#: talermerchantdemos/donations/donations.py:228
+#: talermerchantdemos/donations/donations.py:302
msgid "GNU Taler Demo: Donations"
msgstr "GNU Taler Demo: Donazioni"
-#: talermerchantdemos/donations/donations.py:217
+#: talermerchantdemos/donations/donations.py:211
#, fuzzy
msgid "GNU Taler Demo: Donations checkout"
msgstr "GNU Taler Demo: Procedi alla donazione"
-#: talermerchantdemos/donations/donations.py:278
+#: talermerchantdemos/donations/donations.py:272
msgid "Backend could not create the order"
msgstr "Il backend non ha potuto creare l'ordine"
@@ -127,34 +127,34 @@ msgstr "Impossibile analizzare la risposta del backend"
msgid "Could not parse response from backend"
msgstr "Impossibile analizzare la risposta del backend"
-#: talermerchantdemos/landing/landing.py:164
+#: talermerchantdemos/landing/landing.py:155
#: talermerchantdemos/templates/common-base.html.j2:20
msgid "GNU Taler Demo"
msgstr "GNU Taler Demo"
-#: talermerchantdemos/landing/landing.py:188
+#: talermerchantdemos/landing/landing.py:179
msgid "HTTP method not allowed for this page"
msgstr "Il metodo HTTP non è permesso in questa pagina"
-#: talermerchantdemos/provision/provision.py:217
+#: talermerchantdemos/provision/provision.py:207
#, fuzzy
msgid "GNU Taler Demo: Provision"
msgstr "GNU Taler Demo: Donazioni"
-#: talermerchantdemos/provision/provision.py:237
+#: talermerchantdemos/provision/provision.py:227
msgid "Full name required."
msgstr ""
-#: talermerchantdemos/provision/provision.py:239
+#: talermerchantdemos/provision/provision.py:229
msgid "Full name not acceptable."
msgstr ""
-#: talermerchantdemos/provision/provision.py:275
+#: talermerchantdemos/provision/provision.py:265
#, fuzzy
msgid "GNU Taler Demo: Self-Provision"
msgstr "GNU Taler Demo: Errore"
-#: talermerchantdemos/provision/provision.py:291
+#: talermerchantdemos/provision/provision.py:281
#, fuzzy
msgid "GNU Taler Demo: Provision Error"
msgstr "GNU Taler Demo: Errore"
diff --git a/talermerchantdemos/translations/ja/LC_MESSAGES/messages.po b/talermerchantdemos/translations/ja/LC_MESSAGES/messages.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: eintritt@hotmail.com\n"
-"POT-Creation-Date: 2025-06-09 16:19+0200\n"
+"POT-Creation-Date: 2025-08-18 17:00+0200\n"
"PO-Revision-Date: 2024-12-12 17:44+0000\n"
"Last-Translator: Stefan Kügel <skuegel@web.de>\n"
"Language: ja\n"
@@ -19,96 +19,96 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.17.0\n"
-#: talermerchantdemos/blog/blog.py:151 talermerchantdemos/blog/blog.py:230
-#: talermerchantdemos/blog/blog.py:395 talermerchantdemos/blog/blog.py:553
-#: talermerchantdemos/blog/blog.py:562 talermerchantdemos/blog/blog.py:572
-#: talermerchantdemos/donations/donations.py:151
-#: talermerchantdemos/donations/donations.py:322
-#: talermerchantdemos/landing/landing.py:98
+#: talermerchantdemos/blog/blog.py:145 talermerchantdemos/blog/blog.py:224
+#: talermerchantdemos/blog/blog.py:389 talermerchantdemos/blog/blog.py:547
+#: talermerchantdemos/blog/blog.py:556 talermerchantdemos/blog/blog.py:566
+#: talermerchantdemos/donations/donations.py:145
+#: talermerchantdemos/donations/donations.py:316
+#: talermerchantdemos/landing/landing.py:89
+#: talermerchantdemos/landing/landing.py:169
#: talermerchantdemos/landing/landing.py:178
-#: talermerchantdemos/landing/landing.py:187
-#: talermerchantdemos/provision/provision.py:183
+#: talermerchantdemos/provision/provision.py:173
msgid "GNU Taler Demo: Error"
msgstr ""
-#: talermerchantdemos/blog/blog.py:152 talermerchantdemos/landing/landing.py:99
+#: talermerchantdemos/blog/blog.py:146 talermerchantdemos/landing/landing.py:90
msgid "Internal error"
msgstr "内部エラー"
-#: talermerchantdemos/blog/blog.py:205
+#: talermerchantdemos/blog/blog.py:199
msgid "GNU Taler Demo: Essay Shop"
msgstr ""
-#: talermerchantdemos/blog/blog.py:223
+#: talermerchantdemos/blog/blog.py:217
msgid "Cannot refund unpaid article"
msgstr "未払いの記事の返金はできません"
-#: talermerchantdemos/blog/blog.py:231
+#: talermerchantdemos/blog/blog.py:225
msgid "Article is not anymore refundable"
msgstr "記事はもう払い戻しできません"
-#: talermerchantdemos/blog/blog.py:235
+#: talermerchantdemos/blog/blog.py:229
msgid "GNU Taler Demo: Confirm refund"
msgstr ""
-#: talermerchantdemos/blog/blog.py:268
+#: talermerchantdemos/blog/blog.py:262
msgid "You did not pay for this article (nice try!)"
msgstr "この記事のためにお金を払っていない (頑張った)"
-#: talermerchantdemos/blog/blog.py:273
+#: talermerchantdemos/blog/blog.py:267
msgid "Item not refundable (anymore)"
msgstr "(もはや)払い戻し不可な商品"
-#: talermerchantdemos/blog/blog.py:299
+#: talermerchantdemos/blog/blog.py:293
#, python-brace-format
msgid "Internal error: Files for article ({}) not found."
msgstr "内部エラー: 記事 ({}) のファイルが見つかりません。"
-#: talermerchantdemos/blog/blog.py:314
+#: talermerchantdemos/blog/blog.py:308
msgid "GNU Taler Demo: Article"
msgstr ""
-#: talermerchantdemos/blog/blog.py:396
+#: talermerchantdemos/blog/blog.py:390
msgid "Please enable cookies."
msgstr ""
-#: talermerchantdemos/blog/blog.py:465
+#: talermerchantdemos/blog/blog.py:459
msgid "GNU Taler Demo: Refunded"
msgstr ""
-#: talermerchantdemos/blog/blog.py:476
+#: talermerchantdemos/blog/blog.py:470
#: talermerchantdemos/httpcommon/__init__.py:54
#: talermerchantdemos/httpcommon/__init__.py:77
msgid "Backend returned error status"
msgstr "Backend は、エラー・ステータスを返してきました"
-#: talermerchantdemos/blog/blog.py:554
+#: talermerchantdemos/blog/blog.py:548
msgid "Internal server error"
msgstr "サーバー 内部エラー"
-#: talermerchantdemos/blog/blog.py:563
-#: talermerchantdemos/donations/donations.py:323
-#: talermerchantdemos/landing/landing.py:179
-#: talermerchantdemos/provision/provision.py:292
+#: talermerchantdemos/blog/blog.py:557
+#: talermerchantdemos/donations/donations.py:317
+#: talermerchantdemos/landing/landing.py:170
+#: talermerchantdemos/provision/provision.py:282
msgid "Page not found"
msgstr "ページが見つかりません"
-#: talermerchantdemos/donations/donations.py:137
+#: talermerchantdemos/donations/donations.py:131
#, python-brace-format
msgid "parameter '{}' required"
msgstr "パラメータ「{}」が必要です"
-#: talermerchantdemos/donations/donations.py:199
-#: talermerchantdemos/donations/donations.py:234
-#: talermerchantdemos/donations/donations.py:308
+#: talermerchantdemos/donations/donations.py:193
+#: talermerchantdemos/donations/donations.py:228
+#: talermerchantdemos/donations/donations.py:302
msgid "GNU Taler Demo: Donations"
msgstr ""
-#: talermerchantdemos/donations/donations.py:217
+#: talermerchantdemos/donations/donations.py:211
msgid "GNU Taler Demo: Donations checkout"
msgstr ""
-#: talermerchantdemos/donations/donations.py:278
+#: talermerchantdemos/donations/donations.py:272
msgid "Backend could not create the order"
msgstr "backendは注文を作成できませんでした"
@@ -126,34 +126,34 @@ msgstr "backendからの応答を解析することができませんでした"
msgid "Could not parse response from backend"
msgstr "backendからの応答を解析することができませんでした"
-#: talermerchantdemos/landing/landing.py:164
+#: talermerchantdemos/landing/landing.py:155
#: talermerchantdemos/templates/common-base.html.j2:20
msgid "GNU Taler Demo"
msgstr "GNU Taler デモ"
-#: talermerchantdemos/landing/landing.py:188
+#: talermerchantdemos/landing/landing.py:179
msgid "HTTP method not allowed for this page"
msgstr "HTTPメソッドは、このページでは許可されていません"
-#: talermerchantdemos/provision/provision.py:217
+#: talermerchantdemos/provision/provision.py:207
#, fuzzy
msgid "GNU Taler Demo: Provision"
msgstr "GNU Taler デモ"
-#: talermerchantdemos/provision/provision.py:237
+#: talermerchantdemos/provision/provision.py:227
msgid "Full name required."
msgstr ""
-#: talermerchantdemos/provision/provision.py:239
+#: talermerchantdemos/provision/provision.py:229
msgid "Full name not acceptable."
msgstr ""
-#: talermerchantdemos/provision/provision.py:275
+#: talermerchantdemos/provision/provision.py:265
#, fuzzy
msgid "GNU Taler Demo: Self-Provision"
msgstr "GNU Taler デモ"
-#: talermerchantdemos/provision/provision.py:291
+#: talermerchantdemos/provision/provision.py:281
#, fuzzy
msgid "GNU Taler Demo: Provision Error"
msgstr "GNU Taler デモ"
diff --git a/talermerchantdemos/translations/ko/LC_MESSAGES/messages.po b/talermerchantdemos/translations/ko/LC_MESSAGES/messages.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: eintritt@hotmail.com\n"
-"POT-Creation-Date: 2025-06-09 16:19+0200\n"
+"POT-Creation-Date: 2025-08-18 17:00+0200\n"
"PO-Revision-Date: 2024-12-12 17:44+0000\n"
"Last-Translator: Stefan Kügel <skuegel@web.de>\n"
"Language: ko\n"
@@ -19,96 +19,96 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.17.0\n"
-#: talermerchantdemos/blog/blog.py:151 talermerchantdemos/blog/blog.py:230
-#: talermerchantdemos/blog/blog.py:395 talermerchantdemos/blog/blog.py:553
-#: talermerchantdemos/blog/blog.py:562 talermerchantdemos/blog/blog.py:572
-#: talermerchantdemos/donations/donations.py:151
-#: talermerchantdemos/donations/donations.py:322
-#: talermerchantdemos/landing/landing.py:98
+#: talermerchantdemos/blog/blog.py:145 talermerchantdemos/blog/blog.py:224
+#: talermerchantdemos/blog/blog.py:389 talermerchantdemos/blog/blog.py:547
+#: talermerchantdemos/blog/blog.py:556 talermerchantdemos/blog/blog.py:566
+#: talermerchantdemos/donations/donations.py:145
+#: talermerchantdemos/donations/donations.py:316
+#: talermerchantdemos/landing/landing.py:89
+#: talermerchantdemos/landing/landing.py:169
#: talermerchantdemos/landing/landing.py:178
-#: talermerchantdemos/landing/landing.py:187
-#: talermerchantdemos/provision/provision.py:183
+#: talermerchantdemos/provision/provision.py:173
msgid "GNU Taler Demo: Error"
msgstr ""
-#: talermerchantdemos/blog/blog.py:152 talermerchantdemos/landing/landing.py:99
+#: talermerchantdemos/blog/blog.py:146 talermerchantdemos/landing/landing.py:90
msgid "Internal error"
msgstr "내부 오류"
-#: talermerchantdemos/blog/blog.py:205
+#: talermerchantdemos/blog/blog.py:199
msgid "GNU Taler Demo: Essay Shop"
msgstr ""
-#: talermerchantdemos/blog/blog.py:223
+#: talermerchantdemos/blog/blog.py:217
msgid "Cannot refund unpaid article"
msgstr "미결제 기사는 환불할 수 없습니다"
-#: talermerchantdemos/blog/blog.py:231
+#: talermerchantdemos/blog/blog.py:225
msgid "Article is not anymore refundable"
msgstr "이 기사는 더이상 환불할 수 없습니다"
-#: talermerchantdemos/blog/blog.py:235
+#: talermerchantdemos/blog/blog.py:229
msgid "GNU Taler Demo: Confirm refund"
msgstr ""
-#: talermerchantdemos/blog/blog.py:268
+#: talermerchantdemos/blog/blog.py:262
msgid "You did not pay for this article (nice try!)"
msgstr "이 기사를 구매하지 않았습니다(다시 시도하세요!)"
-#: talermerchantdemos/blog/blog.py:273
+#: talermerchantdemos/blog/blog.py:267
msgid "Item not refundable (anymore)"
msgstr "환불 불가 상품(기간 만료)"
-#: talermerchantdemos/blog/blog.py:299
+#: talermerchantdemos/blog/blog.py:293
#, python-brace-format
msgid "Internal error: Files for article ({}) not found."
msgstr "내부 오류: 기사 ({}) 관련 파일들을 찾을 수 없습니다."
-#: talermerchantdemos/blog/blog.py:314
+#: talermerchantdemos/blog/blog.py:308
msgid "GNU Taler Demo: Article"
msgstr ""
-#: talermerchantdemos/blog/blog.py:396
+#: talermerchantdemos/blog/blog.py:390
msgid "Please enable cookies."
msgstr ""
-#: talermerchantdemos/blog/blog.py:465
+#: talermerchantdemos/blog/blog.py:459
msgid "GNU Taler Demo: Refunded"
msgstr ""
-#: talermerchantdemos/blog/blog.py:476
+#: talermerchantdemos/blog/blog.py:470
#: talermerchantdemos/httpcommon/__init__.py:54
#: talermerchantdemos/httpcommon/__init__.py:77
msgid "Backend returned error status"
msgstr "백엔드에 대한 오류 수신"
-#: talermerchantdemos/blog/blog.py:554
+#: talermerchantdemos/blog/blog.py:548
msgid "Internal server error"
msgstr "내부 서버 오류"
-#: talermerchantdemos/blog/blog.py:563
-#: talermerchantdemos/donations/donations.py:323
-#: talermerchantdemos/landing/landing.py:179
-#: talermerchantdemos/provision/provision.py:292
+#: talermerchantdemos/blog/blog.py:557
+#: talermerchantdemos/donations/donations.py:317
+#: talermerchantdemos/landing/landing.py:170
+#: talermerchantdemos/provision/provision.py:282
msgid "Page not found"
msgstr "이 페이지를 찾을 수 없습니다"
-#: talermerchantdemos/donations/donations.py:137
+#: talermerchantdemos/donations/donations.py:131
#, python-brace-format
msgid "parameter '{}' required"
msgstr "파라메터 '{}' 필요"
-#: talermerchantdemos/donations/donations.py:199
-#: talermerchantdemos/donations/donations.py:234
-#: talermerchantdemos/donations/donations.py:308
+#: talermerchantdemos/donations/donations.py:193
+#: talermerchantdemos/donations/donations.py:228
+#: talermerchantdemos/donations/donations.py:302
msgid "GNU Taler Demo: Donations"
msgstr ""
-#: talermerchantdemos/donations/donations.py:217
+#: talermerchantdemos/donations/donations.py:211
msgid "GNU Taler Demo: Donations checkout"
msgstr ""
-#: talermerchantdemos/donations/donations.py:278
+#: talermerchantdemos/donations/donations.py:272
msgid "Backend could not create the order"
msgstr ""
@@ -126,34 +126,34 @@ msgstr "백엔드의 응답을 분석할 수 없습니다"
msgid "Could not parse response from backend"
msgstr "백엔드의 응답을 분석할 수 없습니다"
-#: talermerchantdemos/landing/landing.py:164
+#: talermerchantdemos/landing/landing.py:155
#: talermerchantdemos/templates/common-base.html.j2:20
msgid "GNU Taler Demo"
msgstr "GNU Taler 데모"
-#: talermerchantdemos/landing/landing.py:188
+#: talermerchantdemos/landing/landing.py:179
msgid "HTTP method not allowed for this page"
msgstr "이 페이지에서는 HTTP가 유효하지 않습니다"
-#: talermerchantdemos/provision/provision.py:217
+#: talermerchantdemos/provision/provision.py:207
#, fuzzy
msgid "GNU Taler Demo: Provision"
msgstr "GNU Taler 데모"
-#: talermerchantdemos/provision/provision.py:237
+#: talermerchantdemos/provision/provision.py:227
msgid "Full name required."
msgstr ""
-#: talermerchantdemos/provision/provision.py:239
+#: talermerchantdemos/provision/provision.py:229
msgid "Full name not acceptable."
msgstr ""
-#: talermerchantdemos/provision/provision.py:275
+#: talermerchantdemos/provision/provision.py:265
#, fuzzy
msgid "GNU Taler Demo: Self-Provision"
msgstr "GNU Taler 데모"
-#: talermerchantdemos/provision/provision.py:291
+#: talermerchantdemos/provision/provision.py:281
#, fuzzy
msgid "GNU Taler Demo: Provision Error"
msgstr "GNU Taler 데모"
diff --git a/talermerchantdemos/translations/messages.pot b/talermerchantdemos/translations/messages.pot
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2025-06-09 16:19+0200\n"
+"POT-Creation-Date: 2025-08-18 17:00+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -17,96 +17,96 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.17.0\n"
-#: talermerchantdemos/blog/blog.py:151 talermerchantdemos/blog/blog.py:230
-#: talermerchantdemos/blog/blog.py:395 talermerchantdemos/blog/blog.py:553
-#: talermerchantdemos/blog/blog.py:562 talermerchantdemos/blog/blog.py:572
-#: talermerchantdemos/donations/donations.py:151
-#: talermerchantdemos/donations/donations.py:322
-#: talermerchantdemos/landing/landing.py:98
+#: talermerchantdemos/blog/blog.py:145 talermerchantdemos/blog/blog.py:224
+#: talermerchantdemos/blog/blog.py:389 talermerchantdemos/blog/blog.py:547
+#: talermerchantdemos/blog/blog.py:556 talermerchantdemos/blog/blog.py:566
+#: talermerchantdemos/donations/donations.py:145
+#: talermerchantdemos/donations/donations.py:316
+#: talermerchantdemos/landing/landing.py:89
+#: talermerchantdemos/landing/landing.py:169
#: talermerchantdemos/landing/landing.py:178
-#: talermerchantdemos/landing/landing.py:187
-#: talermerchantdemos/provision/provision.py:183
+#: talermerchantdemos/provision/provision.py:173
msgid "GNU Taler Demo: Error"
msgstr ""
-#: talermerchantdemos/blog/blog.py:152 talermerchantdemos/landing/landing.py:99
+#: talermerchantdemos/blog/blog.py:146 talermerchantdemos/landing/landing.py:90
msgid "Internal error"
msgstr ""
-#: talermerchantdemos/blog/blog.py:205
+#: talermerchantdemos/blog/blog.py:199
msgid "GNU Taler Demo: Essay Shop"
msgstr ""
-#: talermerchantdemos/blog/blog.py:223
+#: talermerchantdemos/blog/blog.py:217
msgid "Cannot refund unpaid article"
msgstr ""
-#: talermerchantdemos/blog/blog.py:231
+#: talermerchantdemos/blog/blog.py:225
msgid "Article is not anymore refundable"
msgstr ""
-#: talermerchantdemos/blog/blog.py:235
+#: talermerchantdemos/blog/blog.py:229
msgid "GNU Taler Demo: Confirm refund"
msgstr ""
-#: talermerchantdemos/blog/blog.py:268
+#: talermerchantdemos/blog/blog.py:262
msgid "You did not pay for this article (nice try!)"
msgstr ""
-#: talermerchantdemos/blog/blog.py:273
+#: talermerchantdemos/blog/blog.py:267
msgid "Item not refundable (anymore)"
msgstr ""
-#: talermerchantdemos/blog/blog.py:299
+#: talermerchantdemos/blog/blog.py:293
#, python-brace-format
msgid "Internal error: Files for article ({}) not found."
msgstr ""
-#: talermerchantdemos/blog/blog.py:314
+#: talermerchantdemos/blog/blog.py:308
msgid "GNU Taler Demo: Article"
msgstr ""
-#: talermerchantdemos/blog/blog.py:396
+#: talermerchantdemos/blog/blog.py:390
msgid "Please enable cookies."
msgstr ""
-#: talermerchantdemos/blog/blog.py:465
+#: talermerchantdemos/blog/blog.py:459
msgid "GNU Taler Demo: Refunded"
msgstr ""
-#: talermerchantdemos/blog/blog.py:476
+#: talermerchantdemos/blog/blog.py:470
#: talermerchantdemos/httpcommon/__init__.py:54
#: talermerchantdemos/httpcommon/__init__.py:77
msgid "Backend returned error status"
msgstr ""
-#: talermerchantdemos/blog/blog.py:554
+#: talermerchantdemos/blog/blog.py:548
msgid "Internal server error"
msgstr ""
-#: talermerchantdemos/blog/blog.py:563
-#: talermerchantdemos/donations/donations.py:323
-#: talermerchantdemos/landing/landing.py:179
-#: talermerchantdemos/provision/provision.py:292
+#: talermerchantdemos/blog/blog.py:557
+#: talermerchantdemos/donations/donations.py:317
+#: talermerchantdemos/landing/landing.py:170
+#: talermerchantdemos/provision/provision.py:282
msgid "Page not found"
msgstr ""
-#: talermerchantdemos/donations/donations.py:137
+#: talermerchantdemos/donations/donations.py:131
#, python-brace-format
msgid "parameter '{}' required"
msgstr ""
-#: talermerchantdemos/donations/donations.py:199
-#: talermerchantdemos/donations/donations.py:234
-#: talermerchantdemos/donations/donations.py:308
+#: talermerchantdemos/donations/donations.py:193
+#: talermerchantdemos/donations/donations.py:228
+#: talermerchantdemos/donations/donations.py:302
msgid "GNU Taler Demo: Donations"
msgstr ""
-#: talermerchantdemos/donations/donations.py:217
+#: talermerchantdemos/donations/donations.py:211
msgid "GNU Taler Demo: Donations checkout"
msgstr ""
-#: talermerchantdemos/donations/donations.py:278
+#: talermerchantdemos/donations/donations.py:272
msgid "Backend could not create the order"
msgstr ""
@@ -123,32 +123,32 @@ msgstr ""
msgid "Could not parse response from backend"
msgstr ""
-#: talermerchantdemos/landing/landing.py:164
+#: talermerchantdemos/landing/landing.py:155
#: talermerchantdemos/templates/common-base.html.j2:20
msgid "GNU Taler Demo"
msgstr ""
-#: talermerchantdemos/landing/landing.py:188
+#: talermerchantdemos/landing/landing.py:179
msgid "HTTP method not allowed for this page"
msgstr ""
-#: talermerchantdemos/provision/provision.py:217
+#: talermerchantdemos/provision/provision.py:207
msgid "GNU Taler Demo: Provision"
msgstr ""
-#: talermerchantdemos/provision/provision.py:237
+#: talermerchantdemos/provision/provision.py:227
msgid "Full name required."
msgstr ""
-#: talermerchantdemos/provision/provision.py:239
+#: talermerchantdemos/provision/provision.py:229
msgid "Full name not acceptable."
msgstr ""
-#: talermerchantdemos/provision/provision.py:275
+#: talermerchantdemos/provision/provision.py:265
msgid "GNU Taler Demo: Self-Provision"
msgstr ""
-#: talermerchantdemos/provision/provision.py:291
+#: talermerchantdemos/provision/provision.py:281
msgid "GNU Taler Demo: Provision Error"
msgstr ""
diff --git a/talermerchantdemos/translations/pt/LC_MESSAGES/messages.po b/talermerchantdemos/translations/pt/LC_MESSAGES/messages.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: eintritt@hotmail.com\n"
-"POT-Creation-Date: 2025-06-09 16:19+0200\n"
+"POT-Creation-Date: 2025-08-18 17:00+0200\n"
"PO-Revision-Date: 2024-12-12 17:44+0000\n"
"Last-Translator: Stefan Kügel <skuegel@web.de>\n"
"Language: pt\n"
@@ -19,96 +19,96 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.17.0\n"
-#: talermerchantdemos/blog/blog.py:151 talermerchantdemos/blog/blog.py:230
-#: talermerchantdemos/blog/blog.py:395 talermerchantdemos/blog/blog.py:553
-#: talermerchantdemos/blog/blog.py:562 talermerchantdemos/blog/blog.py:572
-#: talermerchantdemos/donations/donations.py:151
-#: talermerchantdemos/donations/donations.py:322
-#: talermerchantdemos/landing/landing.py:98
+#: talermerchantdemos/blog/blog.py:145 talermerchantdemos/blog/blog.py:224
+#: talermerchantdemos/blog/blog.py:389 talermerchantdemos/blog/blog.py:547
+#: talermerchantdemos/blog/blog.py:556 talermerchantdemos/blog/blog.py:566
+#: talermerchantdemos/donations/donations.py:145
+#: talermerchantdemos/donations/donations.py:316
+#: talermerchantdemos/landing/landing.py:89
+#: talermerchantdemos/landing/landing.py:169
#: talermerchantdemos/landing/landing.py:178
-#: talermerchantdemos/landing/landing.py:187
-#: talermerchantdemos/provision/provision.py:183
+#: talermerchantdemos/provision/provision.py:173
msgid "GNU Taler Demo: Error"
msgstr ""
-#: talermerchantdemos/blog/blog.py:152 talermerchantdemos/landing/landing.py:99
+#: talermerchantdemos/blog/blog.py:146 talermerchantdemos/landing/landing.py:90
msgid "Internal error"
msgstr "Erro interno"
-#: talermerchantdemos/blog/blog.py:205
+#: talermerchantdemos/blog/blog.py:199
msgid "GNU Taler Demo: Essay Shop"
msgstr ""
-#: talermerchantdemos/blog/blog.py:223
+#: talermerchantdemos/blog/blog.py:217
msgid "Cannot refund unpaid article"
msgstr "Não é possível reembolsar artigo por pagar"
-#: talermerchantdemos/blog/blog.py:231
+#: talermerchantdemos/blog/blog.py:225
msgid "Article is not anymore refundable"
msgstr "Já não é possível reembolsar artigo"
-#: talermerchantdemos/blog/blog.py:235
+#: talermerchantdemos/blog/blog.py:229
msgid "GNU Taler Demo: Confirm refund"
msgstr ""
-#: talermerchantdemos/blog/blog.py:268
+#: talermerchantdemos/blog/blog.py:262
msgid "You did not pay for this article (nice try!)"
msgstr "Não pagou este artigo (boa tentativa!)"
-#: talermerchantdemos/blog/blog.py:273
+#: talermerchantdemos/blog/blog.py:267
msgid "Item not refundable (anymore)"
msgstr "Artigo (já) não é reembolsável"
-#: talermerchantdemos/blog/blog.py:299
+#: talermerchantdemos/blog/blog.py:293
#, python-brace-format
msgid "Internal error: Files for article ({}) not found."
msgstr "Erro interno: Não foram encontrados os ficheiros para o artigo ({})."
-#: talermerchantdemos/blog/blog.py:314
+#: talermerchantdemos/blog/blog.py:308
msgid "GNU Taler Demo: Article"
msgstr ""
-#: talermerchantdemos/blog/blog.py:396
+#: talermerchantdemos/blog/blog.py:390
msgid "Please enable cookies."
msgstr ""
-#: talermerchantdemos/blog/blog.py:465
+#: talermerchantdemos/blog/blog.py:459
msgid "GNU Taler Demo: Refunded"
msgstr ""
-#: talermerchantdemos/blog/blog.py:476
+#: talermerchantdemos/blog/blog.py:470
#: talermerchantdemos/httpcommon/__init__.py:54
#: talermerchantdemos/httpcommon/__init__.py:77
msgid "Backend returned error status"
msgstr "Backend apresentou um erro"
-#: talermerchantdemos/blog/blog.py:554
+#: talermerchantdemos/blog/blog.py:548
msgid "Internal server error"
msgstr "Erro interno do servidor"
-#: talermerchantdemos/blog/blog.py:563
-#: talermerchantdemos/donations/donations.py:323
-#: talermerchantdemos/landing/landing.py:179
-#: talermerchantdemos/provision/provision.py:292
+#: talermerchantdemos/blog/blog.py:557
+#: talermerchantdemos/donations/donations.py:317
+#: talermerchantdemos/landing/landing.py:170
+#: talermerchantdemos/provision/provision.py:282
msgid "Page not found"
msgstr "Página não encontrada"
-#: talermerchantdemos/donations/donations.py:137
+#: talermerchantdemos/donations/donations.py:131
#, python-brace-format
msgid "parameter '{}' required"
msgstr "necessário parâmetro '{}'"
-#: talermerchantdemos/donations/donations.py:199
-#: talermerchantdemos/donations/donations.py:234
-#: talermerchantdemos/donations/donations.py:308
+#: talermerchantdemos/donations/donations.py:193
+#: talermerchantdemos/donations/donations.py:228
+#: talermerchantdemos/donations/donations.py:302
msgid "GNU Taler Demo: Donations"
msgstr ""
-#: talermerchantdemos/donations/donations.py:217
+#: talermerchantdemos/donations/donations.py:211
msgid "GNU Taler Demo: Donations checkout"
msgstr ""
-#: talermerchantdemos/donations/donations.py:278
+#: talermerchantdemos/donations/donations.py:272
msgid "Backend could not create the order"
msgstr ""
@@ -126,35 +126,35 @@ msgstr "Não foi possível analisar a resposta do backend"
msgid "Could not parse response from backend"
msgstr "Não foi possível analisar a resposta do backend"
-#: talermerchantdemos/landing/landing.py:164
+#: talermerchantdemos/landing/landing.py:155
#: talermerchantdemos/templates/common-base.html.j2:20
#, fuzzy
msgid "GNU Taler Demo"
msgstr "Demonstração do Taler"
-#: talermerchantdemos/landing/landing.py:188
+#: talermerchantdemos/landing/landing.py:179
msgid "HTTP method not allowed for this page"
msgstr "Método HTTP não permitido para esta página"
-#: talermerchantdemos/provision/provision.py:217
+#: talermerchantdemos/provision/provision.py:207
#, fuzzy
msgid "GNU Taler Demo: Provision"
msgstr "Demonstração do Taler"
-#: talermerchantdemos/provision/provision.py:237
+#: talermerchantdemos/provision/provision.py:227
msgid "Full name required."
msgstr ""
-#: talermerchantdemos/provision/provision.py:239
+#: talermerchantdemos/provision/provision.py:229
msgid "Full name not acceptable."
msgstr ""
-#: talermerchantdemos/provision/provision.py:275
+#: talermerchantdemos/provision/provision.py:265
#, fuzzy
msgid "GNU Taler Demo: Self-Provision"
msgstr "Demonstração do Taler"
-#: talermerchantdemos/provision/provision.py:291
+#: talermerchantdemos/provision/provision.py:281
#, fuzzy
msgid "GNU Taler Demo: Provision Error"
msgstr "Demonstração do Taler"
diff --git a/talermerchantdemos/translations/ru/LC_MESSAGES/messages.po b/talermerchantdemos/translations/ru/LC_MESSAGES/messages.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: eintritt@hotmail.com\n"
-"POT-Creation-Date: 2025-06-09 16:19+0200\n"
+"POT-Creation-Date: 2025-08-18 17:00+0200\n"
"PO-Revision-Date: 2024-12-12 17:44+0000\n"
"Last-Translator: Bohdan Potuzhnyi <bohdan.potuzhnyi@students.bfh.ch>\n"
"Language: ru\n"
@@ -20,96 +20,96 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.17.0\n"
-#: talermerchantdemos/blog/blog.py:151 talermerchantdemos/blog/blog.py:230
-#: talermerchantdemos/blog/blog.py:395 talermerchantdemos/blog/blog.py:553
-#: talermerchantdemos/blog/blog.py:562 talermerchantdemos/blog/blog.py:572
-#: talermerchantdemos/donations/donations.py:151
-#: talermerchantdemos/donations/donations.py:322
-#: talermerchantdemos/landing/landing.py:98
+#: talermerchantdemos/blog/blog.py:145 talermerchantdemos/blog/blog.py:224
+#: talermerchantdemos/blog/blog.py:389 talermerchantdemos/blog/blog.py:547
+#: talermerchantdemos/blog/blog.py:556 talermerchantdemos/blog/blog.py:566
+#: talermerchantdemos/donations/donations.py:145
+#: talermerchantdemos/donations/donations.py:316
+#: talermerchantdemos/landing/landing.py:89
+#: talermerchantdemos/landing/landing.py:169
#: talermerchantdemos/landing/landing.py:178
-#: talermerchantdemos/landing/landing.py:187
-#: talermerchantdemos/provision/provision.py:183
+#: talermerchantdemos/provision/provision.py:173
msgid "GNU Taler Demo: Error"
msgstr "Демо GNU Taler: Ошибка"
-#: talermerchantdemos/blog/blog.py:152 talermerchantdemos/landing/landing.py:99
+#: talermerchantdemos/blog/blog.py:146 talermerchantdemos/landing/landing.py:90
msgid "Internal error"
msgstr "Внутренняя ошибка"
-#: talermerchantdemos/blog/blog.py:205
+#: talermerchantdemos/blog/blog.py:199
msgid "GNU Taler Demo: Essay Shop"
msgstr "Демо GNU Taler: Магазин эссе"
-#: talermerchantdemos/blog/blog.py:223
+#: talermerchantdemos/blog/blog.py:217
msgid "Cannot refund unpaid article"
msgstr "Возврат средств за неоплаченный товар невозможен"
-#: talermerchantdemos/blog/blog.py:231
+#: talermerchantdemos/blog/blog.py:225
msgid "Article is not anymore refundable"
msgstr "Товар более не подлежит возврату"
-#: talermerchantdemos/blog/blog.py:235
+#: talermerchantdemos/blog/blog.py:229
msgid "GNU Taler Demo: Confirm refund"
msgstr "Демо GNU Taler: Подтвердите возврат"
-#: talermerchantdemos/blog/blog.py:268
+#: talermerchantdemos/blog/blog.py:262
msgid "You did not pay for this article (nice try!)"
msgstr "Вы не оплатили этот товар (Неплохая попытка!)"
-#: talermerchantdemos/blog/blog.py:273
+#: talermerchantdemos/blog/blog.py:267
msgid "Item not refundable (anymore)"
msgstr "Товар более не подлежит возврату"
-#: talermerchantdemos/blog/blog.py:299
+#: talermerchantdemos/blog/blog.py:293
#, python-brace-format
msgid "Internal error: Files for article ({}) not found."
msgstr "Внутренняя ошибка. Файлы для товара ({}) не найдены."
-#: talermerchantdemos/blog/blog.py:314
+#: talermerchantdemos/blog/blog.py:308
msgid "GNU Taler Demo: Article"
msgstr "Демо GNU Taler: Статья"
-#: talermerchantdemos/blog/blog.py:396
+#: talermerchantdemos/blog/blog.py:390
msgid "Please enable cookies."
msgstr "Пожалуйста включите куки."
-#: talermerchantdemos/blog/blog.py:465
+#: talermerchantdemos/blog/blog.py:459
msgid "GNU Taler Demo: Refunded"
msgstr "Демо GNU Taler: Средства возвращены"
-#: talermerchantdemos/blog/blog.py:476
+#: talermerchantdemos/blog/blog.py:470
#: talermerchantdemos/httpcommon/__init__.py:54
#: talermerchantdemos/httpcommon/__init__.py:77
msgid "Backend returned error status"
msgstr "Бэкэнд вернул ошибку кода"
-#: talermerchantdemos/blog/blog.py:554
+#: talermerchantdemos/blog/blog.py:548
msgid "Internal server error"
msgstr "Внутренняя ошибка сервера"
-#: talermerchantdemos/blog/blog.py:563
-#: talermerchantdemos/donations/donations.py:323
-#: talermerchantdemos/landing/landing.py:179
-#: talermerchantdemos/provision/provision.py:292
+#: talermerchantdemos/blog/blog.py:557
+#: talermerchantdemos/donations/donations.py:317
+#: talermerchantdemos/landing/landing.py:170
+#: talermerchantdemos/provision/provision.py:282
msgid "Page not found"
msgstr "Страница не найдена"
-#: talermerchantdemos/donations/donations.py:137
+#: talermerchantdemos/donations/donations.py:131
#, python-brace-format
msgid "parameter '{}' required"
msgstr "обязательный '{}'параметр"
-#: talermerchantdemos/donations/donations.py:199
-#: talermerchantdemos/donations/donations.py:234
-#: talermerchantdemos/donations/donations.py:308
+#: talermerchantdemos/donations/donations.py:193
+#: talermerchantdemos/donations/donations.py:228
+#: talermerchantdemos/donations/donations.py:302
msgid "GNU Taler Demo: Donations"
msgstr "Демо GNU Taler: Пожертвования"
-#: talermerchantdemos/donations/donations.py:217
+#: talermerchantdemos/donations/donations.py:211
msgid "GNU Taler Demo: Donations checkout"
msgstr "Демо GNU Taler: Оформление пожертвований"
-#: talermerchantdemos/donations/donations.py:278
+#: talermerchantdemos/donations/donations.py:272
msgid "Backend could not create the order"
msgstr "Бэкэнд не смог создать заказ"
@@ -126,34 +126,34 @@ msgstr "Не удалось разобрать ответ от бэкэнда"
msgid "Could not parse response from backend"
msgstr "Не удалось проанализировать ответ бэкэнда"
-#: talermerchantdemos/landing/landing.py:164
+#: talermerchantdemos/landing/landing.py:155
#: talermerchantdemos/templates/common-base.html.j2:20
msgid "GNU Taler Demo"
msgstr "Демонстрация GNU Taler"
-#: talermerchantdemos/landing/landing.py:188
+#: talermerchantdemos/landing/landing.py:179
msgid "HTTP method not allowed for this page"
msgstr "HTTP-метод не разрешён для этой страницы"
-#: talermerchantdemos/provision/provision.py:217
+#: talermerchantdemos/provision/provision.py:207
#, fuzzy
msgid "GNU Taler Demo: Provision"
msgstr "Демо GNU Taler: Пожертвования"
-#: talermerchantdemos/provision/provision.py:237
+#: talermerchantdemos/provision/provision.py:227
msgid "Full name required."
msgstr ""
-#: talermerchantdemos/provision/provision.py:239
+#: talermerchantdemos/provision/provision.py:229
msgid "Full name not acceptable."
msgstr ""
-#: talermerchantdemos/provision/provision.py:275
+#: talermerchantdemos/provision/provision.py:265
#, fuzzy
msgid "GNU Taler Demo: Self-Provision"
msgstr "Демо GNU Taler: Ошибка"
-#: talermerchantdemos/provision/provision.py:291
+#: talermerchantdemos/provision/provision.py:281
#, fuzzy
msgid "GNU Taler Demo: Provision Error"
msgstr "Демо GNU Taler: Ошибка"
diff --git a/talermerchantdemos/translations/sv/LC_MESSAGES/messages.po b/talermerchantdemos/translations/sv/LC_MESSAGES/messages.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: eintritt@hotmail.com\n"
-"POT-Creation-Date: 2025-06-09 16:19+0200\n"
+"POT-Creation-Date: 2025-08-18 17:00+0200\n"
"PO-Revision-Date: 2024-12-12 17:44+0000\n"
"Last-Translator: Stefan Kügel <skuegel@web.de>\n"
"Language: sv\n"
@@ -19,96 +19,96 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.17.0\n"
-#: talermerchantdemos/blog/blog.py:151 talermerchantdemos/blog/blog.py:230
-#: talermerchantdemos/blog/blog.py:395 talermerchantdemos/blog/blog.py:553
-#: talermerchantdemos/blog/blog.py:562 talermerchantdemos/blog/blog.py:572
-#: talermerchantdemos/donations/donations.py:151
-#: talermerchantdemos/donations/donations.py:322
-#: talermerchantdemos/landing/landing.py:98
+#: talermerchantdemos/blog/blog.py:145 talermerchantdemos/blog/blog.py:224
+#: talermerchantdemos/blog/blog.py:389 talermerchantdemos/blog/blog.py:547
+#: talermerchantdemos/blog/blog.py:556 talermerchantdemos/blog/blog.py:566
+#: talermerchantdemos/donations/donations.py:145
+#: talermerchantdemos/donations/donations.py:316
+#: talermerchantdemos/landing/landing.py:89
+#: talermerchantdemos/landing/landing.py:169
#: talermerchantdemos/landing/landing.py:178
-#: talermerchantdemos/landing/landing.py:187
-#: talermerchantdemos/provision/provision.py:183
+#: talermerchantdemos/provision/provision.py:173
msgid "GNU Taler Demo: Error"
msgstr ""
-#: talermerchantdemos/blog/blog.py:152 talermerchantdemos/landing/landing.py:99
+#: talermerchantdemos/blog/blog.py:146 talermerchantdemos/landing/landing.py:90
msgid "Internal error"
msgstr "Internt fel"
-#: talermerchantdemos/blog/blog.py:205
+#: talermerchantdemos/blog/blog.py:199
msgid "GNU Taler Demo: Essay Shop"
msgstr ""
-#: talermerchantdemos/blog/blog.py:223
+#: talermerchantdemos/blog/blog.py:217
msgid "Cannot refund unpaid article"
msgstr "Obetald artikel kan ej återbetalas"
-#: talermerchantdemos/blog/blog.py:231
+#: talermerchantdemos/blog/blog.py:225
msgid "Article is not anymore refundable"
msgstr "Återbetalning är inte längre möjlig"
-#: talermerchantdemos/blog/blog.py:235
+#: talermerchantdemos/blog/blog.py:229
msgid "GNU Taler Demo: Confirm refund"
msgstr ""
-#: talermerchantdemos/blog/blog.py:268
+#: talermerchantdemos/blog/blog.py:262
msgid "You did not pay for this article (nice try!)"
msgstr "Du har inte betalt denna artikel (kul försök!)"
-#: talermerchantdemos/blog/blog.py:273
+#: talermerchantdemos/blog/blog.py:267
msgid "Item not refundable (anymore)"
msgstr "Återbetalning kan inte (längre) göras"
-#: talermerchantdemos/blog/blog.py:299
+#: talermerchantdemos/blog/blog.py:293
#, python-brace-format
msgid "Internal error: Files for article ({}) not found."
msgstr "Internt fel: Underlag för artikel ({}) hittades inte."
-#: talermerchantdemos/blog/blog.py:314
+#: talermerchantdemos/blog/blog.py:308
msgid "GNU Taler Demo: Article"
msgstr ""
-#: talermerchantdemos/blog/blog.py:396
+#: talermerchantdemos/blog/blog.py:390
msgid "Please enable cookies."
msgstr ""
-#: talermerchantdemos/blog/blog.py:465
+#: talermerchantdemos/blog/blog.py:459
msgid "GNU Taler Demo: Refunded"
msgstr ""
-#: talermerchantdemos/blog/blog.py:476
+#: talermerchantdemos/blog/blog.py:470
#: talermerchantdemos/httpcommon/__init__.py:54
#: talermerchantdemos/httpcommon/__init__.py:77
msgid "Backend returned error status"
msgstr "Backend returnerade felstatus"
-#: talermerchantdemos/blog/blog.py:554
+#: talermerchantdemos/blog/blog.py:548
msgid "Internal server error"
msgstr "Internt serverfel"
-#: talermerchantdemos/blog/blog.py:563
-#: talermerchantdemos/donations/donations.py:323
-#: talermerchantdemos/landing/landing.py:179
-#: talermerchantdemos/provision/provision.py:292
+#: talermerchantdemos/blog/blog.py:557
+#: talermerchantdemos/donations/donations.py:317
+#: talermerchantdemos/landing/landing.py:170
+#: talermerchantdemos/provision/provision.py:282
msgid "Page not found"
msgstr "Sidan hittades inte"
-#: talermerchantdemos/donations/donations.py:137
+#: talermerchantdemos/donations/donations.py:131
#, python-brace-format
msgid "parameter '{}' required"
msgstr "parameter '{}' krävs"
-#: talermerchantdemos/donations/donations.py:199
-#: talermerchantdemos/donations/donations.py:234
-#: talermerchantdemos/donations/donations.py:308
+#: talermerchantdemos/donations/donations.py:193
+#: talermerchantdemos/donations/donations.py:228
+#: talermerchantdemos/donations/donations.py:302
msgid "GNU Taler Demo: Donations"
msgstr ""
-#: talermerchantdemos/donations/donations.py:217
+#: talermerchantdemos/donations/donations.py:211
msgid "GNU Taler Demo: Donations checkout"
msgstr ""
-#: talermerchantdemos/donations/donations.py:278
+#: talermerchantdemos/donations/donations.py:272
msgid "Backend could not create the order"
msgstr "Backend kunde inte skapa beställningen"
@@ -126,34 +126,34 @@ msgstr "Det gick inte att tolka svaret från backend"
msgid "Could not parse response from backend"
msgstr "Det gick inte att tolka svaret från backend"
-#: talermerchantdemos/landing/landing.py:164
+#: talermerchantdemos/landing/landing.py:155
#: talermerchantdemos/templates/common-base.html.j2:20
msgid "GNU Taler Demo"
msgstr "GNU Taler Demo"
-#: talermerchantdemos/landing/landing.py:188
+#: talermerchantdemos/landing/landing.py:179
msgid "HTTP method not allowed for this page"
msgstr "HTTP-metoden är inte tillåten för den här sidan"
-#: talermerchantdemos/provision/provision.py:217
+#: talermerchantdemos/provision/provision.py:207
#, fuzzy
msgid "GNU Taler Demo: Provision"
msgstr "GNU Taler Demo"
-#: talermerchantdemos/provision/provision.py:237
+#: talermerchantdemos/provision/provision.py:227
msgid "Full name required."
msgstr ""
-#: talermerchantdemos/provision/provision.py:239
+#: talermerchantdemos/provision/provision.py:229
msgid "Full name not acceptable."
msgstr ""
-#: talermerchantdemos/provision/provision.py:275
+#: talermerchantdemos/provision/provision.py:265
#, fuzzy
msgid "GNU Taler Demo: Self-Provision"
msgstr "GNU Taler Demo"
-#: talermerchantdemos/provision/provision.py:291
+#: talermerchantdemos/provision/provision.py:281
#, fuzzy
msgid "GNU Taler Demo: Provision Error"
msgstr "GNU Taler Demo"
diff --git a/talermerchantdemos/translations/tr/LC_MESSAGES/messages.po b/talermerchantdemos/translations/tr/LC_MESSAGES/messages.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: eintritt@hotmail.com\n"
-"POT-Creation-Date: 2025-06-09 16:19+0200\n"
+"POT-Creation-Date: 2025-08-18 17:00+0200\n"
"PO-Revision-Date: 2024-12-12 17:44+0000\n"
"Last-Translator: Muha Aliss <muhaaliss@tuta.io>\n"
"Language: tr\n"
@@ -19,96 +19,96 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.17.0\n"
-#: talermerchantdemos/blog/blog.py:151 talermerchantdemos/blog/blog.py:230
-#: talermerchantdemos/blog/blog.py:395 talermerchantdemos/blog/blog.py:553
-#: talermerchantdemos/blog/blog.py:562 talermerchantdemos/blog/blog.py:572
-#: talermerchantdemos/donations/donations.py:151
-#: talermerchantdemos/donations/donations.py:322
-#: talermerchantdemos/landing/landing.py:98
+#: talermerchantdemos/blog/blog.py:145 talermerchantdemos/blog/blog.py:224
+#: talermerchantdemos/blog/blog.py:389 talermerchantdemos/blog/blog.py:547
+#: talermerchantdemos/blog/blog.py:556 talermerchantdemos/blog/blog.py:566
+#: talermerchantdemos/donations/donations.py:145
+#: talermerchantdemos/donations/donations.py:316
+#: talermerchantdemos/landing/landing.py:89
+#: talermerchantdemos/landing/landing.py:169
#: talermerchantdemos/landing/landing.py:178
-#: talermerchantdemos/landing/landing.py:187
-#: talermerchantdemos/provision/provision.py:183
+#: talermerchantdemos/provision/provision.py:173
msgid "GNU Taler Demo: Error"
msgstr "GNU Taler Demo: Hata"
-#: talermerchantdemos/blog/blog.py:152 talermerchantdemos/landing/landing.py:99
+#: talermerchantdemos/blog/blog.py:146 talermerchantdemos/landing/landing.py:90
msgid "Internal error"
msgstr "Iç hata"
-#: talermerchantdemos/blog/blog.py:205
+#: talermerchantdemos/blog/blog.py:199
msgid "GNU Taler Demo: Essay Shop"
msgstr "GNU Taler Demo: Makale Mağazası"
-#: talermerchantdemos/blog/blog.py:223
+#: talermerchantdemos/blog/blog.py:217
msgid "Cannot refund unpaid article"
msgstr "Ücreti ödenmemiş makalenin parası iade edilemez"
-#: talermerchantdemos/blog/blog.py:231
+#: talermerchantdemos/blog/blog.py:225
msgid "Article is not anymore refundable"
msgstr "Bu makalenin ücreti artık iade edilemez"
-#: talermerchantdemos/blog/blog.py:235
+#: talermerchantdemos/blog/blog.py:229
msgid "GNU Taler Demo: Confirm refund"
msgstr "GNU Taler Demo: Geri ödemeyi onayla"
-#: talermerchantdemos/blog/blog.py:268
+#: talermerchantdemos/blog/blog.py:262
msgid "You did not pay for this article (nice try!)"
msgstr "Bu makale için ödeme yapmadınız (iyi deneme!)"
-#: talermerchantdemos/blog/blog.py:273
+#: talermerchantdemos/blog/blog.py:267
msgid "Item not refundable (anymore)"
msgstr "Ürün iade edilemez (artık)"
-#: talermerchantdemos/blog/blog.py:299
+#: talermerchantdemos/blog/blog.py:293
#, python-brace-format
msgid "Internal error: Files for article ({}) not found."
msgstr "içsel hata: ({}) makalesi için dosyalar bulunamadı."
-#: talermerchantdemos/blog/blog.py:314
+#: talermerchantdemos/blog/blog.py:308
msgid "GNU Taler Demo: Article"
msgstr "GNU Taler Demo: Makale"
-#: talermerchantdemos/blog/blog.py:396
+#: talermerchantdemos/blog/blog.py:390
msgid "Please enable cookies."
msgstr "Lütfen çerezleri etkinleştirin."
-#: talermerchantdemos/blog/blog.py:465
+#: talermerchantdemos/blog/blog.py:459
msgid "GNU Taler Demo: Refunded"
msgstr "GNU Taler Demo: İade Edildi"
-#: talermerchantdemos/blog/blog.py:476
+#: talermerchantdemos/blog/blog.py:470
#: talermerchantdemos/httpcommon/__init__.py:54
#: talermerchantdemos/httpcommon/__init__.py:77
msgid "Backend returned error status"
msgstr "Arka uç hata durumu verdi"
-#: talermerchantdemos/blog/blog.py:554
+#: talermerchantdemos/blog/blog.py:548
msgid "Internal server error"
msgstr "İç Sunucu Hatası"
-#: talermerchantdemos/blog/blog.py:563
-#: talermerchantdemos/donations/donations.py:323
-#: talermerchantdemos/landing/landing.py:179
-#: talermerchantdemos/provision/provision.py:292
+#: talermerchantdemos/blog/blog.py:557
+#: talermerchantdemos/donations/donations.py:317
+#: talermerchantdemos/landing/landing.py:170
+#: talermerchantdemos/provision/provision.py:282
msgid "Page not found"
msgstr "Sayfa bulunamadı"
-#: talermerchantdemos/donations/donations.py:137
+#: talermerchantdemos/donations/donations.py:131
#, python-brace-format
msgid "parameter '{}' required"
msgstr "'{}' parametresi gerekli"
-#: talermerchantdemos/donations/donations.py:199
-#: talermerchantdemos/donations/donations.py:234
-#: talermerchantdemos/donations/donations.py:308
+#: talermerchantdemos/donations/donations.py:193
+#: talermerchantdemos/donations/donations.py:228
+#: talermerchantdemos/donations/donations.py:302
msgid "GNU Taler Demo: Donations"
msgstr "GNU Taler Demo: Bağışlar"
-#: talermerchantdemos/donations/donations.py:217
+#: talermerchantdemos/donations/donations.py:211
msgid "GNU Taler Demo: Donations checkout"
msgstr "GNU Taler Demo: Bağış ödeme"
-#: talermerchantdemos/donations/donations.py:278
+#: talermerchantdemos/donations/donations.py:272
msgid "Backend could not create the order"
msgstr "Arka uç siparişi oluşturamadı"
@@ -125,34 +125,34 @@ msgstr "Arka uçtan gelen yanıt ayrıştırılamadı"
msgid "Could not parse response from backend"
msgstr "Arka uçtan gelen yanıt ayrıştırılamadı"
-#: talermerchantdemos/landing/landing.py:164
+#: talermerchantdemos/landing/landing.py:155
#: talermerchantdemos/templates/common-base.html.j2:20
msgid "GNU Taler Demo"
msgstr "GNU Taler demonstrasyon"
-#: talermerchantdemos/landing/landing.py:188
+#: talermerchantdemos/landing/landing.py:179
msgid "HTTP method not allowed for this page"
msgstr "Bu sayfa için HTTP yöntemine izin verilmiyor"
-#: talermerchantdemos/provision/provision.py:217
+#: talermerchantdemos/provision/provision.py:207
#, fuzzy
msgid "GNU Taler Demo: Provision"
msgstr "GNU Taler Demo: Bağışlar"
-#: talermerchantdemos/provision/provision.py:237
+#: talermerchantdemos/provision/provision.py:227
msgid "Full name required."
msgstr ""
-#: talermerchantdemos/provision/provision.py:239
+#: talermerchantdemos/provision/provision.py:229
msgid "Full name not acceptable."
msgstr ""
-#: talermerchantdemos/provision/provision.py:275
+#: talermerchantdemos/provision/provision.py:265
#, fuzzy
msgid "GNU Taler Demo: Self-Provision"
msgstr "GNU Taler Demo: Hata"
-#: talermerchantdemos/provision/provision.py:291
+#: talermerchantdemos/provision/provision.py:281
#, fuzzy
msgid "GNU Taler Demo: Provision Error"
msgstr "GNU Taler Demo: Hata"
diff --git a/talermerchantdemos/translations/uk/LC_MESSAGES/messages.po b/talermerchantdemos/translations/uk/LC_MESSAGES/messages.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: eintritt@hotmail.com\n"
-"POT-Creation-Date: 2025-06-09 16:19+0200\n"
+"POT-Creation-Date: 2025-08-18 17:00+0200\n"
"PO-Revision-Date: 2024-12-12 17:44+0000\n"
"Last-Translator: Ilya Kowalewski <ilya@hrest.org>\n"
"Language: uk\n"
@@ -20,96 +20,96 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.17.0\n"
-#: talermerchantdemos/blog/blog.py:151 talermerchantdemos/blog/blog.py:230
-#: talermerchantdemos/blog/blog.py:395 talermerchantdemos/blog/blog.py:553
-#: talermerchantdemos/blog/blog.py:562 talermerchantdemos/blog/blog.py:572
-#: talermerchantdemos/donations/donations.py:151
-#: talermerchantdemos/donations/donations.py:322
-#: talermerchantdemos/landing/landing.py:98
+#: talermerchantdemos/blog/blog.py:145 talermerchantdemos/blog/blog.py:224
+#: talermerchantdemos/blog/blog.py:389 talermerchantdemos/blog/blog.py:547
+#: talermerchantdemos/blog/blog.py:556 talermerchantdemos/blog/blog.py:566
+#: talermerchantdemos/donations/donations.py:145
+#: talermerchantdemos/donations/donations.py:316
+#: talermerchantdemos/landing/landing.py:89
+#: talermerchantdemos/landing/landing.py:169
#: talermerchantdemos/landing/landing.py:178
-#: talermerchantdemos/landing/landing.py:187
-#: talermerchantdemos/provision/provision.py:183
+#: talermerchantdemos/provision/provision.py:173
msgid "GNU Taler Demo: Error"
msgstr "Демо GNU Taler: Помилка"
-#: talermerchantdemos/blog/blog.py:152 talermerchantdemos/landing/landing.py:99
+#: talermerchantdemos/blog/blog.py:146 talermerchantdemos/landing/landing.py:90
msgid "Internal error"
msgstr "Внутрішня помилка"
-#: talermerchantdemos/blog/blog.py:205
+#: talermerchantdemos/blog/blog.py:199
msgid "GNU Taler Demo: Essay Shop"
msgstr "Демо GNU Taler: Магазин есе"
-#: talermerchantdemos/blog/blog.py:223
+#: talermerchantdemos/blog/blog.py:217
msgid "Cannot refund unpaid article"
msgstr "Неможливо повернути кошти за неоплачений товар"
-#: talermerchantdemos/blog/blog.py:231
+#: talermerchantdemos/blog/blog.py:225
msgid "Article is not anymore refundable"
msgstr "Товар більше не можна повернути"
-#: talermerchantdemos/blog/blog.py:235
+#: talermerchantdemos/blog/blog.py:229
msgid "GNU Taler Demo: Confirm refund"
msgstr "Демо GNU Taler: Підтвердити повернення коштів"
-#: talermerchantdemos/blog/blog.py:268
+#: talermerchantdemos/blog/blog.py:262
msgid "You did not pay for this article (nice try!)"
msgstr "Ви не оплатили цей товар (гарна спроба!)"
-#: talermerchantdemos/blog/blog.py:273
+#: talermerchantdemos/blog/blog.py:267
msgid "Item not refundable (anymore)"
msgstr "Товар більше не підлягає поверненню"
-#: talermerchantdemos/blog/blog.py:299
+#: talermerchantdemos/blog/blog.py:293
#, python-brace-format
msgid "Internal error: Files for article ({}) not found."
msgstr "Внутрішня помилка: файли для товара ({}) не знайдені."
-#: talermerchantdemos/blog/blog.py:314
+#: talermerchantdemos/blog/blog.py:308
msgid "GNU Taler Demo: Article"
msgstr "Демо GNU Taler: Стаття"
-#: talermerchantdemos/blog/blog.py:396
+#: talermerchantdemos/blog/blog.py:390
msgid "Please enable cookies."
msgstr "Будь ласка, увімкніть файли cookies."
-#: talermerchantdemos/blog/blog.py:465
+#: talermerchantdemos/blog/blog.py:459
msgid "GNU Taler Demo: Refunded"
msgstr "Демо GNU Taler: Кошти повернено"
-#: talermerchantdemos/blog/blog.py:476
+#: talermerchantdemos/blog/blog.py:470
#: talermerchantdemos/httpcommon/__init__.py:54
#: talermerchantdemos/httpcommon/__init__.py:77
msgid "Backend returned error status"
msgstr "Бекенд повернув статус помилки"
-#: talermerchantdemos/blog/blog.py:554
+#: talermerchantdemos/blog/blog.py:548
msgid "Internal server error"
msgstr "Внутрішня помилка сервера"
-#: talermerchantdemos/blog/blog.py:563
-#: talermerchantdemos/donations/donations.py:323
-#: talermerchantdemos/landing/landing.py:179
-#: talermerchantdemos/provision/provision.py:292
+#: talermerchantdemos/blog/blog.py:557
+#: talermerchantdemos/donations/donations.py:317
+#: talermerchantdemos/landing/landing.py:170
+#: talermerchantdemos/provision/provision.py:282
msgid "Page not found"
msgstr "Сторінку не знайдено"
-#: talermerchantdemos/donations/donations.py:137
+#: talermerchantdemos/donations/donations.py:131
#, python-brace-format
msgid "parameter '{}' required"
msgstr "необхідний параметр '{}'"
-#: talermerchantdemos/donations/donations.py:199
-#: talermerchantdemos/donations/donations.py:234
-#: talermerchantdemos/donations/donations.py:308
+#: talermerchantdemos/donations/donations.py:193
+#: talermerchantdemos/donations/donations.py:228
+#: talermerchantdemos/donations/donations.py:302
msgid "GNU Taler Demo: Donations"
msgstr "Демо GNU Taler: Донати"
-#: talermerchantdemos/donations/donations.py:217
+#: talermerchantdemos/donations/donations.py:211
msgid "GNU Taler Demo: Donations checkout"
msgstr "Демо GNU Taler: Оформлення донату"
-#: talermerchantdemos/donations/donations.py:278
+#: talermerchantdemos/donations/donations.py:272
msgid "Backend could not create the order"
msgstr "Бекенд не зміг створити замовлення"
@@ -126,34 +126,34 @@ msgstr "Не вдалося зпарсити відповідь з бекенд
msgid "Could not parse response from backend"
msgstr "Не вдалося обробити відповідь з бекенду"
-#: talermerchantdemos/landing/landing.py:164
+#: talermerchantdemos/landing/landing.py:155
#: talermerchantdemos/templates/common-base.html.j2:20
msgid "GNU Taler Demo"
msgstr "Демо GNU Taler"
-#: talermerchantdemos/landing/landing.py:188
+#: talermerchantdemos/landing/landing.py:179
msgid "HTTP method not allowed for this page"
msgstr "HTTP-метод заборонено використовувати для цієї сторінки"
-#: talermerchantdemos/provision/provision.py:217
+#: talermerchantdemos/provision/provision.py:207
#, fuzzy
msgid "GNU Taler Demo: Provision"
msgstr "Демо GNU Taler: Донати"
-#: talermerchantdemos/provision/provision.py:237
+#: talermerchantdemos/provision/provision.py:227
msgid "Full name required."
msgstr ""
-#: talermerchantdemos/provision/provision.py:239
+#: talermerchantdemos/provision/provision.py:229
msgid "Full name not acceptable."
msgstr ""
-#: talermerchantdemos/provision/provision.py:275
+#: talermerchantdemos/provision/provision.py:265
#, fuzzy
msgid "GNU Taler Demo: Self-Provision"
msgstr "Демо GNU Taler: Помилка"
-#: talermerchantdemos/provision/provision.py:291
+#: talermerchantdemos/provision/provision.py:281
#, fuzzy
msgid "GNU Taler Demo: Provision Error"
msgstr "Демо GNU Taler: Помилка"
diff --git a/talermerchantdemos/translations/zh_Hant/LC_MESSAGES/messages.po b/talermerchantdemos/translations/zh_Hant/LC_MESSAGES/messages.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: eintritt@hotmail.com\n"
-"POT-Creation-Date: 2025-06-09 16:19+0200\n"
+"POT-Creation-Date: 2025-08-18 17:00+0200\n"
"PO-Revision-Date: 2025-02-12 09:13+0000\n"
"Last-Translator: Stefan Kügel <stefan.kuegel@taler.net>\n"
"Language: zh_Hant\n"
@@ -19,96 +19,96 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.17.0\n"
-#: talermerchantdemos/blog/blog.py:151 talermerchantdemos/blog/blog.py:230
-#: talermerchantdemos/blog/blog.py:395 talermerchantdemos/blog/blog.py:553
-#: talermerchantdemos/blog/blog.py:562 talermerchantdemos/blog/blog.py:572
-#: talermerchantdemos/donations/donations.py:151
-#: talermerchantdemos/donations/donations.py:322
-#: talermerchantdemos/landing/landing.py:98
+#: talermerchantdemos/blog/blog.py:145 talermerchantdemos/blog/blog.py:224
+#: talermerchantdemos/blog/blog.py:389 talermerchantdemos/blog/blog.py:547
+#: talermerchantdemos/blog/blog.py:556 talermerchantdemos/blog/blog.py:566
+#: talermerchantdemos/donations/donations.py:145
+#: talermerchantdemos/donations/donations.py:316
+#: talermerchantdemos/landing/landing.py:89
+#: talermerchantdemos/landing/landing.py:169
#: talermerchantdemos/landing/landing.py:178
-#: talermerchantdemos/landing/landing.py:187
-#: talermerchantdemos/provision/provision.py:183
+#: talermerchantdemos/provision/provision.py:173
msgid "GNU Taler Demo: Error"
msgstr ""
-#: talermerchantdemos/blog/blog.py:152 talermerchantdemos/landing/landing.py:99
+#: talermerchantdemos/blog/blog.py:146 talermerchantdemos/landing/landing.py:90
msgid "Internal error"
msgstr "內部錯誤"
-#: talermerchantdemos/blog/blog.py:205
+#: talermerchantdemos/blog/blog.py:199
msgid "GNU Taler Demo: Essay Shop"
msgstr ""
-#: talermerchantdemos/blog/blog.py:223
+#: talermerchantdemos/blog/blog.py:217
msgid "Cannot refund unpaid article"
msgstr "無法對於未付款文章進行退款"
-#: talermerchantdemos/blog/blog.py:231
+#: talermerchantdemos/blog/blog.py:225
msgid "Article is not anymore refundable"
msgstr "已無法對此文章進行退款"
-#: talermerchantdemos/blog/blog.py:235
+#: talermerchantdemos/blog/blog.py:229
msgid "GNU Taler Demo: Confirm refund"
msgstr ""
-#: talermerchantdemos/blog/blog.py:268
+#: talermerchantdemos/blog/blog.py:262
msgid "You did not pay for this article (nice try!)"
msgstr "您並沒有為此文章付款(想得美!)"
-#: talermerchantdemos/blog/blog.py:273
+#: talermerchantdemos/blog/blog.py:267
msgid "Item not refundable (anymore)"
msgstr "此文章無法進行退款(已無法)"
-#: talermerchantdemos/blog/blog.py:299
+#: talermerchantdemos/blog/blog.py:293
#, python-brace-format
msgid "Internal error: Files for article ({}) not found."
msgstr "內部錯誤:找不到此文章 ({}) 的檔案。"
-#: talermerchantdemos/blog/blog.py:314
+#: talermerchantdemos/blog/blog.py:308
msgid "GNU Taler Demo: Article"
msgstr ""
-#: talermerchantdemos/blog/blog.py:396
+#: talermerchantdemos/blog/blog.py:390
msgid "Please enable cookies."
msgstr ""
-#: talermerchantdemos/blog/blog.py:465
+#: talermerchantdemos/blog/blog.py:459
msgid "GNU Taler Demo: Refunded"
msgstr ""
-#: talermerchantdemos/blog/blog.py:476
+#: talermerchantdemos/blog/blog.py:470
#: talermerchantdemos/httpcommon/__init__.py:54
#: talermerchantdemos/httpcommon/__init__.py:77
msgid "Backend returned error status"
msgstr "後台回傳錯誤狀態"
-#: talermerchantdemos/blog/blog.py:554
+#: talermerchantdemos/blog/blog.py:548
msgid "Internal server error"
msgstr "內部伺服器錯誤"
-#: talermerchantdemos/blog/blog.py:563
-#: talermerchantdemos/donations/donations.py:323
-#: talermerchantdemos/landing/landing.py:179
-#: talermerchantdemos/provision/provision.py:292
+#: talermerchantdemos/blog/blog.py:557
+#: talermerchantdemos/donations/donations.py:317
+#: talermerchantdemos/landing/landing.py:170
+#: talermerchantdemos/provision/provision.py:282
msgid "Page not found"
msgstr "找不到此頁面"
-#: talermerchantdemos/donations/donations.py:137
+#: talermerchantdemos/donations/donations.py:131
#, python-brace-format
msgid "parameter '{}' required"
msgstr "需要 '{}' 參數"
-#: talermerchantdemos/donations/donations.py:199
-#: talermerchantdemos/donations/donations.py:234
-#: talermerchantdemos/donations/donations.py:308
+#: talermerchantdemos/donations/donations.py:193
+#: talermerchantdemos/donations/donations.py:228
+#: talermerchantdemos/donations/donations.py:302
msgid "GNU Taler Demo: Donations"
msgstr ""
-#: talermerchantdemos/donations/donations.py:217
+#: talermerchantdemos/donations/donations.py:211
msgid "GNU Taler Demo: Donations checkout"
msgstr ""
-#: talermerchantdemos/donations/donations.py:278
+#: talermerchantdemos/donations/donations.py:272
msgid "Backend could not create the order"
msgstr "後端無法創建訂單"
@@ -126,32 +126,32 @@ msgstr "無法解析後台回覆"
msgid "Could not parse response from backend"
msgstr "無法解析後台回覆"
-#: talermerchantdemos/landing/landing.py:164
+#: talermerchantdemos/landing/landing.py:155
#: talermerchantdemos/templates/common-base.html.j2:20
msgid "GNU Taler Demo"
msgstr "GNU Taler Demo"
-#: talermerchantdemos/landing/landing.py:188
+#: talermerchantdemos/landing/landing.py:179
msgid "HTTP method not allowed for this page"
msgstr "HTTP 方法不被此頁面允許"
-#: talermerchantdemos/provision/provision.py:217
+#: talermerchantdemos/provision/provision.py:207
msgid "GNU Taler Demo: Provision"
msgstr ""
-#: talermerchantdemos/provision/provision.py:237
+#: talermerchantdemos/provision/provision.py:227
msgid "Full name required."
msgstr ""
-#: talermerchantdemos/provision/provision.py:239
+#: talermerchantdemos/provision/provision.py:229
msgid "Full name not acceptable."
msgstr ""
-#: talermerchantdemos/provision/provision.py:275
+#: talermerchantdemos/provision/provision.py:265
msgid "GNU Taler Demo: Self-Provision"
msgstr ""
-#: talermerchantdemos/provision/provision.py:291
+#: talermerchantdemos/provision/provision.py:281
msgid "GNU Taler Demo: Provision Error"
msgstr ""
@@ -795,7 +795,7 @@ msgstr ""
#~ msgstr "GNU Taler Demo: 介紹"
#~ msgid "GNU Taler Demo: Survey"
-#~ msgstr ""
+#~ msgstr "GNU Taler Demo"
#~ msgid "Bank"
#~ msgstr "銀行"
@@ -813,7 +813,7 @@ msgstr ""
#~ msgstr "您可以從我們的主要<a href=\"{site}\">網站</a>深入了解 GNU Taler。"
#~ msgid "Supplemental file ({}) for article ({}) not found."
-#~ msgstr "未找到文章 ({}) 的附加文件 ({})。"
+#~ msgstr "內部錯誤:找不到此文章 ({}) 的檔案。"
#~ msgid "Direct access forbidden"
#~ msgstr ""
@@ -822,7 +822,7 @@ msgstr ""
#~ msgstr ""
#~ msgid "Step 5: Survey"
-#~ msgstr "步骤 5:调查"
+#~ msgstr "步驟三:付款"
#~ msgid "Websites can give rewards to visitors for completing tasks."
#~ msgstr ""
@@ -834,7 +834,7 @@ msgstr ""
#~ msgstr ""
#~ msgid "Step 6: Reach out to us"
-#~ msgstr ""
+#~ msgstr "步驟5 :聯絡我們"
#~ msgid ""
#~ "This page demonstrates how to reward "