commit 96dba5208bde2ae5669ff95cb5d2d0cabcd45a5a
parent 4eb9e54c7d30221b10cb3c7b07bf41a79d75860f
Author: Florian Dold <florian@dold.me>
Date: Thu, 25 Sep 2025 13:44:15 +0200
donau support
Diffstat:
19 files changed, 664 insertions(+), 624 deletions(-)
diff --git a/talermerchantdemos/donations/donations.py b/talermerchantdemos/donations/donations.py
@@ -60,14 +60,27 @@ CURRENCY = config["taler"]["currency"].value_string(required=True)
backend_urls = {}
backend_apikeys = {}
+
def add_backend(name):
- backend_urls[name] = config["frontend-demo-donations"][f"backend_url_{name}"].value_string(required=True)
- backend_apikeys[name] = config["frontend-demo-donations"][f"backend_apikey_{name}"].value_string(required=True)
+ backend_urls[name] = config["frontend-demo-donations"][
+ f"backend_url_{name}"
+ ].value_string(required=True)
+ backend_apikeys[name] = config["frontend-demo-donations"][
+ f"backend_apikey_{name}"
+ ].value_string(required=True)
+
add_backend("tor")
add_backend("taler")
add_backend("gnunet")
+# Use donation authority if configured
+donau_url = config["frontend-demo-donations"][f"donau_url"].value_string()
+if donau_url:
+ donau_url = donau_url.strip()
+ if donau_url == "":
+ donau_url = None
+
logger.info("Using translations from:" + ":".join(list(babel.translation_directories)))
logger.info("currency: " + CURRENCY)
@@ -105,7 +118,9 @@ def err_abort(abort_status_code, **params):
# @return the JSON response from the backend, or a error response
# if something unexpected happens.
def backend_instanced_get(instance, endpoint, params):
- return backend_get(backend_urls[instance], endpoint, params, auth_token=backend_apikeys[instance])
+ return backend_get(
+ backend_urls[instance], endpoint, params, auth_token=backend_apikeys[instance]
+ )
##
@@ -117,7 +132,9 @@ def backend_instanced_get(instance, endpoint, params):
# @param json the POST's body.
# @return the backend response (JSON format).
def backend_instanced_post(instance, endpoint, json):
- return backend_post(backend_urls[instance], endpoint, json, auth_token=backend_apikeys[instance])
+ return backend_post(
+ backend_urls[instance], endpoint, json, auth_token=backend_apikeys[instance]
+ )
##
@@ -252,16 +269,35 @@ def donate(lang):
_external=True,
)
fulfillment_url = fulfillment_url + "&order_id=${ORDER_ID}"
- order = dict(
- amount=donation_amount,
- extra=dict(
- donor=donation_donor, receiver=donation_receiver, amount=donation_amount
- ),
- fulfillment_url=fulfillment_url,
- summary="Donation to {}".format(donation_receiver),
- wire_transfer_deadline=dict(t_s=int(time.time() + 10)),
- minimum_age=16,
- )
+ if donau_url is None:
+ order = dict(
+ amount=donation_amount,
+ extra=dict(
+ donor=donation_donor, receiver=donation_receiver, amount=donation_amount
+ ),
+ fulfillment_url=fulfillment_url,
+ summary="Donation to {}".format(donation_receiver),
+ wire_transfer_deadline=dict(t_s=int(time.time() + 10)),
+ minimum_age=16,
+ )
+ else:
+ order = dict(
+ version=1,
+ extra=dict(
+ donor=donation_donor, receiver=donation_receiver, amount=donation_amount
+ ),
+ fulfillment_url=fulfillment_url,
+ summary="Donation to {} (with receipt)".format(donation_receiver),
+ wire_transfer_deadline=dict(t_s=int(time.time() + 10)),
+ minimum_age=16,
+ choices=[
+ dict(
+ amount=donation_amount,
+ outputs=[dict(type="tax-receipt", donau_urls=[donau_url])],
+ ),
+ ],
+ )
+
order_resp = backend_instanced_post(
donation_receiver, "private/orders", dict(order=order)
)
diff --git a/talermerchantdemos/httpcommon/__init__.py b/talermerchantdemos/httpcommon/__init__.py
@@ -49,17 +49,17 @@ def backend_post(backend_url, endpoint, json, auth_token=None):
message=gettext("Could not parse the response from backend"),
backend_status=resp.status_code,
)
+ print(
+ "Backend responds to {}: {}/{}".format(
+ final_url, str(response_json), resp.status_code
+ )
+ )
if resp.status_code != 200:
raise BackendException(
message=gettext("Backend returned error status"),
backend_status=resp.status_code,
backend_json=response_json,
)
- print(
- "Backend responds to {}: {}/{}".format(
- final_url, str(response_json), resp.status_code
- )
- )
return response_json
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-08-18 17:00+0200\n"
+"POT-Creation-Date: 2025-09-25 13:39+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,11 +20,11 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.17.0\n"
-#: 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/blog/blog.py:148 talermerchantdemos/blog/blog.py:227
+#: talermerchantdemos/blog/blog.py:423 talermerchantdemos/blog/blog.py:581
+#: talermerchantdemos/blog/blog.py:590 talermerchantdemos/blog/blog.py:600
+#: talermerchantdemos/donations/donations.py:162
+#: talermerchantdemos/donations/donations.py:352
#: talermerchantdemos/landing/landing.py:89
#: talermerchantdemos/landing/landing.py:169
#: talermerchantdemos/landing/landing.py:178
@@ -32,84 +32,84 @@ msgstr ""
msgid "GNU Taler Demo: Error"
msgstr ""
-#: talermerchantdemos/blog/blog.py:146 talermerchantdemos/landing/landing.py:90
+#: talermerchantdemos/blog/blog.py:149 talermerchantdemos/landing/landing.py:90
msgid "Internal error"
msgstr "خطأ داخلي"
-#: talermerchantdemos/blog/blog.py:199
+#: talermerchantdemos/blog/blog.py:202
msgid "GNU Taler Demo: Essay Shop"
msgstr ""
-#: talermerchantdemos/blog/blog.py:217
+#: talermerchantdemos/blog/blog.py:220
msgid "Cannot refund unpaid article"
msgstr "تعذر استرداد المقالة غير المدفوعة"
-#: talermerchantdemos/blog/blog.py:225
+#: talermerchantdemos/blog/blog.py:228
msgid "Article is not anymore refundable"
msgstr "المقال غير قابل للاسترداد بعد الآن"
-#: talermerchantdemos/blog/blog.py:229
+#: talermerchantdemos/blog/blog.py:232
msgid "GNU Taler Demo: Confirm refund"
msgstr ""
-#: talermerchantdemos/blog/blog.py:262
+#: talermerchantdemos/blog/blog.py:265
msgid "You did not pay for this article (nice try!)"
msgstr "لم تقم بالدفع لهذا المقال (محاولة جيدة!)"
-#: talermerchantdemos/blog/blog.py:267
+#: talermerchantdemos/blog/blog.py:270
msgid "Item not refundable (anymore)"
msgstr "المقال غير قابل للاسترداد (بعد الآن)"
-#: talermerchantdemos/blog/blog.py:293
+#: talermerchantdemos/blog/blog.py:296
#, python-brace-format
msgid "Internal error: Files for article ({}) not found."
msgstr "خطأ داخلي: ملفات المقال ({}) غير موجودة."
-#: talermerchantdemos/blog/blog.py:308
+#: talermerchantdemos/blog/blog.py:311
msgid "GNU Taler Demo: Article"
msgstr ""
-#: talermerchantdemos/blog/blog.py:390
+#: talermerchantdemos/blog/blog.py:424
msgid "Please enable cookies."
msgstr ""
-#: talermerchantdemos/blog/blog.py:459
+#: talermerchantdemos/blog/blog.py:493
msgid "GNU Taler Demo: Refunded"
msgstr ""
-#: talermerchantdemos/blog/blog.py:470
-#: talermerchantdemos/httpcommon/__init__.py:54
+#: talermerchantdemos/blog/blog.py:504
+#: talermerchantdemos/httpcommon/__init__.py:59
#: talermerchantdemos/httpcommon/__init__.py:77
msgid "Backend returned error status"
msgstr "عادت الخلفية لحالة الخطأ"
-#: talermerchantdemos/blog/blog.py:548
+#: talermerchantdemos/blog/blog.py:582
msgid "Internal server error"
msgstr "خطأ في الserver الداخلي"
-#: talermerchantdemos/blog/blog.py:557
-#: talermerchantdemos/donations/donations.py:317
+#: talermerchantdemos/blog/blog.py:591
+#: talermerchantdemos/donations/donations.py:353
#: talermerchantdemos/landing/landing.py:170
#: talermerchantdemos/provision/provision.py:282
msgid "Page not found"
msgstr "الصفحة غير موجودة"
-#: talermerchantdemos/donations/donations.py:131
+#: talermerchantdemos/donations/donations.py:148
#, python-brace-format
msgid "parameter '{}' required"
msgstr "المَعلَمة '{}' مطلوبة"
-#: talermerchantdemos/donations/donations.py:193
-#: talermerchantdemos/donations/donations.py:228
-#: talermerchantdemos/donations/donations.py:302
+#: talermerchantdemos/donations/donations.py:210
+#: talermerchantdemos/donations/donations.py:245
+#: talermerchantdemos/donations/donations.py:338
msgid "GNU Taler Demo: Donations"
msgstr ""
-#: talermerchantdemos/donations/donations.py:211
+#: talermerchantdemos/donations/donations.py:228
msgid "GNU Taler Demo: Donations checkout"
msgstr ""
-#: talermerchantdemos/donations/donations.py:272
+#: talermerchantdemos/donations/donations.py:308
msgid "Backend could not create the order"
msgstr ""
diff --git a/talermerchantdemos/translations/de/LC_MESSAGES/messages.po b/talermerchantdemos/translations/de/LC_MESSAGES/messages.po
@@ -5,26 +5,25 @@
#
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-08-18 17:00+0200\n"
+"POT-Creation-Date: 2025-09-25 13:39+0200\n"
"PO-Revision-Date: 2025-09-11 12:06+0000\n"
"Last-Translator: Stefan Kügel <stefan.kuegel@taler.net>\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.13.2\n"
"Generated-By: Babel 2.17.0\n"
-#: 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/blog/blog.py:148 talermerchantdemos/blog/blog.py:227
+#: talermerchantdemos/blog/blog.py:423 talermerchantdemos/blog/blog.py:581
+#: talermerchantdemos/blog/blog.py:590 talermerchantdemos/blog/blog.py:600
+#: talermerchantdemos/donations/donations.py:162
+#: talermerchantdemos/donations/donations.py:352
#: talermerchantdemos/landing/landing.py:89
#: talermerchantdemos/landing/landing.py:169
#: talermerchantdemos/landing/landing.py:178
@@ -32,86 +31,86 @@ msgstr ""
msgid "GNU Taler Demo: Error"
msgstr "GNU Taler Demo: Fehler"
-#: talermerchantdemos/blog/blog.py:146 talermerchantdemos/landing/landing.py:90
+#: talermerchantdemos/blog/blog.py:149 talermerchantdemos/landing/landing.py:90
msgid "Internal error"
msgstr "Interner Fehler"
-#: talermerchantdemos/blog/blog.py:199
+#: talermerchantdemos/blog/blog.py:202
msgid "GNU Taler Demo: Essay Shop"
msgstr "GNU Taler Demo: Buchhandlung"
-#: talermerchantdemos/blog/blog.py:217
+#: talermerchantdemos/blog/blog.py:220
msgid "Cannot refund unpaid article"
msgstr ""
"Den Kaufpreis eines Artikels, der nicht bezahlt wurde, können wir nicht "
"erstatten"
-#: talermerchantdemos/blog/blog.py:225
+#: talermerchantdemos/blog/blog.py:228
msgid "Article is not anymore refundable"
msgstr "Den Kaufpreis für diesen Aufsatz können wir leider nicht mehr erstatten"
-#: talermerchantdemos/blog/blog.py:229
+#: talermerchantdemos/blog/blog.py:232
msgid "GNU Taler Demo: Confirm refund"
msgstr "GNU Taler Demo: Rückerstattung bestätigen"
-#: talermerchantdemos/blog/blog.py:262
+#: talermerchantdemos/blog/blog.py:265
msgid "You did not pay for this article (nice try!)"
msgstr "Für diesen Aufsatz wurde noch kein Kaufpreis entrichtet"
-#: talermerchantdemos/blog/blog.py:267
+#: talermerchantdemos/blog/blog.py:270
msgid "Item not refundable (anymore)"
msgstr "Dieser Artikel kann nicht (mehr) erstattet werden"
-#: talermerchantdemos/blog/blog.py:293
+#: talermerchantdemos/blog/blog.py:296
#, 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:308
+#: talermerchantdemos/blog/blog.py:311
msgid "GNU Taler Demo: Article"
msgstr "GNU Taler Demo: Artikel"
-#: talermerchantdemos/blog/blog.py:390
+#: talermerchantdemos/blog/blog.py:424
msgid "Please enable cookies."
msgstr "Bitte erlauben Sie das Speichern von Cookies."
-#: talermerchantdemos/blog/blog.py:459
+#: talermerchantdemos/blog/blog.py:493
msgid "GNU Taler Demo: Refunded"
msgstr "GNU Taler Demo: Zurückerstattet"
-#: talermerchantdemos/blog/blog.py:470
-#: talermerchantdemos/httpcommon/__init__.py:54
+#: talermerchantdemos/blog/blog.py:504
+#: talermerchantdemos/httpcommon/__init__.py:59
#: talermerchantdemos/httpcommon/__init__.py:77
msgid "Backend returned error status"
msgstr "Das Backend lieferte einen Fehlerstatus zurück"
-#: talermerchantdemos/blog/blog.py:548
+#: talermerchantdemos/blog/blog.py:582
msgid "Internal server error"
msgstr "Interner Server-Fehler"
-#: talermerchantdemos/blog/blog.py:557
-#: talermerchantdemos/donations/donations.py:317
+#: talermerchantdemos/blog/blog.py:591
+#: talermerchantdemos/donations/donations.py:353
#: talermerchantdemos/landing/landing.py:170
#: talermerchantdemos/provision/provision.py:282
msgid "Page not found"
msgstr "Seite nicht gefunden"
-#: talermerchantdemos/donations/donations.py:131
+#: talermerchantdemos/donations/donations.py:148
#, python-brace-format
msgid "parameter '{}' required"
msgstr "Parameter '{}' erforderlich"
-#: talermerchantdemos/donations/donations.py:193
-#: talermerchantdemos/donations/donations.py:228
-#: talermerchantdemos/donations/donations.py:302
+#: talermerchantdemos/donations/donations.py:210
+#: talermerchantdemos/donations/donations.py:245
+#: talermerchantdemos/donations/donations.py:338
msgid "GNU Taler Demo: Donations"
msgstr "GNU Taler Demo: Die ‚Spenden‘-Funktion"
-#: talermerchantdemos/donations/donations.py:211
+#: talermerchantdemos/donations/donations.py:228
msgid "GNU Taler Demo: Donations checkout"
msgstr "GNU Taler Demo: Spende durchführen"
-#: talermerchantdemos/donations/donations.py:272
+#: talermerchantdemos/donations/donations.py:308
msgid "Backend could not create the order"
msgstr "Das Backend konnte die Bestellung nicht erzeugen"
@@ -1248,3 +1247,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-08-18 17:00+0200\n"
+"POT-Creation-Date: 2025-09-25 13:39+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language: en\n"
@@ -14,11 +14,11 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.17.0\n"
-#: 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/blog/blog.py:148 talermerchantdemos/blog/blog.py:227
+#: talermerchantdemos/blog/blog.py:423 talermerchantdemos/blog/blog.py:581
+#: talermerchantdemos/blog/blog.py:590 talermerchantdemos/blog/blog.py:600
+#: talermerchantdemos/donations/donations.py:162
+#: talermerchantdemos/donations/donations.py:352
#: talermerchantdemos/landing/landing.py:89
#: talermerchantdemos/landing/landing.py:169
#: talermerchantdemos/landing/landing.py:178
@@ -26,84 +26,84 @@ msgstr ""
msgid "GNU Taler Demo: Error"
msgstr ""
-#: talermerchantdemos/blog/blog.py:146 talermerchantdemos/landing/landing.py:90
+#: talermerchantdemos/blog/blog.py:149 talermerchantdemos/landing/landing.py:90
msgid "Internal error"
msgstr ""
-#: talermerchantdemos/blog/blog.py:199
+#: talermerchantdemos/blog/blog.py:202
msgid "GNU Taler Demo: Essay Shop"
msgstr ""
-#: talermerchantdemos/blog/blog.py:217
+#: talermerchantdemos/blog/blog.py:220
msgid "Cannot refund unpaid article"
msgstr ""
-#: talermerchantdemos/blog/blog.py:225
+#: talermerchantdemos/blog/blog.py:228
msgid "Article is not anymore refundable"
msgstr ""
-#: talermerchantdemos/blog/blog.py:229
+#: talermerchantdemos/blog/blog.py:232
msgid "GNU Taler Demo: Confirm refund"
msgstr ""
-#: talermerchantdemos/blog/blog.py:262
+#: talermerchantdemos/blog/blog.py:265
msgid "You did not pay for this article (nice try!)"
msgstr ""
-#: talermerchantdemos/blog/blog.py:267
+#: talermerchantdemos/blog/blog.py:270
msgid "Item not refundable (anymore)"
msgstr ""
-#: talermerchantdemos/blog/blog.py:293
+#: talermerchantdemos/blog/blog.py:296
#, python-brace-format
msgid "Internal error: Files for article ({}) not found."
msgstr ""
-#: talermerchantdemos/blog/blog.py:308
+#: talermerchantdemos/blog/blog.py:311
msgid "GNU Taler Demo: Article"
msgstr ""
-#: talermerchantdemos/blog/blog.py:390
+#: talermerchantdemos/blog/blog.py:424
msgid "Please enable cookies."
msgstr ""
-#: talermerchantdemos/blog/blog.py:459
+#: talermerchantdemos/blog/blog.py:493
msgid "GNU Taler Demo: Refunded"
msgstr ""
-#: talermerchantdemos/blog/blog.py:470
-#: talermerchantdemos/httpcommon/__init__.py:54
+#: talermerchantdemos/blog/blog.py:504
+#: talermerchantdemos/httpcommon/__init__.py:59
#: talermerchantdemos/httpcommon/__init__.py:77
msgid "Backend returned error status"
msgstr ""
-#: talermerchantdemos/blog/blog.py:548
+#: talermerchantdemos/blog/blog.py:582
msgid "Internal server error"
msgstr ""
-#: talermerchantdemos/blog/blog.py:557
-#: talermerchantdemos/donations/donations.py:317
+#: talermerchantdemos/blog/blog.py:591
+#: talermerchantdemos/donations/donations.py:353
#: talermerchantdemos/landing/landing.py:170
#: talermerchantdemos/provision/provision.py:282
msgid "Page not found"
msgstr ""
-#: talermerchantdemos/donations/donations.py:131
+#: talermerchantdemos/donations/donations.py:148
#, python-brace-format
msgid "parameter '{}' required"
msgstr ""
-#: talermerchantdemos/donations/donations.py:193
-#: talermerchantdemos/donations/donations.py:228
-#: talermerchantdemos/donations/donations.py:302
+#: talermerchantdemos/donations/donations.py:210
+#: talermerchantdemos/donations/donations.py:245
+#: talermerchantdemos/donations/donations.py:338
msgid "GNU Taler Demo: Donations"
msgstr ""
-#: talermerchantdemos/donations/donations.py:211
+#: talermerchantdemos/donations/donations.py:228
msgid "GNU Taler Demo: Donations checkout"
msgstr ""
-#: talermerchantdemos/donations/donations.py:272
+#: talermerchantdemos/donations/donations.py:308
msgid "Backend could not create the order"
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-08-18 17:00+0200\n"
+"POT-Creation-Date: 2025-09-25 13:39+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,11 +19,11 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.17.0\n"
-#: 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/blog/blog.py:148 talermerchantdemos/blog/blog.py:227
+#: talermerchantdemos/blog/blog.py:423 talermerchantdemos/blog/blog.py:581
+#: talermerchantdemos/blog/blog.py:590 talermerchantdemos/blog/blog.py:600
+#: talermerchantdemos/donations/donations.py:162
+#: talermerchantdemos/donations/donations.py:352
#: talermerchantdemos/landing/landing.py:89
#: talermerchantdemos/landing/landing.py:169
#: talermerchantdemos/landing/landing.py:178
@@ -31,85 +31,85 @@ msgstr ""
msgid "GNU Taler Demo: Error"
msgstr "GNU Taler Demo: Error"
-#: talermerchantdemos/blog/blog.py:146 talermerchantdemos/landing/landing.py:90
+#: talermerchantdemos/blog/blog.py:149 talermerchantdemos/landing/landing.py:90
msgid "Internal error"
msgstr "Error interno"
-#: talermerchantdemos/blog/blog.py:199
+#: talermerchantdemos/blog/blog.py:202
msgid "GNU Taler Demo: Essay Shop"
msgstr "Demostración de GNU Taler: Tienda de Pruebas"
-#: talermerchantdemos/blog/blog.py:217
+#: talermerchantdemos/blog/blog.py:220
msgid "Cannot refund unpaid article"
msgstr "No se puede realizar el reembolso de un artículo no pagado"
-#: talermerchantdemos/blog/blog.py:225
+#: talermerchantdemos/blog/blog.py:228
msgid "Article is not anymore refundable"
msgstr "El artículo ya no es reembolsable"
-#: talermerchantdemos/blog/blog.py:229
+#: talermerchantdemos/blog/blog.py:232
msgid "GNU Taler Demo: Confirm refund"
msgstr "GNU Taler Demo: Confirmar reembolso"
-#: talermerchantdemos/blog/blog.py:262
+#: talermerchantdemos/blog/blog.py:265
msgid "You did not pay for this article (nice try!)"
msgstr "No has pagado por este artículo (¡buen intento!)"
-#: talermerchantdemos/blog/blog.py:267
+#: talermerchantdemos/blog/blog.py:270
msgid "Item not refundable (anymore)"
msgstr "Artículo no reembolsable"
-#: talermerchantdemos/blog/blog.py:293
+#: talermerchantdemos/blog/blog.py:296
#, 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:308
+#: talermerchantdemos/blog/blog.py:311
msgid "GNU Taler Demo: Article"
msgstr "GNU Taler Demo: Artículo"
-#: talermerchantdemos/blog/blog.py:390
+#: talermerchantdemos/blog/blog.py:424
msgid "Please enable cookies."
msgstr "Porfavor, habilita las cookies."
-#: talermerchantdemos/blog/blog.py:459
+#: talermerchantdemos/blog/blog.py:493
msgid "GNU Taler Demo: Refunded"
msgstr "GNU Taler Demo: Reembolsado"
-#: talermerchantdemos/blog/blog.py:470
-#: talermerchantdemos/httpcommon/__init__.py:54
+#: talermerchantdemos/blog/blog.py:504
+#: talermerchantdemos/httpcommon/__init__.py:59
#: talermerchantdemos/httpcommon/__init__.py:77
msgid "Backend returned error status"
msgstr "El backend ha retornado un estado de error"
-#: talermerchantdemos/blog/blog.py:548
+#: talermerchantdemos/blog/blog.py:582
msgid "Internal server error"
msgstr "Error interno de servidor"
-#: talermerchantdemos/blog/blog.py:557
-#: talermerchantdemos/donations/donations.py:317
+#: talermerchantdemos/blog/blog.py:591
+#: talermerchantdemos/donations/donations.py:353
#: talermerchantdemos/landing/landing.py:170
#: talermerchantdemos/provision/provision.py:282
msgid "Page not found"
msgstr "Página no encontrada"
-#: talermerchantdemos/donations/donations.py:131
+#: talermerchantdemos/donations/donations.py:148
#, python-brace-format
msgid "parameter '{}' required"
msgstr "parámetro '{}' requerido"
-#: talermerchantdemos/donations/donations.py:193
-#: talermerchantdemos/donations/donations.py:228
-#: talermerchantdemos/donations/donations.py:302
+#: talermerchantdemos/donations/donations.py:210
+#: talermerchantdemos/donations/donations.py:245
+#: talermerchantdemos/donations/donations.py:338
msgid "GNU Taler Demo: Donations"
msgstr "GNU Taler Demo: Donaciones"
-#: talermerchantdemos/donations/donations.py:211
+#: talermerchantdemos/donations/donations.py:228
#, fuzzy
msgid "GNU Taler Demo: Donations checkout"
msgstr "GNU Taler Demo: Pago de donaciones"
-#: talermerchantdemos/donations/donations.py:272
+#: talermerchantdemos/donations/donations.py:308
msgid "Backend could not create the order"
msgstr "El backend no ha podido crear el pedido"
diff --git a/talermerchantdemos/translations/fr/LC_MESSAGES/messages.po b/talermerchantdemos/translations/fr/LC_MESSAGES/messages.po
@@ -7,24 +7,23 @@ msgid ""
msgstr ""
"Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: eintritt@hotmail.com\n"
-"POT-Creation-Date: 2025-08-18 17:00+0200\n"
+"POT-Creation-Date: 2025-09-25 13:39+0200\n"
"PO-Revision-Date: 2025-09-10 15:30+0000\n"
"Last-Translator: Stefan Kügel <stefan.kuegel@taler.net>\n"
-"Language-Team: French <https://weblate.gnunet.org/projects/gnu-taler/"
-"demonstration-pages/fr/>\n"
"Language: fr\n"
+"Language-Team: French <https://weblate.gnunet.org/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.13.2\n"
"Generated-By: Babel 2.17.0\n"
-#: 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/blog/blog.py:148 talermerchantdemos/blog/blog.py:227
+#: talermerchantdemos/blog/blog.py:423 talermerchantdemos/blog/blog.py:581
+#: talermerchantdemos/blog/blog.py:590 talermerchantdemos/blog/blog.py:600
+#: talermerchantdemos/donations/donations.py:162
+#: talermerchantdemos/donations/donations.py:352
#: talermerchantdemos/landing/landing.py:89
#: talermerchantdemos/landing/landing.py:169
#: talermerchantdemos/landing/landing.py:178
@@ -32,84 +31,84 @@ msgstr ""
msgid "GNU Taler Demo: Error"
msgstr "Démo de GNU Taler : Erreur"
-#: talermerchantdemos/blog/blog.py:146 talermerchantdemos/landing/landing.py:90
+#: talermerchantdemos/blog/blog.py:149 talermerchantdemos/landing/landing.py:90
msgid "Internal error"
msgstr "Erreur interne"
-#: talermerchantdemos/blog/blog.py:199
+#: talermerchantdemos/blog/blog.py:202
msgid "GNU Taler Demo: Essay Shop"
msgstr "Démo de GNU Taler : Librairie"
-#: talermerchantdemos/blog/blog.py:217
+#: talermerchantdemos/blog/blog.py:220
msgid "Cannot refund unpaid article"
msgstr "Impossible de rembourser l'article non payé"
-#: talermerchantdemos/blog/blog.py:225
+#: talermerchantdemos/blog/blog.py:228
msgid "Article is not anymore refundable"
msgstr "L'article n'est plus remboursable"
-#: talermerchantdemos/blog/blog.py:229
+#: talermerchantdemos/blog/blog.py:232
msgid "GNU Taler Demo: Confirm refund"
msgstr "Démo de GNU Taler : Confirmez le remboursement"
-#: talermerchantdemos/blog/blog.py:262
+#: talermerchantdemos/blog/blog.py:265
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:267
+#: talermerchantdemos/blog/blog.py:270
msgid "Item not refundable (anymore)"
msgstr "Article pas ou plus remboursable"
-#: talermerchantdemos/blog/blog.py:293
+#: talermerchantdemos/blog/blog.py:296
#, 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:308
+#: talermerchantdemos/blog/blog.py:311
msgid "GNU Taler Demo: Article"
msgstr "Démo de GNU Taler : Article"
-#: talermerchantdemos/blog/blog.py:390
+#: talermerchantdemos/blog/blog.py:424
msgid "Please enable cookies."
msgstr "Veuillez activer les cookies."
-#: talermerchantdemos/blog/blog.py:459
+#: talermerchantdemos/blog/blog.py:493
msgid "GNU Taler Demo: Refunded"
msgstr "Démo de GNU Taler : Remboursement effectué"
-#: talermerchantdemos/blog/blog.py:470
-#: talermerchantdemos/httpcommon/__init__.py:54
+#: talermerchantdemos/blog/blog.py:504
+#: talermerchantdemos/httpcommon/__init__.py:59
#: talermerchantdemos/httpcommon/__init__.py:77
msgid "Backend returned error status"
msgstr "Le backend a renvoyé un statut d'erreur"
-#: talermerchantdemos/blog/blog.py:548
+#: talermerchantdemos/blog/blog.py:582
msgid "Internal server error"
msgstr "Erreur interne du serveur"
-#: talermerchantdemos/blog/blog.py:557
-#: talermerchantdemos/donations/donations.py:317
+#: talermerchantdemos/blog/blog.py:591
+#: talermerchantdemos/donations/donations.py:353
#: talermerchantdemos/landing/landing.py:170
#: talermerchantdemos/provision/provision.py:282
msgid "Page not found"
msgstr "Page non trouvée"
-#: talermerchantdemos/donations/donations.py:131
+#: talermerchantdemos/donations/donations.py:148
#, python-brace-format
msgid "parameter '{}' required"
msgstr "paramètre '{}' obligatoire"
-#: talermerchantdemos/donations/donations.py:193
-#: talermerchantdemos/donations/donations.py:228
-#: talermerchantdemos/donations/donations.py:302
+#: talermerchantdemos/donations/donations.py:210
+#: talermerchantdemos/donations/donations.py:245
+#: talermerchantdemos/donations/donations.py:338
msgid "GNU Taler Demo: Donations"
msgstr "Démo de GNU Taler : Donations"
-#: talermerchantdemos/donations/donations.py:211
+#: talermerchantdemos/donations/donations.py:228
msgid "GNU Taler Demo: Donations checkout"
msgstr "Démo de GNU Taler : Encaissement des dons"
-#: talermerchantdemos/donations/donations.py:272
+#: talermerchantdemos/donations/donations.py:308
msgid "Backend could not create the order"
msgstr "Le backend n'a pas pu créer la commande"
@@ -690,9 +689,9 @@ msgid ""
" the merchants on the <a href=\"{bank}\">public accounts page</a> of the "
"bank."
msgstr ""
-"Vous pouvez voir les virements partant du compte de règlement du prestataire "
-"de services de paiement vers les commerçants sur <a href=\"{bank}\">la page "
-"des comptes publics</a> de la banque."
+"Vous pouvez voir les virements partant du compte de règlement du "
+"prestataire de services de paiement 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 ""
@@ -1045,3 +1044,4 @@ msgstr "Créer !"
#~ "and see the incoming wire transfers "
#~ "from the payment service provider."
#~ msgstr ""
+
diff --git a/talermerchantdemos/translations/fur/LC_MESSAGES/messages.po b/talermerchantdemos/translations/fur/LC_MESSAGES/messages.po
@@ -1,4 +1,4 @@
-# Translations template for PROJECT.
+# Friulian translations for PROJECT.
# Copyright (C) 2025 ORGANIZATION
# This file is distributed under the same license as the PROJECT project.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2025.
@@ -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-09-25 13:39+0200\n"
"PO-Revision-Date: 2025-07-28 14:34+0000\n"
"Last-Translator: Fabio Tomat <f.t.public@gmail.com>\n"
-"Language-Team: Friulian <https://weblate.gnunet.org/projects/gnu-taler/"
-"demonstration-pages/fur/>\n"
"Language: fur\n"
+"Language-Team: Friulian <https://weblate.gnunet.org/projects/gnu-taler"
+"/demonstration-pages/fur/>\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:148 talermerchantdemos/blog/blog.py:227
+#: talermerchantdemos/blog/blog.py:423 talermerchantdemos/blog/blog.py:581
+#: talermerchantdemos/blog/blog.py:590 talermerchantdemos/blog/blog.py:600
+#: talermerchantdemos/donations/donations.py:162
+#: talermerchantdemos/donations/donations.py:352
+#: 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 "Dimostrazion di GNU Taler: erôr"
-#: talermerchantdemos/blog/blog.py:152 talermerchantdemos/landing/landing.py:99
+#: talermerchantdemos/blog/blog.py:149 talermerchantdemos/landing/landing.py:90
msgid "Internal error"
msgstr "Erôr interni"
-#: talermerchantdemos/blog/blog.py:205
+#: talermerchantdemos/blog/blog.py:202
msgid "GNU Taler Demo: Essay Shop"
msgstr "Dimostrazion di GNU Taler: buteghe di saçs"
-#: talermerchantdemos/blog/blog.py:223
+#: talermerchantdemos/blog/blog.py:220
msgid "Cannot refund unpaid article"
msgstr "Impussibil rimborsâ un articul che nol è stât paiât"
-#: talermerchantdemos/blog/blog.py:231
+#: talermerchantdemos/blog/blog.py:228
msgid "Article is not anymore refundable"
msgstr "Nol è plui pussibil rimborsâ l'articul"
-#: talermerchantdemos/blog/blog.py:235
+#: talermerchantdemos/blog/blog.py:232
msgid "GNU Taler Demo: Confirm refund"
msgstr "Dimostrazion di GNU Taler: conferme rimbors"
-#: talermerchantdemos/blog/blog.py:268
+#: talermerchantdemos/blog/blog.py:265
msgid "You did not pay for this article (nice try!)"
msgstr "No tu âs paiât chest articul (biel tentatîf!)"
-#: talermerchantdemos/blog/blog.py:273
+#: talermerchantdemos/blog/blog.py:270
msgid "Item not refundable (anymore)"
msgstr "Nol è (plui) pussibil rimborsâ chest articul"
-#: talermerchantdemos/blog/blog.py:299
+#: talermerchantdemos/blog/blog.py:296
#, python-brace-format
msgid "Internal error: Files for article ({}) not found."
msgstr "Erôr interni: no son stâts cjatâts i files pal articul ({})."
-#: talermerchantdemos/blog/blog.py:314
+#: talermerchantdemos/blog/blog.py:311
msgid "GNU Taler Demo: Article"
msgstr "Dimostrazion di GNU Taler: articul"
-#: talermerchantdemos/blog/blog.py:396
+#: talermerchantdemos/blog/blog.py:424
msgid "Please enable cookies."
msgstr "Par plasê, abilite i cookies."
-#: talermerchantdemos/blog/blog.py:465
+#: talermerchantdemos/blog/blog.py:493
msgid "GNU Taler Demo: Refunded"
msgstr "Dimostrazion di GNU Taler: rimborsât"
-#: talermerchantdemos/blog/blog.py:476
-#: talermerchantdemos/httpcommon/__init__.py:54
+#: talermerchantdemos/blog/blog.py:504
+#: talermerchantdemos/httpcommon/__init__.py:59
#: talermerchantdemos/httpcommon/__init__.py:77
msgid "Backend returned error status"
msgstr "Il backend al à tornât un stât di erôr"
-#: talermerchantdemos/blog/blog.py:554
+#: talermerchantdemos/blog/blog.py:582
msgid "Internal server error"
msgstr "Erôr interni dal servidôr"
-#: talermerchantdemos/blog/blog.py:563
-#: talermerchantdemos/donations/donations.py:323
-#: talermerchantdemos/landing/landing.py:179
-#: talermerchantdemos/provision/provision.py:292
+#: talermerchantdemos/blog/blog.py:591
+#: talermerchantdemos/donations/donations.py:353
+#: talermerchantdemos/landing/landing.py:170
+#: talermerchantdemos/provision/provision.py:282
msgid "Page not found"
msgstr "Pagjine no cjatade"
-#: talermerchantdemos/donations/donations.py:137
+#: talermerchantdemos/donations/donations.py:148
#, python-brace-format
msgid "parameter '{}' required"
msgstr "parametri '{}' necessari"
-#: talermerchantdemos/donations/donations.py:199
-#: talermerchantdemos/donations/donations.py:234
-#: talermerchantdemos/donations/donations.py:308
+#: talermerchantdemos/donations/donations.py:210
+#: talermerchantdemos/donations/donations.py:245
+#: talermerchantdemos/donations/donations.py:338
msgid "GNU Taler Demo: Donations"
msgstr "Dimostrazion di GNU Taler: donazions"
-#: talermerchantdemos/donations/donations.py:217
+#: talermerchantdemos/donations/donations.py:228
msgid "GNU Taler Demo: Donations checkout"
msgstr "Dimostrazion di GNU Taler: casse pes donazions"
-#: talermerchantdemos/donations/donations.py:278
+#: talermerchantdemos/donations/donations.py:308
msgid "Backend could not create the order"
msgstr "Il backend nol è rivât a creâ l'ordin"
@@ -126,32 +125,32 @@ msgstr "Impussibil analizâ la rispueste dal backend"
msgid "Could not parse response from backend"
msgstr "Impussibil analizâ la rispueste dal backend"
-#: talermerchantdemos/landing/landing.py:164
+#: talermerchantdemos/landing/landing.py:155
#: talermerchantdemos/templates/common-base.html.j2:20
msgid "GNU Taler Demo"
msgstr "Dimostrazion di GNU Taler"
-#: talermerchantdemos/landing/landing.py:188
+#: talermerchantdemos/landing/landing.py:179
msgid "HTTP method not allowed for this page"
msgstr "Il metodi HTTP nol è ametût in cheste pagjine"
-#: talermerchantdemos/provision/provision.py:217
+#: talermerchantdemos/provision/provision.py:207
msgid "GNU Taler Demo: Provision"
msgstr "Dimostrazion di GNU Taler: oten la tô istance"
-#: talermerchantdemos/provision/provision.py:237
+#: talermerchantdemos/provision/provision.py:227
msgid "Full name required."
msgstr "Non complet necessari."
-#: talermerchantdemos/provision/provision.py:239
+#: talermerchantdemos/provision/provision.py:229
msgid "Full name not acceptable."
msgstr "Non complet no acetabil."
-#: talermerchantdemos/provision/provision.py:275
+#: talermerchantdemos/provision/provision.py:265
msgid "GNU Taler Demo: Self-Provision"
msgstr "Dimostrazion di GNU Taler: configurazion autonome"
-#: talermerchantdemos/provision/provision.py:291
+#: talermerchantdemos/provision/provision.py:281
msgid "GNU Taler Demo: Provision Error"
msgstr "Dimostrazion di GNU Taler: erôr di configurazion"
@@ -166,8 +165,8 @@ msgid ""
"You can <a href=\"{url}\">request a refund</a> within the first hour "
"after buying this article."
msgstr ""
-"Tu puedis <a href=\"{url}\">domandâ un rimbors</a> dentri de prime ore dal "
-"acuist di chest articul."
+"Tu puedis <a href=\"{url}\">domandâ un rimbors</a> dentri de prime ore "
+"dal acuist di chest articul."
#: talermerchantdemos/templates/blog-article-frame.html.j2:17
msgid "This article can't be refunded anymore."
@@ -200,16 +199,15 @@ msgstr "Buteghe di saçs"
#: talermerchantdemos/templates/blog-base.html.j2:12
msgid "On this page you can buy articles using an imaginary currency."
-msgstr ""
-"In cheste pagjine tu puedis comprâ articui doprant une valude imagjinarie."
+msgstr "In cheste pagjine tu puedis comprâ articui doprant une valude imagjinarie."
#: talermerchantdemos/templates/blog-base.html.j2:13
msgid ""
"The articles are chapters from Richard Stallman's book "Free "
"Software, Free Society"."
msgstr ""
-"I articui a son cjapitui dal libri di Richard Stallman "Free Software, "
-"Free Society"."
+"I articui a son cjapitui dal libri di Richard Stallman "Free "
+"Software, Free Society"."
#: talermerchantdemos/templates/blog-base.html.j2:14
#, python-brace-format
@@ -248,8 +246,8 @@ msgid ""
"You will only be able to receive the refund on the same wallet that you "
"have used to pay for this article originally."
msgstr ""
-"Tu rivarâs nome a ricevi il rimbors sul stes tacuin doprât in origjin par "
-"paiâ chest articul."
+"Tu rivarâs nome a ricevi il rimbors sul stes tacuin doprât in origjin par"
+" paiâ chest articul."
#: talermerchantdemos/templates/blog-confirm-refund.html.j2:22
msgid "Request refund"
@@ -302,13 +300,13 @@ msgid ""
"translation has been approved by the Free Software Foundation and the "
"copyright notice and this permission notice are preserved on all copies."
msgstr ""
-"La copie leterâl e la distribuzion di chest libri intîr e je ametude in dut "
-"il mont, cence coscj pai dirits di autôr, cun ogni mieç, nome se al reste "
-"valit chest permès. A vegnin ametudis la copie e la distribuzion di "
-"traduzions di chest libri dal origjinâl par inglês in altris lenghis a pat "
-"che la traduzion e sedi stade aprovade de Free Software Foundation e che la "
-"note sui dirits di autôr e l'avertiment di chest permès a sedin mantignûts "
-"in dutis lis copiis."
+"La copie leterâl e la distribuzion di chest libri intîr e je ametude in "
+"dut il mont, cence coscj pai dirits di autôr, cun ogni mieç, nome se al "
+"reste valit chest permès. A vegnin ametudis la copie e la distribuzion di"
+" traduzions di chest libri dal origjinâl par inglês in altris lenghis a "
+"pat che la traduzion e sedi stade aprovade de Free Software Foundation e "
+"che la note sui dirits di autôr e l'avertiment di chest permès a sedin "
+"mantignûts in dutis lis copiis."
#: talermerchantdemos/templates/blog-index.html.j2:23
msgid "Chapters"
@@ -324,8 +322,8 @@ msgid ""
"You can get free, virtual money to buy articles on this page at the <a "
"href=\"{}\">bank</a>."
msgstr ""
-"Par comprâ articui di cheste pagjine, tu puedis otignî bêçs virtuâi gratuits "
-"te <a href=\"{}\">bancje</a>."
+"Par comprâ articui di cheste pagjine, tu puedis otignî bêçs virtuâi "
+"gratuits te <a href=\"{}\">bancje</a>."
#: talermerchantdemos/templates/blog-index.html.j2:32
msgid "Pay to read more..."
@@ -363,8 +361,8 @@ msgid ""
"You can learn more about GNU Taler on our main <a "
"href=\"{site}\">website</a>."
msgstr ""
-"Par vê plui informazions su GNU Taler, visite il nestri <a href=\"{site}\""
-">sît web</a> principâl."
+"Par vê plui informazions su GNU Taler, visite il nestri <a "
+"href=\"{site}\">sît web</a> principâl."
#: talermerchantdemos/templates/donations-base.html.j2:13
msgid "This is the donation page."
@@ -376,8 +374,8 @@ msgid ""
"Using this page you can make donations in {currency} to Free Software "
"projects."
msgstr ""
-"Doprant cheste pagjine tu puedis fâ donazions in {currency} ai progjets di "
-"software libar."
+"Doprant cheste pagjine tu puedis fâ donazions in {currency} ai progjets "
+"di software libar."
#: talermerchantdemos/templates/donations-checkout.html.j2:5
msgid "Select your payment method"
@@ -386,7 +384,8 @@ msgstr "Selezione il to metodi di paiament"
#: talermerchantdemos/templates/donations-checkout.html.j2:9
msgid "This is an example for a \"checkout\" page of a Web shop."
msgstr ""
-"Chest al è un esempli di pagjine pe \"casse\" di une buteghe virtuâl su web."
+"Chest al è un esempli di pagjine pe \"casse\" di une buteghe virtuâl su "
+"web."
#: talermerchantdemos/templates/donations-checkout.html.j2:10
msgid ""
@@ -401,8 +400,8 @@ msgid ""
"As Taler is not yet universally used, we expect merchants will offer "
"various payment options."
msgstr ""
-"Stant che Taler nol è doprât in mût universâl, nus spietìn che i esercents a "
-"ufrissin variis opzions di paiament."
+"Stant che Taler nol è doprât in mût universâl, nus spietìn che i "
+"esercents a ufrissin variis opzions di paiament."
#: talermerchantdemos/templates/donations-checkout.html.j2:12
msgid "To continue with the demo, select the "Taler" payment option."
@@ -417,8 +416,8 @@ msgid ""
" demonstration."
msgstr ""
"Ten iniments che tu scugnis selezionâ Taler achì par continuâ cu la "
-"dimostrazion, stant che chês altris opzions di paiament, te dimostrazion, no "
-"funzionin pardabon."
+"dimostrazion, stant che chês altris opzions di paiament, te dimostrazion,"
+" no funzionin pardabon."
#: 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 ""
-"Al sarès pussibil domandâ al utent di cjapâ cheste decision te pagjine prime "
-"(cul carel); nô o vin separât chescj doi passaçs par rindiju il plui sempliç "
-"pussibil."
+"Al sarès pussibil domandâ al utent di cjapâ cheste decision te pagjine "
+"prime (cul carel); nô o vin separât chescj doi passaçs par rindiju il "
+"plui sempliç pussibil."
#: talermerchantdemos/templates/donations-checkout.html.j2:44
msgid "Confirm selection"
@@ -444,8 +443,8 @@ msgid ""
"Thank you, <strong>{donor}</strong>, for donating "
"<strong>{amount}</strong> to <strong>{receiver}</strong>."
msgstr ""
-"Graciis, <strong>{donor}</strong>, par vê donât <strong>{amount}</strong> a "
-"<strong>{receiver}</strong>."
+"Graciis, <strong>{donor}</strong>, par vê donât <strong>{amount}</strong>"
+" a <strong>{receiver}</strong>."
#: talermerchantdemos/templates/donations-fulfillment.html.j2:12
#, python-brace-format
@@ -453,8 +452,8 @@ msgid ""
"Please keep the order identifier <strong>{id}</strong> as a receipt for "
"your donation."
msgstr ""
-"Par plasê conserve il numar di ordin <strong>{id}</strong> tant che ricevude "
-"de tô donazion."
+"Par plasê conserve il numar di ordin <strong>{id}</strong> tant che "
+"ricevude de tô donazion."
#: talermerchantdemos/templates/donations-fulfillment.html.j2:13
#, python-brace-format
@@ -462,8 +461,8 @@ msgid ""
"You can show other people that you donated by sharing <a "
"href=\"{link}\">this link</a> with them."
msgstr ""
-"Tu puedis mostrâ a altris personis che tu âs donât condividintjur <a href="
-"\"{link}\">chest colegament</a>."
+"Tu puedis mostrâ a altris personis che tu âs donât condividintjur <a "
+"href=\"{link}\">chest colegament</a>."
#: talermerchantdemos/templates/donations-fulfillment.html.j2:19
#, python-brace-format
@@ -479,8 +478,8 @@ msgid ""
"This donations website shows the user experience for donations with GNU "
"Taler."
msgstr ""
-"Chest sît di donazions al mostre la esperience dal utent pes donazions cun "
-"GNU Taler."
+"Chest sît di donazions al mostre la esperience dal utent pes donazions "
+"cun GNU Taler."
#: talermerchantdemos/templates/donations-index.html.j2:9
#, python-brace-format
@@ -515,12 +514,12 @@ msgid ""
" from the merchant in the Taler wallet. That way, Taler protects you "
"from committing to erroneous payments."
msgstr ""
-"(*) Par rindi plui interessante la dimostrazion, la opzion 5 {currency} e je "
-"satade implementade a pueste cuntun erôr: il vendidôr al cirarà di fâti donâ "
-"6 {currency} invezit di 5 {currency} mostrâts tal formulari. Ma no sta "
-"preocupâti, tu varâs la pussibilitât di tornâ a controlâ la ufierte finâl "
-"dal vendidôr tal tacuin Taler. In cheste maniere, Taler ti protêç da "
-"completâ paiaments sbaliâts."
+"(*) Par rindi plui interessante la dimostrazion, la opzion 5 {currency} e"
+" je satade implementade a pueste cuntun erôr: il vendidôr al cirarà di "
+"fâti donâ 6 {currency} invezit di 5 {currency} mostrâts tal formulari. Ma"
+" no sta preocupâti, tu varâs la pussibilitât di tornâ a controlâ la "
+"ufierte finâl dal vendidôr tal tacuin Taler. In cheste maniere, Taler ti "
+"protêç da completâ paiaments sbaliâts."
#: talermerchantdemos/templates/donations-provider-not-supported.html.j2:4
msgid "Payment Provider Not Supported"
@@ -529,8 +528,8 @@ msgstr "Furnidôr di servizis di paiament no supuartât"
#: talermerchantdemos/templates/donations-provider-not-supported.html.j2:7
msgid "Unfortunately the selected payment provider is not supported in this demo."
msgstr ""
-"Purtrop il furnidôr di servizis di paiament selezionât nol è supuartât in "
-"cheste dimostrazion."
+"Purtrop il furnidôr di servizis di paiament selezionât nol è supuartât in"
+" cheste dimostrazion."
#: talermerchantdemos/templates/donations-provider-not-supported.html.j2:8
msgid "Please go back and select "Taler"."
@@ -543,8 +542,8 @@ msgstr "Cheste e je la dimostrazion di 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 ""
-"Chi tu puedis provâ il sisteme di paiament di GNU Taler doprant une valude "
-"pustice."
+"Chi tu puedis provâ il sisteme di paiament di GNU Taler doprant une "
+"valude pustice."
#: talermerchantdemos/templates/landing-index.html.j2:4
msgid "Step 1: Install the Taler wallet"
@@ -565,17 +564,17 @@ msgid ""
"wallet additional optional permissions that allow it to improve your user"
" experience."
msgstr ""
-"Dopo de instalazion, al è pussibil che ti vegni domandât di concedi permès "
-"facoltatîfs in plui al tacuin Taler, che al va vie navigadôr, par dâi la "
-"pussibilitât di miorâ la esperience utent."
+"Dopo de instalazion, al è pussibil che ti vegni domandât di concedi "
+"permès facoltatîfs in plui al tacuin Taler, che al va vie navigadôr, par "
+"dâi la pussibilitât di miorâ la esperience utent."
#: talermerchantdemos/templates/landing-index.html.j2:13
msgid ""
"These permissions will allow the wallet to automatically open if a page "
"asks for a Taler payment."
msgstr ""
-"Chescj permès a permetaran al tacuin di vierzisi in automatic se une pagjine "
-"e domande un paiament Taler."
+"Chescj permès a permetaran al tacuin di vierzisi in automatic se une "
+"pagjine e domande un paiament Taler."
#: talermerchantdemos/templates/landing-index.html.j2:14
msgid ""
@@ -593,7 +592,8 @@ msgstr "Pas 2: prelevâ monedis"
#, python-brace-format
msgid "In this demo you are paying with {currency}, an imaginary currency."
msgstr ""
-"In cheste dimostrazion tu stâs paiant in {currency}, une valude imagjinarie."
+"In cheste dimostrazion tu stâs paiant in {currency}, une valude "
+"imagjinarie."
#: talermerchantdemos/templates/landing-index.html.j2:23
#, python-brace-format
@@ -601,13 +601,14 @@ msgid ""
"To withdraw {currency} coins you must first create an account at our <a "
"href=\"{bank}\">bank</a>."
msgstr ""
-"Par prelevâ monede in {currency} tu scugnis prime creâ un account te nestre "
-"<a href=\"{bank}\">bancje</a>."
+"Par prelevâ monede in {currency} tu scugnis prime creâ un account te "
+"nestre <a href=\"{bank}\">bancje</a>."
#: talermerchantdemos/templates/landing-index.html.j2:24
msgid "Signing up only requires you to pick a username and password."
msgstr ""
-"La regjistrazion e domande nome la sielte di un non utent e di une password."
+"La regjistrazion e domande nome la sielte di un non utent e di une "
+"password."
#: talermerchantdemos/templates/landing-index.html.j2:25
#, python-brace-format
@@ -650,15 +651,14 @@ msgid ""
"individual chapters of Richard Stallman's book "Free Software, "
"Free Society"."
msgstr ""
-"Ae <a href=\"{blog}\">buteghe di saçs</a> tu puedis paiâ in {currency} par "
-"vê singui cjapitui dal 'libri "Free Software, Free Society" di "
-"Richard Stallman."
+"Ae <a href=\"{blog}\">buteghe di saçs</a> tu puedis paiâ in {currency} "
+"par vê singui cjapitui dal 'libri "Free Software, Free "
+"Society" di Richard Stallman."
#: talermerchantdemos/templates/landing-index.html.j2:45
#, python-brace-format
msgid "The book is also available for free at <a href=\"{fsf}\">the FSF</a>."
-msgstr ""
-"Il libri al è ancje disponibil a gratis lì de <a href=\"{fsf}\">FSF</a>."
+msgstr "Il libri al è ancje disponibil a gratis lì de <a href=\"{fsf}\">FSF</a>."
#: talermerchantdemos/templates/landing-index.html.j2:50
#, python-brace-format
@@ -682,17 +682,17 @@ msgid ""
" the merchants on the <a href=\"{bank}\">public accounts page</a> of the "
"bank."
msgstr ""
-"Su la <a href=\"{bank}\">pagjine dai conts publics</a> de bancje, tu puedis "
-"viodi i bonifics bancjaris che a van dal cont fiduciari dal operadôr di "
-"scambi viers i comerciants."
+"Su la <a href=\"{bank}\">pagjine dai conts publics</a> de bancje, tu "
+"puedis viodi i bonifics bancjaris che a van dal cont fiduciari dal "
+"operadôr di scambi viers i comerciants."
#: talermerchantdemos/templates/landing-index.html.j2:60
msgid ""
"Note that only accounts configured to be publicly viewable are shown on "
"that page."
msgstr ""
-"Ten iniments che in cheste pagjine a vegnin mostrâts nome i conts che a son "
-"configurâts in mût che a sedin visibii in mût public."
+"Ten iniments che in cheste pagjine a vegnin mostrâts nome i conts che a "
+"son configurâts in mût che a sedin visibii in mût public."
#: talermerchantdemos/templates/landing-index.html.j2:65
msgid "Step 5: Reach out to us"
@@ -714,8 +714,8 @@ msgstr "Configurazion autonome"
#: talermerchantdemos/templates/provision-base.html.j2:13
msgid "This is the self-provision page for merchant instances on our demo site."
msgstr ""
-"Cheste e je la pagjine de configurazion autonome pes istancis dal marcjadant "
-"sul nestri sît dimostratîf."
+"Cheste e je la pagjine de configurazion autonome pes istancis dal "
+"marcjadant sul nestri sît dimostratîf."
#: talermerchantdemos/templates/provision-done.html.j2:4
msgid "Your merchant instance has been created"
@@ -747,8 +747,8 @@ msgid ""
"Login to the <a href='{url}'>bank for this environment</a> to see "
"incoming wire transfers from the exchange."
msgstr ""
-"Jentre te <a href='{url}'>bancje par chest ambient</a> par viodi i bonifics "
-"bancjaris che a rivin dal operadôr di scambi."
+"Jentre te <a href='{url}'>bancje par chest ambient</a> par viodi i "
+"bonifics bancjaris che a rivin dal operadôr di scambi."
#: talermerchantdemos/templates/provision-done.html.j2:26
#, python-brace-format
@@ -757,16 +757,17 @@ msgid ""
"href='{url}/instances/{id}/webui/#/orders'>backend instance</a> for "
"administration."
msgstr ""
-"Par aministrâ, jentre te <a target='_blank' href='{url}/instances/{id}/webui/"
-"#/orders'>istance di backend</a> dal marcjadant."
+"Par aministrâ, jentre te <a target='_blank' "
+"href='{url}/instances/{id}/webui/#/orders'>istance di backend</a> dal "
+"marcjadant."
#: talermerchantdemos/templates/provision-done.html.j2:27
msgid ""
"For example, you might want to add products to the inventory, add "
"categories etc."
msgstr ""
-"Par esempli, tu podaressis volê zontâ prodots al inventari, zontâ categoriis "
-"e vie indenant."
+"Par esempli, tu podaressis volê zontâ prodots al inventari, zontâ "
+"categoriis e vie indenant."
#: talermerchantdemos/templates/provision-done.html.j2:28
msgid ""
@@ -774,9 +775,9 @@ msgid ""
"backoffice/instance'>tutorial on Instance management</a> for more "
"details."
msgstr ""
-"Controle i nestris <a href='https://tutorials.taler.net/merchant/"
-"merchant-backoffice/instance'>seminaris su la gjestion des istancis</a> par "
-"vê plui detais."
+"Controle i nestris <a href='https://tutorials.taler.net/merchant"
+"/merchant-backoffice/instance'>seminaris su la gjestion des istancis</a> "
+"par vê plui detais."
#: talermerchantdemos/templates/provision-done.html.j2:30
#, python-brace-format
@@ -787,8 +788,9 @@ msgid ""
msgstr ""
"Dopo vê creât un inventari, configure la aplicazion Android pal pont di "
"vendite di GNU Taler in mût che e dopri l'URL di base <pre><a "
-"target='_blank' href='{url}/instances/{id}'>{url}/instances/{id}</a></pre> "
-"dal to esercent"
+"target='_blank' "
+"href='{url}/instances/{id}'>{url}/instances/{id}</a></pre> dal to "
+"esercent"
#: talermerchantdemos/templates/provision-done.html.j2:31
msgid ""
@@ -796,9 +798,9 @@ msgid ""
"href='https://tutorials.taler.net/merchant/pos/pos-config'>tutorial on "
"the Point-of-Sale application</a>."
msgstr ""
-"Par vê plui detais, bute un voli al nestri <a href='https://"
-"tutorials.taler.net/merchant/pos/pos-config'>seminari su la aplicazion pal "
-"pont di vendite</a>."
+"Par vê plui detais, bute un voli al nestri <a "
+"href='https://tutorials.taler.net/merchant/pos/pos-config'>seminari su la"
+" aplicazion pal pont di vendite</a>."
#: talermerchantdemos/templates/provision-done.html.j2:33
#, python-brace-format
@@ -808,16 +810,17 @@ msgid ""
"our <a target='_blank' href='https://tutorials.taler.net/dev/merchant-"
"api/index'>tutorial on the Merchant backend API</a>."
msgstr ""
-"Cree ordins (pe valude in {currency}), midiant la REST-API su <pre>{url}/"
-"instances/{id}/private/orders</pre> Par vê plui detais, controle il nestri "
-"<a target='_blank' href='https://tutorials.taler.net/dev/merchant-api/"
-"index'>seminari su la API di backend dal marcjadant</a>."
+"Cree ordins (pe valude in {currency}), midiant la REST-API su "
+"<pre>{url}/instances/{id}/private/orders</pre> Par vê plui detais, "
+"controle il nestri <a target='_blank' "
+"href='https://tutorials.taler.net/dev/merchant-api/index'>seminari su la "
+"API di backend dal marcjadant</a>."
#: talermerchantdemos/templates/provision-done.html.j2:37
msgid "<b>Note:</b> the merchant instance will be automatically removed when"
msgstr ""
-"<b>Note:</b> la istance dal marcjadant e vignarà gjavade in automatic cuant "
-"che"
+"<b>Note:</b> la istance dal marcjadant e vignarà gjavade in automatic "
+"cuant che"
#: talermerchantdemos/templates/provision-done.html.j2:39
#, python-brace-format
@@ -841,18 +844,18 @@ msgid ""
"and a corresponding bank account in this environment, and start using the"
" merchant API on this site!"
msgstr ""
-"Se tu sês un svilupadôr di frontend e tu desideris nome integrâ i paiaments "
-"cun Taler te tô interface utent, ti baste otignî achì une istance di "
-"esercent e un cont bancjari corispondent in chest ambient, podopo scomençâ a "
-"doprâ lis APIs di esercent su chest sît!"
+"Se tu sês un svilupadôr di frontend e tu desideris nome integrâ i "
+"paiaments cun Taler te tô interface utent, ti baste otignî achì une "
+"istance di esercent e un cont bancjari corispondent in chest ambient, "
+"podopo scomençâ a doprâ lis APIs di esercent su chest sît!"
#: talermerchantdemos/templates/provision-index.html.j2:13
msgid ""
"On success you will receive a <b>merchant-ID</b> and an <b>access-"
"token</b>. You need that information"
msgstr ""
-"Tal câs che dut al sedi lât a bon fin tu ricevarâs un <b>id-marcjadant</b> e "
-"un <b>gjeton-acès</b>. Chescj dâts ti coventaran"
+"Tal câs che dut al sedi lât a bon fin tu ricevarâs un <b>id-"
+"marcjadant</b> e un <b>gjeton-acès</b>. Chescj dâts ti coventaran"
#: talermerchantdemos/templates/provision-index.html.j2:15
#, python-brace-format
@@ -861,9 +864,9 @@ msgid ""
"the merchant's inventory at our own <a href='{backend}'>merchant "
"backend</a>, and"
msgstr ""
-"par creâ ordins midiant la API di backend personâl dal to marcjadant e fâ "
-"modifichis tal inventari dal marcjadant al nestri <a href='{backend}"
-"'>backend di marcjadant</a> e"
+"par creâ ordins midiant la API di backend personâl dal to marcjadant e fâ"
+" modifichis tal inventari dal marcjadant al nestri <a "
+"href='{backend}'>backend di marcjadant</a> e"
#: talermerchantdemos/templates/provision-index.html.j2:16
#, python-brace-format
@@ -872,9 +875,9 @@ msgid ""
"this environment and see the incoming wire transfers from the payment "
"service provider."
msgstr ""
-"par doprâ il cont dal marcjadant te <a href='{bank}'>bancje</a> par chest "
-"ambient e viodi i bonifics bancjaris in jentrade che a rivin dal furnidôr di "
-"servizis di paiament."
+"par doprâ il cont dal marcjadant te <a href='{bank}'>bancje</a> par chest"
+" ambient e viodi i bonifics bancjaris in jentrade che a rivin dal "
+"furnidôr di servizis di paiament."
#: talermerchantdemos/templates/provision-index.html.j2:26
msgid "Enter the full name for your merchant:"
@@ -883,3 +886,4 @@ msgstr "Inserìs il non complet pal to marcjadant:"
#: talermerchantdemos/templates/provision-index.html.j2:31
msgid "Create!"
msgstr "Cree!"
+
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-08-18 17:00+0200\n"
+"POT-Creation-Date: 2025-09-25 13:39+0200\n"
"PO-Revision-Date: 2024-12-12 17:44+0000\n"
"Last-Translator: Anonymous <noreply@weblate.org>\n"
"Language: hi\n"
@@ -19,11 +19,11 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.17.0\n"
-#: 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/blog/blog.py:148 talermerchantdemos/blog/blog.py:227
+#: talermerchantdemos/blog/blog.py:423 talermerchantdemos/blog/blog.py:581
+#: talermerchantdemos/blog/blog.py:590 talermerchantdemos/blog/blog.py:600
+#: talermerchantdemos/donations/donations.py:162
+#: talermerchantdemos/donations/donations.py:352
#: talermerchantdemos/landing/landing.py:89
#: talermerchantdemos/landing/landing.py:169
#: talermerchantdemos/landing/landing.py:178
@@ -31,84 +31,84 @@ msgstr ""
msgid "GNU Taler Demo: Error"
msgstr ""
-#: talermerchantdemos/blog/blog.py:146 talermerchantdemos/landing/landing.py:90
+#: talermerchantdemos/blog/blog.py:149 talermerchantdemos/landing/landing.py:90
msgid "Internal error"
msgstr ""
-#: talermerchantdemos/blog/blog.py:199
+#: talermerchantdemos/blog/blog.py:202
msgid "GNU Taler Demo: Essay Shop"
msgstr ""
-#: talermerchantdemos/blog/blog.py:217
+#: talermerchantdemos/blog/blog.py:220
msgid "Cannot refund unpaid article"
msgstr ""
-#: talermerchantdemos/blog/blog.py:225
+#: talermerchantdemos/blog/blog.py:228
msgid "Article is not anymore refundable"
msgstr ""
-#: talermerchantdemos/blog/blog.py:229
+#: talermerchantdemos/blog/blog.py:232
msgid "GNU Taler Demo: Confirm refund"
msgstr ""
-#: talermerchantdemos/blog/blog.py:262
+#: talermerchantdemos/blog/blog.py:265
msgid "You did not pay for this article (nice try!)"
msgstr ""
-#: talermerchantdemos/blog/blog.py:267
+#: talermerchantdemos/blog/blog.py:270
msgid "Item not refundable (anymore)"
msgstr ""
-#: talermerchantdemos/blog/blog.py:293
+#: talermerchantdemos/blog/blog.py:296
#, python-brace-format
msgid "Internal error: Files for article ({}) not found."
msgstr ""
-#: talermerchantdemos/blog/blog.py:308
+#: talermerchantdemos/blog/blog.py:311
msgid "GNU Taler Demo: Article"
msgstr ""
-#: talermerchantdemos/blog/blog.py:390
+#: talermerchantdemos/blog/blog.py:424
msgid "Please enable cookies."
msgstr ""
-#: talermerchantdemos/blog/blog.py:459
+#: talermerchantdemos/blog/blog.py:493
msgid "GNU Taler Demo: Refunded"
msgstr ""
-#: talermerchantdemos/blog/blog.py:470
-#: talermerchantdemos/httpcommon/__init__.py:54
+#: talermerchantdemos/blog/blog.py:504
+#: talermerchantdemos/httpcommon/__init__.py:59
#: talermerchantdemos/httpcommon/__init__.py:77
msgid "Backend returned error status"
msgstr ""
-#: talermerchantdemos/blog/blog.py:548
+#: talermerchantdemos/blog/blog.py:582
msgid "Internal server error"
msgstr ""
-#: talermerchantdemos/blog/blog.py:557
-#: talermerchantdemos/donations/donations.py:317
+#: talermerchantdemos/blog/blog.py:591
+#: talermerchantdemos/donations/donations.py:353
#: talermerchantdemos/landing/landing.py:170
#: talermerchantdemos/provision/provision.py:282
msgid "Page not found"
msgstr ""
-#: talermerchantdemos/donations/donations.py:131
+#: talermerchantdemos/donations/donations.py:148
#, python-brace-format
msgid "parameter '{}' required"
msgstr ""
-#: talermerchantdemos/donations/donations.py:193
-#: talermerchantdemos/donations/donations.py:228
-#: talermerchantdemos/donations/donations.py:302
+#: talermerchantdemos/donations/donations.py:210
+#: talermerchantdemos/donations/donations.py:245
+#: talermerchantdemos/donations/donations.py:338
msgid "GNU Taler Demo: Donations"
msgstr ""
-#: talermerchantdemos/donations/donations.py:211
+#: talermerchantdemos/donations/donations.py:228
msgid "GNU Taler Demo: Donations checkout"
msgstr ""
-#: talermerchantdemos/donations/donations.py:272
+#: talermerchantdemos/donations/donations.py:308
msgid "Backend could not create the order"
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-08-18 17:00+0200\n"
+"POT-Creation-Date: 2025-09-25 13:39+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,11 +19,11 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.17.0\n"
-#: 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/blog/blog.py:148 talermerchantdemos/blog/blog.py:227
+#: talermerchantdemos/blog/blog.py:423 talermerchantdemos/blog/blog.py:581
+#: talermerchantdemos/blog/blog.py:590 talermerchantdemos/blog/blog.py:600
+#: talermerchantdemos/donations/donations.py:162
+#: talermerchantdemos/donations/donations.py:352
#: talermerchantdemos/landing/landing.py:89
#: talermerchantdemos/landing/landing.py:169
#: talermerchantdemos/landing/landing.py:178
@@ -31,85 +31,85 @@ msgstr ""
msgid "GNU Taler Demo: Error"
msgstr "GNU Taler Demo: Errore"
-#: talermerchantdemos/blog/blog.py:146 talermerchantdemos/landing/landing.py:90
+#: talermerchantdemos/blog/blog.py:149 talermerchantdemos/landing/landing.py:90
msgid "Internal error"
msgstr "Errore interno"
-#: talermerchantdemos/blog/blog.py:199
+#: talermerchantdemos/blog/blog.py:202
msgid "GNU Taler Demo: Essay Shop"
msgstr "GNU Taler Demo: Negozio di Saggi"
-#: talermerchantdemos/blog/blog.py:217
+#: talermerchantdemos/blog/blog.py:220
msgid "Cannot refund unpaid article"
msgstr "Impossibile rimborsare un articolo non pagato"
-#: talermerchantdemos/blog/blog.py:225
+#: talermerchantdemos/blog/blog.py:228
msgid "Article is not anymore refundable"
msgstr "L'articolo non è più rimborsabile"
-#: talermerchantdemos/blog/blog.py:229
+#: talermerchantdemos/blog/blog.py:232
msgid "GNU Taler Demo: Confirm refund"
msgstr "GNU Taler Demo: Conferma rimborso"
-#: talermerchantdemos/blog/blog.py:262
+#: talermerchantdemos/blog/blog.py:265
msgid "You did not pay for this article (nice try!)"
msgstr "Non hai pagato questo articolo (bel tentativo!)"
-#: talermerchantdemos/blog/blog.py:267
+#: talermerchantdemos/blog/blog.py:270
msgid "Item not refundable (anymore)"
msgstr "Articolo non (più) rimborsabile"
-#: talermerchantdemos/blog/blog.py:293
+#: talermerchantdemos/blog/blog.py:296
#, python-brace-format
msgid "Internal error: Files for article ({}) not found."
msgstr "Errore interno: File per l'articolo ({}) non trovati."
-#: talermerchantdemos/blog/blog.py:308
+#: talermerchantdemos/blog/blog.py:311
msgid "GNU Taler Demo: Article"
msgstr "GNU Taler Demo: Articolo"
-#: talermerchantdemos/blog/blog.py:390
+#: talermerchantdemos/blog/blog.py:424
msgid "Please enable cookies."
msgstr "Per favore, abilita i cookie."
-#: talermerchantdemos/blog/blog.py:459
+#: talermerchantdemos/blog/blog.py:493
msgid "GNU Taler Demo: Refunded"
msgstr "GNU Taler Demo: Rimborsato"
-#: talermerchantdemos/blog/blog.py:470
-#: talermerchantdemos/httpcommon/__init__.py:54
+#: talermerchantdemos/blog/blog.py:504
+#: talermerchantdemos/httpcommon/__init__.py:59
#: talermerchantdemos/httpcommon/__init__.py:77
msgid "Backend returned error status"
msgstr "Il backend ha segnalato uno stato di errore"
-#: talermerchantdemos/blog/blog.py:548
+#: talermerchantdemos/blog/blog.py:582
msgid "Internal server error"
msgstr "Errore del server"
-#: talermerchantdemos/blog/blog.py:557
-#: talermerchantdemos/donations/donations.py:317
+#: talermerchantdemos/blog/blog.py:591
+#: talermerchantdemos/donations/donations.py:353
#: talermerchantdemos/landing/landing.py:170
#: talermerchantdemos/provision/provision.py:282
msgid "Page not found"
msgstr "Pagina non trovata"
-#: talermerchantdemos/donations/donations.py:131
+#: talermerchantdemos/donations/donations.py:148
#, python-brace-format
msgid "parameter '{}' required"
msgstr "parametro '{}' richiesto"
-#: talermerchantdemos/donations/donations.py:193
-#: talermerchantdemos/donations/donations.py:228
-#: talermerchantdemos/donations/donations.py:302
+#: talermerchantdemos/donations/donations.py:210
+#: talermerchantdemos/donations/donations.py:245
+#: talermerchantdemos/donations/donations.py:338
msgid "GNU Taler Demo: Donations"
msgstr "GNU Taler Demo: Donazioni"
-#: talermerchantdemos/donations/donations.py:211
+#: talermerchantdemos/donations/donations.py:228
#, fuzzy
msgid "GNU Taler Demo: Donations checkout"
msgstr "GNU Taler Demo: Procedi alla donazione"
-#: talermerchantdemos/donations/donations.py:272
+#: talermerchantdemos/donations/donations.py:308
msgid "Backend could not create the order"
msgstr "Il backend non ha potuto creare l'ordine"
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-08-18 17:00+0200\n"
+"POT-Creation-Date: 2025-09-25 13:39+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,11 +19,11 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.17.0\n"
-#: 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/blog/blog.py:148 talermerchantdemos/blog/blog.py:227
+#: talermerchantdemos/blog/blog.py:423 talermerchantdemos/blog/blog.py:581
+#: talermerchantdemos/blog/blog.py:590 talermerchantdemos/blog/blog.py:600
+#: talermerchantdemos/donations/donations.py:162
+#: talermerchantdemos/donations/donations.py:352
#: talermerchantdemos/landing/landing.py:89
#: talermerchantdemos/landing/landing.py:169
#: talermerchantdemos/landing/landing.py:178
@@ -31,84 +31,84 @@ msgstr ""
msgid "GNU Taler Demo: Error"
msgstr ""
-#: talermerchantdemos/blog/blog.py:146 talermerchantdemos/landing/landing.py:90
+#: talermerchantdemos/blog/blog.py:149 talermerchantdemos/landing/landing.py:90
msgid "Internal error"
msgstr "内部エラー"
-#: talermerchantdemos/blog/blog.py:199
+#: talermerchantdemos/blog/blog.py:202
msgid "GNU Taler Demo: Essay Shop"
msgstr ""
-#: talermerchantdemos/blog/blog.py:217
+#: talermerchantdemos/blog/blog.py:220
msgid "Cannot refund unpaid article"
msgstr "未払いの記事の返金はできません"
-#: talermerchantdemos/blog/blog.py:225
+#: talermerchantdemos/blog/blog.py:228
msgid "Article is not anymore refundable"
msgstr "記事はもう払い戻しできません"
-#: talermerchantdemos/blog/blog.py:229
+#: talermerchantdemos/blog/blog.py:232
msgid "GNU Taler Demo: Confirm refund"
msgstr ""
-#: talermerchantdemos/blog/blog.py:262
+#: talermerchantdemos/blog/blog.py:265
msgid "You did not pay for this article (nice try!)"
msgstr "この記事のためにお金を払っていない (頑張った)"
-#: talermerchantdemos/blog/blog.py:267
+#: talermerchantdemos/blog/blog.py:270
msgid "Item not refundable (anymore)"
msgstr "(もはや)払い戻し不可な商品"
-#: talermerchantdemos/blog/blog.py:293
+#: talermerchantdemos/blog/blog.py:296
#, python-brace-format
msgid "Internal error: Files for article ({}) not found."
msgstr "内部エラー: 記事 ({}) のファイルが見つかりません。"
-#: talermerchantdemos/blog/blog.py:308
+#: talermerchantdemos/blog/blog.py:311
msgid "GNU Taler Demo: Article"
msgstr ""
-#: talermerchantdemos/blog/blog.py:390
+#: talermerchantdemos/blog/blog.py:424
msgid "Please enable cookies."
msgstr ""
-#: talermerchantdemos/blog/blog.py:459
+#: talermerchantdemos/blog/blog.py:493
msgid "GNU Taler Demo: Refunded"
msgstr ""
-#: talermerchantdemos/blog/blog.py:470
-#: talermerchantdemos/httpcommon/__init__.py:54
+#: talermerchantdemos/blog/blog.py:504
+#: talermerchantdemos/httpcommon/__init__.py:59
#: talermerchantdemos/httpcommon/__init__.py:77
msgid "Backend returned error status"
msgstr "Backend は、エラー・ステータスを返してきました"
-#: talermerchantdemos/blog/blog.py:548
+#: talermerchantdemos/blog/blog.py:582
msgid "Internal server error"
msgstr "サーバー 内部エラー"
-#: talermerchantdemos/blog/blog.py:557
-#: talermerchantdemos/donations/donations.py:317
+#: talermerchantdemos/blog/blog.py:591
+#: talermerchantdemos/donations/donations.py:353
#: talermerchantdemos/landing/landing.py:170
#: talermerchantdemos/provision/provision.py:282
msgid "Page not found"
msgstr "ページが見つかりません"
-#: talermerchantdemos/donations/donations.py:131
+#: talermerchantdemos/donations/donations.py:148
#, python-brace-format
msgid "parameter '{}' required"
msgstr "パラメータ「{}」が必要です"
-#: talermerchantdemos/donations/donations.py:193
-#: talermerchantdemos/donations/donations.py:228
-#: talermerchantdemos/donations/donations.py:302
+#: talermerchantdemos/donations/donations.py:210
+#: talermerchantdemos/donations/donations.py:245
+#: talermerchantdemos/donations/donations.py:338
msgid "GNU Taler Demo: Donations"
msgstr ""
-#: talermerchantdemos/donations/donations.py:211
+#: talermerchantdemos/donations/donations.py:228
msgid "GNU Taler Demo: Donations checkout"
msgstr ""
-#: talermerchantdemos/donations/donations.py:272
+#: talermerchantdemos/donations/donations.py:308
msgid "Backend could not create the order"
msgstr "backendは注文を作成できませんでした"
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-08-18 17:00+0200\n"
+"POT-Creation-Date: 2025-09-25 13:39+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,11 +19,11 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.17.0\n"
-#: 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/blog/blog.py:148 talermerchantdemos/blog/blog.py:227
+#: talermerchantdemos/blog/blog.py:423 talermerchantdemos/blog/blog.py:581
+#: talermerchantdemos/blog/blog.py:590 talermerchantdemos/blog/blog.py:600
+#: talermerchantdemos/donations/donations.py:162
+#: talermerchantdemos/donations/donations.py:352
#: talermerchantdemos/landing/landing.py:89
#: talermerchantdemos/landing/landing.py:169
#: talermerchantdemos/landing/landing.py:178
@@ -31,84 +31,84 @@ msgstr ""
msgid "GNU Taler Demo: Error"
msgstr ""
-#: talermerchantdemos/blog/blog.py:146 talermerchantdemos/landing/landing.py:90
+#: talermerchantdemos/blog/blog.py:149 talermerchantdemos/landing/landing.py:90
msgid "Internal error"
msgstr "내부 오류"
-#: talermerchantdemos/blog/blog.py:199
+#: talermerchantdemos/blog/blog.py:202
msgid "GNU Taler Demo: Essay Shop"
msgstr ""
-#: talermerchantdemos/blog/blog.py:217
+#: talermerchantdemos/blog/blog.py:220
msgid "Cannot refund unpaid article"
msgstr "미결제 기사는 환불할 수 없습니다"
-#: talermerchantdemos/blog/blog.py:225
+#: talermerchantdemos/blog/blog.py:228
msgid "Article is not anymore refundable"
msgstr "이 기사는 더이상 환불할 수 없습니다"
-#: talermerchantdemos/blog/blog.py:229
+#: talermerchantdemos/blog/blog.py:232
msgid "GNU Taler Demo: Confirm refund"
msgstr ""
-#: talermerchantdemos/blog/blog.py:262
+#: talermerchantdemos/blog/blog.py:265
msgid "You did not pay for this article (nice try!)"
msgstr "이 기사를 구매하지 않았습니다(다시 시도하세요!)"
-#: talermerchantdemos/blog/blog.py:267
+#: talermerchantdemos/blog/blog.py:270
msgid "Item not refundable (anymore)"
msgstr "환불 불가 상품(기간 만료)"
-#: talermerchantdemos/blog/blog.py:293
+#: talermerchantdemos/blog/blog.py:296
#, python-brace-format
msgid "Internal error: Files for article ({}) not found."
msgstr "내부 오류: 기사 ({}) 관련 파일들을 찾을 수 없습니다."
-#: talermerchantdemos/blog/blog.py:308
+#: talermerchantdemos/blog/blog.py:311
msgid "GNU Taler Demo: Article"
msgstr ""
-#: talermerchantdemos/blog/blog.py:390
+#: talermerchantdemos/blog/blog.py:424
msgid "Please enable cookies."
msgstr ""
-#: talermerchantdemos/blog/blog.py:459
+#: talermerchantdemos/blog/blog.py:493
msgid "GNU Taler Demo: Refunded"
msgstr ""
-#: talermerchantdemos/blog/blog.py:470
-#: talermerchantdemos/httpcommon/__init__.py:54
+#: talermerchantdemos/blog/blog.py:504
+#: talermerchantdemos/httpcommon/__init__.py:59
#: talermerchantdemos/httpcommon/__init__.py:77
msgid "Backend returned error status"
msgstr "백엔드에 대한 오류 수신"
-#: talermerchantdemos/blog/blog.py:548
+#: talermerchantdemos/blog/blog.py:582
msgid "Internal server error"
msgstr "내부 서버 오류"
-#: talermerchantdemos/blog/blog.py:557
-#: talermerchantdemos/donations/donations.py:317
+#: talermerchantdemos/blog/blog.py:591
+#: talermerchantdemos/donations/donations.py:353
#: talermerchantdemos/landing/landing.py:170
#: talermerchantdemos/provision/provision.py:282
msgid "Page not found"
msgstr "이 페이지를 찾을 수 없습니다"
-#: talermerchantdemos/donations/donations.py:131
+#: talermerchantdemos/donations/donations.py:148
#, python-brace-format
msgid "parameter '{}' required"
msgstr "파라메터 '{}' 필요"
-#: talermerchantdemos/donations/donations.py:193
-#: talermerchantdemos/donations/donations.py:228
-#: talermerchantdemos/donations/donations.py:302
+#: talermerchantdemos/donations/donations.py:210
+#: talermerchantdemos/donations/donations.py:245
+#: talermerchantdemos/donations/donations.py:338
msgid "GNU Taler Demo: Donations"
msgstr ""
-#: talermerchantdemos/donations/donations.py:211
+#: talermerchantdemos/donations/donations.py:228
msgid "GNU Taler Demo: Donations checkout"
msgstr ""
-#: talermerchantdemos/donations/donations.py:272
+#: talermerchantdemos/donations/donations.py:308
msgid "Backend could not create the order"
msgstr ""
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-08-18 17:00+0200\n"
+"POT-Creation-Date: 2025-09-25 13:39+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,11 +17,11 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.17.0\n"
-#: 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/blog/blog.py:148 talermerchantdemos/blog/blog.py:227
+#: talermerchantdemos/blog/blog.py:423 talermerchantdemos/blog/blog.py:581
+#: talermerchantdemos/blog/blog.py:590 talermerchantdemos/blog/blog.py:600
+#: talermerchantdemos/donations/donations.py:162
+#: talermerchantdemos/donations/donations.py:352
#: talermerchantdemos/landing/landing.py:89
#: talermerchantdemos/landing/landing.py:169
#: talermerchantdemos/landing/landing.py:178
@@ -29,84 +29,84 @@ msgstr ""
msgid "GNU Taler Demo: Error"
msgstr ""
-#: talermerchantdemos/blog/blog.py:146 talermerchantdemos/landing/landing.py:90
+#: talermerchantdemos/blog/blog.py:149 talermerchantdemos/landing/landing.py:90
msgid "Internal error"
msgstr ""
-#: talermerchantdemos/blog/blog.py:199
+#: talermerchantdemos/blog/blog.py:202
msgid "GNU Taler Demo: Essay Shop"
msgstr ""
-#: talermerchantdemos/blog/blog.py:217
+#: talermerchantdemos/blog/blog.py:220
msgid "Cannot refund unpaid article"
msgstr ""
-#: talermerchantdemos/blog/blog.py:225
+#: talermerchantdemos/blog/blog.py:228
msgid "Article is not anymore refundable"
msgstr ""
-#: talermerchantdemos/blog/blog.py:229
+#: talermerchantdemos/blog/blog.py:232
msgid "GNU Taler Demo: Confirm refund"
msgstr ""
-#: talermerchantdemos/blog/blog.py:262
+#: talermerchantdemos/blog/blog.py:265
msgid "You did not pay for this article (nice try!)"
msgstr ""
-#: talermerchantdemos/blog/blog.py:267
+#: talermerchantdemos/blog/blog.py:270
msgid "Item not refundable (anymore)"
msgstr ""
-#: talermerchantdemos/blog/blog.py:293
+#: talermerchantdemos/blog/blog.py:296
#, python-brace-format
msgid "Internal error: Files for article ({}) not found."
msgstr ""
-#: talermerchantdemos/blog/blog.py:308
+#: talermerchantdemos/blog/blog.py:311
msgid "GNU Taler Demo: Article"
msgstr ""
-#: talermerchantdemos/blog/blog.py:390
+#: talermerchantdemos/blog/blog.py:424
msgid "Please enable cookies."
msgstr ""
-#: talermerchantdemos/blog/blog.py:459
+#: talermerchantdemos/blog/blog.py:493
msgid "GNU Taler Demo: Refunded"
msgstr ""
-#: talermerchantdemos/blog/blog.py:470
-#: talermerchantdemos/httpcommon/__init__.py:54
+#: talermerchantdemos/blog/blog.py:504
+#: talermerchantdemos/httpcommon/__init__.py:59
#: talermerchantdemos/httpcommon/__init__.py:77
msgid "Backend returned error status"
msgstr ""
-#: talermerchantdemos/blog/blog.py:548
+#: talermerchantdemos/blog/blog.py:582
msgid "Internal server error"
msgstr ""
-#: talermerchantdemos/blog/blog.py:557
-#: talermerchantdemos/donations/donations.py:317
+#: talermerchantdemos/blog/blog.py:591
+#: talermerchantdemos/donations/donations.py:353
#: talermerchantdemos/landing/landing.py:170
#: talermerchantdemos/provision/provision.py:282
msgid "Page not found"
msgstr ""
-#: talermerchantdemos/donations/donations.py:131
+#: talermerchantdemos/donations/donations.py:148
#, python-brace-format
msgid "parameter '{}' required"
msgstr ""
-#: talermerchantdemos/donations/donations.py:193
-#: talermerchantdemos/donations/donations.py:228
-#: talermerchantdemos/donations/donations.py:302
+#: talermerchantdemos/donations/donations.py:210
+#: talermerchantdemos/donations/donations.py:245
+#: talermerchantdemos/donations/donations.py:338
msgid "GNU Taler Demo: Donations"
msgstr ""
-#: talermerchantdemos/donations/donations.py:211
+#: talermerchantdemos/donations/donations.py:228
msgid "GNU Taler Demo: Donations checkout"
msgstr ""
-#: talermerchantdemos/donations/donations.py:272
+#: talermerchantdemos/donations/donations.py:308
msgid "Backend could not create the order"
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-08-18 17:00+0200\n"
+"POT-Creation-Date: 2025-09-25 13:39+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,11 +19,11 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.17.0\n"
-#: 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/blog/blog.py:148 talermerchantdemos/blog/blog.py:227
+#: talermerchantdemos/blog/blog.py:423 talermerchantdemos/blog/blog.py:581
+#: talermerchantdemos/blog/blog.py:590 talermerchantdemos/blog/blog.py:600
+#: talermerchantdemos/donations/donations.py:162
+#: talermerchantdemos/donations/donations.py:352
#: talermerchantdemos/landing/landing.py:89
#: talermerchantdemos/landing/landing.py:169
#: talermerchantdemos/landing/landing.py:178
@@ -31,84 +31,84 @@ msgstr ""
msgid "GNU Taler Demo: Error"
msgstr ""
-#: talermerchantdemos/blog/blog.py:146 talermerchantdemos/landing/landing.py:90
+#: talermerchantdemos/blog/blog.py:149 talermerchantdemos/landing/landing.py:90
msgid "Internal error"
msgstr "Erro interno"
-#: talermerchantdemos/blog/blog.py:199
+#: talermerchantdemos/blog/blog.py:202
msgid "GNU Taler Demo: Essay Shop"
msgstr ""
-#: talermerchantdemos/blog/blog.py:217
+#: talermerchantdemos/blog/blog.py:220
msgid "Cannot refund unpaid article"
msgstr "Não é possível reembolsar artigo por pagar"
-#: talermerchantdemos/blog/blog.py:225
+#: talermerchantdemos/blog/blog.py:228
msgid "Article is not anymore refundable"
msgstr "Já não é possível reembolsar artigo"
-#: talermerchantdemos/blog/blog.py:229
+#: talermerchantdemos/blog/blog.py:232
msgid "GNU Taler Demo: Confirm refund"
msgstr ""
-#: talermerchantdemos/blog/blog.py:262
+#: talermerchantdemos/blog/blog.py:265
msgid "You did not pay for this article (nice try!)"
msgstr "Não pagou este artigo (boa tentativa!)"
-#: talermerchantdemos/blog/blog.py:267
+#: talermerchantdemos/blog/blog.py:270
msgid "Item not refundable (anymore)"
msgstr "Artigo (já) não é reembolsável"
-#: talermerchantdemos/blog/blog.py:293
+#: talermerchantdemos/blog/blog.py:296
#, 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:308
+#: talermerchantdemos/blog/blog.py:311
msgid "GNU Taler Demo: Article"
msgstr ""
-#: talermerchantdemos/blog/blog.py:390
+#: talermerchantdemos/blog/blog.py:424
msgid "Please enable cookies."
msgstr ""
-#: talermerchantdemos/blog/blog.py:459
+#: talermerchantdemos/blog/blog.py:493
msgid "GNU Taler Demo: Refunded"
msgstr ""
-#: talermerchantdemos/blog/blog.py:470
-#: talermerchantdemos/httpcommon/__init__.py:54
+#: talermerchantdemos/blog/blog.py:504
+#: talermerchantdemos/httpcommon/__init__.py:59
#: talermerchantdemos/httpcommon/__init__.py:77
msgid "Backend returned error status"
msgstr "Backend apresentou um erro"
-#: talermerchantdemos/blog/blog.py:548
+#: talermerchantdemos/blog/blog.py:582
msgid "Internal server error"
msgstr "Erro interno do servidor"
-#: talermerchantdemos/blog/blog.py:557
-#: talermerchantdemos/donations/donations.py:317
+#: talermerchantdemos/blog/blog.py:591
+#: talermerchantdemos/donations/donations.py:353
#: talermerchantdemos/landing/landing.py:170
#: talermerchantdemos/provision/provision.py:282
msgid "Page not found"
msgstr "Página não encontrada"
-#: talermerchantdemos/donations/donations.py:131
+#: talermerchantdemos/donations/donations.py:148
#, python-brace-format
msgid "parameter '{}' required"
msgstr "necessário parâmetro '{}'"
-#: talermerchantdemos/donations/donations.py:193
-#: talermerchantdemos/donations/donations.py:228
-#: talermerchantdemos/donations/donations.py:302
+#: talermerchantdemos/donations/donations.py:210
+#: talermerchantdemos/donations/donations.py:245
+#: talermerchantdemos/donations/donations.py:338
msgid "GNU Taler Demo: Donations"
msgstr ""
-#: talermerchantdemos/donations/donations.py:211
+#: talermerchantdemos/donations/donations.py:228
msgid "GNU Taler Demo: Donations checkout"
msgstr ""
-#: talermerchantdemos/donations/donations.py:272
+#: talermerchantdemos/donations/donations.py:308
msgid "Backend could not create the order"
msgstr ""
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-08-18 17:00+0200\n"
+"POT-Creation-Date: 2025-09-25 13:39+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,11 +20,11 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.17.0\n"
-#: 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/blog/blog.py:148 talermerchantdemos/blog/blog.py:227
+#: talermerchantdemos/blog/blog.py:423 talermerchantdemos/blog/blog.py:581
+#: talermerchantdemos/blog/blog.py:590 talermerchantdemos/blog/blog.py:600
+#: talermerchantdemos/donations/donations.py:162
+#: talermerchantdemos/donations/donations.py:352
#: talermerchantdemos/landing/landing.py:89
#: talermerchantdemos/landing/landing.py:169
#: talermerchantdemos/landing/landing.py:178
@@ -32,84 +32,84 @@ msgstr ""
msgid "GNU Taler Demo: Error"
msgstr "Демо GNU Taler: Ошибка"
-#: talermerchantdemos/blog/blog.py:146 talermerchantdemos/landing/landing.py:90
+#: talermerchantdemos/blog/blog.py:149 talermerchantdemos/landing/landing.py:90
msgid "Internal error"
msgstr "Внутренняя ошибка"
-#: talermerchantdemos/blog/blog.py:199
+#: talermerchantdemos/blog/blog.py:202
msgid "GNU Taler Demo: Essay Shop"
msgstr "Демо GNU Taler: Магазин эссе"
-#: talermerchantdemos/blog/blog.py:217
+#: talermerchantdemos/blog/blog.py:220
msgid "Cannot refund unpaid article"
msgstr "Возврат средств за неоплаченный товар невозможен"
-#: talermerchantdemos/blog/blog.py:225
+#: talermerchantdemos/blog/blog.py:228
msgid "Article is not anymore refundable"
msgstr "Товар более не подлежит возврату"
-#: talermerchantdemos/blog/blog.py:229
+#: talermerchantdemos/blog/blog.py:232
msgid "GNU Taler Demo: Confirm refund"
msgstr "Демо GNU Taler: Подтвердите возврат"
-#: talermerchantdemos/blog/blog.py:262
+#: talermerchantdemos/blog/blog.py:265
msgid "You did not pay for this article (nice try!)"
msgstr "Вы не оплатили этот товар (Неплохая попытка!)"
-#: talermerchantdemos/blog/blog.py:267
+#: talermerchantdemos/blog/blog.py:270
msgid "Item not refundable (anymore)"
msgstr "Товар более не подлежит возврату"
-#: talermerchantdemos/blog/blog.py:293
+#: talermerchantdemos/blog/blog.py:296
#, python-brace-format
msgid "Internal error: Files for article ({}) not found."
msgstr "Внутренняя ошибка. Файлы для товара ({}) не найдены."
-#: talermerchantdemos/blog/blog.py:308
+#: talermerchantdemos/blog/blog.py:311
msgid "GNU Taler Demo: Article"
msgstr "Демо GNU Taler: Статья"
-#: talermerchantdemos/blog/blog.py:390
+#: talermerchantdemos/blog/blog.py:424
msgid "Please enable cookies."
msgstr "Пожалуйста включите куки."
-#: talermerchantdemos/blog/blog.py:459
+#: talermerchantdemos/blog/blog.py:493
msgid "GNU Taler Demo: Refunded"
msgstr "Демо GNU Taler: Средства возвращены"
-#: talermerchantdemos/blog/blog.py:470
-#: talermerchantdemos/httpcommon/__init__.py:54
+#: talermerchantdemos/blog/blog.py:504
+#: talermerchantdemos/httpcommon/__init__.py:59
#: talermerchantdemos/httpcommon/__init__.py:77
msgid "Backend returned error status"
msgstr "Бэкэнд вернул ошибку кода"
-#: talermerchantdemos/blog/blog.py:548
+#: talermerchantdemos/blog/blog.py:582
msgid "Internal server error"
msgstr "Внутренняя ошибка сервера"
-#: talermerchantdemos/blog/blog.py:557
-#: talermerchantdemos/donations/donations.py:317
+#: talermerchantdemos/blog/blog.py:591
+#: talermerchantdemos/donations/donations.py:353
#: talermerchantdemos/landing/landing.py:170
#: talermerchantdemos/provision/provision.py:282
msgid "Page not found"
msgstr "Страница не найдена"
-#: talermerchantdemos/donations/donations.py:131
+#: talermerchantdemos/donations/donations.py:148
#, python-brace-format
msgid "parameter '{}' required"
msgstr "обязательный '{}'параметр"
-#: talermerchantdemos/donations/donations.py:193
-#: talermerchantdemos/donations/donations.py:228
-#: talermerchantdemos/donations/donations.py:302
+#: talermerchantdemos/donations/donations.py:210
+#: talermerchantdemos/donations/donations.py:245
+#: talermerchantdemos/donations/donations.py:338
msgid "GNU Taler Demo: Donations"
msgstr "Демо GNU Taler: Пожертвования"
-#: talermerchantdemos/donations/donations.py:211
+#: talermerchantdemos/donations/donations.py:228
msgid "GNU Taler Demo: Donations checkout"
msgstr "Демо GNU Taler: Оформление пожертвований"
-#: talermerchantdemos/donations/donations.py:272
+#: talermerchantdemos/donations/donations.py:308
msgid "Backend could not create the order"
msgstr "Бэкэнд не смог создать заказ"
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-08-18 17:00+0200\n"
+"POT-Creation-Date: 2025-09-25 13:39+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,11 +19,11 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.17.0\n"
-#: 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/blog/blog.py:148 talermerchantdemos/blog/blog.py:227
+#: talermerchantdemos/blog/blog.py:423 talermerchantdemos/blog/blog.py:581
+#: talermerchantdemos/blog/blog.py:590 talermerchantdemos/blog/blog.py:600
+#: talermerchantdemos/donations/donations.py:162
+#: talermerchantdemos/donations/donations.py:352
#: talermerchantdemos/landing/landing.py:89
#: talermerchantdemos/landing/landing.py:169
#: talermerchantdemos/landing/landing.py:178
@@ -31,84 +31,84 @@ msgstr ""
msgid "GNU Taler Demo: Error"
msgstr ""
-#: talermerchantdemos/blog/blog.py:146 talermerchantdemos/landing/landing.py:90
+#: talermerchantdemos/blog/blog.py:149 talermerchantdemos/landing/landing.py:90
msgid "Internal error"
msgstr "Internt fel"
-#: talermerchantdemos/blog/blog.py:199
+#: talermerchantdemos/blog/blog.py:202
msgid "GNU Taler Demo: Essay Shop"
msgstr ""
-#: talermerchantdemos/blog/blog.py:217
+#: talermerchantdemos/blog/blog.py:220
msgid "Cannot refund unpaid article"
msgstr "Obetald artikel kan ej återbetalas"
-#: talermerchantdemos/blog/blog.py:225
+#: talermerchantdemos/blog/blog.py:228
msgid "Article is not anymore refundable"
msgstr "Återbetalning är inte längre möjlig"
-#: talermerchantdemos/blog/blog.py:229
+#: talermerchantdemos/blog/blog.py:232
msgid "GNU Taler Demo: Confirm refund"
msgstr ""
-#: talermerchantdemos/blog/blog.py:262
+#: talermerchantdemos/blog/blog.py:265
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:267
+#: talermerchantdemos/blog/blog.py:270
msgid "Item not refundable (anymore)"
msgstr "Återbetalning kan inte (längre) göras"
-#: talermerchantdemos/blog/blog.py:293
+#: talermerchantdemos/blog/blog.py:296
#, python-brace-format
msgid "Internal error: Files for article ({}) not found."
msgstr "Internt fel: Underlag för artikel ({}) hittades inte."
-#: talermerchantdemos/blog/blog.py:308
+#: talermerchantdemos/blog/blog.py:311
msgid "GNU Taler Demo: Article"
msgstr ""
-#: talermerchantdemos/blog/blog.py:390
+#: talermerchantdemos/blog/blog.py:424
msgid "Please enable cookies."
msgstr ""
-#: talermerchantdemos/blog/blog.py:459
+#: talermerchantdemos/blog/blog.py:493
msgid "GNU Taler Demo: Refunded"
msgstr ""
-#: talermerchantdemos/blog/blog.py:470
-#: talermerchantdemos/httpcommon/__init__.py:54
+#: talermerchantdemos/blog/blog.py:504
+#: talermerchantdemos/httpcommon/__init__.py:59
#: talermerchantdemos/httpcommon/__init__.py:77
msgid "Backend returned error status"
msgstr "Backend returnerade felstatus"
-#: talermerchantdemos/blog/blog.py:548
+#: talermerchantdemos/blog/blog.py:582
msgid "Internal server error"
msgstr "Internt serverfel"
-#: talermerchantdemos/blog/blog.py:557
-#: talermerchantdemos/donations/donations.py:317
+#: talermerchantdemos/blog/blog.py:591
+#: talermerchantdemos/donations/donations.py:353
#: talermerchantdemos/landing/landing.py:170
#: talermerchantdemos/provision/provision.py:282
msgid "Page not found"
msgstr "Sidan hittades inte"
-#: talermerchantdemos/donations/donations.py:131
+#: talermerchantdemos/donations/donations.py:148
#, python-brace-format
msgid "parameter '{}' required"
msgstr "parameter '{}' krävs"
-#: talermerchantdemos/donations/donations.py:193
-#: talermerchantdemos/donations/donations.py:228
-#: talermerchantdemos/donations/donations.py:302
+#: talermerchantdemos/donations/donations.py:210
+#: talermerchantdemos/donations/donations.py:245
+#: talermerchantdemos/donations/donations.py:338
msgid "GNU Taler Demo: Donations"
msgstr ""
-#: talermerchantdemos/donations/donations.py:211
+#: talermerchantdemos/donations/donations.py:228
msgid "GNU Taler Demo: Donations checkout"
msgstr ""
-#: talermerchantdemos/donations/donations.py:272
+#: talermerchantdemos/donations/donations.py:308
msgid "Backend could not create the order"
msgstr "Backend kunde inte skapa beställningen"
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-08-18 17:00+0200\n"
+"POT-Creation-Date: 2025-09-25 13:39+0200\n"
"PO-Revision-Date: 2024-12-12 17:44+0000\n"
"Last-Translator: Muha Aliss <muhaaliss@tuta.io>\n"
"Language: tr\n"
@@ -19,11 +19,11 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.17.0\n"
-#: 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/blog/blog.py:148 talermerchantdemos/blog/blog.py:227
+#: talermerchantdemos/blog/blog.py:423 talermerchantdemos/blog/blog.py:581
+#: talermerchantdemos/blog/blog.py:590 talermerchantdemos/blog/blog.py:600
+#: talermerchantdemos/donations/donations.py:162
+#: talermerchantdemos/donations/donations.py:352
#: talermerchantdemos/landing/landing.py:89
#: talermerchantdemos/landing/landing.py:169
#: talermerchantdemos/landing/landing.py:178
@@ -31,84 +31,84 @@ msgstr ""
msgid "GNU Taler Demo: Error"
msgstr "GNU Taler Demo: Hata"
-#: talermerchantdemos/blog/blog.py:146 talermerchantdemos/landing/landing.py:90
+#: talermerchantdemos/blog/blog.py:149 talermerchantdemos/landing/landing.py:90
msgid "Internal error"
msgstr "Iç hata"
-#: talermerchantdemos/blog/blog.py:199
+#: talermerchantdemos/blog/blog.py:202
msgid "GNU Taler Demo: Essay Shop"
msgstr "GNU Taler Demo: Makale Mağazası"
-#: talermerchantdemos/blog/blog.py:217
+#: talermerchantdemos/blog/blog.py:220
msgid "Cannot refund unpaid article"
msgstr "Ücreti ödenmemiş makalenin parası iade edilemez"
-#: talermerchantdemos/blog/blog.py:225
+#: talermerchantdemos/blog/blog.py:228
msgid "Article is not anymore refundable"
msgstr "Bu makalenin ücreti artık iade edilemez"
-#: talermerchantdemos/blog/blog.py:229
+#: talermerchantdemos/blog/blog.py:232
msgid "GNU Taler Demo: Confirm refund"
msgstr "GNU Taler Demo: Geri ödemeyi onayla"
-#: talermerchantdemos/blog/blog.py:262
+#: talermerchantdemos/blog/blog.py:265
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:267
+#: talermerchantdemos/blog/blog.py:270
msgid "Item not refundable (anymore)"
msgstr "Ürün iade edilemez (artık)"
-#: talermerchantdemos/blog/blog.py:293
+#: talermerchantdemos/blog/blog.py:296
#, python-brace-format
msgid "Internal error: Files for article ({}) not found."
msgstr "içsel hata: ({}) makalesi için dosyalar bulunamadı."
-#: talermerchantdemos/blog/blog.py:308
+#: talermerchantdemos/blog/blog.py:311
msgid "GNU Taler Demo: Article"
msgstr "GNU Taler Demo: Makale"
-#: talermerchantdemos/blog/blog.py:390
+#: talermerchantdemos/blog/blog.py:424
msgid "Please enable cookies."
msgstr "Lütfen çerezleri etkinleştirin."
-#: talermerchantdemos/blog/blog.py:459
+#: talermerchantdemos/blog/blog.py:493
msgid "GNU Taler Demo: Refunded"
msgstr "GNU Taler Demo: İade Edildi"
-#: talermerchantdemos/blog/blog.py:470
-#: talermerchantdemos/httpcommon/__init__.py:54
+#: talermerchantdemos/blog/blog.py:504
+#: talermerchantdemos/httpcommon/__init__.py:59
#: talermerchantdemos/httpcommon/__init__.py:77
msgid "Backend returned error status"
msgstr "Arka uç hata durumu verdi"
-#: talermerchantdemos/blog/blog.py:548
+#: talermerchantdemos/blog/blog.py:582
msgid "Internal server error"
msgstr "İç Sunucu Hatası"
-#: talermerchantdemos/blog/blog.py:557
-#: talermerchantdemos/donations/donations.py:317
+#: talermerchantdemos/blog/blog.py:591
+#: talermerchantdemos/donations/donations.py:353
#: talermerchantdemos/landing/landing.py:170
#: talermerchantdemos/provision/provision.py:282
msgid "Page not found"
msgstr "Sayfa bulunamadı"
-#: talermerchantdemos/donations/donations.py:131
+#: talermerchantdemos/donations/donations.py:148
#, python-brace-format
msgid "parameter '{}' required"
msgstr "'{}' parametresi gerekli"
-#: talermerchantdemos/donations/donations.py:193
-#: talermerchantdemos/donations/donations.py:228
-#: talermerchantdemos/donations/donations.py:302
+#: talermerchantdemos/donations/donations.py:210
+#: talermerchantdemos/donations/donations.py:245
+#: talermerchantdemos/donations/donations.py:338
msgid "GNU Taler Demo: Donations"
msgstr "GNU Taler Demo: Bağışlar"
-#: talermerchantdemos/donations/donations.py:211
+#: talermerchantdemos/donations/donations.py:228
msgid "GNU Taler Demo: Donations checkout"
msgstr "GNU Taler Demo: Bağış ödeme"
-#: talermerchantdemos/donations/donations.py:272
+#: talermerchantdemos/donations/donations.py:308
msgid "Backend could not create the order"
msgstr "Arka uç siparişi oluşturamadı"
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-08-18 17:00+0200\n"
+"POT-Creation-Date: 2025-09-25 13:39+0200\n"
"PO-Revision-Date: 2024-12-12 17:44+0000\n"
"Last-Translator: Ilya Kowalewski <ilya@hrest.org>\n"
"Language: uk\n"
@@ -20,11 +20,11 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.17.0\n"
-#: 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/blog/blog.py:148 talermerchantdemos/blog/blog.py:227
+#: talermerchantdemos/blog/blog.py:423 talermerchantdemos/blog/blog.py:581
+#: talermerchantdemos/blog/blog.py:590 talermerchantdemos/blog/blog.py:600
+#: talermerchantdemos/donations/donations.py:162
+#: talermerchantdemos/donations/donations.py:352
#: talermerchantdemos/landing/landing.py:89
#: talermerchantdemos/landing/landing.py:169
#: talermerchantdemos/landing/landing.py:178
@@ -32,84 +32,84 @@ msgstr ""
msgid "GNU Taler Demo: Error"
msgstr "Демо GNU Taler: Помилка"
-#: talermerchantdemos/blog/blog.py:146 talermerchantdemos/landing/landing.py:90
+#: talermerchantdemos/blog/blog.py:149 talermerchantdemos/landing/landing.py:90
msgid "Internal error"
msgstr "Внутрішня помилка"
-#: talermerchantdemos/blog/blog.py:199
+#: talermerchantdemos/blog/blog.py:202
msgid "GNU Taler Demo: Essay Shop"
msgstr "Демо GNU Taler: Магазин есе"
-#: talermerchantdemos/blog/blog.py:217
+#: talermerchantdemos/blog/blog.py:220
msgid "Cannot refund unpaid article"
msgstr "Неможливо повернути кошти за неоплачений товар"
-#: talermerchantdemos/blog/blog.py:225
+#: talermerchantdemos/blog/blog.py:228
msgid "Article is not anymore refundable"
msgstr "Товар більше не можна повернути"
-#: talermerchantdemos/blog/blog.py:229
+#: talermerchantdemos/blog/blog.py:232
msgid "GNU Taler Demo: Confirm refund"
msgstr "Демо GNU Taler: Підтвердити повернення коштів"
-#: talermerchantdemos/blog/blog.py:262
+#: talermerchantdemos/blog/blog.py:265
msgid "You did not pay for this article (nice try!)"
msgstr "Ви не оплатили цей товар (гарна спроба!)"
-#: talermerchantdemos/blog/blog.py:267
+#: talermerchantdemos/blog/blog.py:270
msgid "Item not refundable (anymore)"
msgstr "Товар більше не підлягає поверненню"
-#: talermerchantdemos/blog/blog.py:293
+#: talermerchantdemos/blog/blog.py:296
#, python-brace-format
msgid "Internal error: Files for article ({}) not found."
msgstr "Внутрішня помилка: файли для товара ({}) не знайдені."
-#: talermerchantdemos/blog/blog.py:308
+#: talermerchantdemos/blog/blog.py:311
msgid "GNU Taler Demo: Article"
msgstr "Демо GNU Taler: Стаття"
-#: talermerchantdemos/blog/blog.py:390
+#: talermerchantdemos/blog/blog.py:424
msgid "Please enable cookies."
msgstr "Будь ласка, увімкніть файли cookies."
-#: talermerchantdemos/blog/blog.py:459
+#: talermerchantdemos/blog/blog.py:493
msgid "GNU Taler Demo: Refunded"
msgstr "Демо GNU Taler: Кошти повернено"
-#: talermerchantdemos/blog/blog.py:470
-#: talermerchantdemos/httpcommon/__init__.py:54
+#: talermerchantdemos/blog/blog.py:504
+#: talermerchantdemos/httpcommon/__init__.py:59
#: talermerchantdemos/httpcommon/__init__.py:77
msgid "Backend returned error status"
msgstr "Бекенд повернув статус помилки"
-#: talermerchantdemos/blog/blog.py:548
+#: talermerchantdemos/blog/blog.py:582
msgid "Internal server error"
msgstr "Внутрішня помилка сервера"
-#: talermerchantdemos/blog/blog.py:557
-#: talermerchantdemos/donations/donations.py:317
+#: talermerchantdemos/blog/blog.py:591
+#: talermerchantdemos/donations/donations.py:353
#: talermerchantdemos/landing/landing.py:170
#: talermerchantdemos/provision/provision.py:282
msgid "Page not found"
msgstr "Сторінку не знайдено"
-#: talermerchantdemos/donations/donations.py:131
+#: talermerchantdemos/donations/donations.py:148
#, python-brace-format
msgid "parameter '{}' required"
msgstr "необхідний параметр '{}'"
-#: talermerchantdemos/donations/donations.py:193
-#: talermerchantdemos/donations/donations.py:228
-#: talermerchantdemos/donations/donations.py:302
+#: talermerchantdemos/donations/donations.py:210
+#: talermerchantdemos/donations/donations.py:245
+#: talermerchantdemos/donations/donations.py:338
msgid "GNU Taler Demo: Donations"
msgstr "Демо GNU Taler: Донати"
-#: talermerchantdemos/donations/donations.py:211
+#: talermerchantdemos/donations/donations.py:228
msgid "GNU Taler Demo: Donations checkout"
msgstr "Демо GNU Taler: Оформлення донату"
-#: talermerchantdemos/donations/donations.py:272
+#: talermerchantdemos/donations/donations.py:308
msgid "Backend could not create the order"
msgstr "Бекенд не зміг створити замовлення"
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-08-18 17:00+0200\n"
+"POT-Creation-Date: 2025-09-25 13:39+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,11 +19,11 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.17.0\n"
-#: 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/blog/blog.py:148 talermerchantdemos/blog/blog.py:227
+#: talermerchantdemos/blog/blog.py:423 talermerchantdemos/blog/blog.py:581
+#: talermerchantdemos/blog/blog.py:590 talermerchantdemos/blog/blog.py:600
+#: talermerchantdemos/donations/donations.py:162
+#: talermerchantdemos/donations/donations.py:352
#: talermerchantdemos/landing/landing.py:89
#: talermerchantdemos/landing/landing.py:169
#: talermerchantdemos/landing/landing.py:178
@@ -31,84 +31,84 @@ msgstr ""
msgid "GNU Taler Demo: Error"
msgstr ""
-#: talermerchantdemos/blog/blog.py:146 talermerchantdemos/landing/landing.py:90
+#: talermerchantdemos/blog/blog.py:149 talermerchantdemos/landing/landing.py:90
msgid "Internal error"
msgstr "內部錯誤"
-#: talermerchantdemos/blog/blog.py:199
+#: talermerchantdemos/blog/blog.py:202
msgid "GNU Taler Demo: Essay Shop"
msgstr ""
-#: talermerchantdemos/blog/blog.py:217
+#: talermerchantdemos/blog/blog.py:220
msgid "Cannot refund unpaid article"
msgstr "無法對於未付款文章進行退款"
-#: talermerchantdemos/blog/blog.py:225
+#: talermerchantdemos/blog/blog.py:228
msgid "Article is not anymore refundable"
msgstr "已無法對此文章進行退款"
-#: talermerchantdemos/blog/blog.py:229
+#: talermerchantdemos/blog/blog.py:232
msgid "GNU Taler Demo: Confirm refund"
msgstr ""
-#: talermerchantdemos/blog/blog.py:262
+#: talermerchantdemos/blog/blog.py:265
msgid "You did not pay for this article (nice try!)"
msgstr "您並沒有為此文章付款(想得美!)"
-#: talermerchantdemos/blog/blog.py:267
+#: talermerchantdemos/blog/blog.py:270
msgid "Item not refundable (anymore)"
msgstr "此文章無法進行退款(已無法)"
-#: talermerchantdemos/blog/blog.py:293
+#: talermerchantdemos/blog/blog.py:296
#, python-brace-format
msgid "Internal error: Files for article ({}) not found."
msgstr "內部錯誤:找不到此文章 ({}) 的檔案。"
-#: talermerchantdemos/blog/blog.py:308
+#: talermerchantdemos/blog/blog.py:311
msgid "GNU Taler Demo: Article"
msgstr ""
-#: talermerchantdemos/blog/blog.py:390
+#: talermerchantdemos/blog/blog.py:424
msgid "Please enable cookies."
msgstr ""
-#: talermerchantdemos/blog/blog.py:459
+#: talermerchantdemos/blog/blog.py:493
msgid "GNU Taler Demo: Refunded"
msgstr ""
-#: talermerchantdemos/blog/blog.py:470
-#: talermerchantdemos/httpcommon/__init__.py:54
+#: talermerchantdemos/blog/blog.py:504
+#: talermerchantdemos/httpcommon/__init__.py:59
#: talermerchantdemos/httpcommon/__init__.py:77
msgid "Backend returned error status"
msgstr "後台回傳錯誤狀態"
-#: talermerchantdemos/blog/blog.py:548
+#: talermerchantdemos/blog/blog.py:582
msgid "Internal server error"
msgstr "內部伺服器錯誤"
-#: talermerchantdemos/blog/blog.py:557
-#: talermerchantdemos/donations/donations.py:317
+#: talermerchantdemos/blog/blog.py:591
+#: talermerchantdemos/donations/donations.py:353
#: talermerchantdemos/landing/landing.py:170
#: talermerchantdemos/provision/provision.py:282
msgid "Page not found"
msgstr "找不到此頁面"
-#: talermerchantdemos/donations/donations.py:131
+#: talermerchantdemos/donations/donations.py:148
#, python-brace-format
msgid "parameter '{}' required"
msgstr "需要 '{}' 參數"
-#: talermerchantdemos/donations/donations.py:193
-#: talermerchantdemos/donations/donations.py:228
-#: talermerchantdemos/donations/donations.py:302
+#: talermerchantdemos/donations/donations.py:210
+#: talermerchantdemos/donations/donations.py:245
+#: talermerchantdemos/donations/donations.py:338
msgid "GNU Taler Demo: Donations"
msgstr ""
-#: talermerchantdemos/donations/donations.py:211
+#: talermerchantdemos/donations/donations.py:228
msgid "GNU Taler Demo: Donations checkout"
msgstr ""
-#: talermerchantdemos/donations/donations.py:272
+#: talermerchantdemos/donations/donations.py:308
msgid "Backend could not create the order"
msgstr "後端無法創建訂單"