gnunet-svn
[Top][All Lists]
Advanced

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

[taler-taler-merchant-demos] branch master updated: remove failing impor


From: gnunet
Subject: [taler-taler-merchant-demos] branch master updated: remove failing import
Date: Wed, 12 May 2021 10:53:48 +0200

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

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

The following commit(s) were added to refs/heads/master by this push:
     new 8e288e6  remove failing import
8e288e6 is described below

commit 8e288e624ef0f745027c5889ddcb17006dc94cc6
Author: MS <ms@taler.net>
AuthorDate: Wed May 12 10:53:43 2021 +0200

    remove failing import
---
 talermerchantdemos/httpcommon/__init__.py    |   1 -
 translations/ar/LC_MESSAGES/messages.po      | 433 ++++++++++++-------------
 translations/de/LC_MESSAGES/messages.po      | 378 +++++++++++-----------
 translations/en/LC_MESSAGES/messages.po      | 368 +++++++++++----------
 translations/es/LC_MESSAGES/messages.po      | 375 +++++++++++-----------
 translations/fr/LC_MESSAGES/messages.po      | 407 +++++++++++-------------
 translations/hi/LC_MESSAGES/messages.po      | 368 +++++++++++----------
 translations/it/LC_MESSAGES/messages.po      | 371 ++++++++++------------
 translations/ja/LC_MESSAGES/messages.po      | 358 ++++++++++-----------
 translations/ko/LC_MESSAGES/messages.po      | 359 ++++++++++-----------
 translations/messages.pot                    | 336 +++++++++-----------
 translations/pt/LC_MESSAGES/messages.po      | 375 +++++++++++-----------
 translations/pt_BR/LC_MESSAGES/messages.mo   | Bin 433 -> 433 bytes
 translations/pt_BR/LC_MESSAGES/messages.po   | 368 +++++++++++----------
 translations/ru/LC_MESSAGES/messages.po      | 458 +++++++++++++--------------
 translations/sv/LC_MESSAGES/messages.po      | 367 ++++++++++-----------
 translations/tr/LC_MESSAGES/messages.po      | 368 +++++++++++----------
 translations/zh_Hant/LC_MESSAGES/messages.mo | Bin 6135 -> 6037 bytes
 translations/zh_Hant/LC_MESSAGES/messages.po | 376 +++++++++++-----------
 19 files changed, 2888 insertions(+), 3178 deletions(-)

diff --git a/talermerchantdemos/httpcommon/__init__.py 
b/talermerchantdemos/httpcommon/__init__.py
index 0d69407..8d3357c 100644
--- a/talermerchantdemos/httpcommon/__init__.py
+++ b/talermerchantdemos/httpcommon/__init__.py
@@ -67,7 +67,6 @@ def backend_post(backend_url, endpoint, json, 
auth_token=None):
 # @param params (dict type of) URL parameters to append to the request.
 # @return the JSON response from the backend, or a error response
 #         if something unexpected happens.
-@exception_handler
 def backend_get(backend_url, endpoint, params, auth_token=None):
     headers = dict()
     if auth_token is not None:
diff --git a/translations/ar/LC_MESSAGES/messages.po 
b/translations/ar/LC_MESSAGES/messages.po
index 10d623c..2fb637b 100644
--- a/translations/ar/LC_MESSAGES/messages.po
+++ b/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: 2021-03-12 18:42+0100\n"
+"POT-Creation-Date: 2021-05-11 09:13+0200\n"
 "PO-Revision-Date: 2021-03-26 12:18+0000\n"
 "Last-Translator: Maisa I <maisa.translator@gmail.com>\n"
 "Language: ar\n"
@@ -20,57 +20,82 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Generated-By: Babel 2.9.0\n"
 
-#: talermerchantdemos/blog/blog.py:114
-#: talermerchantdemos/donations/donations.py:157
-#: talermerchantdemos/landing/landing.py:117
-#: talermerchantdemos/survey/survey.py:110
+#: talermerchantdemos/blog/blog.py:126
+#: talermerchantdemos/donations/donations.py:139
+#: talermerchantdemos/landing/landing.py:93
+#: talermerchantdemos/survey/survey.py:100
 msgid "Internal error"
 msgstr "خطأ داخلي"
 
-#: talermerchantdemos/blog/blog.py:180
+#: talermerchantdemos/blog/blog.py:186
 msgid "Cannot refund unpaid article"
 msgstr "تعذر استرداد المقالة غير المدفوعة"
 
-#: talermerchantdemos/blog/blog.py:186
+#: talermerchantdemos/blog/blog.py:193
 msgid "Article is not anymore refundable"
 msgstr "المقال غير قابل للاسترداد بعد الآن"
 
-#: talermerchantdemos/blog/blog.py:217
+#: talermerchantdemos/blog/blog.py:229
 msgid "You did not pay for this article (nice try!)"
 msgstr "لم تقم بالدفع لهذا المقال (محاولة جيدة!)"
 
-#: talermerchantdemos/blog/blog.py:223
+#: talermerchantdemos/blog/blog.py:234
 msgid "Item not refundable (anymore)"
 msgstr "المقال غير قابل للاسترداد (بعد الآن)"
 
-#: talermerchantdemos/blog/blog.py:248
+#: talermerchantdemos/blog/blog.py:260
 msgid "Internal error: Files for article ({}) not found."
 msgstr "خطأ داخلي: ملفات المقال ({}) غير موجودة."
 
-#: talermerchantdemos/blog/blog.py:253
+#: talermerchantdemos/blog/blog.py:267
 msgid "Supplemental file ({}) for article ({}) not found."
 msgstr "الملف الإضافي ({}) للمقال ({}) غير موجود."
 
-#: talermerchantdemos/blog/blog.py:326 talermerchantdemos/blog/blog.py:339
+#: talermerchantdemos/blog/blog.py:343 talermerchantdemos/blog/blog.py:357
 msgid "Direct access forbidden"
 msgstr "الدخول المباشر غير مسموح"
 
-#: talermerchantdemos/blog/blog.py:405
+#: talermerchantdemos/blog/blog.py:413
 msgid "Internal server error"
 msgstr "خطأ في الserver الداخلي"
 
-#: talermerchantdemos/blog/blog.py:412
-#: talermerchantdemos/donations/donations.py:323
-#: talermerchantdemos/landing/landing.py:189
-#: talermerchantdemos/survey/survey.py:171
+#: talermerchantdemos/blog/blog.py:421
+#: talermerchantdemos/donations/donations.py:282
+#: talermerchantdemos/landing/landing.py:166
+#: talermerchantdemos/survey/survey.py:167
 msgid "Page not found"
 msgstr "الصفحة غير موجودة"
 
-#: talermerchantdemos/blog/templates/article_frame.html.j2:9
+#: talermerchantdemos/donations/donations.py:125
+msgid "parameter '{}' required"
+msgstr "المَعلَمة '{}' مطلوبة"
+
+#: talermerchantdemos/httpcommon/__init__.py:48
+#: talermerchantdemos/httpcommon/__init__.py:84
+msgid "Could not establish connection to backend"
+msgstr "لم نتمكن من إنشاء اتصال مع الشبكة الخلفية"
+
+#: talermerchantdemos/httpcommon/__init__.py:54
+#: talermerchantdemos/httpcommon/__init__.py:89
+msgid "Could not parse response from backend"
+msgstr "تعذر تحليل الاستجابة من الخلفية"
+
+#: talermerchantdemos/httpcommon/__init__.py:59
+#: talermerchantdemos/httpcommon/__init__.py:92
+msgid "Backend returned error status"
+msgstr "عادت الخلفية لحالة الخطأ"
+
+#: talermerchantdemos/landing/landing.py:174
+#: talermerchantdemos/survey/survey.py:175
+msgid "HTTP method not allowed for this page"
+msgstr "طريقة HTTP غير مسموح بها لهذه الصفحة"
+
+#: talermerchantdemos/templates/blog-article-frame.html.j2:11
+#: talermerchantdemos/templates/blog-article-frame.html.j2:16
 msgid "Taler allows merchants to offer refunds to customers."
 msgstr "يسمح نظام الدفع Taler للتجار بمنح المبالغ المستردة للعملاء."
 
-#: talermerchantdemos/blog/templates/article_frame.html.j2:10
+#: talermerchantdemos/templates/blog-article-frame.html.j2:12
 msgid ""
 "You can <a href=\"{url}\">request a refund</a> within the first hour "
 "after buying this article."
@@ -78,25 +103,20 @@ msgstr ""
 "يمكنك<a href=\"{url}\">طلب استرداد المبلغ</a>خلال الساعة الأولى بعد شراء "
 "هذا البند."
 
-#: talermerchantdemos/blog/templates/base.html.j2:23
-msgid "GNU Taler Demo: Essay Shop"
-msgstr "العرض التجريبي لنظام الدفع الإلكتروني GNU Taler: متجر المقالات"
-
-#: talermerchantdemos/blog/templates/base.html.j2:34
-#: talermerchantdemos/donations/templates/base.html.j2:31
-#: talermerchantdemos/survey/templates/base.html.j2:31
-msgid "Taler Demo"
-msgstr "العرض التجريبي لنظام الدفع Taler"
+#: talermerchantdemos/templates/blog-article-frame.html.j2:17
+#, fuzzy
+msgid "This article can't be refunded anymore."
+msgstr "المقال غير قابل للاسترداد (بعد الآن)"
 
-#: talermerchantdemos/blog/templates/base.html.j2:35
+#: talermerchantdemos/templates/blog-base.html.j2:9
 msgid "Essay shop"
 msgstr "متجر المقالات"
 
-#: talermerchantdemos/blog/templates/base.html.j2:37
+#: talermerchantdemos/templates/blog-base.html.j2:11
 msgid "On this page you can buy articles using an imaginary currency."
 msgstr "يمكنك شراء المقالات من هذه الصفحة عبر استخدام العملة الافتراضية."
 
-#: talermerchantdemos/blog/templates/base.html.j2:38
+#: talermerchantdemos/templates/blog-base.html.j2:12
 msgid ""
 "The articles are chapters from Richard Stallman's book &quot;Free "
 "Software, Free Society&quot;."
@@ -104,7 +124,7 @@ msgstr ""
 "هذه المقالات عبارة عن فصول من كتاب ريتشارد ستولمان &quot;برمجيات حرة، "
 "مجتمع حر&quot;."
 
-#: talermerchantdemos/blog/templates/base.html.j2:39
+#: talermerchantdemos/templates/blog-base.html.j2:13
 msgid ""
 "The book is <a href=\"{shop}\">published by the FSF</a> and available "
 "gratis at <a href=\"{gnu}\">gnu.org</a>."
@@ -112,78 +132,67 @@ msgstr ""
 "هذا الكتاب هو <a href=\"{shop}\"> الذي أصدرته مؤسسة البرمجيات "
 "الحرة</a>ومتاح مجانًا على الموقع الإلكتروني<a href=\"{gnu}\">gnu.org</a>."
 
-#: talermerchantdemos/blog/templates/confirm_refund.html.j2:3
+#: talermerchantdemos/templates/blog-confirm-refund.html.j2:3
 msgid "Confirm refund request for article"
 msgstr "تأكيد طلب استرداد مدفوعاتك للمقال"
 
-#: talermerchantdemos/blog/templates/confirm_refund.html.j2:7
+#: talermerchantdemos/templates/blog-confirm-refund.html.j2:7
 msgid "Do you want to get a refund for the article <em>{name}</em>?"
 msgstr "هل تريد استرجاع مدفوعاتك لهذا المقال <em>{name}</em>؟"
 
-#: talermerchantdemos/blog/templates/confirm_refund.html.j2:8
+#: talermerchantdemos/templates/blog-confirm-refund.html.j2:8
 msgid ""
 "In this demonstration, refunds will be automatically approved by the "
 "merchant."
 msgstr "في هذا العرض التوضيحي، سيوافقُ التاجر على المبالغ المستردة تلقائيًا."
 
-#: talermerchantdemos/blog/templates/confirm_refund.html.j2:9
+#: talermerchantdemos/templates/blog-confirm-refund.html.j2:9
 msgid ""
 "After you have obtained a refund, you will not be able to read the "
 "article anymore."
 msgstr "عند استرجاع مدفوعاتك لن تتمكن من قراءة هذا المقال."
 
-#: talermerchantdemos/blog/templates/confirm_refund.html.j2:15
+#: talermerchantdemos/templates/blog-confirm-refund.html.j2:15
 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 "ستتمكن من استرجاع مدفوعاتك عن طريق المحفظة التي استخدمتها سابقًا 
للدفع."
 
-#: talermerchantdemos/blog/templates/confirm_refund.html.j2:21
+#: talermerchantdemos/templates/blog-confirm-refund.html.j2:21
 msgid "Request refund"
 msgstr "طلب استرجاع"
 
-#: talermerchantdemos/blog/templates/error.html.j2:3
-#: talermerchantdemos/donations/templates/error.html.j2:3
-#: talermerchantdemos/survey/templates/error.html.j2:3
+#: talermerchantdemos/templates/blog-error.html.j2:3
+#: talermerchantdemos/templates/donations-error.html.j2:3
 #: talermerchantdemos/templates/landing-error.html.j2:3
+#: talermerchantdemos/templates/survey-error.html.j2:3
 msgid "Error encountered"
 msgstr "وجود خطأ"
 
-#: talermerchantdemos/blog/templates/error.html.j2:9
-#: talermerchantdemos/donations/templates/error.html.j2:9
-#: talermerchantdemos/survey/templates/error.html.j2:9
+#: talermerchantdemos/templates/blog-error.html.j2:9
+#: talermerchantdemos/templates/donations-error.html.j2:9
+#: talermerchantdemos/templates/survey-error.html.j2:9
 msgid "The backend returned status code {code}."
 msgstr "رمز الحالة للمبالغ المستردة {code}."
 
-#: talermerchantdemos/blog/templates/error.html.j2:14
-#: talermerchantdemos/donations/templates/error.html.j2:14
-#: talermerchantdemos/survey/templates/error.html.j2:14
+#: talermerchantdemos/templates/blog-error.html.j2:14
+#: talermerchantdemos/templates/donations-error.html.j2:14
+#: talermerchantdemos/templates/survey-error.html.j2:14
 msgid "Backend response:"
 msgstr "استجابة الخلفية:"
 
-#: talermerchantdemos/blog/templates/error.html.j2:19
-#: talermerchantdemos/donations/templates/error.html.j2:19
-#: talermerchantdemos/survey/templates/error.html.j2:19
+#: talermerchantdemos/templates/blog-error.html.j2:19
+#: talermerchantdemos/templates/donations-error.html.j2:19
 #: talermerchantdemos/templates/landing-error.html.j2:8
+#: talermerchantdemos/templates/survey-error.html.j2:19
 msgid "Stack trace:"
 msgstr "إشارة تراكمية:"
 
-#: talermerchantdemos/blog/templates/footer.html.j2:5
-#: talermerchantdemos/donations/templates/footer.html.j2:5
-#: talermerchantdemos/survey/templates/footer.html.j2:5
-#: talermerchantdemos/templates/footer.html.j2:5
-msgid ""
-"You can learn more about GNU Taler on our main <a "
-"href=\"{site}\">website</a>."
-msgstr ""
-"يمكن التعرف اكثر على GNU Taler من خلال <a href=\"{site}\">موقعنا الرئيسي "
-"</a>."
-
-#: talermerchantdemos/blog/templates/index.html.j2:3
+#: talermerchantdemos/templates/blog-index.html.j2:3
 msgid "Essay Shop: Free Software, Free Society"
 msgstr "متجر المقالات: برمجيات حرة، مجتمع حر"
 
-#: talermerchantdemos/blog/templates/index.html.j2:5
+#: talermerchantdemos/templates/blog-index.html.j2:5
 msgid ""
 "This is the latest edition of <cite>Free Software, Free Society: Selected"
 " Essays of Richard M. Stallman.</cite>"
@@ -191,7 +200,7 @@ msgstr ""
 "هذه هي النسخة الاحدث من <cite> برمجيات حرة، مجتمع حر; مقالات مختارة "
 "لريتشارد م. ستالمان.</cite>"
 
-#: talermerchantdemos/blog/templates/index.html.j2:13
+#: talermerchantdemos/templates/blog-index.html.j2:13
 msgid ""
 "Verbatim copying and distribution of this entire book are permitted "
 "worldwide, without royalty, in any medium, provided this notice is "
@@ -205,200 +214,187 @@ msgstr ""
 "التصديق على الترجمة من قبل منظمة البرمجيات الحرة وحقوق النشر وهذا الحق "
 "محفوظ لجميع النسخ."
 
-#: talermerchantdemos/blog/templates/index.html.j2:18
+#: talermerchantdemos/templates/blog-index.html.j2:18
 msgid "Chapters"
 msgstr "فصول"
 
-#: talermerchantdemos/blog/templates/index.html.j2:21
+#: talermerchantdemos/templates/blog-index.html.j2:20
 msgid "Click on an individual chapter to to purchase it with GNU Taler."
 msgstr "اضغط على الفصل لشراءه مع GNU Taler."
 
-#: talermerchantdemos/blog/templates/index.html.j2:22
+#: talermerchantdemos/templates/blog-index.html.j2:21
+#, fuzzy
 msgid ""
 "You can get free, virtual money to buy articles on this page at the <a "
-"href=\"{}\")\">bank</a>"
+"href=\"{}\")\">bank</a>."
 msgstr ""
 "يمكنك الحصول على أموال إلكترونية مجانية لشراء مقالات من هذه الصفحة في <a "
 "href=\"{}\")\"> المصرف </a>"
 
-#: talermerchantdemos/blog/templates/index.html.j2:30
+#: talermerchantdemos/templates/blog-index.html.j2:28
 msgid "Pay to read more..."
 msgstr "ادفع لقراءة المزيد..."
 
-#: talermerchantdemos/blog/templates/index.html.j2:33
+#: talermerchantdemos/templates/blog-index.html.j2:31
 msgid "No articles available in this language."
 msgstr "لا يوجد مقالات متوفرة بهذه اللغة."
 
-#: talermerchantdemos/blog/templates/menu.html.j2:6
-#: talermerchantdemos/donations/templates/menu.html.j2:6
-#: talermerchantdemos/survey/templates/menu.html.j2:6
-#: talermerchantdemos/templates/landing-base.html.j2:32
-#: talermerchantdemos/templates/menu.html.j2:6
+#: talermerchantdemos/templates/common-base.html.j2:20
+#, fuzzy
+msgid "GNU Taler Demo"
+msgstr "العرض التجريبي لنظام الدفع Taler"
+
+#: talermerchantdemos/templates/common-base.html.j2:44
+#: talermerchantdemos/templates/landing-base.html.j2:5
 msgid "Introduction"
 msgstr "مقدمة"
 
-#: talermerchantdemos/blog/templates/menu.html.j2:9
-#: talermerchantdemos/donations/templates/menu.html.j2:9
-#: talermerchantdemos/survey/templates/menu.html.j2:9
-#: talermerchantdemos/templates/menu.html.j2:9
+#: talermerchantdemos/templates/common-base.html.j2:47
 msgid "Bank"
 msgstr "بنك"
 
-#: talermerchantdemos/blog/templates/menu.html.j2:12
-#: talermerchantdemos/donations/templates/menu.html.j2:12
-#: talermerchantdemos/survey/templates/menu.html.j2:12
-#: talermerchantdemos/templates/menu.html.j2:12
+#: talermerchantdemos/templates/common-base.html.j2:50
 msgid "Essay Shop"
 msgstr "متجر المقالات"
 
-#: talermerchantdemos/blog/templates/menu.html.j2:15
-#: talermerchantdemos/donations/templates/base.html.j2:32
-#: talermerchantdemos/donations/templates/menu.html.j2:15
-#: talermerchantdemos/survey/templates/menu.html.j2:15
-#: talermerchantdemos/templates/menu.html.j2:15
+#: talermerchantdemos/templates/common-base.html.j2:53
+#: talermerchantdemos/templates/donations-base.html.j2:6
 msgid "Donations"
 msgstr "تبرعات"
 
-#: talermerchantdemos/blog/templates/menu.html.j2:18
-#: talermerchantdemos/donations/templates/menu.html.j2:18
-#: talermerchantdemos/survey/templates/menu.html.j2:18
-#: talermerchantdemos/templates/menu.html.j2:18
+#: talermerchantdemos/templates/common-base.html.j2:56
 msgid "Tipping/Survey"
 msgstr "استطلاع الآراء"
 
-#: talermerchantdemos/blog/templates/menu.html.j2:21
-#: talermerchantdemos/donations/templates/menu.html.j2:21
-#: talermerchantdemos/survey/templates/menu.html.j2:21
-#: talermerchantdemos/templates/menu.html.j2:21
-msgid "Back-office"
-msgstr "مكتب الدعم"
-
-#: talermerchantdemos/donations/donations.py:143
-msgid "parameter '{}' required"
-msgstr "المَعلَمة '{}' مطلوبة"
-
-#: talermerchantdemos/donations/templates/base.html.j2:20
-msgid "GNU Taler Demo: Donations"
-msgstr "نظام GNU Taler التجريبي: التبرعات"
+#: talermerchantdemos/templates/common-base.html.j2:85
+msgid ""
+"You can learn more about GNU Taler on our main <a "
+"href=\"{site}\">website</a>."
+msgstr ""
+"يمكن التعرف اكثر على GNU Taler من خلال <a href=\"{site}\">موقعنا الرئيسي "
+"</a>."
 
-#: talermerchantdemos/donations/templates/base.html.j2:34
+#: talermerchantdemos/templates/donations-base.html.j2:8
 msgid "This is the donation page."
 msgstr "هذه هي صفحة التبرعات."
 
-#: talermerchantdemos/donations/templates/base.html.j2:35
+#: talermerchantdemos/templates/donations-base.html.j2:9
 msgid ""
 "Using this page you can make donations in {currency} to Free Software "
 "projects."
 msgstr "من خلال هذه الصفحة يمكنك التبرع بمبلغ {currency} لمشروعات البرمجات 
الحرة."
 
-#: talermerchantdemos/donations/templates/checkout.html.j2:5
+#: talermerchantdemos/templates/donations-checkout.html.j2:5
 msgid "Select your payment method"
 msgstr "اختر طريقة للدفع"
 
-#: talermerchantdemos/donations/templates/checkout.html.j2:9
+#: talermerchantdemos/templates/donations-checkout.html.j2:9
 msgid "This is an example for a \"checkout\" page of a Web shop."
 msgstr "هذا مثال لصفحة \"الخروج\" للمتجر الإلكتروني."
 
-#: talermerchantdemos/donations/templates/checkout.html.j2:10
+#: talermerchantdemos/templates/donations-checkout.html.j2:10
 msgid ""
 "On the previous page, you have created the shopping cart and decided "
 "which product to buy (i.e. which project to donate KUDOS to)."
 msgstr ""
-"في الصفحة السابقة، لقد أنشأت عربة التسوق وقررت المنتج الذي تريد شراءه (أي "
-"المشروع الذي سيتبرع به نظام KUDOS إلى)."
+"في الصفحة السابقة، لقد أنشأت عربة التسوق وقررت المنتج الذي تريد شراءه (أي"
+" المشروع الذي سيتبرع به نظام KUDOS إلى)."
 
-#: talermerchantdemos/donations/templates/checkout.html.j2:11
+#: talermerchantdemos/templates/donations-checkout.html.j2:11
 msgid ""
 "As Taler is not yet universally used, we expect merchants will offer "
 "various payment options."
 msgstr ""
-"بما أنّ Taler لم يُستخدم عالميًا بعد، نتوقع أن يوفر التجار خيارات دفع متنوعة."
+"بما أنّ Taler لم يُستخدم عالميًا بعد، نتوقع أن يوفر التجار خيارات دفع "
+"متنوعة."
 
-#: talermerchantdemos/donations/templates/checkout.html.j2:12
+#: talermerchantdemos/templates/donations-checkout.html.j2:12
 msgid "To continue with the demo, select the &quot;Taler&quot; payment option."
 msgstr "للاستمرار بالنسخة التجريبية، حدد &quot;نظام Taler&quot;خيار الدفع."
 
-#: talermerchantdemos/donations/templates/checkout.html.j2:17
+#: talermerchantdemos/templates/donations-checkout.html.j2:17
 msgid ""
 "Note that you must select Taler here for the demo to continue, as the "
 "other payment options are just placeholders and not really working in the"
 " demonstration."
 msgstr ""
 "لاحظ أنه يجب عليك تحديد نظام Taler هنا لمواصلة النسخة التجريبية، حيث أن "
-"خيارات الدفع الأخرى هي مجرد عناصر نائبة ولا تعمل بالفعل في النسخة التجريبية."
+"خيارات الدفع الأخرى هي مجرد عناصر نائبة ولا تعمل بالفعل في النسخة "
+"التجريبية."
 
-#: talermerchantdemos/donations/templates/checkout.html.j2:18
+#: talermerchantdemos/templates/donations-checkout.html.j2:18
 msgid ""
 "It would be possible to ask the user to make this choice already on the "
 "previous page (with the shopping cart); we just separated the two steps "
 "to keep each step as simple as possible."
 msgstr ""
-"من المحتمل مطالبة المستخدم بإجراء هذا الاختيار بالفعل في الصفحة السابقة (في "
-"عربة التسوق)؛ لقد فصلنا المرحلتين فقط لإبقاء كل مرحلة بسيطة قدر الإمكان."
+"من المحتمل مطالبة المستخدم بإجراء هذا الاختيار بالفعل في الصفحة السابقة "
+"(في عربة التسوق)؛ لقد فصلنا المرحلتين فقط لإبقاء كل مرحلة بسيطة قدر "
+"الإمكان."
 
-#: talermerchantdemos/donations/templates/checkout.html.j2:44
+#: talermerchantdemos/templates/donations-checkout.html.j2:44
 msgid "Confirm selection"
 msgstr "تأكيد الاختيار"
 
-#: talermerchantdemos/donations/templates/fulfillment.html.j2:4
+#: talermerchantdemos/templates/donations-fulfillment.html.j2:4
 msgid "Donation Receipt"
 msgstr "إيصال التبرع"
 
-#: talermerchantdemos/donations/templates/fulfillment.html.j2:7
+#: talermerchantdemos/templates/donations-fulfillment.html.j2:7
 msgid ""
 "Thank you, <strong>{donor}</strong>, for donating "
 "<strong>{amount}</strong> to <strong>{receiver}</strong>."
 msgstr ""
-"شكرًا، <strong>{donor}</strong>، لتبرعك بمبلغ <strong>{amount}</strong> إلى "
-"<strong>{receiver}</strong>."
+"شكرًا، <strong>{donor}</strong>، لتبرعك بمبلغ <strong>{amount}</strong> "
+"إلى <strong>{receiver}</strong>."
 
-#: talermerchantdemos/donations/templates/fulfillment.html.j2:12
+#: talermerchantdemos/templates/donations-fulfillment.html.j2:12
 msgid ""
 "Please keep the order identifier <strong>{id}</strong> as a receipt for "
 "your donation."
 msgstr "يُرجى الاحتفاظ بمعرّف الطلب <strong>{id}</strong> كإيصال لتبرعك."
 
-#: talermerchantdemos/donations/templates/fulfillment.html.j2:13
+#: talermerchantdemos/templates/donations-fulfillment.html.j2:13
 msgid ""
 "You can show other people that you donated by sharing <a "
 "href=\"{link}\">this link</a> with them."
 msgstr "يمكنك عرض تبرعك للآخرين بمشاركة <a href=\"{link}\">هذا الرابط</a> 
معهم."
 
-#: talermerchantdemos/donations/templates/fulfillment.html.j2:19
+#: talermerchantdemos/templates/donations-fulfillment.html.j2:19
 msgid "You can always make <a href=\"{link}\">another donation</a>."
 msgstr "بإمكانك دائمًا<a href=\"{link}\">التبرع مرة أخرى</a>."
 
-#: talermerchantdemos/donations/templates/index.html.j2:4
+#: talermerchantdemos/templates/donations-index.html.j2:4
 msgid "Donate to Free Software projects"
 msgstr "تبرع لمشاريع البرمجيات الحرة"
 
-#: talermerchantdemos/donations/templates/index.html.j2:8
+#: talermerchantdemos/templates/donations-index.html.j2:8
 msgid ""
 "This donations website shows the user experience for donations with GNU "
 "Taler."
 msgstr "يُظهر موقع التبرعات هذا تجربة المستخدم للتبرعات في نظام GNU Taler."
 
-#: talermerchantdemos/donations/templates/index.html.j2:9
+#: talermerchantdemos/templates/donations-index.html.j2:9
 msgid "You can make donations in an toy currency ({currency})"
 msgstr "يمكنك التبرع بالعملات الإلكترونية ({currency})"
 
-#: talermerchantdemos/donations/templates/index.html.j2:16
+#: talermerchantdemos/templates/donations-index.html.j2:16
 msgid ""
 "Please select a project, the amount (*) of {currency} you wish to donate,"
 " and enter the donor's name that will appear on your receipt:"
 msgstr ""
-"يُرجى تحديد مشروع، ومبلغ (*) ال {currency} الذي ترغب في التبرع به، وإدخال "
-"اسم المتبرع الذي سيظهر في إيصالك:"
+"يُرجى تحديد مشروع، ومبلغ (*) ال {currency} الذي ترغب في التبرع به، وإدخال"
+" اسم المتبرع الذي سيظهر في إيصالك:"
 
-#: talermerchantdemos/donations/templates/index.html.j2:33
+#: talermerchantdemos/templates/donations-index.html.j2:33
 msgid "Anonymous Donor"
 msgstr "متبرع مجهول الاسم"
 
-#: talermerchantdemos/donations/templates/index.html.j2:34
+#: talermerchantdemos/templates/donations-index.html.j2:34
 msgid "Donate!"
 msgstr "تبرع!"
 
-#: talermerchantdemos/donations/templates/index.html.j2:39
+#: talermerchantdemos/templates/donations-index.html.j2:39
 msgid ""
 "(*) To make the demo a bit more interesting, the 5 {currency} option is "
 "deliberately implemented with a fault: the merchant will try to make you "
@@ -407,87 +403,29 @@ msgid ""
 " from the merchant in the Taler wallet.  That way, Taler protects you "
 "from committing to erroneous payments."
 msgstr ""
-"(*) لجعل النسخة التجريبية أكثر تشويقًا، فإنه نُفَذ خيار 5 {currency} عمدًا "
-"مع وجود خطأ: سيحاول التاجر أن يرغمك لتتبرع بمبلغ 6 {currency} بدل 5 "
-"{currency} الموضحة في النموذج. لكن لا تقلق، ستتاح لك الفرصة لمراجعة العرض "
-"النهائي من التاجر في محفظة Taler. بهذه الطريقة، يحميك نظام Taler من ارتكاب "
-"مدفوعات خاطئة."
+"(*) لجعل النسخة التجريبية أكثر تشويقًا، فإنه نُفَذ خيار 5 {currency} "
+"عمدًا مع وجود خطأ: سيحاول التاجر أن يرغمك لتتبرع بمبلغ 6 {currency} بدل 5"
+" {currency} الموضحة في النموذج. لكن لا تقلق، ستتاح لك الفرصة لمراجعة "
+"العرض النهائي من التاجر في محفظة Taler. بهذه الطريقة، يحميك نظام Taler من"
+" ارتكاب مدفوعات خاطئة."
 
-#: talermerchantdemos/donations/templates/provider-not-supported.html.j2:4
+#: talermerchantdemos/templates/donations-provider-not-supported.html.j2:4
 msgid "Payment Provider Not Supported"
 msgstr "مزود الدفع غير معتمد"
 
-#: talermerchantdemos/donations/templates/provider-not-supported.html.j2:7
+#: talermerchantdemos/templates/donations-provider-not-supported.html.j2:7
 msgid "Unfortunately the selected payment provider is not supported in this 
demo."
 msgstr "للأسف طريقة الدفع تلك غير معتمدة لهذه النسخة التجريبية."
 
-#: talermerchantdemos/donations/templates/provider-not-supported.html.j2:8
+#: talermerchantdemos/templates/donations-provider-not-supported.html.j2:8
 msgid "Please go back and select &quot;Taler&quot;."
 msgstr "من فضلك تراجع واختر &quot;Taler&quot;."
 
-#: talermerchantdemos/httpcommon/__init__.py:24
-#: talermerchantdemos/httpcommon/__init__.py:58
-msgid "Could not establish connection to backend"
-msgstr "لم نتمكن من إنشاء اتصال مع الشبكة الخلفية"
-
-#: talermerchantdemos/httpcommon/__init__.py:30
-#: talermerchantdemos/httpcommon/__init__.py:62
-msgid "Could not parse response from backend"
-msgstr "تعذر تحليل الاستجابة من الخلفية"
-
-#: talermerchantdemos/httpcommon/__init__.py:36
-#: talermerchantdemos/httpcommon/__init__.py:66
-msgid "Backend returned error status"
-msgstr "عادت الخلفية لحالة الخطأ"
-
-#: talermerchantdemos/landing/landing.py:197
-#: talermerchantdemos/survey/survey.py:179
-msgid "HTTP method not allowed for this page"
-msgstr "طريقة HTTP غير مسموح بها لهذه الصفحة"
-
-#: talermerchantdemos/survey/templates/base.html.j2:20
-msgid "GNU Taler Demo: Survey"
-msgstr ""
-
-#: talermerchantdemos/survey/templates/base.html.j2:32
-msgid "Survey"
-msgstr "استطلاع رأي"
-
-#: talermerchantdemos/survey/templates/base.html.j2:34
-msgid "This page demonstrates how to tip visitors for completing small tasks."
-msgstr ""
-
-#: talermerchantdemos/survey/templates/base.html.j2:35
-msgid ""
-"Tipping is a way for offer cash rewards that go directly into a user's "
-"wallet."
-msgstr ""
-
-#: talermerchantdemos/survey/templates/index.html.j2:6
-msgid ""
-"Please participate in our survey about payment systems and receive a tip "
-"in return."
-msgstr ""
-"من فضلك شارك في استطلاعنا للرأي عن طرق السداد و احصل على إكرامية في "
-"المقابل."
-
-#: talermerchantdemos/survey/templates/index.html.j2:12
-msgid "Which payment system do you prefer?"
-msgstr "اي طرق الدفع تفضل؟"
-
-#: talermerchantdemos/survey/templates/index.html.j2:23
-msgid "Submit Survey"
-msgstr "تقديم استطلاع الرأي"
-
-#: talermerchantdemos/templates/landing-base.html.j2:20
-msgid "GNU Taler Demo: Introduction"
-msgstr "النسخة التجريبية لنظام GNU Taler: مقدمة"
-
-#: talermerchantdemos/templates/landing-base.html.j2:34
+#: talermerchantdemos/templates/landing-base.html.j2:7
 msgid "This is the GNU Taler demo."
 msgstr "هذه النسخة التجريبية من نظام GNU Taler."
 
-#: talermerchantdemos/templates/landing-base.html.j2:35
+#: talermerchantdemos/templates/landing-base.html.j2:8
 msgid "Here you can try out the GNU Taler payment system using a toy currency."
 msgstr "يمكنك هنا تجربة نظام الدفع GNU Taler باستخدام عملة غير حقيقية."
 
@@ -517,16 +455,16 @@ msgid ""
 "These permissions will allow the wallet to automatically open if a page "
 "asks for a Taler payment."
 msgstr ""
-"ستتيحُ هذه الأذونات للمحفظة بالفتح تلقائيًا إذا طلبت إحدى الصفحات مدفوعات "
-"نظام Taler."
+"ستتيحُ هذه الأذونات للمحفظة بالفتح تلقائيًا إذا طلبت إحدى الصفحات مدفوعات"
+" نظام Taler."
 
 #: talermerchantdemos/templates/landing-index.html.j2:14
 msgid ""
 "Regardless of the permissions you grant, the wallet will never transmit "
 "information about you or your browsing history to anyone."
 msgstr ""
-"بغض النظر عن الأذونات التي تمنحها، لن تنقل المحفظة أبدًا معلومات عنك أو عن "
-"محفوظات متصفحك إلى أيّ شخص."
+"بغض النظر عن الأذونات التي تمنحها، لن تنقل المحفظة أبدًا معلومات عنك أو "
+"عن محفوظات متصفحك إلى أيّ شخص."
 
 #: talermerchantdemos/templates/landing-index.html.j2:19
 msgid "Step 2: Withdraw coins"
@@ -541,8 +479,8 @@ msgid ""
 "To withdraw {currency} coins you must first create an account at our <a "
 "href=\"{bank}\">bank</a>."
 msgstr ""
-"لسحب النقود {currency} يجب عليك أولاً إنشاء حساب في <a href=\"{bank}\""
-">مصرفنا</a>."
+"لسحب النقود {currency} يجب عليك أولاً إنشاء حساب في <a "
+"href=\"{bank}\">مصرفنا</a>."
 
 #: talermerchantdemos/templates/landing-index.html.j2:24
 msgid "Signing up only requires you to pick a username and password."
@@ -559,14 +497,16 @@ msgid ""
 "Afterwards, use the bank's Web interface to authorize the transfer of "
 "{currency} to your wallet."
 msgstr ""
-"بعد ذلك، استخدم واجهة البنك الإلكترونية للسماح بتحويل {currency} إلى محفظتك."
+"بعد ذلك، استخدم واجهة البنك الإلكترونية للسماح بتحويل {currency} إلى "
+"محفظتك."
 
 #: talermerchantdemos/templates/landing-index.html.j2:30
 msgid ""
 "Once you have completed this step, you can click on the Taler icon in "
 "your browser to check your balance."
 msgstr ""
-"بمجرد الانتهاء من هذه الخطوة، يمكنك النقر فوق رمز Taler في متصفحك لفحص رصيدك."
+"بمجرد الانتهاء من هذه الخطوة، يمكنك النقر فوق رمز Taler في متصفحك لفحص "
+"رصيدك."
 
 #: talermerchantdemos/templates/landing-index.html.j2:35
 msgid "Step 3: Pay"
@@ -597,29 +537,31 @@ msgid ""
 "respect to a software project of your choice by donating {currency} to "
 "them."
 msgstr ""
-"في مشروع <a href=\"{donations}\">موقع التبرع</a> يمكنك إظهار الاحترام لمشروع "
-"برمجي من اختيارك بالتبرع بقيمة {currency} لهم."
+"في مشروع <a href=\"{donations}\">موقع التبرع</a> يمكنك إظهار الاحترام "
+"لمشروع برمجي من اختيارك بالتبرع بقيمة {currency} لهم."
 
 #: talermerchantdemos/templates/landing-index.html.j2:56
 msgid "Step 4: Check money flow"
 msgstr "الخطوة الرابعة: تحقق من تدفق الأموال"
 
 #: talermerchantdemos/templates/landing-index.html.j2:59
+#, fuzzy
 msgid ""
 "You can see the wire transfers from the escrow account of the exchange to"
-" the merchants on the <a href=\"{bank}/public-accounts\">public accounts "
-"page</a> of the bank."
+" the merchants on the <a href=\"{bank}\">public accounts page</a> of the "
+"bank."
 msgstr ""
-"يمكنك الاطلاع على الحوالات المصرفية من حساب شركة الصرافة المعلق بشرط للتجار "
-"في <a href=\"{bank}/public-accounts\">صفحة الحسابات العامة</a> للمصرف."
+"يمكنك الاطلاع على الحوالات المصرفية من حساب شركة الصرافة المعلق بشرط "
+"للتجار في <a href=\"{bank}/public-accounts\">صفحة الحسابات العامة</a> "
+"للمصرف."
 
 #: talermerchantdemos/templates/landing-index.html.j2:60
 msgid ""
 "Note that only accounts configured to be publicly viewable are shown on "
 "that page."
 msgstr ""
-"لاحظ أنّ الحسابات التي تمت تهيئتها لتكون قابلة للعرض العام فقط هي التي تظهر "
-"في تلك الصفحة."
+"لاحظ أنّ الحسابات التي تمت تهيئتها لتكون قابلة للعرض العام فقط هي التي "
+"تظهر في تلك الصفحة."
 
 #: talermerchantdemos/templates/landing-index.html.j2:65
 msgid "Step 5: Survey"
@@ -634,7 +576,8 @@ msgid ""
 "You can earn some {currency} coins by filling in our <a "
 "href=\"{url}\">survey</a>."
 msgstr ""
-"يمكنك كسب بعض عملات {currency} من خلال تعبئة <a href=\"{url}\">استطلاعنا</a>."
+"يمكنك كسب بعض عملات {currency} من خلال تعبئة <a "
+"href=\"{url}\">استطلاعنا</a>."
 
 #: talermerchantdemos/templates/landing-index.html.j2:81
 msgid "Step 6: Reach out to us"
@@ -648,38 +591,35 @@ msgstr "نقدرُ رأيك المتعلق بنظام Taler وهذا العرض
 msgid "Let us know what you think by <a href=\"{link}\">contacting us</a>."
 msgstr "شاركنا رأيك عن طريق <a href=\"{link}\"> التواصل معنا</a>."
 
-#: talermerchantdemos/survey/templates/base.html.j2:20
-msgid "GNU Taler Demo: Survey"
-msgstr "النسخة التجريبية لنظام GNU Taler Demo: استطلاع الآراء"
-
-#: talermerchantdemos/survey/templates/base.html.j2:32
+#: talermerchantdemos/templates/survey-base.html.j2:6
 msgid "Survey"
-msgstr "استطلاع الآراء"
+msgstr "استطلاع رأي"
 
-#: talermerchantdemos/survey/templates/base.html.j2:34
+#: talermerchantdemos/templates/survey-base.html.j2:8
 msgid "This page demonstrates how to tip visitors for completing small tasks."
-msgstr "توضح هذه الصفحة كيفية إرشاد الزائرين لإكمال المهام الصغيرة."
+msgstr ""
 
-#: talermerchantdemos/survey/templates/base.html.j2:35
+#: talermerchantdemos/templates/survey-base.html.j2:9
 msgid ""
 "Tipping is a way for offer cash rewards that go directly into a user's "
 "wallet."
-msgstr "الاستطلاع هو طريقة لتقديم مكافآت نقدية تذهب مباشرة إلى محفظة المستخدم."
+msgstr ""
 
-#: talermerchantdemos/survey/templates/index.html.j2:6
+#: talermerchantdemos/templates/survey-index.html.j2:6
 msgid ""
 "Please participate in our survey about payment systems and receive a tip "
 "in return."
 msgstr ""
-"يرجى المشاركة في استطلاعنا حول أنظمة الدفع والحصول على معلومات في المقابل."
+"من فضلك شارك في استطلاعنا للرأي عن طرق السداد و احصل على إكرامية في "
+"المقابل."
 
-#: talermerchantdemos/survey/templates/index.html.j2:12
+#: talermerchantdemos/templates/survey-index.html.j2:12
 msgid "Which payment system do you prefer?"
-msgstr "أي أنظمة الدفع تفضل؟"
+msgstr "اي طرق الدفع تفضل؟"
 
-#: talermerchantdemos/survey/templates/index.html.j2:23
+#: talermerchantdemos/templates/survey-index.html.j2:23
 msgid "Submit Survey"
-msgstr "إرسال استطلاع الآراء"
+msgstr "تقديم استطلاع الرأي"
 
 #~ msgid "English [en]"
 #~ msgstr ""
@@ -693,3 +633,18 @@ msgstr "إرسال استطلاع الآراء"
 #~ msgid "Swedish [sv]"
 #~ msgstr ""
 
+#~ msgid "GNU Taler Demo: Essay Shop"
+#~ msgstr "العرض التجريبي لنظام الدفع الإلكتروني GNU Taler: متجر المقالات"
+
+#~ msgid "Back-office"
+#~ msgstr "مكتب الدعم"
+
+#~ msgid "GNU Taler Demo: Donations"
+#~ msgstr "نظام GNU Taler التجريبي: التبرعات"
+
+#~ msgid "GNU Taler Demo: Survey"
+#~ msgstr ""
+
+#~ msgid "GNU Taler Demo: Introduction"
+#~ msgstr "النسخة التجريبية لنظام GNU Taler: مقدمة"
+
diff --git a/translations/de/LC_MESSAGES/messages.po 
b/translations/de/LC_MESSAGES/messages.po
index 250d4a0..76d5d11 100644
--- a/translations/de/LC_MESSAGES/messages.po
+++ b/translations/de/LC_MESSAGES/messages.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version:  taler-merchant-demos\n"
 "Report-Msgid-Bugs-To: taler@gnu.org\n"
-"POT-Creation-Date: 2021-04-21 18:28+0200\n"
+"POT-Creation-Date: 2021-05-11 09:13+0200\n"
 "PO-Revision-Date: 2021-02-12 16:39+0000\n"
 "Last-Translator: Stefan <eintritt@hotmail.com>\n"
 "Language: de\n"
@@ -19,61 +19,86 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Generated-By: Babel 2.9.0\n"
 
-#: talermerchantdemos/blog/blog.py:114
-#: talermerchantdemos/donations/donations.py:157
-#: talermerchantdemos/landing/landing.py:117
-#: talermerchantdemos/survey/survey.py:110
+#: talermerchantdemos/blog/blog.py:126
+#: talermerchantdemos/donations/donations.py:139
+#: talermerchantdemos/landing/landing.py:93
+#: talermerchantdemos/survey/survey.py:100
 msgid "Internal error"
 msgstr "Interner Fehler"
 
-#: talermerchantdemos/blog/blog.py:180
+#: talermerchantdemos/blog/blog.py:186
 msgid "Cannot refund unpaid article"
 msgstr ""
 "Den Kaufpreis eines Artikels, der nicht bezahlt wurde, können wir nicht "
 "erstatten"
 
-#: talermerchantdemos/blog/blog.py:186
+#: talermerchantdemos/blog/blog.py:193
 msgid "Article is not anymore refundable"
 msgstr "Den Kaufpreis für diesen Aufsatz können wir leider nicht mehr 
erstatten"
 
-#: talermerchantdemos/blog/blog.py:217
+#: talermerchantdemos/blog/blog.py:229
 msgid "You did not pay for this article (nice try!)"
 msgstr "Für diesen Aufsatz wurde noch kein Kaufpreis entrichtet"
 
-#: talermerchantdemos/blog/blog.py:223
+#: talermerchantdemos/blog/blog.py:234
 msgid "Item not refundable (anymore)"
 msgstr "Dieser Artikel kann nicht (mehr) erstattet werden"
 
-#: talermerchantdemos/blog/blog.py:248
+#: talermerchantdemos/blog/blog.py:260
 msgid "Internal error: Files for article ({}) not found."
 msgstr "Interner Fehler: Die Datei für diesen Aufsatz ({}) wurden nicht 
gefunden."
 
-#: talermerchantdemos/blog/blog.py:253
+#: talermerchantdemos/blog/blog.py:267
 msgid "Supplemental file ({}) for article ({}) not found."
 msgstr "Die Zusatzdatei ({}) für den Artikel ({}) wurde nicht gefunden."
 
-#: talermerchantdemos/blog/blog.py:326 talermerchantdemos/blog/blog.py:339
+#: talermerchantdemos/blog/blog.py:343 talermerchantdemos/blog/blog.py:357
 msgid "Direct access forbidden"
 msgstr "Dieser Zugriff ist nicht erlaubt"
 
-#: talermerchantdemos/blog/blog.py:405
+#: talermerchantdemos/blog/blog.py:413
 msgid "Internal server error"
 msgstr "Interner Server-Fehler"
 
-#: talermerchantdemos/blog/blog.py:412
-#: talermerchantdemos/donations/donations.py:323
-#: talermerchantdemos/landing/landing.py:189
-#: talermerchantdemos/survey/survey.py:171
+#: talermerchantdemos/blog/blog.py:421
+#: talermerchantdemos/donations/donations.py:282
+#: talermerchantdemos/landing/landing.py:166
+#: talermerchantdemos/survey/survey.py:167
 msgid "Page not found"
 msgstr "Seite nicht gefunden"
 
-#: talermerchantdemos/blog/templates/article_frame.html.j2:9
+#: talermerchantdemos/donations/donations.py:125
+msgid "parameter '{}' required"
+msgstr "Parameter '{}' erforderlich"
+
+#: talermerchantdemos/httpcommon/__init__.py:48
+#: talermerchantdemos/httpcommon/__init__.py:84
+msgid "Could not establish connection to backend"
+msgstr "Es war nicht möglich, eine Verbindung zum Backend aufzubauen"
+
+#: talermerchantdemos/httpcommon/__init__.py:54
+#: talermerchantdemos/httpcommon/__init__.py:89
+msgid "Could not parse response from backend"
+msgstr "Es war nicht möglich, die Rückmeldung des Backend zu parsen"
+
+#: talermerchantdemos/httpcommon/__init__.py:59
+#: talermerchantdemos/httpcommon/__init__.py:92
+msgid "Backend returned error status"
+msgstr "Das Backend lieferte einen Fehlerstatus zurück"
+
+#: talermerchantdemos/landing/landing.py:174
+#: talermerchantdemos/survey/survey.py:175
+msgid "HTTP method not allowed for this page"
+msgstr "Die HTTP-Methode ist auf dieser Webseite nicht erlaubt"
+
+#: talermerchantdemos/templates/blog-article-frame.html.j2:11
+#: talermerchantdemos/templates/blog-article-frame.html.j2:16
 msgid "Taler allows merchants to offer refunds to customers."
 msgstr ""
 "Taler erlaubt Verkäufern schnelle und einfache Rückerstattungen an ihre "
 "Kunden."
 
-#: talermerchantdemos/blog/templates/article_frame.html.j2:10
+#: talermerchantdemos/templates/blog-article-frame.html.j2:12
 msgid ""
 "You can <a href=\"{url}\">request a refund</a> within the first hour "
 "after buying this article."
@@ -82,27 +107,22 @@ msgstr ""
 "Stunde nach dem Kauf des Aufsatzes kann der Kaufpreis ggf. erstattet "
 "werden."
 
-#: talermerchantdemos/blog/templates/base.html.j2:23
-msgid "GNU Taler Demo: Essay Shop"
-msgstr "GNU Taler Demo Essay Shop — Die Aufsatzsammlung zum Bezahlen mit GNU 
Taler"
-
-#: talermerchantdemos/blog/templates/base.html.j2:34
-#: talermerchantdemos/donations/templates/base.html.j2:31
-#: talermerchantdemos/survey/templates/base.html.j2:31
-msgid "Taler Demo"
-msgstr "Taler Demo"
+#: talermerchantdemos/templates/blog-article-frame.html.j2:17
+#, fuzzy
+msgid "This article can't be refunded anymore."
+msgstr "Dieser Artikel kann nicht (mehr) erstattet werden"
 
-#: talermerchantdemos/blog/templates/base.html.j2:35
+#: talermerchantdemos/templates/blog-base.html.j2:9
 msgid "Essay shop"
 msgstr "Aufsatzsammlung"
 
-#: talermerchantdemos/blog/templates/base.html.j2:37
+#: talermerchantdemos/templates/blog-base.html.j2:11
 msgid "On this page you can buy articles using an imaginary currency."
 msgstr ""
 "Auf dieser Seite kann man Aufsätze in einer Phantasiewährung (KUDOS) mit "
 "GNU Taler bezahlen."
 
-#: talermerchantdemos/blog/templates/base.html.j2:38
+#: talermerchantdemos/templates/blog-base.html.j2:12
 msgid ""
 "The articles are chapters from Richard Stallman's book &quot;Free "
 "Software, Free Society&quot;."
@@ -110,7 +130,7 @@ msgstr ""
 "Die Aufsätze stammen von Richard Stallman und befinden sich in seinem "
 "Buch &quot;Free Software&quot;."
 
-#: talermerchantdemos/blog/templates/base.html.j2:39
+#: talermerchantdemos/templates/blog-base.html.j2:13
 msgid ""
 "The book is <a href=\"{shop}\">published by the FSF</a> and available "
 "gratis at <a href=\"{gnu}\">gnu.org</a>."
@@ -119,15 +139,15 @@ msgstr ""
 "veröffentlicht und steht kostenlos zum Download bereit auf <a "
 "href=\"{gnu}\">gnu.org</a>."
 
-#: talermerchantdemos/blog/templates/confirm_refund.html.j2:3
+#: talermerchantdemos/templates/blog-confirm-refund.html.j2:3
 msgid "Confirm refund request for article"
 msgstr "Anfrage auf Erstattung für den Aufsatz bestätigen"
 
-#: talermerchantdemos/blog/templates/confirm_refund.html.j2:7
+#: talermerchantdemos/templates/blog-confirm-refund.html.j2:7
 msgid "Do you want to get a refund for the article <em>{name}</em>?"
 msgstr "Möchten Sie eine Erstattung für den Aufsatz <em>{name}</em>?"
 
-#: talermerchantdemos/blog/templates/confirm_refund.html.j2:8
+#: talermerchantdemos/templates/blog-confirm-refund.html.j2:8
 msgid ""
 "In this demonstration, refunds will be automatically approved by the "
 "merchant."
@@ -135,7 +155,7 @@ msgstr ""
 "In dieser Demonstration werden die Erstattungen (‘refunds‘) automatisch "
 "vom Verkäufer bestätigt und ausgeführt."
 
-#: talermerchantdemos/blog/templates/confirm_refund.html.j2:9
+#: talermerchantdemos/templates/blog-confirm-refund.html.j2:9
 msgid ""
 "After you have obtained a refund, you will not be able to read the "
 "article anymore."
@@ -143,7 +163,7 @@ msgstr ""
 "Nachdem Sie eine Erstattung des Kaufpreises erhalten haben, werden Sie "
 "den Aufsatz nicht mehr lesen können."
 
-#: talermerchantdemos/blog/templates/confirm_refund.html.j2:15
+#: talermerchantdemos/templates/blog-confirm-refund.html.j2:15
 msgid ""
 "You will only be able to receive the refund on the same wallet that you "
 "have used to pay for this article originally."
@@ -151,54 +171,43 @@ msgstr ""
 "Sie können eine Erstattung nur in das Wallet zurückgebucht bekommen, aus "
 "dem die Zahlung für den Aufsatz erfolgte."
 
-#: talermerchantdemos/blog/templates/confirm_refund.html.j2:21
+#: talermerchantdemos/templates/blog-confirm-refund.html.j2:21
 msgid "Request refund"
 msgstr "Erstattungsanfrage"
 
-#: talermerchantdemos/blog/templates/error.html.j2:3
-#: talermerchantdemos/donations/templates/error.html.j2:3
-#: talermerchantdemos/survey/templates/error.html.j2:3
+#: talermerchantdemos/templates/blog-error.html.j2:3
+#: talermerchantdemos/templates/donations-error.html.j2:3
 #: talermerchantdemos/templates/landing-error.html.j2:3
+#: talermerchantdemos/templates/survey-error.html.j2:3
 msgid "Error encountered"
 msgstr "Ein Fehler ist aufgetreten"
 
-#: talermerchantdemos/blog/templates/error.html.j2:9
-#: talermerchantdemos/donations/templates/error.html.j2:9
-#: talermerchantdemos/survey/templates/error.html.j2:9
+#: talermerchantdemos/templates/blog-error.html.j2:9
+#: talermerchantdemos/templates/donations-error.html.j2:9
+#: talermerchantdemos/templates/survey-error.html.j2:9
 msgid "The backend returned status code {code}."
 msgstr "Das Backend meldet folgenden Statuscode zurück {code}."
 
-#: talermerchantdemos/blog/templates/error.html.j2:14
-#: talermerchantdemos/donations/templates/error.html.j2:14
-#: talermerchantdemos/survey/templates/error.html.j2:14
+#: talermerchantdemos/templates/blog-error.html.j2:14
+#: talermerchantdemos/templates/donations-error.html.j2:14
+#: talermerchantdemos/templates/survey-error.html.j2:14
 msgid "Backend response:"
 msgstr "Backend-Rückmeldung:"
 
-#: talermerchantdemos/blog/templates/error.html.j2:19
-#: talermerchantdemos/donations/templates/error.html.j2:19
-#: talermerchantdemos/survey/templates/error.html.j2:19
+#: talermerchantdemos/templates/blog-error.html.j2:19
+#: talermerchantdemos/templates/donations-error.html.j2:19
 #: talermerchantdemos/templates/landing-error.html.j2:8
+#: talermerchantdemos/templates/survey-error.html.j2:19
 msgid "Stack trace:"
 msgstr "Stack trace:"
 
-#: talermerchantdemos/blog/templates/footer.html.j2:5
-#: talermerchantdemos/donations/templates/footer.html.j2:5
-#: talermerchantdemos/survey/templates/footer.html.j2:5
-#: talermerchantdemos/templates/footer.html.j2:5
-msgid ""
-"You can learn more about GNU Taler on our main <a "
-"href=\"{site}\">website</a>."
-msgstr ""
-"Alles Wissenswerte zu GNU Taler gibt es auf unseren <a "
-"href=\"{site}\">Webseiten</a>."
-
-#: talermerchantdemos/blog/templates/index.html.j2:3
+#: talermerchantdemos/templates/blog-index.html.j2:3
 msgid "Essay Shop: Free Software, Free Society"
 msgstr ""
 "Die Aufsatzsammlung zu den Themen Freie Software und Freie Gesellschaft "
 "im GNU Taler Demo-Shop"
 
-#: talermerchantdemos/blog/templates/index.html.j2:5
+#: talermerchantdemos/templates/blog-index.html.j2:5
 msgid ""
 "This is the latest edition of <cite>Free Software, Free Society: Selected"
 " Essays of Richard M. Stallman.</cite>"
@@ -206,7 +215,7 @@ msgstr ""
 "Hier befindet sich die jüngste Ausgabe von Aufsätzen aus <cite>Free "
 "Software, Free Society: Selected Essays of Richard M. Stallman.</cite>"
 
-#: talermerchantdemos/blog/templates/index.html.j2:13
+#: talermerchantdemos/templates/blog-index.html.j2:13
 msgid ""
 "Verbatim copying and distribution of this entire book are permitted "
 "worldwide, without royalty, in any medium, provided this notice is "
@@ -224,90 +233,74 @@ msgstr ""
 " (genauer: Copyleft) und damit die vorliegende Erlaubnis auf allen "
 "weiteren Kopien des Werks erhalten bleibt."
 
-#: talermerchantdemos/blog/templates/index.html.j2:18
+#: talermerchantdemos/templates/blog-index.html.j2:18
 msgid "Chapters"
 msgstr "Die Aufsätze"
 
-#: talermerchantdemos/blog/templates/index.html.j2:21
+#: talermerchantdemos/templates/blog-index.html.j2:20
 msgid "Click on an individual chapter to to purchase it with GNU Taler."
 msgstr ""
 "Mit einem Klick auf einzelne Aufsätze kauft man diese in der "
 "Phantasiewährung KUDOS über das Bezahlsystem GNU Taler."
 
-#: talermerchantdemos/blog/templates/index.html.j2:22
+#: talermerchantdemos/templates/blog-index.html.j2:21
+#, fuzzy
 msgid ""
 "You can get free, virtual money to buy articles on this page at the <a "
-"href=\"{}\")\">bank</a>"
+"href=\"{}\")\">bank</a>."
 msgstr ""
 "Durch den Besuch der <a href=\"{}\")\">Bank</a> kann man veranlassen, "
 "dass neue Coins ins Wallet abgehoben werden, falls man keine KUDOS mehr "
 "haben sollte."
 
-#: talermerchantdemos/blog/templates/index.html.j2:30
+#: talermerchantdemos/templates/blog-index.html.j2:28
 msgid "Pay to read more..."
 msgstr "Nach dem Zahlen kann man hier weiterlesen..."
 
-#: talermerchantdemos/blog/templates/index.html.j2:33
+#: talermerchantdemos/templates/blog-index.html.j2:31
 msgid "No articles available in this language."
 msgstr "Es sind keine Aufsätze in dieser Sprache verfügbar."
 
-#: talermerchantdemos/blog/templates/menu.html.j2:6
-#: talermerchantdemos/donations/templates/menu.html.j2:6
-#: talermerchantdemos/survey/templates/menu.html.j2:6
-#: talermerchantdemos/templates/landing-base.html.j2:32
-#: talermerchantdemos/templates/menu.html.j2:6
+#: talermerchantdemos/templates/common-base.html.j2:20
+#, fuzzy
+msgid "GNU Taler Demo"
+msgstr "Taler Demo"
+
+#: talermerchantdemos/templates/common-base.html.j2:44
+#: talermerchantdemos/templates/landing-base.html.j2:5
 msgid "Introduction"
 msgstr "Einführung"
 
-#: talermerchantdemos/blog/templates/menu.html.j2:9
-#: talermerchantdemos/donations/templates/menu.html.j2:9
-#: talermerchantdemos/survey/templates/menu.html.j2:9
-#: talermerchantdemos/templates/menu.html.j2:9
+#: talermerchantdemos/templates/common-base.html.j2:47
 msgid "Bank"
 msgstr "Bank"
 
-#: talermerchantdemos/blog/templates/menu.html.j2:12
-#: talermerchantdemos/donations/templates/menu.html.j2:12
-#: talermerchantdemos/survey/templates/menu.html.j2:12
-#: talermerchantdemos/templates/menu.html.j2:12
+#: talermerchantdemos/templates/common-base.html.j2:50
 msgid "Essay Shop"
 msgstr "Aufsatzsammlung"
 
-#: talermerchantdemos/blog/templates/menu.html.j2:15
-#: talermerchantdemos/donations/templates/base.html.j2:32
-#: talermerchantdemos/donations/templates/menu.html.j2:15
-#: talermerchantdemos/survey/templates/menu.html.j2:15
-#: talermerchantdemos/templates/menu.html.j2:15
+#: talermerchantdemos/templates/common-base.html.j2:53
+#: talermerchantdemos/templates/donations-base.html.j2:6
 msgid "Donations"
 msgstr "Spenden"
 
-#: talermerchantdemos/blog/templates/menu.html.j2:18
-#: talermerchantdemos/donations/templates/menu.html.j2:18
-#: talermerchantdemos/survey/templates/menu.html.j2:18
-#: talermerchantdemos/templates/menu.html.j2:18
+#: talermerchantdemos/templates/common-base.html.j2:56
 msgid "Tipping/Survey"
 msgstr "Tipping/Umfrage"
 
-#: talermerchantdemos/blog/templates/menu.html.j2:21
-#: talermerchantdemos/donations/templates/menu.html.j2:21
-#: talermerchantdemos/survey/templates/menu.html.j2:21
-#: talermerchantdemos/templates/menu.html.j2:21
-msgid "Back-office"
-msgstr "Backoffice"
-
-#: talermerchantdemos/donations/donations.py:143
-msgid "parameter '{}' required"
-msgstr "Parameter '{}' erforderlich"
-
-#: talermerchantdemos/donations/templates/base.html.j2:20
-msgid "GNU Taler Demo: Donations"
-msgstr "GNU Taler Demo: Die ‚Spenden‘-Funktion"
+#: talermerchantdemos/templates/common-base.html.j2:85
+msgid ""
+"You can learn more about GNU Taler on our main <a "
+"href=\"{site}\">website</a>."
+msgstr ""
+"Alles Wissenswerte zu GNU Taler gibt es auf unseren <a "
+"href=\"{site}\">Webseiten</a>."
 
-#: talermerchantdemos/donations/templates/base.html.j2:34
+#: talermerchantdemos/templates/donations-base.html.j2:8
 msgid "This is the donation page."
 msgstr "Dies ist die Spendenseite."
 
-#: talermerchantdemos/donations/templates/base.html.j2:35
+#: talermerchantdemos/templates/donations-base.html.j2:9
 msgid ""
 "Using this page you can make donations in {currency} to Free Software "
 "projects."
@@ -315,17 +308,17 @@ msgstr ""
 "Auf dieser Seite kann man in der Phantasiewährung {currency} für Projekte"
 " mit Freier Software spenden."
 
-#: talermerchantdemos/donations/templates/checkout.html.j2:5
+#: talermerchantdemos/templates/donations-checkout.html.j2:5
 msgid "Select your payment method"
 msgstr "Bitte die Zahlungsmethode auswählen"
 
-#: talermerchantdemos/donations/templates/checkout.html.j2:9
+#: talermerchantdemos/templates/donations-checkout.html.j2:9
 msgid "This is an example for a \"checkout\" page of a Web shop."
 msgstr ""
 "Dies ist ein Beispiel für eine &quot;Kassiervorgangs&quot; -Seite eines "
 "Webshops."
 
-#: talermerchantdemos/donations/templates/checkout.html.j2:10
+#: talermerchantdemos/templates/donations-checkout.html.j2:10
 msgid ""
 "On the previous page, you have created the shopping cart and decided "
 "which product to buy (i.e. which project to donate KUDOS to)."
@@ -334,7 +327,7 @@ msgstr ""
 "entschieden, welches Produkt man kaufen möchte (hier: an welches Projekt "
 "KUDOS gespendet werden sollen)."
 
-#: talermerchantdemos/donations/templates/checkout.html.j2:11
+#: talermerchantdemos/templates/donations-checkout.html.j2:11
 msgid ""
 "As Taler is not yet universally used, we expect merchants will offer "
 "various payment options."
@@ -342,13 +335,13 @@ msgstr ""
 "Da Taler noch nicht universell einsetzbar ist, erwarten wir, dass Händler"
 " verschiedene Zahlungsoptionen anbieten."
 
-#: talermerchantdemos/donations/templates/checkout.html.j2:12
+#: talermerchantdemos/templates/donations-checkout.html.j2:12
 msgid "To continue with the demo, select the &quot;Taler&quot; payment option."
 msgstr ""
 "Um mit der Demo fortzufahren, wählen Sie die Zahlungsoption "
 "&quot;Taler&quot;."
 
-#: talermerchantdemos/donations/templates/checkout.html.j2:17
+#: talermerchantdemos/templates/donations-checkout.html.j2:17
 msgid ""
 "Note that you must select Taler here for the demo to continue, as the "
 "other payment options are just placeholders and not really working in the"
@@ -358,7 +351,7 @@ msgstr ""
 "fortgesetzt werden kann, da die anderen Zahlungsoptionen nur Platzhalter "
 "sind und in der Demonstration nicht wirklich funktionieren."
 
-#: talermerchantdemos/donations/templates/checkout.html.j2:18
+#: talermerchantdemos/templates/donations-checkout.html.j2:18
 msgid ""
 "It would be possible to ask the user to make this choice already on the "
 "previous page (with the shopping cart); we just separated the two steps "
@@ -368,15 +361,15 @@ msgstr ""
 "vorherigen Seite (mit dem Warenkorb) zu treffen. Wir haben die beiden "
 "Schritte nur getrennt, um jeden Schritt so einfach wie möglich zu halten."
 
-#: talermerchantdemos/donations/templates/checkout.html.j2:44
+#: talermerchantdemos/templates/donations-checkout.html.j2:44
 msgid "Confirm selection"
 msgstr "Auswahl bestätigen"
 
-#: talermerchantdemos/donations/templates/fulfillment.html.j2:4
+#: talermerchantdemos/templates/donations-fulfillment.html.j2:4
 msgid "Donation Receipt"
 msgstr "Spendenquittung"
 
-#: talermerchantdemos/donations/templates/fulfillment.html.j2:7
+#: talermerchantdemos/templates/donations-fulfillment.html.j2:7
 msgid ""
 "Thank you, <strong>{donor}</strong>, for donating "
 "<strong>{amount}</strong> to <strong>{receiver}</strong>."
@@ -385,7 +378,7 @@ msgstr ""
 "<strong>{amount}</strong> an <strong>{receiver}</strong> ist verbucht "
 "worden."
 
-#: talermerchantdemos/donations/templates/fulfillment.html.j2:12
+#: talermerchantdemos/templates/donations-fulfillment.html.j2:12
 msgid ""
 "Please keep the order identifier <strong>{id}</strong> as a receipt for "
 "your donation."
@@ -393,7 +386,7 @@ msgstr ""
 "Bitte die Belegnummer <strong>{id}</strong> als Quittung für die Spende "
 "aufbewahren."
 
-#: talermerchantdemos/donations/templates/fulfillment.html.j2:13
+#: talermerchantdemos/templates/donations-fulfillment.html.j2:13
 msgid ""
 "You can show other people that you donated by sharing <a "
 "href=\"{link}\">this link</a> with them."
@@ -402,15 +395,15 @@ msgstr ""
 "wurde, indem man den Empfängern <a href=\"{link\">diesen Link</a> "
 "zukommen lässt."
 
-#: talermerchantdemos/donations/templates/fulfillment.html.j2:19
+#: talermerchantdemos/templates/donations-fulfillment.html.j2:19
 msgid "You can always make <a href=\"{link}\">another donation</a>."
 msgstr "Man kann jederzeit <a href=\"{link}\">eine weitere Spende</a> 
auslösen."
 
-#: talermerchantdemos/donations/templates/index.html.j2:4
+#: talermerchantdemos/templates/donations-index.html.j2:4
 msgid "Donate to Free Software projects"
 msgstr "Spenden für Projekte, die Freie Software verwenden"
 
-#: talermerchantdemos/donations/templates/index.html.j2:8
+#: talermerchantdemos/templates/donations-index.html.j2:8
 msgid ""
 "This donations website shows the user experience for donations with GNU "
 "Taler."
@@ -419,13 +412,13 @@ msgstr ""
 "Coins in Form von Spenden mit GNU Taler. Auch Micropayments als "
 "Alternative zu Bannerwerbung würden auf die gleiche Weise gebucht."
 
-#: talermerchantdemos/donations/templates/index.html.j2:9
+#: talermerchantdemos/templates/donations-index.html.j2:9
 msgid "You can make donations in an toy currency ({currency})"
 msgstr ""
 "Die fiktiven Spenden werden hier in der Phantasiewährung {currency} "
 "ausgeführt."
 
-#: talermerchantdemos/donations/templates/index.html.j2:16
+#: talermerchantdemos/templates/donations-index.html.j2:16
 msgid ""
 "Please select a project, the amount (*) of {currency} you wish to donate,"
 " and enter the donor's name that will appear on your receipt:"
@@ -435,15 +428,15 @@ msgstr ""
 "fiktiven) Spendernamen ein, der auf der Quittung stehen soll. Zum "
 "Auslösen der Spendenbuchung klickt man auf den Button:"
 
-#: talermerchantdemos/donations/templates/index.html.j2:33
+#: talermerchantdemos/templates/donations-index.html.j2:33
 msgid "Anonymous Donor"
 msgstr "Anonymer Spender"
 
-#: talermerchantdemos/donations/templates/index.html.j2:34
+#: talermerchantdemos/templates/donations-index.html.j2:34
 msgid "Donate!"
 msgstr "Spenden!"
 
-#: talermerchantdemos/donations/templates/index.html.j2:39
+#: talermerchantdemos/templates/donations-index.html.j2:39
 msgid ""
 "(*) To make the demo a bit more interesting, the 5 {currency} option is "
 "deliberately implemented with a fault: the merchant will try to make you "
@@ -461,87 +454,25 @@ msgstr ""
 "diese ihn überprüfen kann. Die Zahlung kann dann ggf. storniert werden. "
 "Dies verhindert, dass andere Beträge als vereinbart überwiesen werden."
 
-#: talermerchantdemos/donations/templates/provider-not-supported.html.j2:4
+#: talermerchantdemos/templates/donations-provider-not-supported.html.j2:4
 msgid "Payment Provider Not Supported"
 msgstr "Dieser Zahlungsdienstleister wird nicht unterstützt"
 
-#: talermerchantdemos/donations/templates/provider-not-supported.html.j2:7
+#: talermerchantdemos/templates/donations-provider-not-supported.html.j2:7
 msgid "Unfortunately the selected payment provider is not supported in this 
demo."
 msgstr ""
 "Der gewählte Zahlungsdienst wird in dieser Demonstration nicht "
 "unterstützt."
 
-#: talermerchantdemos/donations/templates/provider-not-supported.html.j2:8
+#: talermerchantdemos/templates/donations-provider-not-supported.html.j2:8
 msgid "Please go back and select &quot;Taler&quot;."
 msgstr "Bitte einen Schritt zurückgehen und &quot;Taler&quot; auswählen."
 
-#: talermerchantdemos/httpcommon/__init__.py:24
-#: talermerchantdemos/httpcommon/__init__.py:58
-msgid "Could not establish connection to backend"
-msgstr "Es war nicht möglich, eine Verbindung zum Backend aufzubauen"
-
-#: talermerchantdemos/httpcommon/__init__.py:30
-#: talermerchantdemos/httpcommon/__init__.py:62
-msgid "Could not parse response from backend"
-msgstr "Es war nicht möglich, die Rückmeldung des Backend zu parsen"
-
-#: talermerchantdemos/httpcommon/__init__.py:36
-#: talermerchantdemos/httpcommon/__init__.py:66
-msgid "Backend returned error status"
-msgstr "Das Backend lieferte einen Fehlerstatus zurück"
-
-#: talermerchantdemos/landing/landing.py:197
-#: talermerchantdemos/survey/survey.py:179
-msgid "HTTP method not allowed for this page"
-msgstr "Die HTTP-Methode ist auf dieser Webseite nicht erlaubt"
-
-#: talermerchantdemos/survey/templates/base.html.j2:20
-msgid "GNU Taler Demo: Survey"
-msgstr "GNU Taler Demo-Seite: Tipping/Umfrage"
-
-#: talermerchantdemos/survey/templates/base.html.j2:32
-msgid "Survey"
-msgstr "Tipping/Umfrage"
-
-#: talermerchantdemos/survey/templates/base.html.j2:34
-msgid "This page demonstrates how to tip visitors for completing small tasks."
-msgstr ""
-"Auf dieser Seite zeigen wir, wie Webseiten ihre Besucher für das Erfüllen"
-" kleiner Aufgaben belohnen können."
-
-#: talermerchantdemos/survey/templates/base.html.j2:35
-msgid ""
-"Tipping is a way for offer cash rewards that go directly into a user's "
-"wallet."
-msgstr ""
-"Tipping („Trinkgeld geben“) bucht digitales Bargeld direkt in das Wallet "
-"der Webseitenbesucher."
-
-#: talermerchantdemos/survey/templates/index.html.j2:6
-msgid ""
-"Please participate in our survey about payment systems and receive a tip "
-"in return."
-msgstr ""
-"Bitte nehmen Sie zur Demonstration der Tipping-Funktion von GNU Taler an "
-"unserer Umfrage teil – Sie erhalten dafür digitales Geld als Belohnung."
-
-#: talermerchantdemos/survey/templates/index.html.j2:12
-msgid "Which payment system do you prefer?"
-msgstr "Welches Bezahlsystem bevorzugen Sie?"
-
-#: talermerchantdemos/survey/templates/index.html.j2:23
-msgid "Submit Survey"
-msgstr "Antwort abschicken"
-
-#: talermerchantdemos/templates/landing-base.html.j2:20
-msgid "GNU Taler Demo: Introduction"
-msgstr "GNU Taler Demo: Einführung"
-
-#: talermerchantdemos/templates/landing-base.html.j2:34
+#: talermerchantdemos/templates/landing-base.html.j2:7
 msgid "This is the GNU Taler demo."
 msgstr "Willkommen auf den Demo-Seiten von GNU Taler!"
 
-#: talermerchantdemos/templates/landing-base.html.j2:35
+#: talermerchantdemos/templates/landing-base.html.j2:8
 msgid "Here you can try out the GNU Taler payment system using a toy currency."
 msgstr ""
 "Auf diesen Seiten ist es möglich, die Funktionsweise des Bezahlsystems "
@@ -678,10 +609,11 @@ msgid "Step 4: Check money flow"
 msgstr "Schritt 4: Den Geldfluss nachverfolgen"
 
 #: talermerchantdemos/templates/landing-index.html.j2:59
+#, fuzzy
 msgid ""
 "You can see the wire transfers from the escrow account of the exchange to"
-" the merchants on the <a href=\"{bank}/public-accounts\">public accounts "
-"page</a> of the bank."
+" the merchants on the <a href=\"{bank}\">public accounts page</a> of the "
+"bank."
 msgstr ""
 "In den <a href=\"{bank}/public-accounts\">öffentlich sichtbaren "
 "Konten</a> der Bank sind die Überweisungen vom Treuhandkonto des Exchange"
@@ -734,6 +666,40 @@ msgstr ""
 "Sie können uns gern Ihre Ansichten zu GNU Taler <a "
 "href=\"{link}\">mitteilen</a>. Vielen Dank für Ihre Nachricht an uns."
 
+#: talermerchantdemos/templates/survey-base.html.j2:6
+msgid "Survey"
+msgstr "Tipping/Umfrage"
+
+#: talermerchantdemos/templates/survey-base.html.j2:8
+msgid "This page demonstrates how to tip visitors for completing small tasks."
+msgstr ""
+"Auf dieser Seite zeigen wir, wie Webseiten ihre Besucher für das Erfüllen"
+" kleiner Aufgaben belohnen können."
+
+#: talermerchantdemos/templates/survey-base.html.j2:9
+msgid ""
+"Tipping is a way for offer cash rewards that go directly into a user's "
+"wallet."
+msgstr ""
+"Tipping („Trinkgeld geben“) bucht digitales Bargeld direkt in das Wallet "
+"der Webseitenbesucher."
+
+#: talermerchantdemos/templates/survey-index.html.j2:6
+msgid ""
+"Please participate in our survey about payment systems and receive a tip "
+"in return."
+msgstr ""
+"Bitte nehmen Sie zur Demonstration der Tipping-Funktion von GNU Taler an "
+"unserer Umfrage teil – Sie erhalten dafür digitales Geld als Belohnung."
+
+#: talermerchantdemos/templates/survey-index.html.j2:12
+msgid "Which payment system do you prefer?"
+msgstr "Welches Bezahlsystem bevorzugen Sie?"
+
+#: talermerchantdemos/templates/survey-index.html.j2:23
+msgid "Submit Survey"
+msgstr "Antwort abschicken"
+
 #~ msgid "You did not like this article?"
 #~ msgstr ""
 
@@ -970,3 +936,21 @@ msgstr ""
 #~ msgid "Swedish [sv]"
 #~ msgstr "Schwedisch [sv]"
 
+#~ msgid "GNU Taler Demo: Essay Shop"
+#~ msgstr ""
+#~ "GNU Taler Demo Essay Shop — Die"
+#~ " Aufsatzsammlung zum Bezahlen mit GNU "
+#~ "Taler"
+
+#~ msgid "Back-office"
+#~ msgstr "Backoffice"
+
+#~ msgid "GNU Taler Demo: Donations"
+#~ msgstr "GNU Taler Demo: Die ‚Spenden‘-Funktion"
+
+#~ msgid "GNU Taler Demo: Survey"
+#~ msgstr "GNU Taler Demo-Seite: Tipping/Umfrage"
+
+#~ msgid "GNU Taler Demo: Introduction"
+#~ msgstr "GNU Taler Demo: Einführung"
+
diff --git a/translations/en/LC_MESSAGES/messages.po 
b/translations/en/LC_MESSAGES/messages.po
index 6aa7483..6f7340f 100644
--- a/translations/en/LC_MESSAGES/messages.po
+++ b/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: 2021-04-21 18:28+0200\n"
+"POT-Creation-Date: 2021-05-11 09:13+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language: en\n"
@@ -14,168 +14,178 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Generated-By: Babel 2.9.0\n"
 
-#: talermerchantdemos/blog/blog.py:114
-#: talermerchantdemos/donations/donations.py:157
-#: talermerchantdemos/landing/landing.py:117
-#: talermerchantdemos/survey/survey.py:110
+#: talermerchantdemos/blog/blog.py:126
+#: talermerchantdemos/donations/donations.py:139
+#: talermerchantdemos/landing/landing.py:93
+#: talermerchantdemos/survey/survey.py:100
 msgid "Internal error"
 msgstr ""
 
-#: talermerchantdemos/blog/blog.py:180
+#: talermerchantdemos/blog/blog.py:186
 msgid "Cannot refund unpaid article"
 msgstr ""
 
-#: talermerchantdemos/blog/blog.py:186
+#: talermerchantdemos/blog/blog.py:193
 msgid "Article is not anymore refundable"
 msgstr ""
 
-#: talermerchantdemos/blog/blog.py:217
+#: talermerchantdemos/blog/blog.py:229
 msgid "You did not pay for this article (nice try!)"
 msgstr ""
 
-#: talermerchantdemos/blog/blog.py:223
+#: talermerchantdemos/blog/blog.py:234
 msgid "Item not refundable (anymore)"
 msgstr ""
 
-#: talermerchantdemos/blog/blog.py:248
+#: talermerchantdemos/blog/blog.py:260
 msgid "Internal error: Files for article ({}) not found."
 msgstr ""
 
-#: talermerchantdemos/blog/blog.py:253
+#: talermerchantdemos/blog/blog.py:267
 msgid "Supplemental file ({}) for article ({}) not found."
 msgstr ""
 
-#: talermerchantdemos/blog/blog.py:326 talermerchantdemos/blog/blog.py:339
+#: talermerchantdemos/blog/blog.py:343 talermerchantdemos/blog/blog.py:357
 msgid "Direct access forbidden"
 msgstr ""
 
-#: talermerchantdemos/blog/blog.py:405
+#: talermerchantdemos/blog/blog.py:413
 msgid "Internal server error"
 msgstr ""
 
-#: talermerchantdemos/blog/blog.py:412
-#: talermerchantdemos/donations/donations.py:323
-#: talermerchantdemos/landing/landing.py:189
-#: talermerchantdemos/survey/survey.py:171
+#: talermerchantdemos/blog/blog.py:421
+#: talermerchantdemos/donations/donations.py:282
+#: talermerchantdemos/landing/landing.py:166
+#: talermerchantdemos/survey/survey.py:167
 msgid "Page not found"
 msgstr ""
 
-#: talermerchantdemos/blog/templates/article_frame.html.j2:9
+#: talermerchantdemos/donations/donations.py:125
+msgid "parameter '{}' required"
+msgstr ""
+
+#: talermerchantdemos/httpcommon/__init__.py:48
+#: talermerchantdemos/httpcommon/__init__.py:84
+msgid "Could not establish connection to backend"
+msgstr ""
+
+#: talermerchantdemos/httpcommon/__init__.py:54
+#: talermerchantdemos/httpcommon/__init__.py:89
+msgid "Could not parse response from backend"
+msgstr ""
+
+#: talermerchantdemos/httpcommon/__init__.py:59
+#: talermerchantdemos/httpcommon/__init__.py:92
+msgid "Backend returned error status"
+msgstr ""
+
+#: talermerchantdemos/landing/landing.py:174
+#: talermerchantdemos/survey/survey.py:175
+msgid "HTTP method not allowed for this page"
+msgstr ""
+
+#: talermerchantdemos/templates/blog-article-frame.html.j2:11
+#: talermerchantdemos/templates/blog-article-frame.html.j2:16
 msgid "Taler allows merchants to offer refunds to customers."
 msgstr ""
 
-#: talermerchantdemos/blog/templates/article_frame.html.j2:10
+#: talermerchantdemos/templates/blog-article-frame.html.j2:12
 msgid ""
 "You can <a href=\"{url}\">request a refund</a> within the first hour "
 "after buying this article."
 msgstr ""
 
-#: talermerchantdemos/blog/templates/base.html.j2:23
-msgid "GNU Taler Demo: Essay Shop"
+#: talermerchantdemos/templates/blog-article-frame.html.j2:17
+msgid "This article can't be refunded anymore."
 msgstr ""
 
-#: talermerchantdemos/blog/templates/base.html.j2:34
-#: talermerchantdemos/donations/templates/base.html.j2:31
-#: talermerchantdemos/survey/templates/base.html.j2:31
-msgid "Taler Demo"
-msgstr ""
-
-#: talermerchantdemos/blog/templates/base.html.j2:35
+#: talermerchantdemos/templates/blog-base.html.j2:9
 msgid "Essay shop"
 msgstr ""
 
-#: talermerchantdemos/blog/templates/base.html.j2:37
+#: talermerchantdemos/templates/blog-base.html.j2:11
 msgid "On this page you can buy articles using an imaginary currency."
 msgstr ""
 
-#: talermerchantdemos/blog/templates/base.html.j2:38
+#: talermerchantdemos/templates/blog-base.html.j2:12
 msgid ""
 "The articles are chapters from Richard Stallman's book &quot;Free "
 "Software, Free Society&quot;."
 msgstr ""
 
-#: talermerchantdemos/blog/templates/base.html.j2:39
+#: talermerchantdemos/templates/blog-base.html.j2:13
 msgid ""
 "The book is <a href=\"{shop}\">published by the FSF</a> and available "
 "gratis at <a href=\"{gnu}\">gnu.org</a>."
 msgstr ""
 
-#: talermerchantdemos/blog/templates/confirm_refund.html.j2:3
+#: talermerchantdemos/templates/blog-confirm-refund.html.j2:3
 msgid "Confirm refund request for article"
 msgstr ""
 
-#: talermerchantdemos/blog/templates/confirm_refund.html.j2:7
+#: talermerchantdemos/templates/blog-confirm-refund.html.j2:7
 msgid "Do you want to get a refund for the article <em>{name}</em>?"
 msgstr ""
 
-#: talermerchantdemos/blog/templates/confirm_refund.html.j2:8
+#: talermerchantdemos/templates/blog-confirm-refund.html.j2:8
 msgid ""
 "In this demonstration, refunds will be automatically approved by the "
 "merchant."
 msgstr ""
 
-#: talermerchantdemos/blog/templates/confirm_refund.html.j2:9
+#: talermerchantdemos/templates/blog-confirm-refund.html.j2:9
 msgid ""
 "After you have obtained a refund, you will not be able to read the "
 "article anymore."
 msgstr ""
 
-#: talermerchantdemos/blog/templates/confirm_refund.html.j2:15
+#: talermerchantdemos/templates/blog-confirm-refund.html.j2:15
 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 ""
 
-#: talermerchantdemos/blog/templates/confirm_refund.html.j2:21
+#: talermerchantdemos/templates/blog-confirm-refund.html.j2:21
 msgid "Request refund"
 msgstr ""
 
-#: talermerchantdemos/blog/templates/error.html.j2:3
-#: talermerchantdemos/donations/templates/error.html.j2:3
-#: talermerchantdemos/survey/templates/error.html.j2:3
+#: talermerchantdemos/templates/blog-error.html.j2:3
+#: talermerchantdemos/templates/donations-error.html.j2:3
 #: talermerchantdemos/templates/landing-error.html.j2:3
+#: talermerchantdemos/templates/survey-error.html.j2:3
 msgid "Error encountered"
 msgstr ""
 
-#: talermerchantdemos/blog/templates/error.html.j2:9
-#: talermerchantdemos/donations/templates/error.html.j2:9
-#: talermerchantdemos/survey/templates/error.html.j2:9
+#: talermerchantdemos/templates/blog-error.html.j2:9
+#: talermerchantdemos/templates/donations-error.html.j2:9
+#: talermerchantdemos/templates/survey-error.html.j2:9
 msgid "The backend returned status code {code}."
 msgstr ""
 
-#: talermerchantdemos/blog/templates/error.html.j2:14
-#: talermerchantdemos/donations/templates/error.html.j2:14
-#: talermerchantdemos/survey/templates/error.html.j2:14
+#: talermerchantdemos/templates/blog-error.html.j2:14
+#: talermerchantdemos/templates/donations-error.html.j2:14
+#: talermerchantdemos/templates/survey-error.html.j2:14
 msgid "Backend response:"
 msgstr ""
 
-#: talermerchantdemos/blog/templates/error.html.j2:19
-#: talermerchantdemos/donations/templates/error.html.j2:19
-#: talermerchantdemos/survey/templates/error.html.j2:19
+#: talermerchantdemos/templates/blog-error.html.j2:19
+#: talermerchantdemos/templates/donations-error.html.j2:19
 #: talermerchantdemos/templates/landing-error.html.j2:8
+#: talermerchantdemos/templates/survey-error.html.j2:19
 msgid "Stack trace:"
 msgstr ""
 
-#: talermerchantdemos/blog/templates/footer.html.j2:5
-#: talermerchantdemos/donations/templates/footer.html.j2:5
-#: talermerchantdemos/survey/templates/footer.html.j2:5
-#: talermerchantdemos/templates/footer.html.j2:5
-msgid ""
-"You can learn more about GNU Taler on our main <a "
-"href=\"{site}\">website</a>."
-msgstr ""
-
-#: talermerchantdemos/blog/templates/index.html.j2:3
+#: talermerchantdemos/templates/blog-index.html.j2:3
 msgid "Essay Shop: Free Software, Free Society"
 msgstr ""
 
-#: talermerchantdemos/blog/templates/index.html.j2:5
+#: talermerchantdemos/templates/blog-index.html.j2:5
 msgid ""
 "This is the latest edition of <cite>Free Software, Free Society: Selected"
 " Essays of Richard M. Stallman.</cite>"
 msgstr ""
 
-#: talermerchantdemos/blog/templates/index.html.j2:13
+#: talermerchantdemos/templates/blog-index.html.j2:13
 msgid ""
 "Verbatim copying and distribution of this entire book are permitted "
 "worldwide, without royalty, in any medium, provided this notice is "
@@ -185,187 +195,167 @@ msgid ""
 "copyright notice and this permission notice are preserved on all copies."
 msgstr ""
 
-#: talermerchantdemos/blog/templates/index.html.j2:18
+#: talermerchantdemos/templates/blog-index.html.j2:18
 msgid "Chapters"
 msgstr ""
 
-#: talermerchantdemos/blog/templates/index.html.j2:21
+#: talermerchantdemos/templates/blog-index.html.j2:20
 msgid "Click on an individual chapter to to purchase it with GNU Taler."
 msgstr ""
 
-#: talermerchantdemos/blog/templates/index.html.j2:22
+#: talermerchantdemos/templates/blog-index.html.j2:21
 msgid ""
 "You can get free, virtual money to buy articles on this page at the <a "
-"href=\"{}\")\">bank</a>"
+"href=\"{}\")\">bank</a>."
 msgstr ""
 
-#: talermerchantdemos/blog/templates/index.html.j2:30
+#: talermerchantdemos/templates/blog-index.html.j2:28
 msgid "Pay to read more..."
 msgstr ""
 
-#: talermerchantdemos/blog/templates/index.html.j2:33
+#: talermerchantdemos/templates/blog-index.html.j2:31
 msgid "No articles available in this language."
 msgstr ""
 
-#: talermerchantdemos/blog/templates/menu.html.j2:6
-#: talermerchantdemos/donations/templates/menu.html.j2:6
-#: talermerchantdemos/survey/templates/menu.html.j2:6
-#: talermerchantdemos/templates/landing-base.html.j2:32
-#: talermerchantdemos/templates/menu.html.j2:6
+#: talermerchantdemos/templates/common-base.html.j2:20
+msgid "GNU Taler Demo"
+msgstr ""
+
+#: talermerchantdemos/templates/common-base.html.j2:44
+#: talermerchantdemos/templates/landing-base.html.j2:5
 msgid "Introduction"
 msgstr ""
 
-#: talermerchantdemos/blog/templates/menu.html.j2:9
-#: talermerchantdemos/donations/templates/menu.html.j2:9
-#: talermerchantdemos/survey/templates/menu.html.j2:9
-#: talermerchantdemos/templates/menu.html.j2:9
+#: talermerchantdemos/templates/common-base.html.j2:47
 msgid "Bank"
 msgstr ""
 
-#: talermerchantdemos/blog/templates/menu.html.j2:12
-#: talermerchantdemos/donations/templates/menu.html.j2:12
-#: talermerchantdemos/survey/templates/menu.html.j2:12
-#: talermerchantdemos/templates/menu.html.j2:12
+#: talermerchantdemos/templates/common-base.html.j2:50
 msgid "Essay Shop"
 msgstr ""
 
-#: talermerchantdemos/blog/templates/menu.html.j2:15
-#: talermerchantdemos/donations/templates/base.html.j2:32
-#: talermerchantdemos/donations/templates/menu.html.j2:15
-#: talermerchantdemos/survey/templates/menu.html.j2:15
-#: talermerchantdemos/templates/menu.html.j2:15
+#: talermerchantdemos/templates/common-base.html.j2:53
+#: talermerchantdemos/templates/donations-base.html.j2:6
 msgid "Donations"
 msgstr ""
 
-#: talermerchantdemos/blog/templates/menu.html.j2:18
-#: talermerchantdemos/donations/templates/menu.html.j2:18
-#: talermerchantdemos/survey/templates/menu.html.j2:18
-#: talermerchantdemos/templates/menu.html.j2:18
+#: talermerchantdemos/templates/common-base.html.j2:56
 msgid "Tipping/Survey"
 msgstr ""
 
-#: talermerchantdemos/blog/templates/menu.html.j2:21
-#: talermerchantdemos/donations/templates/menu.html.j2:21
-#: talermerchantdemos/survey/templates/menu.html.j2:21
-#: talermerchantdemos/templates/menu.html.j2:21
-msgid "Back-office"
-msgstr ""
-
-#: talermerchantdemos/donations/donations.py:143
-msgid "parameter '{}' required"
-msgstr ""
-
-#: talermerchantdemos/donations/templates/base.html.j2:20
-msgid "GNU Taler Demo: Donations"
+#: talermerchantdemos/templates/common-base.html.j2:85
+msgid ""
+"You can learn more about GNU Taler on our main <a "
+"href=\"{site}\">website</a>."
 msgstr ""
 
-#: talermerchantdemos/donations/templates/base.html.j2:34
+#: talermerchantdemos/templates/donations-base.html.j2:8
 msgid "This is the donation page."
 msgstr ""
 
-#: talermerchantdemos/donations/templates/base.html.j2:35
+#: talermerchantdemos/templates/donations-base.html.j2:9
 msgid ""
 "Using this page you can make donations in {currency} to Free Software "
 "projects."
 msgstr ""
 
-#: talermerchantdemos/donations/templates/checkout.html.j2:5
+#: talermerchantdemos/templates/donations-checkout.html.j2:5
 msgid "Select your payment method"
 msgstr ""
 
-#: talermerchantdemos/donations/templates/checkout.html.j2:9
+#: talermerchantdemos/templates/donations-checkout.html.j2:9
 msgid "This is an example for a \"checkout\" page of a Web shop."
 msgstr ""
 
-#: talermerchantdemos/donations/templates/checkout.html.j2:10
+#: talermerchantdemos/templates/donations-checkout.html.j2:10
 msgid ""
 "On the previous page, you have created the shopping cart and decided "
 "which product to buy (i.e. which project to donate KUDOS to)."
 msgstr ""
 
-#: talermerchantdemos/donations/templates/checkout.html.j2:11
+#: talermerchantdemos/templates/donations-checkout.html.j2:11
 msgid ""
 "As Taler is not yet universally used, we expect merchants will offer "
 "various payment options."
 msgstr ""
 
-#: talermerchantdemos/donations/templates/checkout.html.j2:12
+#: talermerchantdemos/templates/donations-checkout.html.j2:12
 msgid "To continue with the demo, select the &quot;Taler&quot; payment option."
 msgstr ""
 
-#: talermerchantdemos/donations/templates/checkout.html.j2:17
+#: talermerchantdemos/templates/donations-checkout.html.j2:17
 msgid ""
 "Note that you must select Taler here for the demo to continue, as the "
 "other payment options are just placeholders and not really working in the"
 " demonstration."
 msgstr ""
 
-#: talermerchantdemos/donations/templates/checkout.html.j2:18
+#: talermerchantdemos/templates/donations-checkout.html.j2:18
 msgid ""
 "It would be possible to ask the user to make this choice already on the "
 "previous page (with the shopping cart); we just separated the two steps "
 "to keep each step as simple as possible."
 msgstr ""
 
-#: talermerchantdemos/donations/templates/checkout.html.j2:44
+#: talermerchantdemos/templates/donations-checkout.html.j2:44
 msgid "Confirm selection"
 msgstr ""
 
-#: talermerchantdemos/donations/templates/fulfillment.html.j2:4
+#: talermerchantdemos/templates/donations-fulfillment.html.j2:4
 msgid "Donation Receipt"
 msgstr ""
 
-#: talermerchantdemos/donations/templates/fulfillment.html.j2:7
+#: talermerchantdemos/templates/donations-fulfillment.html.j2:7
 msgid ""
 "Thank you, <strong>{donor}</strong>, for donating "
 "<strong>{amount}</strong> to <strong>{receiver}</strong>."
 msgstr ""
 
-#: talermerchantdemos/donations/templates/fulfillment.html.j2:12
+#: talermerchantdemos/templates/donations-fulfillment.html.j2:12
 msgid ""
 "Please keep the order identifier <strong>{id}</strong> as a receipt for "
 "your donation."
 msgstr ""
 
-#: talermerchantdemos/donations/templates/fulfillment.html.j2:13
+#: talermerchantdemos/templates/donations-fulfillment.html.j2:13
 msgid ""
 "You can show other people that you donated by sharing <a "
 "href=\"{link}\">this link</a> with them."
 msgstr ""
 
-#: talermerchantdemos/donations/templates/fulfillment.html.j2:19
+#: talermerchantdemos/templates/donations-fulfillment.html.j2:19
 msgid "You can always make <a href=\"{link}\">another donation</a>."
 msgstr ""
 
-#: talermerchantdemos/donations/templates/index.html.j2:4
+#: talermerchantdemos/templates/donations-index.html.j2:4
 msgid "Donate to Free Software projects"
 msgstr ""
 
-#: talermerchantdemos/donations/templates/index.html.j2:8
+#: talermerchantdemos/templates/donations-index.html.j2:8
 msgid ""
 "This donations website shows the user experience for donations with GNU "
 "Taler."
 msgstr ""
 
-#: talermerchantdemos/donations/templates/index.html.j2:9
+#: talermerchantdemos/templates/donations-index.html.j2:9
 msgid "You can make donations in an toy currency ({currency})"
 msgstr ""
 
-#: talermerchantdemos/donations/templates/index.html.j2:16
+#: talermerchantdemos/templates/donations-index.html.j2:16
 msgid ""
 "Please select a project, the amount (*) of {currency} you wish to donate,"
 " and enter the donor's name that will appear on your receipt:"
 msgstr ""
 
-#: talermerchantdemos/donations/templates/index.html.j2:33
+#: talermerchantdemos/templates/donations-index.html.j2:33
 msgid "Anonymous Donor"
 msgstr ""
 
-#: talermerchantdemos/donations/templates/index.html.j2:34
+#: talermerchantdemos/templates/donations-index.html.j2:34
 msgid "Donate!"
 msgstr ""
 
-#: talermerchantdemos/donations/templates/index.html.j2:39
+#: talermerchantdemos/templates/donations-index.html.j2:39
 msgid ""
 "(*) To make the demo a bit more interesting, the 5 {currency} option is "
 "deliberately implemented with a fault: the merchant will try to make you "
@@ -375,79 +365,23 @@ msgid ""
 "from committing to erroneous payments."
 msgstr ""
 
-#: talermerchantdemos/donations/templates/provider-not-supported.html.j2:4
+#: talermerchantdemos/templates/donations-provider-not-supported.html.j2:4
 msgid "Payment Provider Not Supported"
 msgstr ""
 
-#: talermerchantdemos/donations/templates/provider-not-supported.html.j2:7
+#: talermerchantdemos/templates/donations-provider-not-supported.html.j2:7
 msgid "Unfortunately the selected payment provider is not supported in this 
demo."
 msgstr ""
 
-#: talermerchantdemos/donations/templates/provider-not-supported.html.j2:8
+#: talermerchantdemos/templates/donations-provider-not-supported.html.j2:8
 msgid "Please go back and select &quot;Taler&quot;."
 msgstr ""
 
-#: talermerchantdemos/httpcommon/__init__.py:24
-#: talermerchantdemos/httpcommon/__init__.py:58
-msgid "Could not establish connection to backend"
-msgstr ""
-
-#: talermerchantdemos/httpcommon/__init__.py:30
-#: talermerchantdemos/httpcommon/__init__.py:62
-msgid "Could not parse response from backend"
-msgstr ""
-
-#: talermerchantdemos/httpcommon/__init__.py:36
-#: talermerchantdemos/httpcommon/__init__.py:66
-msgid "Backend returned error status"
-msgstr ""
-
-#: talermerchantdemos/landing/landing.py:197
-#: talermerchantdemos/survey/survey.py:179
-msgid "HTTP method not allowed for this page"
-msgstr ""
-
-#: talermerchantdemos/survey/templates/base.html.j2:20
-msgid "GNU Taler Demo: Survey"
-msgstr ""
-
-#: talermerchantdemos/survey/templates/base.html.j2:32
-msgid "Survey"
-msgstr ""
-
-#: talermerchantdemos/survey/templates/base.html.j2:34
-msgid "This page demonstrates how to tip visitors for completing small tasks."
-msgstr ""
-
-#: talermerchantdemos/survey/templates/base.html.j2:35
-msgid ""
-"Tipping is a way for offer cash rewards that go directly into a user's "
-"wallet."
-msgstr ""
-
-#: talermerchantdemos/survey/templates/index.html.j2:6
-msgid ""
-"Please participate in our survey about payment systems and receive a tip "
-"in return."
-msgstr ""
-
-#: talermerchantdemos/survey/templates/index.html.j2:12
-msgid "Which payment system do you prefer?"
-msgstr ""
-
-#: talermerchantdemos/survey/templates/index.html.j2:23
-msgid "Submit Survey"
-msgstr ""
-
-#: talermerchantdemos/templates/landing-base.html.j2:20
-msgid "GNU Taler Demo: Introduction"
-msgstr ""
-
-#: talermerchantdemos/templates/landing-base.html.j2:34
+#: talermerchantdemos/templates/landing-base.html.j2:7
 msgid "This is the GNU Taler demo."
 msgstr ""
 
-#: talermerchantdemos/templates/landing-base.html.j2:35
+#: talermerchantdemos/templates/landing-base.html.j2:8
 msgid "Here you can try out the GNU Taler payment system using a toy currency."
 msgstr ""
 
@@ -551,8 +485,8 @@ msgstr ""
 #: talermerchantdemos/templates/landing-index.html.j2:59
 msgid ""
 "You can see the wire transfers from the escrow account of the exchange to"
-" the merchants on the <a href=\"{bank}/public-accounts\">public accounts "
-"page</a> of the bank."
+" the merchants on the <a href=\"{bank}\">public accounts page</a> of the "
+"bank."
 msgstr ""
 
 #: talermerchantdemos/templates/landing-index.html.j2:60
@@ -587,6 +521,34 @@ msgstr ""
 msgid "Let us know what you think by <a href=\"{link}\">contacting us</a>."
 msgstr ""
 
+#: talermerchantdemos/templates/survey-base.html.j2:6
+msgid "Survey"
+msgstr ""
+
+#: talermerchantdemos/templates/survey-base.html.j2:8
+msgid "This page demonstrates how to tip visitors for completing small tasks."
+msgstr ""
+
+#: talermerchantdemos/templates/survey-base.html.j2:9
+msgid ""
+"Tipping is a way for offer cash rewards that go directly into a user's "
+"wallet."
+msgstr ""
+
+#: talermerchantdemos/templates/survey-index.html.j2:6
+msgid ""
+"Please participate in our survey about payment systems and receive a tip "
+"in return."
+msgstr ""
+
+#: talermerchantdemos/templates/survey-index.html.j2:12
+msgid "Which payment system do you prefer?"
+msgstr ""
+
+#: talermerchantdemos/templates/survey-index.html.j2:23
+msgid "Submit Survey"
+msgstr ""
+
 #~ msgid "GNU Taler"
 #~ msgstr ""
 
@@ -1880,3 +1842,35 @@ msgstr ""
 #~ msgid "Wallets for other browsers will be provided in the near future."
 #~ msgstr ""
 
+#~ msgid "GNU Taler Demo: Essay Shop"
+#~ msgstr ""
+
+#~ msgid "Taler Demo"
+#~ msgstr ""
+
+#~ msgid ""
+#~ "You can get free, virtual money to"
+#~ " buy articles on this page at "
+#~ "the <a href=\"{}\")\">bank</a>"
+#~ msgstr ""
+
+#~ msgid "Back-office"
+#~ msgstr ""
+
+#~ msgid "GNU Taler Demo: Donations"
+#~ msgstr ""
+
+#~ msgid "GNU Taler Demo: Survey"
+#~ msgstr ""
+
+#~ msgid "GNU Taler Demo: Introduction"
+#~ msgstr ""
+
+#~ msgid ""
+#~ "You can see the wire transfers "
+#~ "from the escrow account of the "
+#~ "exchange to the merchants on the "
+#~ "<a href=\"{bank}/public-accounts\">public accounts"
+#~ " page</a> of the bank."
+#~ msgstr ""
+
diff --git a/translations/es/LC_MESSAGES/messages.po 
b/translations/es/LC_MESSAGES/messages.po
index ccae7bb..d9c1c1c 100644
--- a/translations/es/LC_MESSAGES/messages.po
+++ b/translations/es/LC_MESSAGES/messages.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PROJECT VERSION\n"
 "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2021-04-21 18:28+0200\n"
+"POT-Creation-Date: 2021-05-11 09:13+0200\n"
 "PO-Revision-Date: 2021-03-10 07:12+0000\n"
 "Last-Translator: Paulina Teran <pau_teran@hotmail.com>\n"
 "Language: es\n"
@@ -19,57 +19,82 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Generated-By: Babel 2.9.0\n"
 
-#: talermerchantdemos/blog/blog.py:114
-#: talermerchantdemos/donations/donations.py:157
-#: talermerchantdemos/landing/landing.py:117
-#: talermerchantdemos/survey/survey.py:110
+#: talermerchantdemos/blog/blog.py:126
+#: talermerchantdemos/donations/donations.py:139
+#: talermerchantdemos/landing/landing.py:93
+#: talermerchantdemos/survey/survey.py:100
 msgid "Internal error"
 msgstr "Error interno"
 
-#: talermerchantdemos/blog/blog.py:180
+#: talermerchantdemos/blog/blog.py:186
 msgid "Cannot refund unpaid article"
 msgstr "No se puede realizar el reembolso de un artículo no pagado"
 
-#: talermerchantdemos/blog/blog.py:186
+#: talermerchantdemos/blog/blog.py:193
 msgid "Article is not anymore refundable"
 msgstr "El artículo ya no es reembolsable"
 
-#: talermerchantdemos/blog/blog.py:217
+#: talermerchantdemos/blog/blog.py:229
 msgid "You did not pay for this article (nice try!)"
 msgstr "No has pagado por este artículo (¡buen intento!)"
 
-#: talermerchantdemos/blog/blog.py:223
+#: talermerchantdemos/blog/blog.py:234
 msgid "Item not refundable (anymore)"
 msgstr "Artículo no reembolsable"
 
-#: talermerchantdemos/blog/blog.py:248
+#: talermerchantdemos/blog/blog.py:260
 msgid "Internal error: Files for article ({}) not found."
 msgstr "Error interno: Archivos para el artículo ({}) no encontrados."
 
-#: talermerchantdemos/blog/blog.py:253
+#: talermerchantdemos/blog/blog.py:267
 msgid "Supplemental file ({}) for article ({}) not found."
 msgstr "Archivo complementario ({}) para el artículo ({}) no encontrado."
 
-#: talermerchantdemos/blog/blog.py:326 talermerchantdemos/blog/blog.py:339
+#: talermerchantdemos/blog/blog.py:343 talermerchantdemos/blog/blog.py:357
 msgid "Direct access forbidden"
 msgstr "Acceso directo prohibido"
 
-#: talermerchantdemos/blog/blog.py:405
+#: talermerchantdemos/blog/blog.py:413
 msgid "Internal server error"
 msgstr "Error interno de servidor"
 
-#: talermerchantdemos/blog/blog.py:412
-#: talermerchantdemos/donations/donations.py:323
-#: talermerchantdemos/landing/landing.py:189
-#: talermerchantdemos/survey/survey.py:171
+#: talermerchantdemos/blog/blog.py:421
+#: talermerchantdemos/donations/donations.py:282
+#: talermerchantdemos/landing/landing.py:166
+#: talermerchantdemos/survey/survey.py:167
 msgid "Page not found"
 msgstr "Página no encontrada"
 
-#: talermerchantdemos/blog/templates/article_frame.html.j2:9
+#: talermerchantdemos/donations/donations.py:125
+msgid "parameter '{}' required"
+msgstr "parámetro '{}' requerido"
+
+#: talermerchantdemos/httpcommon/__init__.py:48
+#: talermerchantdemos/httpcommon/__init__.py:84
+msgid "Could not establish connection to backend"
+msgstr "No se puede establecer la conexión con el backend"
+
+#: talermerchantdemos/httpcommon/__init__.py:54
+#: talermerchantdemos/httpcommon/__init__.py:89
+msgid "Could not parse response from backend"
+msgstr "No se puede analizar la respuesta del backend"
+
+#: talermerchantdemos/httpcommon/__init__.py:59
+#: talermerchantdemos/httpcommon/__init__.py:92
+msgid "Backend returned error status"
+msgstr "El backend ha retornado un estado de error"
+
+#: talermerchantdemos/landing/landing.py:174
+#: talermerchantdemos/survey/survey.py:175
+msgid "HTTP method not allowed for this page"
+msgstr "El método HTTP no está permitido para esta página"
+
+#: talermerchantdemos/templates/blog-article-frame.html.j2:11
+#: talermerchantdemos/templates/blog-article-frame.html.j2:16
 msgid "Taler allows merchants to offer refunds to customers."
 msgstr "Taler permite a los comerciantes ofrecer reembolsos a sus clientes."
 
-#: talermerchantdemos/blog/templates/article_frame.html.j2:10
+#: talermerchantdemos/templates/blog-article-frame.html.j2:12
 msgid ""
 "You can <a href=\"{url}\">request a refund</a> within the first hour "
 "after buying this article."
@@ -77,25 +102,20 @@ msgstr ""
 "Puedes <a href=\"{url}\">solicitar un reembolso </a> durante la primera "
 "hora posterior a comprar este artículo."
 
-#: talermerchantdemos/blog/templates/base.html.j2:23
-msgid "GNU Taler Demo: Essay Shop"
-msgstr "Demostración de GNU Taler : Tienda de Pruebas"
-
-#: talermerchantdemos/blog/templates/base.html.j2:34
-#: talermerchantdemos/donations/templates/base.html.j2:31
-#: talermerchantdemos/survey/templates/base.html.j2:31
-msgid "Taler Demo"
-msgstr "Taler Demo"
+#: talermerchantdemos/templates/blog-article-frame.html.j2:17
+#, fuzzy
+msgid "This article can't be refunded anymore."
+msgstr "Artículo no reembolsable"
 
-#: talermerchantdemos/blog/templates/base.html.j2:35
+#: talermerchantdemos/templates/blog-base.html.j2:9
 msgid "Essay shop"
 msgstr "Tienda de Pruebas"
 
-#: talermerchantdemos/blog/templates/base.html.j2:37
+#: talermerchantdemos/templates/blog-base.html.j2:11
 msgid "On this page you can buy articles using an imaginary currency."
 msgstr "En esta página puedes comprar artículos usando un divisa imaginaria."
 
-#: talermerchantdemos/blog/templates/base.html.j2:38
+#: talermerchantdemos/templates/blog-base.html.j2:12
 msgid ""
 "The articles are chapters from Richard Stallman's book &quot;Free "
 "Software, Free Society&quot;."
@@ -103,7 +123,7 @@ msgstr ""
 "Los artículos son capítulos del libro de Richard Stallman &quot;Software "
 "Libre, Sociedad Libre&quot;."
 
-#: talermerchantdemos/blog/templates/base.html.j2:39
+#: talermerchantdemos/templates/blog-base.html.j2:13
 msgid ""
 "The book is <a href=\"{shop}\">published by the FSF</a> and available "
 "gratis at <a href=\"{gnu}\">gnu.org</a>."
@@ -111,27 +131,27 @@ msgstr ""
 "Este libro fue <a href=\"{shop}\">publicado por la FSF</a> y está "
 "disponible gratuitamente en <a href=\"{gnu}\">gnu.org</a>."
 
-#: talermerchantdemos/blog/templates/confirm_refund.html.j2:3
+#: talermerchantdemos/templates/blog-confirm-refund.html.j2:3
 msgid "Confirm refund request for article"
 msgstr "Confirmar la solicitud de reembolso del artículo"
 
-#: talermerchantdemos/blog/templates/confirm_refund.html.j2:7
+#: talermerchantdemos/templates/blog-confirm-refund.html.j2:7
 msgid "Do you want to get a refund for the article <em>{name}</em>?"
 msgstr "¿Quieres pedir el reembolso del artículo <em>{name}</em>?"
 
-#: talermerchantdemos/blog/templates/confirm_refund.html.j2:8
+#: talermerchantdemos/templates/blog-confirm-refund.html.j2:8
 msgid ""
 "In this demonstration, refunds will be automatically approved by the "
 "merchant."
 msgstr "En esta muestra, los reembolsos serán aprobados por los vendedores."
 
-#: talermerchantdemos/blog/templates/confirm_refund.html.j2:9
+#: talermerchantdemos/templates/blog-confirm-refund.html.j2:9
 msgid ""
 "After you have obtained a refund, you will not be able to read the "
 "article anymore."
 msgstr "Después de conseguir el reembolso, ya no será posible leer el 
artículo."
 
-#: talermerchantdemos/blog/templates/confirm_refund.html.j2:15
+#: talermerchantdemos/templates/blog-confirm-refund.html.j2:15
 msgid ""
 "You will only be able to receive the refund on the same wallet that you "
 "have used to pay for this article originally."
@@ -139,52 +159,41 @@ msgstr ""
 "Solo será posible conseguir el reembolso en la misma cartera utilizada en"
 " principio para pagar."
 
-#: talermerchantdemos/blog/templates/confirm_refund.html.j2:21
+#: talermerchantdemos/templates/blog-confirm-refund.html.j2:21
 msgid "Request refund"
 msgstr "Solicitud de reembolso"
 
-#: talermerchantdemos/blog/templates/error.html.j2:3
-#: talermerchantdemos/donations/templates/error.html.j2:3
-#: talermerchantdemos/survey/templates/error.html.j2:3
+#: talermerchantdemos/templates/blog-error.html.j2:3
+#: talermerchantdemos/templates/donations-error.html.j2:3
 #: talermerchantdemos/templates/landing-error.html.j2:3
+#: talermerchantdemos/templates/survey-error.html.j2:3
 msgid "Error encountered"
 msgstr "Error encontrado"
 
-#: talermerchantdemos/blog/templates/error.html.j2:9
-#: talermerchantdemos/donations/templates/error.html.j2:9
-#: talermerchantdemos/survey/templates/error.html.j2:9
+#: talermerchantdemos/templates/blog-error.html.j2:9
+#: talermerchantdemos/templates/donations-error.html.j2:9
+#: talermerchantdemos/templates/survey-error.html.j2:9
 msgid "The backend returned status code {code}."
 msgstr "El backend ha devuelto un código de estado {code}."
 
-#: talermerchantdemos/blog/templates/error.html.j2:14
-#: talermerchantdemos/donations/templates/error.html.j2:14
-#: talermerchantdemos/survey/templates/error.html.j2:14
+#: talermerchantdemos/templates/blog-error.html.j2:14
+#: talermerchantdemos/templates/donations-error.html.j2:14
+#: talermerchantdemos/templates/survey-error.html.j2:14
 msgid "Backend response:"
 msgstr "Respuesta backend:"
 
-#: talermerchantdemos/blog/templates/error.html.j2:19
-#: talermerchantdemos/donations/templates/error.html.j2:19
-#: talermerchantdemos/survey/templates/error.html.j2:19
+#: talermerchantdemos/templates/blog-error.html.j2:19
+#: talermerchantdemos/templates/donations-error.html.j2:19
 #: talermerchantdemos/templates/landing-error.html.j2:8
+#: talermerchantdemos/templates/survey-error.html.j2:19
 msgid "Stack trace:"
 msgstr "Seguimiento de Pila"
 
-#: talermerchantdemos/blog/templates/footer.html.j2:5
-#: talermerchantdemos/donations/templates/footer.html.j2:5
-#: talermerchantdemos/survey/templates/footer.html.j2:5
-#: talermerchantdemos/templates/footer.html.j2:5
-msgid ""
-"You can learn more about GNU Taler on our main <a "
-"href=\"{site}\">website</a>."
-msgstr ""
-"Puedes entender más sobre GNU Taler en nuestra <a href=\"{site}\">página "
-"</a> principal."
-
-#: talermerchantdemos/blog/templates/index.html.j2:3
+#: talermerchantdemos/templates/blog-index.html.j2:3
 msgid "Essay Shop: Free Software, Free Society"
 msgstr "Tienda de pruebas : Software Libre para una Sociedad Libre"
 
-#: talermerchantdemos/blog/templates/index.html.j2:5
+#: talermerchantdemos/templates/blog-index.html.j2:5
 msgid ""
 "This is the latest edition of <cite>Free Software, Free Society: Selected"
 " Essays of Richard M. Stallman.</cite>"
@@ -192,7 +201,7 @@ msgstr ""
 "Esta es la última edición <cite>Software Libre para una Sociedad Libre: "
 "Ensayos seleccionados de Richard M. Stallman.</cite>"
 
-#: talermerchantdemos/blog/templates/index.html.j2:13
+#: talermerchantdemos/templates/blog-index.html.j2:13
 msgid ""
 "Verbatim copying and distribution of this entire book are permitted "
 "worldwide, without royalty, in any medium, provided this notice is "
@@ -209,87 +218,71 @@ msgstr ""
 "Software Foundation y el aviso de derechos de autor y este aviso de "
 "permiso sean preservados en todas las copias."
 
-#: talermerchantdemos/blog/templates/index.html.j2:18
+#: talermerchantdemos/templates/blog-index.html.j2:18
 msgid "Chapters"
 msgstr "Capítulos"
 
-#: talermerchantdemos/blog/templates/index.html.j2:21
+#: talermerchantdemos/templates/blog-index.html.j2:20
 msgid "Click on an individual chapter to to purchase it with GNU Taler."
 msgstr "Haz clic en cada capítulo para comprarlo con GNU Taler."
 
-#: talermerchantdemos/blog/templates/index.html.j2:22
+#: talermerchantdemos/templates/blog-index.html.j2:21
+#, fuzzy
 msgid ""
 "You can get free, virtual money to buy articles on this page at the <a "
-"href=\"{}\")\">bank</a>"
+"href=\"{}\")\">bank</a>."
 msgstr ""
 "Puedes conseguir dinero virtual gratis, para comprar artículos en esta "
 "página del <a href=\"{}\")\">banco</a>"
 
-#: talermerchantdemos/blog/templates/index.html.j2:30
+#: talermerchantdemos/templates/blog-index.html.j2:28
 msgid "Pay to read more..."
 msgstr "Pagar para leer más..."
 
-#: talermerchantdemos/blog/templates/index.html.j2:33
+#: talermerchantdemos/templates/blog-index.html.j2:31
 msgid "No articles available in this language."
 msgstr "No hay artículos disponibles en este idioma."
 
-#: talermerchantdemos/blog/templates/menu.html.j2:6
-#: talermerchantdemos/donations/templates/menu.html.j2:6
-#: talermerchantdemos/survey/templates/menu.html.j2:6
-#: talermerchantdemos/templates/landing-base.html.j2:32
-#: talermerchantdemos/templates/menu.html.j2:6
+#: talermerchantdemos/templates/common-base.html.j2:20
+#, fuzzy
+msgid "GNU Taler Demo"
+msgstr "Taler Demo"
+
+#: talermerchantdemos/templates/common-base.html.j2:44
+#: talermerchantdemos/templates/landing-base.html.j2:5
 msgid "Introduction"
 msgstr "Introducción"
 
-#: talermerchantdemos/blog/templates/menu.html.j2:9
-#: talermerchantdemos/donations/templates/menu.html.j2:9
-#: talermerchantdemos/survey/templates/menu.html.j2:9
-#: talermerchantdemos/templates/menu.html.j2:9
+#: talermerchantdemos/templates/common-base.html.j2:47
 msgid "Bank"
 msgstr "Banco"
 
-#: talermerchantdemos/blog/templates/menu.html.j2:12
-#: talermerchantdemos/donations/templates/menu.html.j2:12
-#: talermerchantdemos/survey/templates/menu.html.j2:12
-#: talermerchantdemos/templates/menu.html.j2:12
+#: talermerchantdemos/templates/common-base.html.j2:50
 msgid "Essay Shop"
 msgstr "Tienda de pruebas"
 
-#: talermerchantdemos/blog/templates/menu.html.j2:15
-#: talermerchantdemos/donations/templates/base.html.j2:32
-#: talermerchantdemos/donations/templates/menu.html.j2:15
-#: talermerchantdemos/survey/templates/menu.html.j2:15
-#: talermerchantdemos/templates/menu.html.j2:15
+#: talermerchantdemos/templates/common-base.html.j2:53
+#: talermerchantdemos/templates/donations-base.html.j2:6
 msgid "Donations"
 msgstr "Donaciones"
 
-#: talermerchantdemos/blog/templates/menu.html.j2:18
-#: talermerchantdemos/donations/templates/menu.html.j2:18
-#: talermerchantdemos/survey/templates/menu.html.j2:18
-#: talermerchantdemos/templates/menu.html.j2:18
+#: talermerchantdemos/templates/common-base.html.j2:56
 msgid "Tipping/Survey"
 msgstr "Consejos/Encuestas"
 
-#: talermerchantdemos/blog/templates/menu.html.j2:21
-#: talermerchantdemos/donations/templates/menu.html.j2:21
-#: talermerchantdemos/survey/templates/menu.html.j2:21
-#: talermerchantdemos/templates/menu.html.j2:21
-msgid "Back-office"
-msgstr "Oficina-interna"
-
-#: talermerchantdemos/donations/donations.py:143
-msgid "parameter '{}' required"
-msgstr "parámetro '{}' requerido"
-
-#: talermerchantdemos/donations/templates/base.html.j2:20
-msgid "GNU Taler Demo: Donations"
-msgstr "GNU Taler Demo: Donaciones"
+#: talermerchantdemos/templates/common-base.html.j2:85
+msgid ""
+"You can learn more about GNU Taler on our main <a "
+"href=\"{site}\">website</a>."
+msgstr ""
+"Puedes entender más sobre GNU Taler en nuestra <a href=\"{site}\">página "
+"</a> principal."
 
-#: talermerchantdemos/donations/templates/base.html.j2:34
+#: talermerchantdemos/templates/donations-base.html.j2:8
 msgid "This is the donation page."
 msgstr "Esta es la página de donaciones."
 
-#: talermerchantdemos/donations/templates/base.html.j2:35
+#: talermerchantdemos/templates/donations-base.html.j2:9
 msgid ""
 "Using this page you can make donations in {currency} to Free Software "
 "projects."
@@ -297,17 +290,17 @@ msgstr ""
 "Usando esta página puedes realizar donaciones en {currency} para "
 "proyectos de Software Libre."
 
-#: talermerchantdemos/donations/templates/checkout.html.j2:5
+#: talermerchantdemos/templates/donations-checkout.html.j2:5
 msgid "Select your payment method"
 msgstr "Seleccionar tu método de pago"
 
-#: talermerchantdemos/donations/templates/checkout.html.j2:9
+#: talermerchantdemos/templates/donations-checkout.html.j2:9
 msgid "This is an example for a \"checkout\" page of a Web shop."
 msgstr ""
 "Este es un ejemplo de una página de \"finalizar compra\" de una tienda "
 "virtual."
 
-#: talermerchantdemos/donations/templates/checkout.html.j2:10
+#: talermerchantdemos/templates/donations-checkout.html.j2:10
 msgid ""
 "On the previous page, you have created the shopping cart and decided "
 "which product to buy (i.e. which project to donate KUDOS to)."
@@ -315,7 +308,7 @@ msgstr ""
 "En la página anterior, has creado un carrito de compra y decidido que "
 "producto comprar (por ejemplo a qué proyecto donar tus KUDOS)."
 
-#: talermerchantdemos/donations/templates/checkout.html.j2:11
+#: talermerchantdemos/templates/donations-checkout.html.j2:11
 msgid ""
 "As Taler is not yet universally used, we expect merchants will offer "
 "various payment options."
@@ -323,13 +316,13 @@ msgstr ""
 "Como Taler aún no es utilizado universalmente, esperamos que los "
 "comerciantes ofrezcan varias opciones de pago."
 
-#: talermerchantdemos/donations/templates/checkout.html.j2:12
+#: talermerchantdemos/templates/donations-checkout.html.j2:12
 msgid "To continue with the demo, select the &quot;Taler&quot; payment option."
 msgstr ""
 "Para continuar con la demo, selecciona la opción de pago "
 "&quot;Taler&quot;."
 
-#: talermerchantdemos/donations/templates/checkout.html.j2:17
+#: talermerchantdemos/templates/donations-checkout.html.j2:17
 msgid ""
 "Note that you must select Taler here for the demo to continue, as the "
 "other payment options are just placeholders and not really working in the"
@@ -339,7 +332,7 @@ msgstr ""
 "porque las otras opciones de pago son solo marcadores de posición y no "
 "están realmente funcionando en la demostración."
 
-#: talermerchantdemos/donations/templates/checkout.html.j2:18
+#: talermerchantdemos/templates/donations-checkout.html.j2:18
 msgid ""
 "It would be possible to ask the user to make this choice already on the "
 "previous page (with the shopping cart); we just separated the two steps "
@@ -349,15 +342,15 @@ msgstr ""
 "anterior (con el carro de compra); nosotros solo hemos separado estos dos"
 " pasos para mantener cada paso lo más sencillo posible."
 
-#: talermerchantdemos/donations/templates/checkout.html.j2:44
+#: talermerchantdemos/templates/donations-checkout.html.j2:44
 msgid "Confirm selection"
 msgstr "Confirmar selección"
 
-#: talermerchantdemos/donations/templates/fulfillment.html.j2:4
+#: talermerchantdemos/templates/donations-fulfillment.html.j2:4
 msgid "Donation Receipt"
 msgstr "Recibo de la donación"
 
-#: talermerchantdemos/donations/templates/fulfillment.html.j2:7
+#: talermerchantdemos/templates/donations-fulfillment.html.j2:7
 msgid ""
 "Thank you, <strong>{donor}</strong>, for donating "
 "<strong>{amount}</strong> to <strong>{receiver}</strong>."
@@ -365,7 +358,7 @@ msgstr ""
 "Gracias, <strong>{donor}</strong>, por donar <strong>{amount}</strong> a "
 "<strong>{receiver}</strong>."
 
-#: talermerchantdemos/donations/templates/fulfillment.html.j2:12
+#: talermerchantdemos/templates/donations-fulfillment.html.j2:12
 msgid ""
 "Please keep the order identifier <strong>{id}</strong> as a receipt for "
 "your donation."
@@ -373,7 +366,7 @@ msgstr ""
 "Por favor conserva el identificador de compra <strong>{id}</strong> como "
 "recibo de tu donación."
 
-#: talermerchantdemos/donations/templates/fulfillment.html.j2:13
+#: talermerchantdemos/templates/donations-fulfillment.html.j2:13
 msgid ""
 "You can show other people that you donated by sharing <a "
 "href=\"{link}\">this link</a> with them."
@@ -381,15 +374,15 @@ msgstr ""
 "Puedes mostrar a otras personas que has donado compartiendo <a "
 "href=\"{link}\">este enlace</a> con ellos."
 
-#: talermerchantdemos/donations/templates/fulfillment.html.j2:19
+#: talermerchantdemos/templates/donations-fulfillment.html.j2:19
 msgid "You can always make <a href=\"{link}\">another donation</a>."
 msgstr "Siempre puedes realizar <a href=\"{link}\">otra donación</a>."
 
-#: talermerchantdemos/donations/templates/index.html.j2:4
+#: talermerchantdemos/templates/donations-index.html.j2:4
 msgid "Donate to Free Software projects"
 msgstr "Dona a proyectos de Software Libre"
 
-#: talermerchantdemos/donations/templates/index.html.j2:8
+#: talermerchantdemos/templates/donations-index.html.j2:8
 msgid ""
 "This donations website shows the user experience for donations with GNU "
 "Taler."
@@ -397,11 +390,11 @@ msgstr ""
 "Esta página de donaciones muestra al usuario experiencia de donaciones "
 "con GNU Taler."
 
-#: talermerchantdemos/donations/templates/index.html.j2:9
+#: talermerchantdemos/templates/donations-index.html.j2:9
 msgid "You can make donations in an toy currency ({currency})"
 msgstr "Puedes realizar donaciones en una divisa de juguete ({currency})"
 
-#: talermerchantdemos/donations/templates/index.html.j2:16
+#: talermerchantdemos/templates/donations-index.html.j2:16
 msgid ""
 "Please select a project, the amount (*) of {currency} you wish to donate,"
 " and enter the donor's name that will appear on your receipt:"
@@ -409,15 +402,15 @@ msgstr ""
 "Por favor selecciona un proyecto, la cantidad (*) de {currency} que "
 "deseas donar, e inserta el nombre del donante que aparecerá en tu recibo:"
 
-#: talermerchantdemos/donations/templates/index.html.j2:33
+#: talermerchantdemos/templates/donations-index.html.j2:33
 msgid "Anonymous Donor"
 msgstr "Donante anónimo"
 
-#: talermerchantdemos/donations/templates/index.html.j2:34
+#: talermerchantdemos/templates/donations-index.html.j2:34
 msgid "Donate!"
 msgstr "Donar!"
 
-#: talermerchantdemos/donations/templates/index.html.j2:39
+#: talermerchantdemos/templates/donations-index.html.j2:39
 msgid ""
 "(*) To make the demo a bit more interesting, the 5 {currency} option is "
 "deliberately implemented with a fault: the merchant will try to make you "
@@ -433,87 +426,25 @@ msgstr ""
 "final desde la cartera Taler de comerciante. De esta forma, Taler te "
 "protege de cometer pagos erróneos."
 
-#: talermerchantdemos/donations/templates/provider-not-supported.html.j2:4
+#: talermerchantdemos/templates/donations-provider-not-supported.html.j2:4
 msgid "Payment Provider Not Supported"
 msgstr "Proveedor de Pagos No Soportado"
 
-#: talermerchantdemos/donations/templates/provider-not-supported.html.j2:7
+#: talermerchantdemos/templates/donations-provider-not-supported.html.j2:7
 msgid "Unfortunately the selected payment provider is not supported in this 
demo."
 msgstr ""
 "Desafortunadamente el proveedor de pagos seleccionado no está soportado "
 "en esta demo."
 
-#: talermerchantdemos/donations/templates/provider-not-supported.html.j2:8
+#: talermerchantdemos/templates/donations-provider-not-supported.html.j2:8
 msgid "Please go back and select &quot;Taler&quot;."
 msgstr "Por favor vuelve atrás y selecciona &quot;Taler&quot;."
 
-#: talermerchantdemos/httpcommon/__init__.py:24
-#: talermerchantdemos/httpcommon/__init__.py:58
-msgid "Could not establish connection to backend"
-msgstr "No se puede establecer la conexión con el backend"
-
-#: talermerchantdemos/httpcommon/__init__.py:30
-#: talermerchantdemos/httpcommon/__init__.py:62
-msgid "Could not parse response from backend"
-msgstr "No se puede analizar la respuesta del backend"
-
-#: talermerchantdemos/httpcommon/__init__.py:36
-#: talermerchantdemos/httpcommon/__init__.py:66
-msgid "Backend returned error status"
-msgstr "El backend ha retornado un estado de error"
-
-#: talermerchantdemos/landing/landing.py:197
-#: talermerchantdemos/survey/survey.py:179
-msgid "HTTP method not allowed for this page"
-msgstr "El método HTTP no está permitido para esta página"
-
-#: talermerchantdemos/survey/templates/base.html.j2:20
-msgid "GNU Taler Demo: Survey"
-msgstr "GNU Taler Demo: Encuesta"
-
-#: talermerchantdemos/survey/templates/base.html.j2:32
-msgid "Survey"
-msgstr "Encuesta"
-
-#: talermerchantdemos/survey/templates/base.html.j2:34
-msgid "This page demonstrates how to tip visitors for completing small tasks."
-msgstr ""
-"Esta página demonstra cómo dejar propina a visitantes por haber "
-"completado pequeñas tareas."
-
-#: talermerchantdemos/survey/templates/base.html.j2:35
-msgid ""
-"Tipping is a way for offer cash rewards that go directly into a user's "
-"wallet."
-msgstr ""
-"Dejar propina es una manera de recompensar con dinero, que va "
-"directamente en el monedero de un usuario."
-
-#: talermerchantdemos/survey/templates/index.html.j2:6
-msgid ""
-"Please participate in our survey about payment systems and receive a tip "
-"in return."
-msgstr ""
-"Por favor participa en nuestra encuesta sobrelos sistemas de pago y "
-"recibe un consejo a cambio."
-
-#: talermerchantdemos/survey/templates/index.html.j2:12
-msgid "Which payment system do you prefer?"
-msgstr "¿Que sistema de pago prefieres?"
-
-#: talermerchantdemos/survey/templates/index.html.j2:23
-msgid "Submit Survey"
-msgstr "Enviar Encuesta"
-
-#: talermerchantdemos/templates/landing-base.html.j2:20
-msgid "GNU Taler Demo: Introduction"
-msgstr "GNU Taler Demo: Introducción"
-
-#: talermerchantdemos/templates/landing-base.html.j2:34
+#: talermerchantdemos/templates/landing-base.html.j2:7
 msgid "This is the GNU Taler demo."
 msgstr "Esta es la demo de GNU Taler."
 
-#: talermerchantdemos/templates/landing-base.html.j2:35
+#: talermerchantdemos/templates/landing-base.html.j2:8
 msgid "Here you can try out the GNU Taler payment system using a toy currency."
 msgstr ""
 "Aquí puedes probar el sistema de pago GNU Taler usando una moneda de "
@@ -642,10 +573,11 @@ msgid "Step 4: Check money flow"
 msgstr "Paso 4: Comprobar el flujo del dinero"
 
 #: talermerchantdemos/templates/landing-index.html.j2:59
+#, fuzzy
 msgid ""
 "You can see the wire transfers from the escrow account of the exchange to"
-" the merchants on the <a href=\"{bank}/public-accounts\">public accounts "
-"page</a> of the bank."
+" the merchants on the <a href=\"{bank}\">public accounts page</a> of the "
+"bank."
 msgstr ""
 "Puedes ver las transferencias bancarias desde la cuenta de depósito del "
 "exchange hacia el comerciante en la <a href=\"{bank}/public-"
@@ -689,6 +621,40 @@ msgstr ""
 "Déjamos saber que piensas poniéndote en <a href=\"{link}\">contacto con "
 "nosotros</a>."
 
+#: talermerchantdemos/templates/survey-base.html.j2:6
+msgid "Survey"
+msgstr "Encuesta"
+
+#: talermerchantdemos/templates/survey-base.html.j2:8
+msgid "This page demonstrates how to tip visitors for completing small tasks."
+msgstr ""
+"Esta página demonstra cómo dejar propina a visitantes por haber "
+"completado pequeñas tareas."
+
+#: talermerchantdemos/templates/survey-base.html.j2:9
+msgid ""
+"Tipping is a way for offer cash rewards that go directly into a user's "
+"wallet."
+msgstr ""
+"Dejar propina es una manera de recompensar con dinero, que va "
+"directamente en el monedero de un usuario."
+
+#: talermerchantdemos/templates/survey-index.html.j2:6
+msgid ""
+"Please participate in our survey about payment systems and receive a tip "
+"in return."
+msgstr ""
+"Por favor participa en nuestra encuesta sobrelos sistemas de pago y "
+"recibe un consejo a cambio."
+
+#: talermerchantdemos/templates/survey-index.html.j2:12
+msgid "Which payment system do you prefer?"
+msgstr "¿Que sistema de pago prefieres?"
+
+#: talermerchantdemos/templates/survey-index.html.j2:23
+msgid "Submit Survey"
+msgstr "Enviar Encuesta"
+
 #~ msgid ""
 #~ "After installation, you may be asked "
 #~ "to grant the brower-based Taler "
@@ -715,3 +681,18 @@ msgstr ""
 #~ msgid "Swedish [sv]"
 #~ msgstr "Sueco [sv]"
 
+#~ msgid "GNU Taler Demo: Essay Shop"
+#~ msgstr "Demostración de GNU Taler : Tienda de Pruebas"
+
+#~ msgid "Back-office"
+#~ msgstr "Oficina-interna"
+
+#~ msgid "GNU Taler Demo: Donations"
+#~ msgstr "GNU Taler Demo: Donaciones"
+
+#~ msgid "GNU Taler Demo: Survey"
+#~ msgstr "GNU Taler Demo: Encuesta"
+
+#~ msgid "GNU Taler Demo: Introduction"
+#~ msgstr "GNU Taler Demo: Introducción"
+
diff --git a/translations/fr/LC_MESSAGES/messages.po 
b/translations/fr/LC_MESSAGES/messages.po
index 816a351..c797c92 100644
--- a/translations/fr/LC_MESSAGES/messages.po
+++ b/translations/fr/LC_MESSAGES/messages.po
@@ -7,11 +7,9 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PROJECT VERSION\n"
 "Report-Msgid-Bugs-To: eintritt@hotmail.com\n"
-"POT-Creation-Date: 2021-03-12 18:42+0100\n"
+"POT-Creation-Date: 2021-05-11 09:13+0200\n"
 "PO-Revision-Date: 2021-04-21 11:58+0000\n"
 "Last-Translator: Weblate Admin <admin@example.com>\n"
-"Language-Team: French <http://weblate.taler.net/projects/gnu-taler/";
-"demonstration-pages/fr/>\n"
 "Language: fr\n"
 "Language-Team: French <http://weblate.taler.net/projects/gnu-taler";
 "/demonstration-pages/fr/>\n"
@@ -21,57 +19,82 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Generated-By: Babel 2.9.0\n"
 
-#: talermerchantdemos/blog/blog.py:114
-#: talermerchantdemos/donations/donations.py:157
-#: talermerchantdemos/landing/landing.py:117
-#: talermerchantdemos/survey/survey.py:110
+#: talermerchantdemos/blog/blog.py:126
+#: talermerchantdemos/donations/donations.py:139
+#: talermerchantdemos/landing/landing.py:93
+#: talermerchantdemos/survey/survey.py:100
 msgid "Internal error"
 msgstr "Erreur interne"
 
-#: talermerchantdemos/blog/blog.py:180
+#: talermerchantdemos/blog/blog.py:186
 msgid "Cannot refund unpaid article"
 msgstr "Impossible de rembourser l'article non payé"
 
-#: talermerchantdemos/blog/blog.py:186
+#: talermerchantdemos/blog/blog.py:193
 msgid "Article is not anymore refundable"
 msgstr "L'article n'est plus remboursable"
 
-#: talermerchantdemos/blog/blog.py:217
+#: talermerchantdemos/blog/blog.py:229
 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:223
+#: talermerchantdemos/blog/blog.py:234
 msgid "Item not refundable (anymore)"
 msgstr "Article non remboursable (plus)"
 
-#: talermerchantdemos/blog/blog.py:248
+#: talermerchantdemos/blog/blog.py:260
 msgid "Internal error: Files for article ({}) not found."
 msgstr "Erreur interne : Fichiers pour l'article ({}) non trouvés."
 
-#: talermerchantdemos/blog/blog.py:253
+#: talermerchantdemos/blog/blog.py:267
 msgid "Supplemental file ({}) for article ({}) not found."
 msgstr "Fichier supplémentaire ({}) pour l'article ({}) non trouvé."
 
-#: talermerchantdemos/blog/blog.py:326 talermerchantdemos/blog/blog.py:339
+#: talermerchantdemos/blog/blog.py:343 talermerchantdemos/blog/blog.py:357
 msgid "Direct access forbidden"
 msgstr "Accès direct interdit"
 
-#: talermerchantdemos/blog/blog.py:405
+#: talermerchantdemos/blog/blog.py:413
 msgid "Internal server error"
 msgstr "Erreur interne du serveur"
 
-#: talermerchantdemos/blog/blog.py:412
-#: talermerchantdemos/donations/donations.py:323
-#: talermerchantdemos/landing/landing.py:189
-#: talermerchantdemos/survey/survey.py:171
+#: talermerchantdemos/blog/blog.py:421
+#: talermerchantdemos/donations/donations.py:282
+#: talermerchantdemos/landing/landing.py:166
+#: talermerchantdemos/survey/survey.py:167
 msgid "Page not found"
 msgstr "Page non trouvée"
 
-#: talermerchantdemos/blog/templates/article_frame.html.j2:9
+#: talermerchantdemos/donations/donations.py:125
+msgid "parameter '{}' required"
+msgstr "paramètre '{}' obligatoire"
+
+#: talermerchantdemos/httpcommon/__init__.py:48
+#: talermerchantdemos/httpcommon/__init__.py:84
+msgid "Could not establish connection to backend"
+msgstr "Impossible d'établir une connexion avec le backend"
+
+#: talermerchantdemos/httpcommon/__init__.py:54
+#: talermerchantdemos/httpcommon/__init__.py:89
+msgid "Could not parse response from backend"
+msgstr "Impossible d'analyser la réponse du backend"
+
+#: talermerchantdemos/httpcommon/__init__.py:59
+#: talermerchantdemos/httpcommon/__init__.py:92
+msgid "Backend returned error status"
+msgstr "Le backend a renvoyé un statut d'erreur"
+
+#: talermerchantdemos/landing/landing.py:174
+#: talermerchantdemos/survey/survey.py:175
+msgid "HTTP method not allowed for this page"
+msgstr "Méthode HTTP non autorisée pour cette page"
+
+#: talermerchantdemos/templates/blog-article-frame.html.j2:11
+#: talermerchantdemos/templates/blog-article-frame.html.j2:16
 msgid "Taler allows merchants to offer refunds to customers."
 msgstr "Taler permet aux vendeurs d'offrir des remboursements aux clients."
 
-#: talermerchantdemos/blog/templates/article_frame.html.j2:10
+#: talermerchantdemos/templates/blog-article-frame.html.j2:12
 msgid ""
 "You can <a href=\"{url}\">request a refund</a> within the first hour "
 "after buying this article."
@@ -79,27 +102,22 @@ msgstr ""
 "Vous pouvez <a href=\"{url}\">demander un remboursement</a> lors de la "
 "première heure suivant l'achat de cet article."
 
-#: talermerchantdemos/blog/templates/base.html.j2:23
-msgid "GNU Taler Demo: Essay Shop"
-msgstr "Démo GNU Taler : boutique d'essai"
-
-#: talermerchantdemos/blog/templates/base.html.j2:34
-#: talermerchantdemos/donations/templates/base.html.j2:31
-#: talermerchantdemos/survey/templates/base.html.j2:31
-msgid "Taler Demo"
-msgstr "Demo de Taler"
+#: talermerchantdemos/templates/blog-article-frame.html.j2:17
+#, fuzzy
+msgid "This article can't be refunded anymore."
+msgstr "Article non remboursable (plus)"
 
-#: talermerchantdemos/blog/templates/base.html.j2:35
+#: talermerchantdemos/templates/blog-base.html.j2:9
 msgid "Essay shop"
 msgstr "Boutique d'essai"
 
-#: talermerchantdemos/blog/templates/base.html.j2:37
+#: talermerchantdemos/templates/blog-base.html.j2:11
 msgid "On this page you can buy articles using an imaginary currency."
 msgstr ""
 "Sur cette page vous pouvez acheter des articles avec une monnaie "
 "imaginaire."
 
-#: talermerchantdemos/blog/templates/base.html.j2:38
+#: talermerchantdemos/templates/blog-base.html.j2:12
 msgid ""
 "The articles are chapters from Richard Stallman's book &quot;Free "
 "Software, Free Society&quot;."
@@ -107,7 +125,7 @@ msgstr ""
 "Les articles sont des chapitres du livre &quot;Free Software, Free "
 "Society&quot; de Richard Stallman."
 
-#: talermerchantdemos/blog/templates/base.html.j2:39
+#: talermerchantdemos/templates/blog-base.html.j2:13
 msgid ""
 "The book is <a href=\"{shop}\">published by the FSF</a> and available "
 "gratis at <a href=\"{gnu}\">gnu.org</a>."
@@ -115,15 +133,15 @@ msgstr ""
 "Le livre est <a href=\"{shop}\">publié par la FSF</a>et disponible "
 "gratuitement sur<a href=\"{gnu}\">gnu.org</a>."
 
-#: talermerchantdemos/blog/templates/confirm_refund.html.j2:3
+#: talermerchantdemos/templates/blog-confirm-refund.html.j2:3
 msgid "Confirm refund request for article"
 msgstr "Confirmer la demande de remboursement de cet article"
 
-#: talermerchantdemos/blog/templates/confirm_refund.html.j2:7
+#: talermerchantdemos/templates/blog-confirm-refund.html.j2:7
 msgid "Do you want to get a refund for the article <em>{name}</em>?"
 msgstr "Désirez-vous obtenir un remboursement pour l'article <em>{name}</em> ?"
 
-#: talermerchantdemos/blog/templates/confirm_refund.html.j2:8
+#: talermerchantdemos/templates/blog-confirm-refund.html.j2:8
 msgid ""
 "In this demonstration, refunds will be automatically approved by the "
 "merchant."
@@ -131,13 +149,13 @@ msgstr ""
 "Dans cette démonstration, les remboursements seront automatiquement "
 "approuvés par le vendeur."
 
-#: talermerchantdemos/blog/templates/confirm_refund.html.j2:9
+#: talermerchantdemos/templates/blog-confirm-refund.html.j2:9
 msgid ""
 "After you have obtained a refund, you will not be able to read the "
 "article anymore."
 msgstr "Après avoir obtenu un remboursement, vous ne pourrez plus lire 
l'article."
 
-#: talermerchantdemos/blog/templates/confirm_refund.html.j2:15
+#: talermerchantdemos/templates/blog-confirm-refund.html.j2:15
 msgid ""
 "You will only be able to receive the refund on the same wallet that you "
 "have used to pay for this article originally."
@@ -145,52 +163,41 @@ msgstr ""
 "Vous ne pourrez recevoir le remboursement que sur le même portefeuille "
 "que celui que vous avez utilisé pour payer cet article à l'origine."
 
-#: talermerchantdemos/blog/templates/confirm_refund.html.j2:21
+#: talermerchantdemos/templates/blog-confirm-refund.html.j2:21
 msgid "Request refund"
 msgstr "Demandez un remboursement"
 
-#: talermerchantdemos/blog/templates/error.html.j2:3
-#: talermerchantdemos/donations/templates/error.html.j2:3
-#: talermerchantdemos/survey/templates/error.html.j2:3
+#: talermerchantdemos/templates/blog-error.html.j2:3
+#: talermerchantdemos/templates/donations-error.html.j2:3
 #: talermerchantdemos/templates/landing-error.html.j2:3
+#: talermerchantdemos/templates/survey-error.html.j2:3
 msgid "Error encountered"
 msgstr "Erreur constatée"
 
-#: talermerchantdemos/blog/templates/error.html.j2:9
-#: talermerchantdemos/donations/templates/error.html.j2:9
-#: talermerchantdemos/survey/templates/error.html.j2:9
+#: talermerchantdemos/templates/blog-error.html.j2:9
+#: talermerchantdemos/templates/donations-error.html.j2:9
+#: talermerchantdemos/templates/survey-error.html.j2:9
 msgid "The backend returned status code {code}."
 msgstr "Le backend a renvoyé le code du statut {code}."
 
-#: talermerchantdemos/blog/templates/error.html.j2:14
-#: talermerchantdemos/donations/templates/error.html.j2:14
-#: talermerchantdemos/survey/templates/error.html.j2:14
+#: talermerchantdemos/templates/blog-error.html.j2:14
+#: talermerchantdemos/templates/donations-error.html.j2:14
+#: talermerchantdemos/templates/survey-error.html.j2:14
 msgid "Backend response:"
 msgstr "Réponse du backend :"
 
-#: talermerchantdemos/blog/templates/error.html.j2:19
-#: talermerchantdemos/donations/templates/error.html.j2:19
-#: talermerchantdemos/survey/templates/error.html.j2:19
+#: talermerchantdemos/templates/blog-error.html.j2:19
+#: talermerchantdemos/templates/donations-error.html.j2:19
 #: talermerchantdemos/templates/landing-error.html.j2:8
+#: talermerchantdemos/templates/survey-error.html.j2:19
 msgid "Stack trace:"
 msgstr "Trace de la pile :"
 
-#: talermerchantdemos/blog/templates/footer.html.j2:5
-#: talermerchantdemos/donations/templates/footer.html.j2:5
-#: talermerchantdemos/survey/templates/footer.html.j2:5
-#: talermerchantdemos/templates/footer.html.j2:5
-msgid ""
-"You can learn more about GNU Taler on our main <a "
-"href=\"{site}\">website</a>."
-msgstr ""
-"Vous pouvez en savoir plus sur GNU Taler sur notre principal <a "
-"href=\"{site}\">site web</a>."
-
-#: talermerchantdemos/blog/templates/index.html.j2:3
+#: talermerchantdemos/templates/blog-index.html.j2:3
 msgid "Essay Shop: Free Software, Free Society"
 msgstr "Essay Shop : Logiciel libre, société libre"
 
-#: talermerchantdemos/blog/templates/index.html.j2:5
+#: talermerchantdemos/templates/blog-index.html.j2:5
 msgid ""
 "This is the latest edition of <cite>Free Software, Free Society: Selected"
 " Essays of Richard M. Stallman.</cite>"
@@ -198,7 +205,7 @@ msgstr ""
 "Il s'agit de la dernière édition de <cite>Free Software, Free Society : "
 "Essais choisis de Richard M. Stallman.</cite>"
 
-#: talermerchantdemos/blog/templates/index.html.j2:13
+#: talermerchantdemos/templates/blog-index.html.j2:13
 msgid ""
 "Verbatim copying and distribution of this entire book are permitted "
 "worldwide, without royalty, in any medium, provided this notice is "
@@ -215,87 +222,71 @@ msgstr ""
 "par la Free Software Foundation et que la notice de copyright et cette "
 "notice d'autorisation soient préservées sur toutes les copies."
 
-#: talermerchantdemos/blog/templates/index.html.j2:18
+#: talermerchantdemos/templates/blog-index.html.j2:18
 msgid "Chapters"
 msgstr "Chapitres"
 
-#: talermerchantdemos/blog/templates/index.html.j2:21
+#: talermerchantdemos/templates/blog-index.html.j2:20
 msgid "Click on an individual chapter to to purchase it with GNU Taler."
 msgstr "Cliquez sur un des chapitres pour l'acheter avec GNU Taler."
 
-#: talermerchantdemos/blog/templates/index.html.j2:22
+#: talermerchantdemos/templates/blog-index.html.j2:21
+#, fuzzy
 msgid ""
 "You can get free, virtual money to buy articles on this page at the <a "
-"href=\"{}\")\">bank</a>"
+"href=\"{}\")\">bank</a>."
 msgstr ""
 "Vous pouvez obtenir gratuitement de l'argent virtuel pour acheter des "
 "articles sur cette page à la <a href=\"{}\")\">banque</a>"
 
-#: talermerchantdemos/blog/templates/index.html.j2:30
+#: talermerchantdemos/templates/blog-index.html.j2:28
 msgid "Pay to read more..."
 msgstr "Payer pour en savoir plus..."
 
-#: talermerchantdemos/blog/templates/index.html.j2:33
+#: talermerchantdemos/templates/blog-index.html.j2:31
 msgid "No articles available in this language."
 msgstr "Aucun article disponible dans cette langue."
 
-#: talermerchantdemos/blog/templates/menu.html.j2:6
-#: talermerchantdemos/donations/templates/menu.html.j2:6
-#: talermerchantdemos/survey/templates/menu.html.j2:6
-#: talermerchantdemos/templates/landing-base.html.j2:32
-#: talermerchantdemos/templates/menu.html.j2:6
+#: talermerchantdemos/templates/common-base.html.j2:20
+#, fuzzy
+msgid "GNU Taler Demo"
+msgstr "Demo de Taler"
+
+#: talermerchantdemos/templates/common-base.html.j2:44
+#: talermerchantdemos/templates/landing-base.html.j2:5
 msgid "Introduction"
 msgstr "Introduction"
 
-#: talermerchantdemos/blog/templates/menu.html.j2:9
-#: talermerchantdemos/donations/templates/menu.html.j2:9
-#: talermerchantdemos/survey/templates/menu.html.j2:9
-#: talermerchantdemos/templates/menu.html.j2:9
+#: talermerchantdemos/templates/common-base.html.j2:47
 msgid "Bank"
 msgstr "Banque"
 
-#: talermerchantdemos/blog/templates/menu.html.j2:12
-#: talermerchantdemos/donations/templates/menu.html.j2:12
-#: talermerchantdemos/survey/templates/menu.html.j2:12
-#: talermerchantdemos/templates/menu.html.j2:12
+#: talermerchantdemos/templates/common-base.html.j2:50
 msgid "Essay Shop"
 msgstr "Boutique de test"
 
-#: talermerchantdemos/blog/templates/menu.html.j2:15
-#: talermerchantdemos/donations/templates/base.html.j2:32
-#: talermerchantdemos/donations/templates/menu.html.j2:15
-#: talermerchantdemos/survey/templates/menu.html.j2:15
-#: talermerchantdemos/templates/menu.html.j2:15
+#: talermerchantdemos/templates/common-base.html.j2:53
+#: talermerchantdemos/templates/donations-base.html.j2:6
 msgid "Donations"
 msgstr "Dons"
 
-#: talermerchantdemos/blog/templates/menu.html.j2:18
-#: talermerchantdemos/donations/templates/menu.html.j2:18
-#: talermerchantdemos/survey/templates/menu.html.j2:18
-#: talermerchantdemos/templates/menu.html.j2:18
+#: talermerchantdemos/templates/common-base.html.j2:56
 msgid "Tipping/Survey"
 msgstr "Conseils/Sondage"
 
-#: talermerchantdemos/blog/templates/menu.html.j2:21
-#: talermerchantdemos/donations/templates/menu.html.j2:21
-#: talermerchantdemos/survey/templates/menu.html.j2:21
-#: talermerchantdemos/templates/menu.html.j2:21
-msgid "Back-office"
-msgstr "Le back-office"
-
-#: talermerchantdemos/donations/donations.py:143
-msgid "parameter '{}' required"
-msgstr "paramètre '{}' obligatoire"
-
-#: talermerchantdemos/donations/templates/base.html.j2:20
-msgid "GNU Taler Demo: Donations"
-msgstr "Démo de GNU Taler : Dons"
+#: talermerchantdemos/templates/common-base.html.j2:85
+msgid ""
+"You can learn more about GNU Taler on our main <a "
+"href=\"{site}\">website</a>."
+msgstr ""
+"Vous pouvez en savoir plus sur GNU Taler sur notre principal <a "
+"href=\"{site}\">site web</a>."
 
-#: talermerchantdemos/donations/templates/base.html.j2:34
+#: talermerchantdemos/templates/donations-base.html.j2:8
 msgid "This is the donation page."
 msgstr "Voici la page des dons."
 
-#: talermerchantdemos/donations/templates/base.html.j2:35
+#: talermerchantdemos/templates/donations-base.html.j2:9
 msgid ""
 "Using this page you can make donations in {currency} to Free Software "
 "projects."
@@ -303,15 +294,15 @@ msgstr ""
 "Cette page vous permet de faire des dons en {devise} à des projets de "
 "logiciels libres."
 
-#: talermerchantdemos/donations/templates/checkout.html.j2:5
+#: talermerchantdemos/templates/donations-checkout.html.j2:5
 msgid "Select your payment method"
 msgstr "Sélectionnez votre mode de paiement"
 
-#: talermerchantdemos/donations/templates/checkout.html.j2:9
+#: talermerchantdemos/templates/donations-checkout.html.j2:9
 msgid "This is an example for a \"checkout\" page of a Web shop."
 msgstr "Voici un exemple de page de \"paiement\" d'une boutique en ligne."
 
-#: talermerchantdemos/donations/templates/checkout.html.j2:10
+#: talermerchantdemos/templates/donations-checkout.html.j2:10
 msgid ""
 "On the previous page, you have created the shopping cart and decided "
 "which product to buy (i.e. which project to donate KUDOS to)."
@@ -319,7 +310,7 @@ msgstr ""
 "A la page précédente, vous avez créé le panier d'achat et décidé quel "
 "produit acheter (c'est-à-dire à quel projet donner des KUDOS)."
 
-#: talermerchantdemos/donations/templates/checkout.html.j2:11
+#: talermerchantdemos/templates/donations-checkout.html.j2:11
 msgid ""
 "As Taler is not yet universally used, we expect merchants will offer "
 "various payment options."
@@ -327,13 +318,13 @@ msgstr ""
 "Comme Taler n'est pas encore universellement utilisé, nous nous attendons"
 " à ce que les commerçants offrent diverses options de paiement."
 
-#: talermerchantdemos/donations/templates/checkout.html.j2:12
+#: talermerchantdemos/templates/donations-checkout.html.j2:12
 msgid "To continue with the demo, select the &quot;Taler&quot; payment option."
 msgstr ""
 "Pour poursuivre avec la démo, sélectionnez &quot;Taler&quot; option de "
 "paiement."
 
-#: talermerchantdemos/donations/templates/checkout.html.j2:17
+#: talermerchantdemos/templates/donations-checkout.html.j2:17
 msgid ""
 "Note that you must select Taler here for the demo to continue, as the "
 "other payment options are just placeholders and not really working in the"
@@ -343,7 +334,7 @@ msgstr ""
 "poursuive, car les autres options de paiement ne sont que des espaces "
 "réservés et ne fonctionnent pas vraiment dans la démonstration."
 
-#: talermerchantdemos/donations/templates/checkout.html.j2:18
+#: talermerchantdemos/templates/donations-checkout.html.j2:18
 msgid ""
 "It would be possible to ask the user to make this choice already on the "
 "previous page (with the shopping cart); we just separated the two steps "
@@ -353,15 +344,15 @@ msgstr ""
 "page précédente (avec le panier d'achat) ; nous avons simplement séparé "
 "les deux étapes pour qu'elles soient aussi simples que possible."
 
-#: talermerchantdemos/donations/templates/checkout.html.j2:44
+#: talermerchantdemos/templates/donations-checkout.html.j2:44
 msgid "Confirm selection"
 msgstr "Confirmez la sélection"
 
-#: talermerchantdemos/donations/templates/fulfillment.html.j2:4
+#: talermerchantdemos/templates/donations-fulfillment.html.j2:4
 msgid "Donation Receipt"
 msgstr "Le reçu du don"
 
-#: talermerchantdemos/donations/templates/fulfillment.html.j2:7
+#: talermerchantdemos/templates/donations-fulfillment.html.j2:7
 msgid ""
 "Thank you, <strong>{donor}</strong>, for donating "
 "<strong>{amount}</strong> to <strong>{receiver}</strong>."
@@ -369,7 +360,7 @@ msgstr ""
 "Merci, <strong>{donateur}</strong>, d'avoir fait don de "
 "<strong>{montant}</strong> à <strong>{récepteur}</strong>."
 
-#: talermerchantdemos/donations/templates/fulfillment.html.j2:12
+#: talermerchantdemos/templates/donations-fulfillment.html.j2:12
 msgid ""
 "Please keep the order identifier <strong>{id}</strong> as a receipt for "
 "your donation."
@@ -377,7 +368,7 @@ msgstr ""
 "Veuillez conserver l'identifiant de la commande <strong>{id}</strong> "
 "comme reçu de votre don."
 
-#: talermerchantdemos/donations/templates/fulfillment.html.j2:13
+#: talermerchantdemos/templates/donations-fulfillment.html.j2:13
 msgid ""
 "You can show other people that you donated by sharing <a "
 "href=\"{link}\">this link</a> with them."
@@ -385,15 +376,15 @@ msgstr ""
 "Vous pouvez montrer aux autres personnes que vous avez fait un don en "
 "partageant <a href=\"{lien}\">ce lien</a> avec elles."
 
-#: talermerchantdemos/donations/templates/fulfillment.html.j2:19
+#: talermerchantdemos/templates/donations-fulfillment.html.j2:19
 msgid "You can always make <a href=\"{link}\">another donation</a>."
 msgstr "Vous pouvez toujours faire <a href=\"{link}\">un autre don</a>."
 
-#: talermerchantdemos/donations/templates/index.html.j2:4
+#: talermerchantdemos/templates/donations-index.html.j2:4
 msgid "Donate to Free Software projects"
 msgstr "Faites un don aux projets de logiciels libres"
 
-#: talermerchantdemos/donations/templates/index.html.j2:8
+#: talermerchantdemos/templates/donations-index.html.j2:8
 msgid ""
 "This donations website shows the user experience for donations with GNU "
 "Taler."
@@ -401,28 +392,28 @@ msgstr ""
 "Ce site Web de dons montre l'expérience de l'utilisateur pour les dons "
 "avec GNU Taler."
 
-#: talermerchantdemos/donations/templates/index.html.j2:9
+#: talermerchantdemos/templates/donations-index.html.j2:9
 msgid "You can make donations in an toy currency ({currency})"
 msgstr "Vous pouvez faire des dons dans une devise-jouet ({devise})"
 
-#: talermerchantdemos/donations/templates/index.html.j2:16
+#: talermerchantdemos/templates/donations-index.html.j2:16
 msgid ""
 "Please select a project, the amount (*) of {currency} you wish to donate,"
 " and enter the donor's name that will appear on your receipt:"
 msgstr ""
 "Veuillez sélectionner un projet, le montant (*) de {currency} que vous "
-"souhaitez donner, et saisir le nom du donateur qui apparaîtra sur votre reçu "
-":"
+"souhaitez donner, et saisir le nom du donateur qui apparaîtra sur votre "
+"reçu :"
 
-#: talermerchantdemos/donations/templates/index.html.j2:33
+#: talermerchantdemos/templates/donations-index.html.j2:33
 msgid "Anonymous Donor"
 msgstr "Donateur anonyme"
 
-#: talermerchantdemos/donations/templates/index.html.j2:34
+#: talermerchantdemos/templates/donations-index.html.j2:34
 msgid "Donate!"
 msgstr "Faites un don !"
 
-#: talermerchantdemos/donations/templates/index.html.j2:39
+#: talermerchantdemos/templates/donations-index.html.j2:39
 msgid ""
 "(*) To make the demo a bit more interesting, the 5 {currency} option is "
 "deliberately implemented with a fault: the merchant will try to make you "
@@ -431,94 +422,32 @@ msgid ""
 " from the merchant in the Taler wallet.  That way, Taler protects you "
 "from committing to erroneous payments."
 msgstr ""
-"(*) Pour rendre la démo un peu plus intéressante, l'option 5 {currency} est "
-"délibérément mise en œuvre avec un défaut : le marchand essaiera de vous "
-"faire donner 6 {currency} au lieu des 5 {currency} indiquées dans le "
-"formulaire.  Mais ne vous inquiétez pas, vous aurez la possibilité "
+"(*) Pour rendre la démo un peu plus intéressante, l'option 5 {currency} "
+"est délibérément mise en œuvre avec un défaut : le marchand essaiera de "
+"vous faire donner 6 {currency} au lieu des 5 {currency} indiquées dans le"
+" formulaire.  Mais ne vous inquiétez pas, vous aurez la possibilité "
 "d'examiner l'offre finale du commerçant dans le portefeuille Taler.  De "
 "cette façon, Taler vous protège contre l'engagement de paiements erronés."
 
-#: talermerchantdemos/donations/templates/provider-not-supported.html.j2:4
+#: talermerchantdemos/templates/donations-provider-not-supported.html.j2:4
 msgid "Payment Provider Not Supported"
 msgstr "Le fournisseur de paiement n'est pas pris en charge"
 
-#: talermerchantdemos/donations/templates/provider-not-supported.html.j2:7
+#: talermerchantdemos/templates/donations-provider-not-supported.html.j2:7
 msgid "Unfortunately the selected payment provider is not supported in this 
demo."
 msgstr ""
 "Malheureusement, le fournisseur de paiement sélectionné n'est pas pris en"
 " charge dans cette démo."
 
-#: talermerchantdemos/donations/templates/provider-not-supported.html.j2:8
+#: talermerchantdemos/templates/donations-provider-not-supported.html.j2:8
 msgid "Please go back and select &quot;Taler&quot;."
 msgstr "Veuillez revenir en arrière et sélectionner &quot;Taler&quot ;."
 
-#: talermerchantdemos/httpcommon/__init__.py:24
-#: talermerchantdemos/httpcommon/__init__.py:58
-msgid "Could not establish connection to backend"
-msgstr "Impossible d'établir une connexion avec le backend"
-
-#: talermerchantdemos/httpcommon/__init__.py:30
-#: talermerchantdemos/httpcommon/__init__.py:62
-msgid "Could not parse response from backend"
-msgstr "Impossible d'analyser la réponse du backend"
-
-#: talermerchantdemos/httpcommon/__init__.py:36
-#: talermerchantdemos/httpcommon/__init__.py:66
-msgid "Backend returned error status"
-msgstr "Le backend a renvoyé un statut d'erreur"
-
-#: talermerchantdemos/landing/landing.py:197
-#: talermerchantdemos/survey/survey.py:179
-msgid "HTTP method not allowed for this page"
-msgstr "Méthode HTTP non autorisée pour cette page"
-
-#: talermerchantdemos/survey/templates/base.html.j2:20
-msgid "GNU Taler Demo: Survey"
-msgstr "Démo de GNU Taler : Enquête"
-
-#: talermerchantdemos/survey/templates/base.html.j2:32
-msgid "Survey"
-msgstr "Sondage"
-
-#: talermerchantdemos/survey/templates/base.html.j2:34
-msgid "This page demonstrates how to tip visitors for completing small tasks."
-msgstr ""
-"Cette page montre comment donner des pourboires aux visiteurs qui "
-"accomplissent de petites tâches."
-
-#: talermerchantdemos/survey/templates/base.html.j2:35
-msgid ""
-"Tipping is a way for offer cash rewards that go directly into a user's "
-"wallet."
-msgstr ""
-"Le pourboire est un moyen d'offrir des récompenses en espèces qui vont "
-"directement dans le portefeuille de l'utilisateur."
-
-#: talermerchantdemos/survey/templates/index.html.j2:6
-msgid ""
-"Please participate in our survey about payment systems and receive a tip "
-"in return."
-msgstr ""
-"Participez à notre enquête sur les systèmes de paiement et recevez un "
-"pourboire en retour."
-
-#: talermerchantdemos/survey/templates/index.html.j2:12
-msgid "Which payment system do you prefer?"
-msgstr "Quel système de paiement préférez-vous ?"
-
-#: talermerchantdemos/survey/templates/index.html.j2:23
-msgid "Submit Survey"
-msgstr "Soumettre une enquête"
-
-#: talermerchantdemos/templates/landing-base.html.j2:20
-msgid "GNU Taler Demo: Introduction"
-msgstr "Demo de GNU Taler : Introduction"
-
-#: talermerchantdemos/templates/landing-base.html.j2:34
+#: talermerchantdemos/templates/landing-base.html.j2:7
 msgid "This is the GNU Taler demo."
 msgstr "C'est la démo de GNU Taler."
 
-#: talermerchantdemos/templates/landing-base.html.j2:35
+#: talermerchantdemos/templates/landing-base.html.j2:8
 msgid "Here you can try out the GNU Taler payment system using a toy currency."
 msgstr ""
 "Ici, vous pouvez essayer le système de paiement GNU Taler en utilisant "
@@ -579,8 +508,8 @@ msgid ""
 "To withdraw {currency} coins you must first create an account at our <a "
 "href=\"{bank}\">bank</a>."
 msgstr ""
-"Pour retirer des pièces de {currency}, vous devez d'abord créer un compte "
-"dans notre <a href=\"{bank}\">banque</a>."
+"Pour retirer des pièces de {currency}, vous devez d'abord créer un compte"
+" dans notre <a href=\"{bank}\">banque</a>."
 
 #: talermerchantdemos/templates/landing-index.html.j2:24
 msgid "Signing up only requires you to pick a username and password."
@@ -593,16 +522,16 @@ msgid ""
 "When you create an account at our bank, you will be credited 100 "
 "{currency} for signing up."
 msgstr ""
-"Lorsque vous créerez un compte dans notre banque, vous serez crédité de 100 "
-"{currency} pour votre inscription."
+"Lorsque vous créerez un compte dans notre banque, vous serez crédité de "
+"100 {currency} pour votre inscription."
 
 #: talermerchantdemos/templates/landing-index.html.j2:26
 msgid ""
 "Afterwards, use the bank's Web interface to authorize the transfer of "
 "{currency} to your wallet."
 msgstr ""
-"Ensuite, utilisez l'interface Web de la banque pour autoriser le transfert "
-"de {currency} vers votre portefeuille."
+"Ensuite, utilisez l'interface Web de la banque pour autoriser le "
+"transfert de {currency} vers votre portefeuille."
 
 #: talermerchantdemos/templates/landing-index.html.j2:30
 msgid ""
@@ -644,19 +573,20 @@ msgid ""
 "respect to a software project of your choice by donating {currency} to "
 "them."
 msgstr ""
-"Sur le site <a href=\"{donations}\">site web de donation</a> du projet, vous "
-"pouvez témoigner votre respect à un projet logiciel de votre choix en lui "
-"faisant un don de {currency}."
+"Sur le site <a href=\"{donations}\">site web de donation</a> du projet, "
+"vous pouvez témoigner votre respect à un projet logiciel de votre choix "
+"en lui faisant un don de {currency}."
 
 #: talermerchantdemos/templates/landing-index.html.j2:56
 msgid "Step 4: Check money flow"
 msgstr "Étape 4 : Vérifiez les flux financiers"
 
 #: talermerchantdemos/templates/landing-index.html.j2:59
+#, fuzzy
 msgid ""
 "You can see the wire transfers from the escrow account of the exchange to"
-" the merchants on the <a href=\"{bank}/public-accounts\">public accounts "
-"page</a> of the bank."
+" the merchants on the <a href=\"{bank}\">public accounts page</a> of the "
+"bank."
 msgstr ""
 "Vous pouvez voir les virements du compte séquestre de la bourse aux "
 "commerçants sur la page <a href=\"{bank}/public-accounts\">public "
@@ -702,6 +632,40 @@ msgstr ""
 "Faites-nous savoir ce que vous pensez en <a href=\"{link}\">nous "
 "contactant</a>."
 
+#: talermerchantdemos/templates/survey-base.html.j2:6
+msgid "Survey"
+msgstr "Sondage"
+
+#: talermerchantdemos/templates/survey-base.html.j2:8
+msgid "This page demonstrates how to tip visitors for completing small tasks."
+msgstr ""
+"Cette page montre comment donner des pourboires aux visiteurs qui "
+"accomplissent de petites tâches."
+
+#: talermerchantdemos/templates/survey-base.html.j2:9
+msgid ""
+"Tipping is a way for offer cash rewards that go directly into a user's "
+"wallet."
+msgstr ""
+"Le pourboire est un moyen d'offrir des récompenses en espèces qui vont "
+"directement dans le portefeuille de l'utilisateur."
+
+#: talermerchantdemos/templates/survey-index.html.j2:6
+msgid ""
+"Please participate in our survey about payment systems and receive a tip "
+"in return."
+msgstr ""
+"Participez à notre enquête sur les systèmes de paiement et recevez un "
+"pourboire en retour."
+
+#: talermerchantdemos/templates/survey-index.html.j2:12
+msgid "Which payment system do you prefer?"
+msgstr "Quel système de paiement préférez-vous ?"
+
+#: talermerchantdemos/templates/survey-index.html.j2:23
+msgid "Submit Survey"
+msgstr "Soumettre une enquête"
+
 #~ msgid ""
 #~ "After installation, you may be asked "
 #~ "to grant the brower-based Taler "
@@ -722,3 +686,18 @@ msgstr ""
 #~ msgid "Swedish [sv]"
 #~ msgstr ""
 
+#~ msgid "GNU Taler Demo: Essay Shop"
+#~ msgstr "Démo GNU Taler : boutique d'essai"
+
+#~ msgid "Back-office"
+#~ msgstr "Le back-office"
+
+#~ msgid "GNU Taler Demo: Donations"
+#~ msgstr "Démo de GNU Taler : Dons"
+
+#~ msgid "GNU Taler Demo: Survey"
+#~ msgstr "Démo de GNU Taler : Enquête"
+
+#~ msgid "GNU Taler Demo: Introduction"
+#~ msgstr "Demo de GNU Taler : Introduction"
+
diff --git a/translations/hi/LC_MESSAGES/messages.po 
b/translations/hi/LC_MESSAGES/messages.po
index bd9e102..971fb90 100644
--- a/translations/hi/LC_MESSAGES/messages.po
+++ b/translations/hi/LC_MESSAGES/messages.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PROJECT VERSION\n"
 "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2021-04-21 18:28+0200\n"
+"POT-Creation-Date: 2021-05-11 09:13+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: Automatically generated\n"
 "Language: hi\n"
@@ -18,168 +18,178 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Generated-By: Babel 2.9.0\n"
 
-#: talermerchantdemos/blog/blog.py:114
-#: talermerchantdemos/donations/donations.py:157
-#: talermerchantdemos/landing/landing.py:117
-#: talermerchantdemos/survey/survey.py:110
+#: talermerchantdemos/blog/blog.py:126
+#: talermerchantdemos/donations/donations.py:139
+#: talermerchantdemos/landing/landing.py:93
+#: talermerchantdemos/survey/survey.py:100
 msgid "Internal error"
 msgstr ""
 
-#: talermerchantdemos/blog/blog.py:180
+#: talermerchantdemos/blog/blog.py:186
 msgid "Cannot refund unpaid article"
 msgstr ""
 
-#: talermerchantdemos/blog/blog.py:186
+#: talermerchantdemos/blog/blog.py:193
 msgid "Article is not anymore refundable"
 msgstr ""
 
-#: talermerchantdemos/blog/blog.py:217
+#: talermerchantdemos/blog/blog.py:229
 msgid "You did not pay for this article (nice try!)"
 msgstr ""
 
-#: talermerchantdemos/blog/blog.py:223
+#: talermerchantdemos/blog/blog.py:234
 msgid "Item not refundable (anymore)"
 msgstr ""
 
-#: talermerchantdemos/blog/blog.py:248
+#: talermerchantdemos/blog/blog.py:260
 msgid "Internal error: Files for article ({}) not found."
 msgstr ""
 
-#: talermerchantdemos/blog/blog.py:253
+#: talermerchantdemos/blog/blog.py:267
 msgid "Supplemental file ({}) for article ({}) not found."
 msgstr ""
 
-#: talermerchantdemos/blog/blog.py:326 talermerchantdemos/blog/blog.py:339
+#: talermerchantdemos/blog/blog.py:343 talermerchantdemos/blog/blog.py:357
 msgid "Direct access forbidden"
 msgstr ""
 
-#: talermerchantdemos/blog/blog.py:405
+#: talermerchantdemos/blog/blog.py:413
 msgid "Internal server error"
 msgstr ""
 
-#: talermerchantdemos/blog/blog.py:412
-#: talermerchantdemos/donations/donations.py:323
-#: talermerchantdemos/landing/landing.py:189
-#: talermerchantdemos/survey/survey.py:171
+#: talermerchantdemos/blog/blog.py:421
+#: talermerchantdemos/donations/donations.py:282
+#: talermerchantdemos/landing/landing.py:166
+#: talermerchantdemos/survey/survey.py:167
 msgid "Page not found"
 msgstr ""
 
-#: talermerchantdemos/blog/templates/article_frame.html.j2:9
+#: talermerchantdemos/donations/donations.py:125
+msgid "parameter '{}' required"
+msgstr ""
+
+#: talermerchantdemos/httpcommon/__init__.py:48
+#: talermerchantdemos/httpcommon/__init__.py:84
+msgid "Could not establish connection to backend"
+msgstr ""
+
+#: talermerchantdemos/httpcommon/__init__.py:54
+#: talermerchantdemos/httpcommon/__init__.py:89
+msgid "Could not parse response from backend"
+msgstr ""
+
+#: talermerchantdemos/httpcommon/__init__.py:59
+#: talermerchantdemos/httpcommon/__init__.py:92
+msgid "Backend returned error status"
+msgstr ""
+
+#: talermerchantdemos/landing/landing.py:174
+#: talermerchantdemos/survey/survey.py:175
+msgid "HTTP method not allowed for this page"
+msgstr ""
+
+#: talermerchantdemos/templates/blog-article-frame.html.j2:11
+#: talermerchantdemos/templates/blog-article-frame.html.j2:16
 msgid "Taler allows merchants to offer refunds to customers."
 msgstr ""
 
-#: talermerchantdemos/blog/templates/article_frame.html.j2:10
+#: talermerchantdemos/templates/blog-article-frame.html.j2:12
 msgid ""
 "You can <a href=\"{url}\">request a refund</a> within the first hour "
 "after buying this article."
 msgstr ""
 
-#: talermerchantdemos/blog/templates/base.html.j2:23
-msgid "GNU Taler Demo: Essay Shop"
+#: talermerchantdemos/templates/blog-article-frame.html.j2:17
+msgid "This article can't be refunded anymore."
 msgstr ""
 
-#: talermerchantdemos/blog/templates/base.html.j2:34
-#: talermerchantdemos/donations/templates/base.html.j2:31
-#: talermerchantdemos/survey/templates/base.html.j2:31
-msgid "Taler Demo"
-msgstr ""
-
-#: talermerchantdemos/blog/templates/base.html.j2:35
+#: talermerchantdemos/templates/blog-base.html.j2:9
 msgid "Essay shop"
 msgstr ""
 
-#: talermerchantdemos/blog/templates/base.html.j2:37
+#: talermerchantdemos/templates/blog-base.html.j2:11
 msgid "On this page you can buy articles using an imaginary currency."
 msgstr ""
 
-#: talermerchantdemos/blog/templates/base.html.j2:38
+#: talermerchantdemos/templates/blog-base.html.j2:12
 msgid ""
 "The articles are chapters from Richard Stallman's book &quot;Free "
 "Software, Free Society&quot;."
 msgstr ""
 
-#: talermerchantdemos/blog/templates/base.html.j2:39
+#: talermerchantdemos/templates/blog-base.html.j2:13
 msgid ""
 "The book is <a href=\"{shop}\">published by the FSF</a> and available "
 "gratis at <a href=\"{gnu}\">gnu.org</a>."
 msgstr ""
 
-#: talermerchantdemos/blog/templates/confirm_refund.html.j2:3
+#: talermerchantdemos/templates/blog-confirm-refund.html.j2:3
 msgid "Confirm refund request for article"
 msgstr ""
 
-#: talermerchantdemos/blog/templates/confirm_refund.html.j2:7
+#: talermerchantdemos/templates/blog-confirm-refund.html.j2:7
 msgid "Do you want to get a refund for the article <em>{name}</em>?"
 msgstr ""
 
-#: talermerchantdemos/blog/templates/confirm_refund.html.j2:8
+#: talermerchantdemos/templates/blog-confirm-refund.html.j2:8
 msgid ""
 "In this demonstration, refunds will be automatically approved by the "
 "merchant."
 msgstr ""
 
-#: talermerchantdemos/blog/templates/confirm_refund.html.j2:9
+#: talermerchantdemos/templates/blog-confirm-refund.html.j2:9
 msgid ""
 "After you have obtained a refund, you will not be able to read the "
 "article anymore."
 msgstr ""
 
-#: talermerchantdemos/blog/templates/confirm_refund.html.j2:15
+#: talermerchantdemos/templates/blog-confirm-refund.html.j2:15
 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 ""
 
-#: talermerchantdemos/blog/templates/confirm_refund.html.j2:21
+#: talermerchantdemos/templates/blog-confirm-refund.html.j2:21
 msgid "Request refund"
 msgstr ""
 
-#: talermerchantdemos/blog/templates/error.html.j2:3
-#: talermerchantdemos/donations/templates/error.html.j2:3
-#: talermerchantdemos/survey/templates/error.html.j2:3
+#: talermerchantdemos/templates/blog-error.html.j2:3
+#: talermerchantdemos/templates/donations-error.html.j2:3
 #: talermerchantdemos/templates/landing-error.html.j2:3
+#: talermerchantdemos/templates/survey-error.html.j2:3
 msgid "Error encountered"
 msgstr ""
 
-#: talermerchantdemos/blog/templates/error.html.j2:9
-#: talermerchantdemos/donations/templates/error.html.j2:9
-#: talermerchantdemos/survey/templates/error.html.j2:9
+#: talermerchantdemos/templates/blog-error.html.j2:9
+#: talermerchantdemos/templates/donations-error.html.j2:9
+#: talermerchantdemos/templates/survey-error.html.j2:9
 msgid "The backend returned status code {code}."
 msgstr ""
 
-#: talermerchantdemos/blog/templates/error.html.j2:14
-#: talermerchantdemos/donations/templates/error.html.j2:14
-#: talermerchantdemos/survey/templates/error.html.j2:14
+#: talermerchantdemos/templates/blog-error.html.j2:14
+#: talermerchantdemos/templates/donations-error.html.j2:14
+#: talermerchantdemos/templates/survey-error.html.j2:14
 msgid "Backend response:"
 msgstr ""
 
-#: talermerchantdemos/blog/templates/error.html.j2:19
-#: talermerchantdemos/donations/templates/error.html.j2:19
-#: talermerchantdemos/survey/templates/error.html.j2:19
+#: talermerchantdemos/templates/blog-error.html.j2:19
+#: talermerchantdemos/templates/donations-error.html.j2:19
 #: talermerchantdemos/templates/landing-error.html.j2:8
+#: talermerchantdemos/templates/survey-error.html.j2:19
 msgid "Stack trace:"
 msgstr ""
 
-#: talermerchantdemos/blog/templates/footer.html.j2:5
-#: talermerchantdemos/donations/templates/footer.html.j2:5
-#: talermerchantdemos/survey/templates/footer.html.j2:5
-#: talermerchantdemos/templates/footer.html.j2:5
-msgid ""
-"You can learn more about GNU Taler on our main <a "
-"href=\"{site}\">website</a>."
-msgstr ""
-
-#: talermerchantdemos/blog/templates/index.html.j2:3
+#: talermerchantdemos/templates/blog-index.html.j2:3
 msgid "Essay Shop: Free Software, Free Society"
 msgstr ""
 
-#: talermerchantdemos/blog/templates/index.html.j2:5
+#: talermerchantdemos/templates/blog-index.html.j2:5
 msgid ""
 "This is the latest edition of <cite>Free Software, Free Society: Selected"
 " Essays of Richard M. Stallman.</cite>"
 msgstr ""
 
-#: talermerchantdemos/blog/templates/index.html.j2:13
+#: talermerchantdemos/templates/blog-index.html.j2:13
 msgid ""
 "Verbatim copying and distribution of this entire book are permitted "
 "worldwide, without royalty, in any medium, provided this notice is "
@@ -189,187 +199,167 @@ msgid ""
 "copyright notice and this permission notice are preserved on all copies."
 msgstr ""
 
-#: talermerchantdemos/blog/templates/index.html.j2:18
+#: talermerchantdemos/templates/blog-index.html.j2:18
 msgid "Chapters"
 msgstr ""
 
-#: talermerchantdemos/blog/templates/index.html.j2:21
+#: talermerchantdemos/templates/blog-index.html.j2:20
 msgid "Click on an individual chapter to to purchase it with GNU Taler."
 msgstr ""
 
-#: talermerchantdemos/blog/templates/index.html.j2:22
+#: talermerchantdemos/templates/blog-index.html.j2:21
 msgid ""
 "You can get free, virtual money to buy articles on this page at the <a "
-"href=\"{}\")\">bank</a>"
+"href=\"{}\")\">bank</a>."
 msgstr ""
 
-#: talermerchantdemos/blog/templates/index.html.j2:30
+#: talermerchantdemos/templates/blog-index.html.j2:28
 msgid "Pay to read more..."
 msgstr ""
 
-#: talermerchantdemos/blog/templates/index.html.j2:33
+#: talermerchantdemos/templates/blog-index.html.j2:31
 msgid "No articles available in this language."
 msgstr ""
 
-#: talermerchantdemos/blog/templates/menu.html.j2:6
-#: talermerchantdemos/donations/templates/menu.html.j2:6
-#: talermerchantdemos/survey/templates/menu.html.j2:6
-#: talermerchantdemos/templates/landing-base.html.j2:32
-#: talermerchantdemos/templates/menu.html.j2:6
+#: talermerchantdemos/templates/common-base.html.j2:20
+msgid "GNU Taler Demo"
+msgstr ""
+
+#: talermerchantdemos/templates/common-base.html.j2:44
+#: talermerchantdemos/templates/landing-base.html.j2:5
 msgid "Introduction"
 msgstr ""
 
-#: talermerchantdemos/blog/templates/menu.html.j2:9
-#: talermerchantdemos/donations/templates/menu.html.j2:9
-#: talermerchantdemos/survey/templates/menu.html.j2:9
-#: talermerchantdemos/templates/menu.html.j2:9
+#: talermerchantdemos/templates/common-base.html.j2:47
 msgid "Bank"
 msgstr ""
 
-#: talermerchantdemos/blog/templates/menu.html.j2:12
-#: talermerchantdemos/donations/templates/menu.html.j2:12
-#: talermerchantdemos/survey/templates/menu.html.j2:12
-#: talermerchantdemos/templates/menu.html.j2:12
+#: talermerchantdemos/templates/common-base.html.j2:50
 msgid "Essay Shop"
 msgstr ""
 
-#: talermerchantdemos/blog/templates/menu.html.j2:15
-#: talermerchantdemos/donations/templates/base.html.j2:32
-#: talermerchantdemos/donations/templates/menu.html.j2:15
-#: talermerchantdemos/survey/templates/menu.html.j2:15
-#: talermerchantdemos/templates/menu.html.j2:15
+#: talermerchantdemos/templates/common-base.html.j2:53
+#: talermerchantdemos/templates/donations-base.html.j2:6
 msgid "Donations"
 msgstr ""
 
-#: talermerchantdemos/blog/templates/menu.html.j2:18
-#: talermerchantdemos/donations/templates/menu.html.j2:18
-#: talermerchantdemos/survey/templates/menu.html.j2:18
-#: talermerchantdemos/templates/menu.html.j2:18
+#: talermerchantdemos/templates/common-base.html.j2:56
 msgid "Tipping/Survey"
 msgstr ""
 
-#: talermerchantdemos/blog/templates/menu.html.j2:21
-#: talermerchantdemos/donations/templates/menu.html.j2:21
-#: talermerchantdemos/survey/templates/menu.html.j2:21
-#: talermerchantdemos/templates/menu.html.j2:21
-msgid "Back-office"
-msgstr ""
-
-#: talermerchantdemos/donations/donations.py:143
-msgid "parameter '{}' required"
-msgstr ""
-
-#: talermerchantdemos/donations/templates/base.html.j2:20
-msgid "GNU Taler Demo: Donations"
+#: talermerchantdemos/templates/common-base.html.j2:85
+msgid ""
+"You can learn more about GNU Taler on our main <a "
+"href=\"{site}\">website</a>."
 msgstr ""
 
-#: talermerchantdemos/donations/templates/base.html.j2:34
+#: talermerchantdemos/templates/donations-base.html.j2:8
 msgid "This is the donation page."
 msgstr ""
 
-#: talermerchantdemos/donations/templates/base.html.j2:35
+#: talermerchantdemos/templates/donations-base.html.j2:9
 msgid ""
 "Using this page you can make donations in {currency} to Free Software "
 "projects."
 msgstr ""
 
-#: talermerchantdemos/donations/templates/checkout.html.j2:5
+#: talermerchantdemos/templates/donations-checkout.html.j2:5
 msgid "Select your payment method"
 msgstr ""
 
-#: talermerchantdemos/donations/templates/checkout.html.j2:9
+#: talermerchantdemos/templates/donations-checkout.html.j2:9
 msgid "This is an example for a \"checkout\" page of a Web shop."
 msgstr ""
 
-#: talermerchantdemos/donations/templates/checkout.html.j2:10
+#: talermerchantdemos/templates/donations-checkout.html.j2:10
 msgid ""
 "On the previous page, you have created the shopping cart and decided "
 "which product to buy (i.e. which project to donate KUDOS to)."
 msgstr ""
 
-#: talermerchantdemos/donations/templates/checkout.html.j2:11
+#: talermerchantdemos/templates/donations-checkout.html.j2:11
 msgid ""
 "As Taler is not yet universally used, we expect merchants will offer "
 "various payment options."
 msgstr ""
 
-#: talermerchantdemos/donations/templates/checkout.html.j2:12
+#: talermerchantdemos/templates/donations-checkout.html.j2:12
 msgid "To continue with the demo, select the &quot;Taler&quot; payment option."
 msgstr ""
 
-#: talermerchantdemos/donations/templates/checkout.html.j2:17
+#: talermerchantdemos/templates/donations-checkout.html.j2:17
 msgid ""
 "Note that you must select Taler here for the demo to continue, as the "
 "other payment options are just placeholders and not really working in the"
 " demonstration."
 msgstr ""
 
-#: talermerchantdemos/donations/templates/checkout.html.j2:18
+#: talermerchantdemos/templates/donations-checkout.html.j2:18
 msgid ""
 "It would be possible to ask the user to make this choice already on the "
 "previous page (with the shopping cart); we just separated the two steps "
 "to keep each step as simple as possible."
 msgstr ""
 
-#: talermerchantdemos/donations/templates/checkout.html.j2:44
+#: talermerchantdemos/templates/donations-checkout.html.j2:44
 msgid "Confirm selection"
 msgstr ""
 
-#: talermerchantdemos/donations/templates/fulfillment.html.j2:4
+#: talermerchantdemos/templates/donations-fulfillment.html.j2:4
 msgid "Donation Receipt"
 msgstr ""
 
-#: talermerchantdemos/donations/templates/fulfillment.html.j2:7
+#: talermerchantdemos/templates/donations-fulfillment.html.j2:7
 msgid ""
 "Thank you, <strong>{donor}</strong>, for donating "
 "<strong>{amount}</strong> to <strong>{receiver}</strong>."
 msgstr ""
 
-#: talermerchantdemos/donations/templates/fulfillment.html.j2:12
+#: talermerchantdemos/templates/donations-fulfillment.html.j2:12
 msgid ""
 "Please keep the order identifier <strong>{id}</strong> as a receipt for "
 "your donation."
 msgstr ""
 
-#: talermerchantdemos/donations/templates/fulfillment.html.j2:13
+#: talermerchantdemos/templates/donations-fulfillment.html.j2:13
 msgid ""
 "You can show other people that you donated by sharing <a "
 "href=\"{link}\">this link</a> with them."
 msgstr ""
 
-#: talermerchantdemos/donations/templates/fulfillment.html.j2:19
+#: talermerchantdemos/templates/donations-fulfillment.html.j2:19
 msgid "You can always make <a href=\"{link}\">another donation</a>."
 msgstr ""
 
-#: talermerchantdemos/donations/templates/index.html.j2:4
+#: talermerchantdemos/templates/donations-index.html.j2:4
 msgid "Donate to Free Software projects"
 msgstr ""
 
-#: talermerchantdemos/donations/templates/index.html.j2:8
+#: talermerchantdemos/templates/donations-index.html.j2:8
 msgid ""
 "This donations website shows the user experience for donations with GNU "
 "Taler."
 msgstr ""
 
-#: talermerchantdemos/donations/templates/index.html.j2:9
+#: talermerchantdemos/templates/donations-index.html.j2:9
 msgid "You can make donations in an toy currency ({currency})"
 msgstr ""
 
-#: talermerchantdemos/donations/templates/index.html.j2:16
+#: talermerchantdemos/templates/donations-index.html.j2:16
 msgid ""
 "Please select a project, the amount (*) of {currency} you wish to donate,"
 " and enter the donor's name that will appear on your receipt:"
 msgstr ""
 
-#: talermerchantdemos/donations/templates/index.html.j2:33
+#: talermerchantdemos/templates/donations-index.html.j2:33
 msgid "Anonymous Donor"
 msgstr ""
 
-#: talermerchantdemos/donations/templates/index.html.j2:34
+#: talermerchantdemos/templates/donations-index.html.j2:34
 msgid "Donate!"
 msgstr ""
 
-#: talermerchantdemos/donations/templates/index.html.j2:39
+#: talermerchantdemos/templates/donations-index.html.j2:39
 msgid ""
 "(*) To make the demo a bit more interesting, the 5 {currency} option is "
 "deliberately implemented with a fault: the merchant will try to make you "
@@ -379,79 +369,23 @@ msgid ""
 "from committing to erroneous payments."
 msgstr ""
 
-#: talermerchantdemos/donations/templates/provider-not-supported.html.j2:4
+#: talermerchantdemos/templates/donations-provider-not-supported.html.j2:4
 msgid "Payment Provider Not Supported"
 msgstr ""
 
-#: talermerchantdemos/donations/templates/provider-not-supported.html.j2:7
+#: talermerchantdemos/templates/donations-provider-not-supported.html.j2:7
 msgid "Unfortunately the selected payment provider is not supported in this 
demo."
 msgstr ""
 
-#: talermerchantdemos/donations/templates/provider-not-supported.html.j2:8
+#: talermerchantdemos/templates/donations-provider-not-supported.html.j2:8
 msgid "Please go back and select &quot;Taler&quot;."
 msgstr ""
 
-#: talermerchantdemos/httpcommon/__init__.py:24
-#: talermerchantdemos/httpcommon/__init__.py:58
-msgid "Could not establish connection to backend"
-msgstr ""
-
-#: talermerchantdemos/httpcommon/__init__.py:30
-#: talermerchantdemos/httpcommon/__init__.py:62
-msgid "Could not parse response from backend"
-msgstr ""
-
-#: talermerchantdemos/httpcommon/__init__.py:36
-#: talermerchantdemos/httpcommon/__init__.py:66
-msgid "Backend returned error status"
-msgstr ""
-
-#: talermerchantdemos/landing/landing.py:197
-#: talermerchantdemos/survey/survey.py:179
-msgid "HTTP method not allowed for this page"
-msgstr ""
-
-#: talermerchantdemos/survey/templates/base.html.j2:20
-msgid "GNU Taler Demo: Survey"
-msgstr ""
-
-#: talermerchantdemos/survey/templates/base.html.j2:32
-msgid "Survey"
-msgstr ""
-
-#: talermerchantdemos/survey/templates/base.html.j2:34
-msgid "This page demonstrates how to tip visitors for completing small tasks."
-msgstr ""
-
-#: talermerchantdemos/survey/templates/base.html.j2:35
-msgid ""
-"Tipping is a way for offer cash rewards that go directly into a user's "
-"wallet."
-msgstr ""
-
-#: talermerchantdemos/survey/templates/index.html.j2:6
-msgid ""
-"Please participate in our survey about payment systems and receive a tip "
-"in return."
-msgstr ""
-
-#: talermerchantdemos/survey/templates/index.html.j2:12
-msgid "Which payment system do you prefer?"
-msgstr ""
-
-#: talermerchantdemos/survey/templates/index.html.j2:23
-msgid "Submit Survey"
-msgstr ""
-
-#: talermerchantdemos/templates/landing-base.html.j2:20
-msgid "GNU Taler Demo: Introduction"
-msgstr ""
-
-#: talermerchantdemos/templates/landing-base.html.j2:34
+#: talermerchantdemos/templates/landing-base.html.j2:7
 msgid "This is the GNU Taler demo."
 msgstr ""
 
-#: talermerchantdemos/templates/landing-base.html.j2:35
+#: talermerchantdemos/templates/landing-base.html.j2:8
 msgid "Here you can try out the GNU Taler payment system using a toy currency."
 msgstr ""
 
@@ -555,8 +489,8 @@ msgstr ""
 #: talermerchantdemos/templates/landing-index.html.j2:59
 msgid ""
 "You can see the wire transfers from the escrow account of the exchange to"
-" the merchants on the <a href=\"{bank}/public-accounts\">public accounts "
-"page</a> of the bank."
+" the merchants on the <a href=\"{bank}\">public accounts page</a> of the "
+"bank."
 msgstr ""
 
 #: talermerchantdemos/templates/landing-index.html.j2:60
@@ -591,6 +525,34 @@ msgstr ""
 msgid "Let us know what you think by <a href=\"{link}\">contacting us</a>."
 msgstr ""
 
+#: talermerchantdemos/templates/survey-base.html.j2:6
+msgid "Survey"
+msgstr ""
+
+#: talermerchantdemos/templates/survey-base.html.j2:8
+msgid "This page demonstrates how to tip visitors for completing small tasks."
+msgstr ""
+
+#: talermerchantdemos/templates/survey-base.html.j2:9
+msgid ""
+"Tipping is a way for offer cash rewards that go directly into a user's "
+"wallet."
+msgstr ""
+
+#: talermerchantdemos/templates/survey-index.html.j2:6
+msgid ""
+"Please participate in our survey about payment systems and receive a tip "
+"in return."
+msgstr ""
+
+#: talermerchantdemos/templates/survey-index.html.j2:12
+msgid "Which payment system do you prefer?"
+msgstr ""
+
+#: talermerchantdemos/templates/survey-index.html.j2:23
+msgid "Submit Survey"
+msgstr ""
+
 #~ msgid "English [en]"
 #~ msgstr ""
 
@@ -603,3 +565,35 @@ msgstr ""
 #~ msgid "Swedish [sv]"
 #~ msgstr ""
 
+#~ msgid "GNU Taler Demo: Essay Shop"
+#~ msgstr ""
+
+#~ msgid "Taler Demo"
+#~ msgstr ""
+
+#~ msgid ""
+#~ "You can get free, virtual money to"
+#~ " buy articles on this page at "
+#~ "the <a href=\"{}\")\">bank</a>"
+#~ msgstr ""
+
+#~ msgid "Back-office"
+#~ msgstr ""
+
+#~ msgid "GNU Taler Demo: Donations"
+#~ msgstr ""
+
+#~ msgid "GNU Taler Demo: Survey"
+#~ msgstr ""
+
+#~ msgid "GNU Taler Demo: Introduction"
+#~ msgstr ""
+
+#~ msgid ""
+#~ "You can see the wire transfers "
+#~ "from the escrow account of the "
+#~ "exchange to the merchants on the "
+#~ "<a href=\"{bank}/public-accounts\">public accounts"
+#~ " page</a> of the bank."
+#~ msgstr ""
+
diff --git a/translations/it/LC_MESSAGES/messages.po 
b/translations/it/LC_MESSAGES/messages.po
index 97f6a56..426400e 100644
--- a/translations/it/LC_MESSAGES/messages.po
+++ b/translations/it/LC_MESSAGES/messages.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PROJECT VERSION\n"
 "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2021-04-21 18:28+0200\n"
+"POT-Creation-Date: 2021-05-11 09:13+0200\n"
 "PO-Revision-Date: 2021-02-24 18:05+0000\n"
 "Last-Translator: MS <ms@taler.net>\n"
 "Language: it\n"
@@ -19,57 +19,82 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Generated-By: Babel 2.9.0\n"
 
-#: talermerchantdemos/blog/blog.py:114
-#: talermerchantdemos/donations/donations.py:157
-#: talermerchantdemos/landing/landing.py:117
-#: talermerchantdemos/survey/survey.py:110
+#: talermerchantdemos/blog/blog.py:126
+#: talermerchantdemos/donations/donations.py:139
+#: talermerchantdemos/landing/landing.py:93
+#: talermerchantdemos/survey/survey.py:100
 msgid "Internal error"
 msgstr "Errore interno"
 
-#: talermerchantdemos/blog/blog.py:180
+#: talermerchantdemos/blog/blog.py:186
 msgid "Cannot refund unpaid article"
 msgstr "Impossibile rimborsare un articolo non pagato"
 
-#: talermerchantdemos/blog/blog.py:186
+#: talermerchantdemos/blog/blog.py:193
 msgid "Article is not anymore refundable"
 msgstr "L'articolo non è più rimborsabile"
 
-#: talermerchantdemos/blog/blog.py:217
+#: talermerchantdemos/blog/blog.py:229
 msgid "You did not pay for this article (nice try!)"
 msgstr "Non hai pagato questo articolo (bel tentativo!)"
 
-#: talermerchantdemos/blog/blog.py:223
+#: talermerchantdemos/blog/blog.py:234
 msgid "Item not refundable (anymore)"
 msgstr "Articolo non (più) rimborsabile"
 
-#: talermerchantdemos/blog/blog.py:248
+#: talermerchantdemos/blog/blog.py:260
 msgid "Internal error: Files for article ({}) not found."
 msgstr "Errore interno: File per l'articolo ({}) non trovati."
 
-#: talermerchantdemos/blog/blog.py:253
+#: talermerchantdemos/blog/blog.py:267
 msgid "Supplemental file ({}) for article ({}) not found."
 msgstr "File supplementare ({}) per l'articolo ({}) non trovato."
 
-#: talermerchantdemos/blog/blog.py:326 talermerchantdemos/blog/blog.py:339
+#: talermerchantdemos/blog/blog.py:343 talermerchantdemos/blog/blog.py:357
 msgid "Direct access forbidden"
 msgstr "Accesso diretto vietato"
 
-#: talermerchantdemos/blog/blog.py:405
+#: talermerchantdemos/blog/blog.py:413
 msgid "Internal server error"
 msgstr "Errore del server"
 
-#: talermerchantdemos/blog/blog.py:412
-#: talermerchantdemos/donations/donations.py:323
-#: talermerchantdemos/landing/landing.py:189
-#: talermerchantdemos/survey/survey.py:171
+#: talermerchantdemos/blog/blog.py:421
+#: talermerchantdemos/donations/donations.py:282
+#: talermerchantdemos/landing/landing.py:166
+#: talermerchantdemos/survey/survey.py:167
 msgid "Page not found"
 msgstr "Pagina non trovata"
 
-#: talermerchantdemos/blog/templates/article_frame.html.j2:9
+#: talermerchantdemos/donations/donations.py:125
+msgid "parameter '{}' required"
+msgstr "parametro '{}' richiesto"
+
+#: talermerchantdemos/httpcommon/__init__.py:48
+#: talermerchantdemos/httpcommon/__init__.py:84
+msgid "Could not establish connection to backend"
+msgstr "Impossibile stabilire la connessione al backend"
+
+#: talermerchantdemos/httpcommon/__init__.py:54
+#: talermerchantdemos/httpcommon/__init__.py:89
+msgid "Could not parse response from backend"
+msgstr "Impossibile analizzare la risposta del backend"
+
+#: talermerchantdemos/httpcommon/__init__.py:59
+#: talermerchantdemos/httpcommon/__init__.py:92
+msgid "Backend returned error status"
+msgstr "Il backend ha segnalato uno stato di errore"
+
+#: talermerchantdemos/landing/landing.py:174
+#: talermerchantdemos/survey/survey.py:175
+msgid "HTTP method not allowed for this page"
+msgstr "Il metodo HTTP non è permesso in questa pagina"
+
+#: talermerchantdemos/templates/blog-article-frame.html.j2:11
+#: talermerchantdemos/templates/blog-article-frame.html.j2:16
 msgid "Taler allows merchants to offer refunds to customers."
 msgstr "Taler permette ai venditori di offrire rimborsi ai clienti."
 
-#: talermerchantdemos/blog/templates/article_frame.html.j2:10
+#: talermerchantdemos/templates/blog-article-frame.html.j2:12
 msgid ""
 "You can <a href=\"{url}\">request a refund</a> within the first hour "
 "after buying this article."
@@ -77,25 +102,20 @@ msgstr ""
 "Puoi <a href=\"{url}\">richiedere un rimborso</a>entro un'ora "
 "dall'acquisto dell'articolo."
 
-#: talermerchantdemos/blog/templates/base.html.j2:23
-msgid "GNU Taler Demo: Essay Shop"
-msgstr "GNU Taler Demo: Negozio di saggistica"
-
-#: talermerchantdemos/blog/templates/base.html.j2:34
-#: talermerchantdemos/donations/templates/base.html.j2:31
-#: talermerchantdemos/survey/templates/base.html.j2:31
-msgid "Taler Demo"
-msgstr "Taler Demo"
+#: talermerchantdemos/templates/blog-article-frame.html.j2:17
+#, fuzzy
+msgid "This article can't be refunded anymore."
+msgstr "Articolo non (più) rimborsabile"
 
-#: talermerchantdemos/blog/templates/base.html.j2:35
+#: talermerchantdemos/templates/blog-base.html.j2:9
 msgid "Essay shop"
 msgstr "Negozio di saggistica"
 
-#: talermerchantdemos/blog/templates/base.html.j2:37
+#: talermerchantdemos/templates/blog-base.html.j2:11
 msgid "On this page you can buy articles using an imaginary currency."
 msgstr "Su questa pagina puoi comprare articoli usando una valuta immaginaria."
 
-#: talermerchantdemos/blog/templates/base.html.j2:38
+#: talermerchantdemos/templates/blog-base.html.j2:12
 msgid ""
 "The articles are chapters from Richard Stallman's book &quot;Free "
 "Software, Free Society&quot;."
@@ -103,7 +123,7 @@ msgstr ""
 "Gli articoli sono capitoli tratti dal libro di Richard Stallman "
 "&quot;Software libero, Società libera&quot;."
 
-#: talermerchantdemos/blog/templates/base.html.j2:39
+#: talermerchantdemos/templates/blog-base.html.j2:13
 msgid ""
 "The book is <a href=\"{shop}\">published by the FSF</a> and available "
 "gratis at <a href=\"{gnu}\">gnu.org</a>."
@@ -111,15 +131,15 @@ msgstr ""
 "Il libro è <a href=\"{shop}\">pubblicato da FSF</a> e disponibile "
 "gratuitamente su<a href=\"{gnu}\">gnu.org</a>."
 
-#: talermerchantdemos/blog/templates/confirm_refund.html.j2:3
+#: talermerchantdemos/templates/blog-confirm-refund.html.j2:3
 msgid "Confirm refund request for article"
 msgstr "Confermare la richiesta di rimborso dell'articolo"
 
-#: talermerchantdemos/blog/templates/confirm_refund.html.j2:7
+#: talermerchantdemos/templates/blog-confirm-refund.html.j2:7
 msgid "Do you want to get a refund for the article <em>{name}</em>?"
 msgstr "Vuoi avere un rimborso per l'articolo <em>{name}</em>?"
 
-#: talermerchantdemos/blog/templates/confirm_refund.html.j2:8
+#: talermerchantdemos/templates/blog-confirm-refund.html.j2:8
 msgid ""
 "In this demonstration, refunds will be automatically approved by the "
 "merchant."
@@ -127,7 +147,7 @@ msgstr ""
 "In questa dimostrazione, i rimborsi saranno automaticamente approvati dai"
 " venditori."
 
-#: talermerchantdemos/blog/templates/confirm_refund.html.j2:9
+#: talermerchantdemos/templates/blog-confirm-refund.html.j2:9
 msgid ""
 "After you have obtained a refund, you will not be able to read the "
 "article anymore."
@@ -135,7 +155,7 @@ msgstr ""
 "Dopo aver ottenuto un rimborso, non sarà più possibile leggere questo "
 "articolo."
 
-#: talermerchantdemos/blog/templates/confirm_refund.html.j2:15
+#: talermerchantdemos/templates/blog-confirm-refund.html.j2:15
 msgid ""
 "You will only be able to receive the refund on the same wallet that you "
 "have used to pay for this article originally."
@@ -143,50 +163,41 @@ msgstr ""
 "Sarà possibile avere il rimborso solo nello stesso portafoglio utilizzato"
 " originariamente per pagare."
 
-#: talermerchantdemos/blog/templates/confirm_refund.html.j2:21
+#: talermerchantdemos/templates/blog-confirm-refund.html.j2:21
 msgid "Request refund"
 msgstr "Richiesta di rimborso"
 
-#: talermerchantdemos/blog/templates/error.html.j2:3
-#: talermerchantdemos/donations/templates/error.html.j2:3
-#: talermerchantdemos/survey/templates/error.html.j2:3
+#: talermerchantdemos/templates/blog-error.html.j2:3
+#: talermerchantdemos/templates/donations-error.html.j2:3
 #: talermerchantdemos/templates/landing-error.html.j2:3
+#: talermerchantdemos/templates/survey-error.html.j2:3
 msgid "Error encountered"
 msgstr "Errore riscontrato"
 
-#: talermerchantdemos/blog/templates/error.html.j2:9
-#: talermerchantdemos/donations/templates/error.html.j2:9
-#: talermerchantdemos/survey/templates/error.html.j2:9
+#: talermerchantdemos/templates/blog-error.html.j2:9
+#: talermerchantdemos/templates/donations-error.html.j2:9
+#: talermerchantdemos/templates/survey-error.html.j2:9
 msgid "The backend returned status code {code}."
 msgstr "Il backend ha restituito il codice di stato {code}."
 
-#: talermerchantdemos/blog/templates/error.html.j2:14
-#: talermerchantdemos/donations/templates/error.html.j2:14
-#: talermerchantdemos/survey/templates/error.html.j2:14
+#: talermerchantdemos/templates/blog-error.html.j2:14
+#: talermerchantdemos/templates/donations-error.html.j2:14
+#: talermerchantdemos/templates/survey-error.html.j2:14
 msgid "Backend response:"
 msgstr "Risposta del backend:"
 
-#: talermerchantdemos/blog/templates/error.html.j2:19
-#: talermerchantdemos/donations/templates/error.html.j2:19
-#: talermerchantdemos/survey/templates/error.html.j2:19
+#: talermerchantdemos/templates/blog-error.html.j2:19
+#: talermerchantdemos/templates/donations-error.html.j2:19
 #: talermerchantdemos/templates/landing-error.html.j2:8
+#: talermerchantdemos/templates/survey-error.html.j2:19
 msgid "Stack trace:"
 msgstr "Traccia dello stack:"
 
-#: talermerchantdemos/blog/templates/footer.html.j2:5
-#: talermerchantdemos/donations/templates/footer.html.j2:5
-#: talermerchantdemos/survey/templates/footer.html.j2:5
-#: talermerchantdemos/templates/footer.html.j2:5
-msgid ""
-"You can learn more about GNU Taler on our main <a "
-"href=\"{site}\">website</a>."
-msgstr "Puoi saperne di più su GNU Taler sul nostro <a 
href=\"{site}\">sito</a>."
-
-#: talermerchantdemos/blog/templates/index.html.j2:3
+#: talermerchantdemos/templates/blog-index.html.j2:3
 msgid "Essay Shop: Free Software, Free Society"
 msgstr "Negozio di saggistica: Software libero, società libera"
 
-#: talermerchantdemos/blog/templates/index.html.j2:5
+#: talermerchantdemos/templates/blog-index.html.j2:5
 msgid ""
 "This is the latest edition of <cite>Free Software, Free Society: Selected"
 " Essays of Richard M. Stallman.</cite>"
@@ -194,7 +205,7 @@ msgstr ""
 "Questa è l'ultima edizione di <cite>Software libero, società libera: "
 "Saggi selezionati di Richard M. Stallman.</cite>"
 
-#: talermerchantdemos/blog/templates/index.html.j2:13
+#: talermerchantdemos/templates/blog-index.html.j2:13
 msgid ""
 "Verbatim copying and distribution of this entire book are permitted "
 "worldwide, without royalty, in any medium, provided this notice is "
@@ -210,101 +221,83 @@ msgstr ""
 "traduzione venga approvata dalla Free Software Foundation e il rispetto "
 "del copyright e di questo permesso siano preservati in tutte le copie."
 
-#: talermerchantdemos/blog/templates/index.html.j2:18
+#: talermerchantdemos/templates/blog-index.html.j2:18
 msgid "Chapters"
 msgstr "Capitoli"
 
-#: talermerchantdemos/blog/templates/index.html.j2:21
+#: talermerchantdemos/templates/blog-index.html.j2:20
 msgid "Click on an individual chapter to to purchase it with GNU Taler."
 msgstr "Clicca su un capitolo per comprarlo con GNU Taler."
 
-#: talermerchantdemos/blog/templates/index.html.j2:22
+#: talermerchantdemos/templates/blog-index.html.j2:21
+#, fuzzy
 msgid ""
 "You can get free, virtual money to buy articles on this page at the <a "
-"href=\"{}\")\">bank</a>"
+"href=\"{}\")\">bank</a>."
 msgstr ""
 "Puoi avere denaro virtuale per comprare articoli in questa pagina <a "
 "href=\"{}\")\">banca</a>"
 
-#: talermerchantdemos/blog/templates/index.html.j2:30
+#: talermerchantdemos/templates/blog-index.html.j2:28
 msgid "Pay to read more..."
 msgstr "Paga per leggere di più..."
 
-#: talermerchantdemos/blog/templates/index.html.j2:33
+#: talermerchantdemos/templates/blog-index.html.j2:31
 msgid "No articles available in this language."
 msgstr "Nessun articolo disponibile in questa lingua."
 
-#: talermerchantdemos/blog/templates/menu.html.j2:6
-#: talermerchantdemos/donations/templates/menu.html.j2:6
-#: talermerchantdemos/survey/templates/menu.html.j2:6
-#: talermerchantdemos/templates/landing-base.html.j2:32
-#: talermerchantdemos/templates/menu.html.j2:6
+#: talermerchantdemos/templates/common-base.html.j2:20
+#, fuzzy
+msgid "GNU Taler Demo"
+msgstr "Taler Demo"
+
+#: talermerchantdemos/templates/common-base.html.j2:44
+#: talermerchantdemos/templates/landing-base.html.j2:5
 msgid "Introduction"
 msgstr "Introduzione"
 
-#: talermerchantdemos/blog/templates/menu.html.j2:9
-#: talermerchantdemos/donations/templates/menu.html.j2:9
-#: talermerchantdemos/survey/templates/menu.html.j2:9
-#: talermerchantdemos/templates/menu.html.j2:9
+#: talermerchantdemos/templates/common-base.html.j2:47
 msgid "Bank"
 msgstr "Banca"
 
-#: talermerchantdemos/blog/templates/menu.html.j2:12
-#: talermerchantdemos/donations/templates/menu.html.j2:12
-#: talermerchantdemos/survey/templates/menu.html.j2:12
-#: talermerchantdemos/templates/menu.html.j2:12
+#: talermerchantdemos/templates/common-base.html.j2:50
 msgid "Essay Shop"
 msgstr "Negozio di saggistica"
 
-#: talermerchantdemos/blog/templates/menu.html.j2:15
-#: talermerchantdemos/donations/templates/base.html.j2:32
-#: talermerchantdemos/donations/templates/menu.html.j2:15
-#: talermerchantdemos/survey/templates/menu.html.j2:15
-#: talermerchantdemos/templates/menu.html.j2:15
+#: talermerchantdemos/templates/common-base.html.j2:53
+#: talermerchantdemos/templates/donations-base.html.j2:6
 msgid "Donations"
 msgstr "Donazioni"
 
-#: talermerchantdemos/blog/templates/menu.html.j2:18
-#: talermerchantdemos/donations/templates/menu.html.j2:18
-#: talermerchantdemos/survey/templates/menu.html.j2:18
-#: talermerchantdemos/templates/menu.html.j2:18
+#: talermerchantdemos/templates/common-base.html.j2:56
 msgid "Tipping/Survey"
 msgstr "Guadagna con il questionario"
 
-#: talermerchantdemos/blog/templates/menu.html.j2:21
-#: talermerchantdemos/donations/templates/menu.html.j2:21
-#: talermerchantdemos/survey/templates/menu.html.j2:21
-#: talermerchantdemos/templates/menu.html.j2:21
-msgid "Back-office"
-msgstr "Back Office"
-
-#: talermerchantdemos/donations/donations.py:143
-msgid "parameter '{}' required"
-msgstr "parametro '{}' richiesto"
-
-#: talermerchantdemos/donations/templates/base.html.j2:20
-msgid "GNU Taler Demo: Donations"
-msgstr "GNU Taler Demo: Donazioni"
+#: talermerchantdemos/templates/common-base.html.j2:85
+msgid ""
+"You can learn more about GNU Taler on our main <a "
+"href=\"{site}\">website</a>."
+msgstr "Puoi saperne di più su GNU Taler sul nostro <a 
href=\"{site}\">sito</a>."
 
-#: talermerchantdemos/donations/templates/base.html.j2:34
+#: talermerchantdemos/templates/donations-base.html.j2:8
 msgid "This is the donation page."
 msgstr "Questa è la pagina delle donazioni."
 
-#: talermerchantdemos/donations/templates/base.html.j2:35
+#: talermerchantdemos/templates/donations-base.html.j2:9
 msgid ""
 "Using this page you can make donations in {currency} to Free Software "
 "projects."
 msgstr "Usando questa pagina puoi donare in {currency} ai progetti Free 
Software."
 
-#: talermerchantdemos/donations/templates/checkout.html.j2:5
+#: talermerchantdemos/templates/donations-checkout.html.j2:5
 msgid "Select your payment method"
 msgstr "Seleziona il tuo metodo di pagamento"
 
-#: talermerchantdemos/donations/templates/checkout.html.j2:9
+#: talermerchantdemos/templates/donations-checkout.html.j2:9
 msgid "This is an example for a \"checkout\" page of a Web shop."
 msgstr "Questo pagina è un esempio di \"Cassa\" di un negozio virtuale."
 
-#: talermerchantdemos/donations/templates/checkout.html.j2:10
+#: talermerchantdemos/templates/donations-checkout.html.j2:10
 msgid ""
 "On the previous page, you have created the shopping cart and decided "
 "which product to buy (i.e. which project to donate KUDOS to)."
@@ -312,7 +305,7 @@ msgstr ""
 "Nella pagina precedente, hai creato il tuo carrello e deciso che prodotto"
 " comprare (per esempio a che progetto donare i tuoi KUDOS)."
 
-#: talermerchantdemos/donations/templates/checkout.html.j2:11
+#: talermerchantdemos/templates/donations-checkout.html.j2:11
 msgid ""
 "As Taler is not yet universally used, we expect merchants will offer "
 "various payment options."
@@ -320,13 +313,13 @@ msgstr ""
 "Dal momento che Taler non è universalmente usato, ci aspettiamo che i "
 "venditori offrano diverse opzioni di pagamento."
 
-#: talermerchantdemos/donations/templates/checkout.html.j2:12
+#: talermerchantdemos/templates/donations-checkout.html.j2:12
 msgid "To continue with the demo, select the &quot;Taler&quot; payment option."
 msgstr ""
 "Per continuare con la demo, seleziona l'opzione di pagamento "
 "&quot;Taler&quot;."
 
-#: talermerchantdemos/donations/templates/checkout.html.j2:17
+#: talermerchantdemos/templates/donations-checkout.html.j2:17
 msgid ""
 "Note that you must select Taler here for the demo to continue, as the "
 "other payment options are just placeholders and not really working in the"
@@ -336,7 +329,7 @@ msgstr ""
 "perché le altre opzioni di pagamento non funzionano davvero nella "
 "dimostrazione."
 
-#: talermerchantdemos/donations/templates/checkout.html.j2:18
+#: talermerchantdemos/templates/donations-checkout.html.j2:18
 msgid ""
 "It would be possible to ask the user to make this choice already on the "
 "previous page (with the shopping cart); we just separated the two steps "
@@ -346,15 +339,15 @@ msgstr ""
 "pagina anteriore (carrello); noi abbiamo separato questi due passi per "
 "renderlo il più semplice possibile."
 
-#: talermerchantdemos/donations/templates/checkout.html.j2:44
+#: talermerchantdemos/templates/donations-checkout.html.j2:44
 msgid "Confirm selection"
 msgstr "Confermare la scelta"
 
-#: talermerchantdemos/donations/templates/fulfillment.html.j2:4
+#: talermerchantdemos/templates/donations-fulfillment.html.j2:4
 msgid "Donation Receipt"
 msgstr "Ricevuta della donazione"
 
-#: talermerchantdemos/donations/templates/fulfillment.html.j2:7
+#: talermerchantdemos/templates/donations-fulfillment.html.j2:7
 msgid ""
 "Thank you, <strong>{donor}</strong>, for donating "
 "<strong>{amount}</strong> to <strong>{receiver}</strong>."
@@ -362,7 +355,7 @@ msgstr ""
 "Grazie, <strong>{donor}</strong>, per aver donato "
 "<strong>{amount}</strong> a <strong>{receiver}</strong>."
 
-#: talermerchantdemos/donations/templates/fulfillment.html.j2:12
+#: talermerchantdemos/templates/donations-fulfillment.html.j2:12
 msgid ""
 "Please keep the order identifier <strong>{id}</strong> as a receipt for "
 "your donation."
@@ -370,7 +363,7 @@ msgstr ""
 "Per favore mantieni il numero di ordine <strong>{id}</strong> come "
 "ricevuta della tua donazione."
 
-#: talermerchantdemos/donations/templates/fulfillment.html.j2:13
+#: talermerchantdemos/templates/donations-fulfillment.html.j2:13
 msgid ""
 "You can show other people that you donated by sharing <a "
 "href=\"{link}\">this link</a> with them."
@@ -378,15 +371,15 @@ msgstr ""
 "Puoi mostrare ad altre persone che hai donato condividendo<a "
 "href=\"{link}\">questo link</a> con loro."
 
-#: talermerchantdemos/donations/templates/fulfillment.html.j2:19
+#: talermerchantdemos/templates/donations-fulfillment.html.j2:19
 msgid "You can always make <a href=\"{link}\">another donation</a>."
 msgstr "Puoi sempre fare <a href=\"{link}\">altre donazioni</a>."
 
-#: talermerchantdemos/donations/templates/index.html.j2:4
+#: talermerchantdemos/templates/donations-index.html.j2:4
 msgid "Donate to Free Software projects"
 msgstr "Dona al progetto Free Software"
 
-#: talermerchantdemos/donations/templates/index.html.j2:8
+#: talermerchantdemos/templates/donations-index.html.j2:8
 msgid ""
 "This donations website shows the user experience for donations with GNU "
 "Taler."
@@ -394,11 +387,11 @@ msgstr ""
 "Questo sito di donazioni mostra l'esperienza dell'utente per donazioni "
 "con GNU Taler."
 
-#: talermerchantdemos/donations/templates/index.html.j2:9
+#: talermerchantdemos/templates/donations-index.html.j2:9
 msgid "You can make donations in an toy currency ({currency})"
 msgstr "Puoi donare in una valuta immaginaria ({currency})"
 
-#: talermerchantdemos/donations/templates/index.html.j2:16
+#: talermerchantdemos/templates/donations-index.html.j2:16
 msgid ""
 "Please select a project, the amount (*) of {currency} you wish to donate,"
 " and enter the donor's name that will appear on your receipt:"
@@ -406,15 +399,15 @@ msgstr ""
 "Per favore seleziona un progetto, quanti (*) {currency} desideri donare, "
 "e inserisci il nome del donatore che apparirà sulla tua ricevuta:"
 
-#: talermerchantdemos/donations/templates/index.html.j2:33
+#: talermerchantdemos/templates/donations-index.html.j2:33
 msgid "Anonymous Donor"
 msgstr "Donatore anonimo"
 
-#: talermerchantdemos/donations/templates/index.html.j2:34
+#: talermerchantdemos/templates/donations-index.html.j2:34
 msgid "Donate!"
 msgstr "Dona!"
 
-#: talermerchantdemos/donations/templates/index.html.j2:39
+#: talermerchantdemos/templates/donations-index.html.j2:39
 msgid ""
 "(*) To make the demo a bit more interesting, the 5 {currency} option is "
 "deliberately implemented with a fault: the merchant will try to make you "
@@ -430,87 +423,25 @@ msgstr ""
 "l'offerta finale del venditore nel wallet Taler. In questo modo, Taler ti"
 " protegge dal portare a termine pagamenti erronei."
 
-#: talermerchantdemos/donations/templates/provider-not-supported.html.j2:4
+#: talermerchantdemos/templates/donations-provider-not-supported.html.j2:4
 msgid "Payment Provider Not Supported"
 msgstr "Provider di Pagamento Non Supportato"
 
-#: talermerchantdemos/donations/templates/provider-not-supported.html.j2:7
+#: talermerchantdemos/templates/donations-provider-not-supported.html.j2:7
 msgid "Unfortunately the selected payment provider is not supported in this 
demo."
 msgstr ""
 "Purtroppo il provider di pagamento selezionato non è supportato in questa"
 " demo."
 
-#: talermerchantdemos/donations/templates/provider-not-supported.html.j2:8
+#: talermerchantdemos/templates/donations-provider-not-supported.html.j2:8
 msgid "Please go back and select &quot;Taler&quot;."
 msgstr "Si prega di tornare indietro e selezionare &quot;Taler&quot;."
 
-#: talermerchantdemos/httpcommon/__init__.py:24
-#: talermerchantdemos/httpcommon/__init__.py:58
-msgid "Could not establish connection to backend"
-msgstr "Impossibile stabilire la connessione al backend"
-
-#: talermerchantdemos/httpcommon/__init__.py:30
-#: talermerchantdemos/httpcommon/__init__.py:62
-msgid "Could not parse response from backend"
-msgstr "Impossibile analizzare la risposta del backend"
-
-#: talermerchantdemos/httpcommon/__init__.py:36
-#: talermerchantdemos/httpcommon/__init__.py:66
-msgid "Backend returned error status"
-msgstr "Il backend ha segnalato uno stato di errore"
-
-#: talermerchantdemos/landing/landing.py:197
-#: talermerchantdemos/survey/survey.py:179
-msgid "HTTP method not allowed for this page"
-msgstr "Il metodo HTTP non è permesso in questa pagina"
-
-#: talermerchantdemos/survey/templates/base.html.j2:20
-msgid "GNU Taler Demo: Survey"
-msgstr "GNU Taler Demo: Sondaggio"
-
-#: talermerchantdemos/survey/templates/base.html.j2:32
-msgid "Survey"
-msgstr "Sondaggio"
-
-#: talermerchantdemos/survey/templates/base.html.j2:34
-msgid "This page demonstrates how to tip visitors for completing small tasks."
-msgstr ""
-"Questa pagina dimostra come lasciare la mancia ai visitatori per aver "
-"completato dei piccoli compiti."
-
-#: talermerchantdemos/survey/templates/base.html.j2:35
-msgid ""
-"Tipping is a way for offer cash rewards that go directly into a user's "
-"wallet."
-msgstr ""
-"Lasciare la mancia è un modo di offrire ricompense in denaro che vanno "
-"direttamente nel portafoglio dell'utente."
-
-#: talermerchantdemos/survey/templates/index.html.j2:6
-msgid ""
-"Please participate in our survey about payment systems and receive a tip "
-"in return."
-msgstr ""
-"Per favore partecipa al nostro sondaggio sul sistema di pagamenti e "
-"ricevi una mancia in cambio."
-
-#: talermerchantdemos/survey/templates/index.html.j2:12
-msgid "Which payment system do you prefer?"
-msgstr "Che sistema di pagamento preferisci?"
-
-#: talermerchantdemos/survey/templates/index.html.j2:23
-msgid "Submit Survey"
-msgstr "Invia sondaggio"
-
-#: talermerchantdemos/templates/landing-base.html.j2:20
-msgid "GNU Taler Demo: Introduction"
-msgstr "GNU Taler Demo: Introduzione"
-
-#: talermerchantdemos/templates/landing-base.html.j2:34
+#: talermerchantdemos/templates/landing-base.html.j2:7
 msgid "This is the GNU Taler demo."
 msgstr "Questa è la demo di GNU Taler."
 
-#: talermerchantdemos/templates/landing-base.html.j2:35
+#: talermerchantdemos/templates/landing-base.html.j2:8
 msgid "Here you can try out the GNU Taler payment system using a toy currency."
 msgstr ""
 "Qui puoi provare il sistema di pagamento GNU Taler utilizzando una moneta"
@@ -636,10 +567,11 @@ msgid "Step 4: Check money flow"
 msgstr "Passo 4: Controllare il flusso di denaro"
 
 #: talermerchantdemos/templates/landing-index.html.j2:59
+#, fuzzy
 msgid ""
 "You can see the wire transfers from the escrow account of the exchange to"
-" the merchants on the <a href=\"{bank}/public-accounts\">public accounts "
-"page</a> of the bank."
+" the merchants on the <a href=\"{bank}\">public accounts page</a> of the "
+"bank."
 msgstr ""
 "Puoi vedere i bonifici bancari dal conto fiduciario dell'exchange ai "
 "venditori sulla <a href=\"{bank}/public-accounts\">pagina dei conti "
@@ -681,6 +613,40 @@ msgstr "Apprezziamo la tua opinione su Taler e questa 
dimostrazione."
 msgid "Let us know what you think by <a href=\"{link}\">contacting us</a>."
 msgstr "Facci sapere cosa pensi <a href=\"{link}\">contattandoci</a>."
 
+#: talermerchantdemos/templates/survey-base.html.j2:6
+msgid "Survey"
+msgstr "Sondaggio"
+
+#: talermerchantdemos/templates/survey-base.html.j2:8
+msgid "This page demonstrates how to tip visitors for completing small tasks."
+msgstr ""
+"Questa pagina dimostra come lasciare la mancia ai visitatori per aver "
+"completato dei piccoli compiti."
+
+#: talermerchantdemos/templates/survey-base.html.j2:9
+msgid ""
+"Tipping is a way for offer cash rewards that go directly into a user's "
+"wallet."
+msgstr ""
+"Lasciare la mancia è un modo di offrire ricompense in denaro che vanno "
+"direttamente nel portafoglio dell'utente."
+
+#: talermerchantdemos/templates/survey-index.html.j2:6
+msgid ""
+"Please participate in our survey about payment systems and receive a tip "
+"in return."
+msgstr ""
+"Per favore partecipa al nostro sondaggio sul sistema di pagamenti e "
+"ricevi una mancia in cambio."
+
+#: talermerchantdemos/templates/survey-index.html.j2:12
+msgid "Which payment system do you prefer?"
+msgstr "Che sistema di pagamento preferisci?"
+
+#: talermerchantdemos/templates/survey-index.html.j2:23
+msgid "Submit Survey"
+msgstr "Invia sondaggio"
+
 #~ msgid "English [en]"
 #~ msgstr "Inglese [en]"
 
@@ -693,3 +659,18 @@ msgstr "Facci sapere cosa pensi <a 
href=\"{link}\">contattandoci</a>."
 #~ msgid "Swedish [sv]"
 #~ msgstr "Svedese [sv]"
 
+#~ msgid "GNU Taler Demo: Essay Shop"
+#~ msgstr "GNU Taler Demo: Negozio di saggistica"
+
+#~ msgid "Back-office"
+#~ msgstr "Back Office"
+
+#~ msgid "GNU Taler Demo: Donations"
+#~ msgstr "GNU Taler Demo: Donazioni"
+
+#~ msgid "GNU Taler Demo: Survey"
+#~ msgstr "GNU Taler Demo: Sondaggio"
+
+#~ msgid "GNU Taler Demo: Introduction"
+#~ msgstr "GNU Taler Demo: Introduzione"
+
diff --git a/translations/ja/LC_MESSAGES/messages.po 
b/translations/ja/LC_MESSAGES/messages.po
index 601b605..415ca06 100644
--- a/translations/ja/LC_MESSAGES/messages.po
+++ b/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: 2021-04-21 18:28+0200\n"
+"POT-Creation-Date: 2021-05-11 09:13+0200\n"
 "PO-Revision-Date: 2021-03-17 06:54+0000\n"
 "Last-Translator: Naoko Tsukuda <mxi01460@nifty.com>\n"
 "Language: ja\n"
@@ -19,92 +19,111 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Generated-By: Babel 2.9.0\n"
 
-#: talermerchantdemos/blog/blog.py:114
-#: talermerchantdemos/donations/donations.py:157
-#: talermerchantdemos/landing/landing.py:117
-#: talermerchantdemos/survey/survey.py:110
+#: talermerchantdemos/blog/blog.py:126
+#: talermerchantdemos/donations/donations.py:139
+#: talermerchantdemos/landing/landing.py:93
+#: talermerchantdemos/survey/survey.py:100
 msgid "Internal error"
 msgstr "内部エラー"
 
-#: talermerchantdemos/blog/blog.py:180
+#: talermerchantdemos/blog/blog.py:186
 msgid "Cannot refund unpaid article"
 msgstr "未払いの記事の返金はできません"
 
-#: talermerchantdemos/blog/blog.py:186
+#: talermerchantdemos/blog/blog.py:193
 #, fuzzy
 msgid "Article is not anymore refundable"
 msgstr "記事はもはや払い戻し可能ではありません"
 
-#: talermerchantdemos/blog/blog.py:217
+#: talermerchantdemos/blog/blog.py:229
 msgid "You did not pay for this article (nice try!)"
 msgstr "この記事のためにお金を払っていない (頑張った)"
 
-#: talermerchantdemos/blog/blog.py:223
+#: talermerchantdemos/blog/blog.py:234
 msgid "Item not refundable (anymore)"
 msgstr "払い戻し不可の商品(これ以上)"
 
-#: talermerchantdemos/blog/blog.py:248
+#: talermerchantdemos/blog/blog.py:260
 #, fuzzy
 msgid "Internal error: Files for article ({}) not found."
 msgstr "内部エラー: アーティクル ({}) のファイルが見つかりません。"
 
-#: talermerchantdemos/blog/blog.py:253
+#: talermerchantdemos/blog/blog.py:267
 msgid "Supplemental file ({}) for article ({}) not found."
 msgstr "記事 ({}) の補足ファイル ({}) が見つかりません。"
 
-#: talermerchantdemos/blog/blog.py:326 talermerchantdemos/blog/blog.py:339
+#: talermerchantdemos/blog/blog.py:343 talermerchantdemos/blog/blog.py:357
 msgid "Direct access forbidden"
 msgstr "直接アクセスは禁止されています"
 
-#: talermerchantdemos/blog/blog.py:405
+#: talermerchantdemos/blog/blog.py:413
 msgid "Internal server error"
 msgstr "サーバー 内部エラー"
 
-#: talermerchantdemos/blog/blog.py:412
-#: talermerchantdemos/donations/donations.py:323
-#: talermerchantdemos/landing/landing.py:189
-#: talermerchantdemos/survey/survey.py:171
+#: talermerchantdemos/blog/blog.py:421
+#: talermerchantdemos/donations/donations.py:282
+#: talermerchantdemos/landing/landing.py:166
+#: talermerchantdemos/survey/survey.py:167
 msgid "Page not found"
 msgstr "ページが見つかりません!"
 
-#: talermerchantdemos/blog/templates/article_frame.html.j2:9
+#: talermerchantdemos/donations/donations.py:125
+msgid "parameter '{}' required"
+msgstr "パラメータ「{}」が必要"
+
+#: talermerchantdemos/httpcommon/__init__.py:48
+#: talermerchantdemos/httpcommon/__init__.py:84
+msgid "Could not establish connection to backend"
+msgstr "backendへのコネクションを確立することができませんでした"
+
+#: talermerchantdemos/httpcommon/__init__.py:54
+#: talermerchantdemos/httpcommon/__init__.py:89
+msgid "Could not parse response from backend"
+msgstr "backendからの応答を解析することができませんでした"
+
+#: talermerchantdemos/httpcommon/__init__.py:59
+#: talermerchantdemos/httpcommon/__init__.py:92
+msgid "Backend returned error status"
+msgstr "Backend は、エラー・ステータスを返してきました"
+
+#: talermerchantdemos/landing/landing.py:174
+#: talermerchantdemos/survey/survey.py:175
+msgid "HTTP method not allowed for this page"
+msgstr "HTTP方式は、このページでは許可されていません"
+
+#: talermerchantdemos/templates/blog-article-frame.html.j2:11
+#: talermerchantdemos/templates/blog-article-frame.html.j2:16
 #, fuzzy
 msgid "Taler allows merchants to offer refunds to customers."
 msgstr "タラーは、商人が顧客に払い戻しを提供することを可能にします。"
 
-#: talermerchantdemos/blog/templates/article_frame.html.j2:10
+#: talermerchantdemos/templates/blog-article-frame.html.j2:12
 #, fuzzy
 msgid ""
 "You can <a href=\"{url}\">request a refund</a> within the first hour "
 "after buying this article."
 msgstr "この記事を購入してから最初の1時間以内に<a href=\"{url}\">払い戻し</a>をリクエストできます。"
 
-#: talermerchantdemos/blog/templates/base.html.j2:23
+#: talermerchantdemos/templates/blog-article-frame.html.j2:17
 #, fuzzy
-msgid "GNU Taler Demo: Essay Shop"
-msgstr "GNU Talerデモ:エッセイショップ"
-
-#: talermerchantdemos/blog/templates/base.html.j2:34
-#: talermerchantdemos/donations/templates/base.html.j2:31
-#: talermerchantdemos/survey/templates/base.html.j2:31
-msgid "Taler Demo"
-msgstr "ターラーデモ"
+msgid "This article can't be refunded anymore."
+msgstr "払い戻し不可の商品(これ以上)"
 
-#: talermerchantdemos/blog/templates/base.html.j2:35
+#: talermerchantdemos/templates/blog-base.html.j2:9
 msgid "Essay shop"
 msgstr "エッセイショップ"
 
-#: talermerchantdemos/blog/templates/base.html.j2:37
+#: talermerchantdemos/templates/blog-base.html.j2:11
 msgid "On this page you can buy articles using an imaginary currency."
 msgstr "このページでは、架空の通貨を使用して記事を購入できます。"
 
-#: talermerchantdemos/blog/templates/base.html.j2:38
+#: talermerchantdemos/templates/blog-base.html.j2:12
 msgid ""
 "The articles are chapters from Richard Stallman's book &quot;Free "
 "Software, Free Society&quot;."
 msgstr "この記事は、リチャード・ストールマンの&quot;Free Software, Free 
Society&quot;という本の各章からの引用です。"
 
-#: talermerchantdemos/blog/templates/base.html.j2:39
+#: talermerchantdemos/templates/blog-base.html.j2:13
 msgid ""
 "The book is <a href=\"{shop}\">published by the FSF</a> and available "
 "gratis at <a href=\"{gnu}\">gnu.org</a>."
@@ -112,82 +131,73 @@ msgstr ""
 "この本は<a href=\"{店}\">FSFによって発行されており</a><a "
 "href=\"{gnu}\">、gnu.orgで</a>無料で入手できます。"
 
-#: talermerchantdemos/blog/templates/confirm_refund.html.j2:3
+#: talermerchantdemos/templates/blog-confirm-refund.html.j2:3
 msgid "Confirm refund request for article"
 msgstr "記事の払い戻しリクエストを確認する"
 
-#: talermerchantdemos/blog/templates/confirm_refund.html.j2:7
+#: talermerchantdemos/templates/blog-confirm-refund.html.j2:7
 msgid "Do you want to get a refund for the article <em>{name}</em>?"
 msgstr "<em>記事{name}の</em>払い戻しを希望しますか?"
 
-#: talermerchantdemos/blog/templates/confirm_refund.html.j2:8
+#: talermerchantdemos/templates/blog-confirm-refund.html.j2:8
 msgid ""
 "In this demonstration, refunds will be automatically approved by the "
 "merchant."
 msgstr "このデモンストレーションでは、払い戻しは販売者によって自動的に承認されます。"
 
-#: talermerchantdemos/blog/templates/confirm_refund.html.j2:9
+#: talermerchantdemos/templates/blog-confirm-refund.html.j2:9
 msgid ""
 "After you have obtained a refund, you will not be able to read the "
 "article anymore."
 msgstr "払い戻しを受け取った後は、記事を読むことができなくなります。"
 
-#: talermerchantdemos/blog/templates/confirm_refund.html.j2:15
+#: talermerchantdemos/templates/blog-confirm-refund.html.j2:15
 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 "払い戻しは、この記事の最初の支払いに使用したのと同じウォレットでのみ受け取ることができます。"
 
-#: talermerchantdemos/blog/templates/confirm_refund.html.j2:21
+#: talermerchantdemos/templates/blog-confirm-refund.html.j2:21
 msgid "Request refund"
 msgstr "払い戻しをリクエストする"
 
-#: talermerchantdemos/blog/templates/error.html.j2:3
-#: talermerchantdemos/donations/templates/error.html.j2:3
-#: talermerchantdemos/survey/templates/error.html.j2:3
+#: talermerchantdemos/templates/blog-error.html.j2:3
+#: talermerchantdemos/templates/donations-error.html.j2:3
 #: talermerchantdemos/templates/landing-error.html.j2:3
+#: talermerchantdemos/templates/survey-error.html.j2:3
 msgid "Error encountered"
 msgstr "エラーが発生しました"
 
-#: talermerchantdemos/blog/templates/error.html.j2:9
-#: talermerchantdemos/donations/templates/error.html.j2:9
-#: talermerchantdemos/survey/templates/error.html.j2:9
+#: talermerchantdemos/templates/blog-error.html.j2:9
+#: talermerchantdemos/templates/donations-error.html.j2:9
+#: talermerchantdemos/templates/survey-error.html.j2:9
 msgid "The backend returned status code {code}."
 msgstr "バックエンドがステータスコード{code}を返しました。"
 
-#: talermerchantdemos/blog/templates/error.html.j2:14
-#: talermerchantdemos/donations/templates/error.html.j2:14
-#: talermerchantdemos/survey/templates/error.html.j2:14
+#: talermerchantdemos/templates/blog-error.html.j2:14
+#: talermerchantdemos/templates/donations-error.html.j2:14
+#: talermerchantdemos/templates/survey-error.html.j2:14
 msgid "Backend response:"
 msgstr "バックエンドの応答:"
 
-#: talermerchantdemos/blog/templates/error.html.j2:19
-#: talermerchantdemos/donations/templates/error.html.j2:19
-#: talermerchantdemos/survey/templates/error.html.j2:19
+#: talermerchantdemos/templates/blog-error.html.j2:19
+#: talermerchantdemos/templates/donations-error.html.j2:19
 #: talermerchantdemos/templates/landing-error.html.j2:8
+#: talermerchantdemos/templates/survey-error.html.j2:19
 msgid "Stack trace:"
 msgstr "スタックトレース:"
 
-#: talermerchantdemos/blog/templates/footer.html.j2:5
-#: talermerchantdemos/donations/templates/footer.html.j2:5
-#: talermerchantdemos/survey/templates/footer.html.j2:5
-#: talermerchantdemos/templates/footer.html.j2:5
-msgid ""
-"You can learn more about GNU Taler on our main <a "
-"href=\"{site}\">website</a>."
-msgstr "GNU Talerの詳細については、メインの<a href=\"{site}\">Webサイトをご覧ください</a>。"
-
-#: talermerchantdemos/blog/templates/index.html.j2:3
+#: talermerchantdemos/templates/blog-index.html.j2:3
 msgid "Essay Shop: Free Software, Free Society"
 msgstr "エッセイショップ:自由ソフトウェア、自由社会"
 
-#: talermerchantdemos/blog/templates/index.html.j2:5
+#: talermerchantdemos/templates/blog-index.html.j2:5
 msgid ""
 "This is the latest edition of <cite>Free Software, Free Society: Selected"
 " Essays of Richard M. Stallman.</cite>"
 msgstr "これは、フリーソフトウェア、フリーソサエティの最新版です<cite>:リチャードMの選択されたエッセイ</cite>"
 
-#: talermerchantdemos/blog/templates/index.html.j2:13
+#: talermerchantdemos/templates/blog-index.html.j2:13
 msgid ""
 "Verbatim copying and distribution of this entire book are permitted "
 "worldwide, without royalty, in any medium, provided this notice is "
@@ -197,187 +207,169 @@ msgid ""
 "copyright notice and this permission notice are preserved on all copies."
 msgstr 
"この通知が保存されていることを条件に、この本全体のコピーと配布は、どのような媒体でも、ロイヤリティーなしで、世界中で許可されています。翻訳がフリーソフトウェア財団によって承認され、著作権表示とこの許可表示がすべてのコピーに保存されていることを条件に、原文の英語から他の言語への本書の翻訳をコピーして配布することが許可されています。"
 
-#: talermerchantdemos/blog/templates/index.html.j2:18
+#: talermerchantdemos/templates/blog-index.html.j2:18
 msgid "Chapters"
 msgstr "チャプター"
 
-#: talermerchantdemos/blog/templates/index.html.j2:21
+#: talermerchantdemos/templates/blog-index.html.j2:20
 msgid "Click on an individual chapter to to purchase it with GNU Taler."
 msgstr "個々の章をクリックして、GNUTalerで購入してください。"
 
-#: talermerchantdemos/blog/templates/index.html.j2:22
+#: talermerchantdemos/templates/blog-index.html.j2:21
+#, fuzzy
 msgid ""
 "You can get free, virtual money to buy articles on this page at the <a "
-"href=\"{}\")\">bank</a>"
+"href=\"{}\")\">bank</a>."
 msgstr "<a href=\"{}\")\">あなたは銀行</a>でこのページの記事を購入するために無料の仮想通貨を得ることができます"
 
-#: talermerchantdemos/blog/templates/index.html.j2:30
+#: talermerchantdemos/templates/blog-index.html.j2:28
 msgid "Pay to read more..."
 msgstr "続きを読むために支払う..."
 
-#: talermerchantdemos/blog/templates/index.html.j2:33
+#: talermerchantdemos/templates/blog-index.html.j2:31
 msgid "No articles available in this language."
 msgstr "この言語で利用できる記事はありません。"
 
-#: talermerchantdemos/blog/templates/menu.html.j2:6
-#: talermerchantdemos/donations/templates/menu.html.j2:6
-#: talermerchantdemos/survey/templates/menu.html.j2:6
-#: talermerchantdemos/templates/landing-base.html.j2:32
-#: talermerchantdemos/templates/menu.html.j2:6
+#: talermerchantdemos/templates/common-base.html.j2:20
+#, fuzzy
+msgid "GNU Taler Demo"
+msgstr "ターラーデモ"
+
+#: talermerchantdemos/templates/common-base.html.j2:44
+#: talermerchantdemos/templates/landing-base.html.j2:5
 msgid "Introduction"
 msgstr "序章"
 
-#: talermerchantdemos/blog/templates/menu.html.j2:9
-#: talermerchantdemos/donations/templates/menu.html.j2:9
-#: talermerchantdemos/survey/templates/menu.html.j2:9
-#: talermerchantdemos/templates/menu.html.j2:9
+#: talermerchantdemos/templates/common-base.html.j2:47
 msgid "Bank"
 msgstr "銀行"
 
-#: talermerchantdemos/blog/templates/menu.html.j2:12
-#: talermerchantdemos/donations/templates/menu.html.j2:12
-#: talermerchantdemos/survey/templates/menu.html.j2:12
-#: talermerchantdemos/templates/menu.html.j2:12
+#: talermerchantdemos/templates/common-base.html.j2:50
 msgid "Essay Shop"
 msgstr "エッセイショップ"
 
-#: talermerchantdemos/blog/templates/menu.html.j2:15
-#: talermerchantdemos/donations/templates/base.html.j2:32
-#: talermerchantdemos/donations/templates/menu.html.j2:15
-#: talermerchantdemos/survey/templates/menu.html.j2:15
-#: talermerchantdemos/templates/menu.html.j2:15
+#: talermerchantdemos/templates/common-base.html.j2:53
+#: talermerchantdemos/templates/donations-base.html.j2:6
 msgid "Donations"
 msgstr "寄付"
 
-#: talermerchantdemos/blog/templates/menu.html.j2:18
-#: talermerchantdemos/donations/templates/menu.html.j2:18
-#: talermerchantdemos/survey/templates/menu.html.j2:18
-#: talermerchantdemos/templates/menu.html.j2:18
+#: talermerchantdemos/templates/common-base.html.j2:56
 msgid "Tipping/Survey"
 msgstr "チップ/調査"
 
-#: talermerchantdemos/blog/templates/menu.html.j2:21
-#: talermerchantdemos/donations/templates/menu.html.j2:21
-#: talermerchantdemos/survey/templates/menu.html.j2:21
-#: talermerchantdemos/templates/menu.html.j2:21
-msgid "Back-office"
-msgstr "事務管理部門"
-
-#: talermerchantdemos/donations/donations.py:143
-msgid "parameter '{}' required"
-msgstr "パラメータ「{}」が必要"
-
-#: talermerchantdemos/donations/templates/base.html.j2:20
-msgid "GNU Taler Demo: Donations"
-msgstr "GNU Talerデモ:寄付"
+#: talermerchantdemos/templates/common-base.html.j2:85
+msgid ""
+"You can learn more about GNU Taler on our main <a "
+"href=\"{site}\">website</a>."
+msgstr "GNU Talerの詳細については、メインの<a href=\"{site}\">Webサイトをご覧ください</a>。"
 
-#: talermerchantdemos/donations/templates/base.html.j2:34
+#: talermerchantdemos/templates/donations-base.html.j2:8
 msgid "This is the donation page."
 msgstr "こちらは寄付ページです。"
 
-#: talermerchantdemos/donations/templates/base.html.j2:35
+#: talermerchantdemos/templates/donations-base.html.j2:9
 msgid ""
 "Using this page you can make donations in {currency} to Free Software "
 "projects."
 msgstr "このページを使用すると、{currency}でフリーソフトウェアプロジェクトに寄付を行うことができます。"
 
-#: talermerchantdemos/donations/templates/checkout.html.j2:5
+#: talermerchantdemos/templates/donations-checkout.html.j2:5
 msgid "Select your payment method"
 msgstr "お支払い方法を選択してください"
 
-#: talermerchantdemos/donations/templates/checkout.html.j2:9
+#: talermerchantdemos/templates/donations-checkout.html.j2:9
 msgid "This is an example for a \"checkout\" page of a Web shop."
 msgstr "これは、Webショップの「チェックアウト」ページの例です。"
 
-#: talermerchantdemos/donations/templates/checkout.html.j2:10
+#: talermerchantdemos/templates/donations-checkout.html.j2:10
 msgid ""
 "On the previous page, you have created the shopping cart and decided "
 "which product to buy (i.e. which project to donate KUDOS to)."
 msgstr "前のページでは、ショッピングカートを作成し、どの商品を購入するか(つまり、どのプロジェクトにKUDOSを寄付するか)を決定しました。"
 
-#: talermerchantdemos/donations/templates/checkout.html.j2:11
+#: talermerchantdemos/templates/donations-checkout.html.j2:11
 msgid ""
 "As Taler is not yet universally used, we expect merchants will offer "
 "various payment options."
 msgstr "Talerはまだ、広く使われている状態ではないため、我々は、売買業者が様々な支払オプションを提供するだろうと考えている。"
 
-#: talermerchantdemos/donations/templates/checkout.html.j2:12
+#: talermerchantdemos/templates/donations-checkout.html.j2:12
 msgid "To continue with the demo, select the &quot;Taler&quot; payment option."
 msgstr "デモ版を継続するには、 &quot;Taler&quot; 支払オプションを選んでください。"
 
-#: talermerchantdemos/donations/templates/checkout.html.j2:17
+#: talermerchantdemos/templates/donations-checkout.html.j2:17
 msgid ""
 "Note that you must select Taler here for the demo to continue, as the "
 "other payment options are just placeholders and not really working in the"
 " demonstration."
 msgstr 
"デモ版を継続するには、ここでTalerを選ばなければなりません。ほかの支払オプションは単なるプレースホルダーで、デモ版において何らかの機能をもつわけではないからです。"
 
-#: talermerchantdemos/donations/templates/checkout.html.j2:18
+#: talermerchantdemos/templates/donations-checkout.html.j2:18
 msgid ""
 "It would be possible to ask the user to make this choice already on the "
 "previous page (with the shopping cart); we just separated the two steps "
 "to keep each step as simple as possible."
 msgstr 
"(ショッピングカートのある)前のページに既にある選択を、ユーザーに求めることはできます。各ステップができるだけ単純となるように、ふたつのステップを別々にしました。"
 
-#: talermerchantdemos/donations/templates/checkout.html.j2:44
+#: talermerchantdemos/templates/donations-checkout.html.j2:44
 msgid "Confirm selection"
 msgstr "選択を確認してください"
 
-#: talermerchantdemos/donations/templates/fulfillment.html.j2:4
+#: talermerchantdemos/templates/donations-fulfillment.html.j2:4
 msgid "Donation Receipt"
 msgstr "寄付の領収書"
 
-#: talermerchantdemos/donations/templates/fulfillment.html.j2:7
+#: talermerchantdemos/templates/donations-fulfillment.html.j2:7
 msgid ""
 "Thank you, <strong>{donor}</strong>, for donating "
 "<strong>{amount}</strong> to <strong>{receiver}</strong>."
 msgstr 
"<strong>{donor}</strong>様、<strong>{receiver}</strong>に対し<strong>{amount}</strong>を寄付して頂き、ありがとうございました。"
 
-#: talermerchantdemos/donations/templates/fulfillment.html.j2:12
+#: talermerchantdemos/templates/donations-fulfillment.html.j2:12
 msgid ""
 "Please keep the order identifier <strong>{id}</strong> as a receipt for "
 "your donation."
 msgstr "寄付の領収書として、注文ID<strong>{id}</strong>を保存しておいてください。"
 
-#: talermerchantdemos/donations/templates/fulfillment.html.j2:13
+#: talermerchantdemos/templates/donations-fulfillment.html.j2:13
 msgid ""
 "You can show other people that you donated by sharing <a "
 "href=\"{link}\">this link</a> with them."
 msgstr "あなたが寄付したことは、 <a href=\"{link}\">このリンク先</a>を共有することで、他の人に知らせることができます。"
 
-#: talermerchantdemos/donations/templates/fulfillment.html.j2:19
+#: talermerchantdemos/templates/donations-fulfillment.html.j2:19
 msgid "You can always make <a href=\"{link}\">another donation</a>."
 msgstr "いつでも、<a href=\"{link}\">もう一度寄付する</a>ことができます。"
 
-#: talermerchantdemos/donations/templates/index.html.j2:4
+#: talermerchantdemos/templates/donations-index.html.j2:4
 msgid "Donate to Free Software projects"
 msgstr "自由ソフトウェアプロジェクトに寄付しましょう"
 
-#: talermerchantdemos/donations/templates/index.html.j2:8
+#: talermerchantdemos/templates/donations-index.html.j2:8
 msgid ""
 "This donations website shows the user experience for donations with GNU "
 "Taler."
 msgstr "この寄付ウェブサイトは、GNU Talerへの寄付におけるユーザー・エクスペリエンスを示しています。"
 
-#: talermerchantdemos/donations/templates/index.html.j2:9
+#: talermerchantdemos/templates/donations-index.html.j2:9
 msgid "You can make donations in an toy currency ({currency})"
 msgstr "おもちゃの通貨 ({currency})で寄付することもできます"
 
-#: talermerchantdemos/donations/templates/index.html.j2:16
+#: talermerchantdemos/templates/donations-index.html.j2:16
 msgid ""
 "Please select a project, the amount (*) of {currency} you wish to donate,"
 " and enter the donor's name that will appear on your receipt:"
 msgstr "寄付したいプロジェクトおよび{currency}の金額(*)を選択し、領収書に記載される寄付者名を入力してください。"
 
-#: talermerchantdemos/donations/templates/index.html.j2:33
+#: talermerchantdemos/templates/donations-index.html.j2:33
 msgid "Anonymous Donor"
 msgstr "匿名の寄付者"
 
-#: talermerchantdemos/donations/templates/index.html.j2:34
+#: talermerchantdemos/templates/donations-index.html.j2:34
 msgid "Donate!"
 msgstr "寄付しましょう!"
 
-#: talermerchantdemos/donations/templates/index.html.j2:39
+#: talermerchantdemos/templates/donations-index.html.j2:39
 msgid ""
 "(*) To make the demo a bit more interesting, the 5 {currency} option is "
 "deliberately implemented with a fault: the merchant will try to make you "
@@ -390,79 +382,23 @@ msgstr ""
 "のオプションは、欠陥を伴ってわざと入れられています。売買業者は、フォームに示された 5 {currency} の代わりに6 {currency} "
 
"で寄付させようとするでしょう。でも心配はいりません。あなたには、Talerウォレットの売買業者からの最終的な提案事項をレビューする機会が与えられます。こうして、Talerは、あなたが誤って支払いを行うことからあなたを守ります。"
 
-#: talermerchantdemos/donations/templates/provider-not-supported.html.j2:4
+#: talermerchantdemos/templates/donations-provider-not-supported.html.j2:4
 msgid "Payment Provider Not Supported"
 msgstr "サポートされていない支払プロバイダ"
 
-#: talermerchantdemos/donations/templates/provider-not-supported.html.j2:7
+#: talermerchantdemos/templates/donations-provider-not-supported.html.j2:7
 msgid "Unfortunately the selected payment provider is not supported in this 
demo."
 msgstr "残念ながら、選択された支払プロバイダは、このデモではサポートされていません。"
 
-#: talermerchantdemos/donations/templates/provider-not-supported.html.j2:8
+#: talermerchantdemos/templates/donations-provider-not-supported.html.j2:8
 msgid "Please go back and select &quot;Taler&quot;."
 msgstr "戻って &quot;Taler&quot;を選択してください。"
 
-#: talermerchantdemos/httpcommon/__init__.py:24
-#: talermerchantdemos/httpcommon/__init__.py:58
-msgid "Could not establish connection to backend"
-msgstr "backendへのコネクションを確立することができませんでした"
-
-#: talermerchantdemos/httpcommon/__init__.py:30
-#: talermerchantdemos/httpcommon/__init__.py:62
-msgid "Could not parse response from backend"
-msgstr "backendからの応答を解析することができませんでした"
-
-#: talermerchantdemos/httpcommon/__init__.py:36
-#: talermerchantdemos/httpcommon/__init__.py:66
-msgid "Backend returned error status"
-msgstr "Backend は、エラー・ステータスを返してきました"
-
-#: talermerchantdemos/landing/landing.py:197
-#: talermerchantdemos/survey/survey.py:179
-msgid "HTTP method not allowed for this page"
-msgstr "HTTP方式は、このページでは許可されていません"
-
-#: talermerchantdemos/survey/templates/base.html.j2:20
-msgid "GNU Taler Demo: Survey"
-msgstr "GNU Talerデモ:アンケート"
-
-#: talermerchantdemos/survey/templates/base.html.j2:32
-msgid "Survey"
-msgstr "アンケート"
-
-#: talermerchantdemos/survey/templates/base.html.j2:34
-msgid "This page demonstrates how to tip visitors for completing small tasks."
-msgstr "このページでは、小さいタスクの完了に対して訪問者にチップを与える方法を紹介します。"
-
-#: talermerchantdemos/survey/templates/base.html.j2:35
-msgid ""
-"Tipping is a way for offer cash rewards that go directly into a user's "
-"wallet."
-msgstr "チップは、ユーザーのウォレットに直接入金される現金により報酬を与えるひとつの方法です。"
-
-#: talermerchantdemos/survey/templates/index.html.j2:6
-msgid ""
-"Please participate in our survey about payment systems and receive a tip "
-"in return."
-msgstr "支払システムについてのアンケートに参加し、その代わりにチップをお受け取りください。"
-
-#: talermerchantdemos/survey/templates/index.html.j2:12
-msgid "Which payment system do you prefer?"
-msgstr "どの支払システムがよいですか?"
-
-#: talermerchantdemos/survey/templates/index.html.j2:23
-msgid "Submit Survey"
-msgstr "アンケートを提出する"
-
-#: talermerchantdemos/templates/landing-base.html.j2:20
-msgid "GNU Taler Demo: Introduction"
-msgstr "GNU Talerデモ:はじめに"
-
-#: talermerchantdemos/templates/landing-base.html.j2:34
+#: talermerchantdemos/templates/landing-base.html.j2:7
 msgid "This is the GNU Taler demo."
 msgstr "これはGNU Talerデモです。"
 
-#: talermerchantdemos/templates/landing-base.html.j2:35
+#: talermerchantdemos/templates/landing-base.html.j2:8
 msgid "Here you can try out the GNU Taler payment system using a toy currency."
 msgstr ""
 
@@ -568,10 +504,11 @@ msgid "Step 4: Check money flow"
 msgstr "ステップ4:資金の流れを確認する"
 
 #: talermerchantdemos/templates/landing-index.html.j2:59
+#, fuzzy
 msgid ""
 "You can see the wire transfers from the escrow account of the exchange to"
-" the merchants on the <a href=\"{bank}/public-accounts\">public accounts "
-"page</a> of the bank."
+" the merchants on the <a href=\"{bank}\">public accounts page</a> of the "
+"bank."
 msgstr ""
 "当該取引のエスクロー口座から売買業者への電信送金を、当行の<a href=\"{bank}/public-"
 "accounts\">公開口座ページ</a> で確認することができます。"
@@ -608,6 +545,34 @@ msgstr "Talerとこのデモについてのフィードバックを歓迎しま
 msgid "Let us know what you think by <a href=\"{link}\">contacting us</a>."
 msgstr "<a href=\"{link}\">私たちにコンタクトする</a>ことにより、あなたの感想を聞かせてください。"
 
+#: talermerchantdemos/templates/survey-base.html.j2:6
+msgid "Survey"
+msgstr "アンケート"
+
+#: talermerchantdemos/templates/survey-base.html.j2:8
+msgid "This page demonstrates how to tip visitors for completing small tasks."
+msgstr "このページでは、小さいタスクの完了に対して訪問者にチップを与える方法を紹介します。"
+
+#: talermerchantdemos/templates/survey-base.html.j2:9
+msgid ""
+"Tipping is a way for offer cash rewards that go directly into a user's "
+"wallet."
+msgstr "チップは、ユーザーのウォレットに直接入金される現金により報酬を与えるひとつの方法です。"
+
+#: talermerchantdemos/templates/survey-index.html.j2:6
+msgid ""
+"Please participate in our survey about payment systems and receive a tip "
+"in return."
+msgstr "支払システムについてのアンケートに参加し、その代わりにチップをお受け取りください。"
+
+#: talermerchantdemos/templates/survey-index.html.j2:12
+msgid "Which payment system do you prefer?"
+msgstr "どの支払システムがよいですか?"
+
+#: talermerchantdemos/templates/survey-index.html.j2:23
+msgid "Submit Survey"
+msgstr "アンケートを提出する"
+
 #~ msgid "English [en]"
 #~ msgstr "英語 [en]"
 
@@ -620,3 +585,18 @@ msgstr "<a href=\"{link}\">私たちにコンタクトする</a>ことにより
 #~ msgid "Swedish [sv]"
 #~ msgstr "スウェーデン語 (sv)"
 
+#~ msgid "GNU Taler Demo: Essay Shop"
+#~ msgstr "GNU Talerデモ:エッセイショップ"
+
+#~ msgid "Back-office"
+#~ msgstr "事務管理部門"
+
+#~ msgid "GNU Taler Demo: Donations"
+#~ msgstr "GNU Talerデモ:寄付"
+
+#~ msgid "GNU Taler Demo: Survey"
+#~ msgstr "GNU Talerデモ:アンケート"
+
+#~ msgid "GNU Taler Demo: Introduction"
+#~ msgstr "GNU Talerデモ:はじめに"
+
diff --git a/translations/ko/LC_MESSAGES/messages.po 
b/translations/ko/LC_MESSAGES/messages.po
index 7a0cf37..4ca4929 100644
--- a/translations/ko/LC_MESSAGES/messages.po
+++ b/translations/ko/LC_MESSAGES/messages.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PROJECT VERSION\n"
 "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2021-04-21 18:28+0200\n"
+"POT-Creation-Date: 2021-05-11 09:13+0200\n"
 "PO-Revision-Date: 2021-03-08 03:05+0000\n"
 "Last-Translator: Choyi Whang <choyi.whang@gmail.com>\n"
 "Language: ko\n"
@@ -19,87 +19,107 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Generated-By: Babel 2.9.0\n"
 
-#: talermerchantdemos/blog/blog.py:114
-#: talermerchantdemos/donations/donations.py:157
-#: talermerchantdemos/landing/landing.py:117
-#: talermerchantdemos/survey/survey.py:110
+#: talermerchantdemos/blog/blog.py:126
+#: talermerchantdemos/donations/donations.py:139
+#: talermerchantdemos/landing/landing.py:93
+#: talermerchantdemos/survey/survey.py:100
 msgid "Internal error"
 msgstr "내부 오류"
 
-#: talermerchantdemos/blog/blog.py:180
+#: talermerchantdemos/blog/blog.py:186
 msgid "Cannot refund unpaid article"
 msgstr "미결제 기사는 환불할 수 없습니다"
 
-#: talermerchantdemos/blog/blog.py:186
+#: talermerchantdemos/blog/blog.py:193
 msgid "Article is not anymore refundable"
 msgstr "이 기사는 더이상 환불할 수 없습니다"
 
-#: talermerchantdemos/blog/blog.py:217
+#: talermerchantdemos/blog/blog.py:229
 msgid "You did not pay for this article (nice try!)"
 msgstr "이 기사를 구매하지 않았습니다(다시 시도하세요!)"
 
-#: talermerchantdemos/blog/blog.py:223
+#: talermerchantdemos/blog/blog.py:234
 msgid "Item not refundable (anymore)"
 msgstr "환불 불가 상품(기간 만료)"
 
-#: talermerchantdemos/blog/blog.py:248
+#: talermerchantdemos/blog/blog.py:260
 msgid "Internal error: Files for article ({}) not found."
 msgstr "내부 오류: 기사 ({}) 관련 파일들을 찾을 수 없습니다."
 
-#: talermerchantdemos/blog/blog.py:253
+#: talermerchantdemos/blog/blog.py:267
 msgid "Supplemental file ({}) for article ({}) not found."
 msgstr "기사 관련 ({}) 추가 파일을 ({}) 찾을 수 없습니다."
 
-#: talermerchantdemos/blog/blog.py:326 talermerchantdemos/blog/blog.py:339
+#: talermerchantdemos/blog/blog.py:343 talermerchantdemos/blog/blog.py:357
 msgid "Direct access forbidden"
 msgstr "직접 접속 불가능"
 
-#: talermerchantdemos/blog/blog.py:405
+#: talermerchantdemos/blog/blog.py:413
 msgid "Internal server error"
 msgstr "내부 서버 오류"
 
-#: talermerchantdemos/blog/blog.py:412
-#: talermerchantdemos/donations/donations.py:323
-#: talermerchantdemos/landing/landing.py:189
-#: talermerchantdemos/survey/survey.py:171
+#: talermerchantdemos/blog/blog.py:421
+#: talermerchantdemos/donations/donations.py:282
+#: talermerchantdemos/landing/landing.py:166
+#: talermerchantdemos/survey/survey.py:167
 msgid "Page not found"
 msgstr "이 페이지를 찾을 수 없습니다"
 
-#: talermerchantdemos/blog/templates/article_frame.html.j2:9
+#: talermerchantdemos/donations/donations.py:125
+msgid "parameter '{}' required"
+msgstr "파라메터 '{}' 필요"
+
+#: talermerchantdemos/httpcommon/__init__.py:48
+#: talermerchantdemos/httpcommon/__init__.py:84
+msgid "Could not establish connection to backend"
+msgstr "백엔드와 연결을 하지 못하고 있습니다"
+
+#: talermerchantdemos/httpcommon/__init__.py:54
+#: talermerchantdemos/httpcommon/__init__.py:89
+msgid "Could not parse response from backend"
+msgstr "백엔드의 응답을 분석할 수 없습니다"
+
+#: talermerchantdemos/httpcommon/__init__.py:59
+#: talermerchantdemos/httpcommon/__init__.py:92
+msgid "Backend returned error status"
+msgstr "백엔드에 대한 오류 수신"
+
+#: talermerchantdemos/landing/landing.py:174
+#: talermerchantdemos/survey/survey.py:175
+msgid "HTTP method not allowed for this page"
+msgstr "이 페이지에서는 HTTP가 유효하지 않습니다"
+
+#: talermerchantdemos/templates/blog-article-frame.html.j2:11
+#: talermerchantdemos/templates/blog-article-frame.html.j2:16
 msgid "Taler allows merchants to offer refunds to customers."
 msgstr "Taler(탈러)에서 판매자는 고객에게 환불 요청을 할 수 있습니다."
 
-#: talermerchantdemos/blog/templates/article_frame.html.j2:10
+#: talermerchantdemos/templates/blog-article-frame.html.j2:12
 msgid ""
 "You can <a href=\"{url}\">request a refund</a> within the first hour "
 "after buying this article."
 msgstr "이 상품을 구매한 후 한시간 이내에 <a href=\"{url}\"> 환불 요청을 </a> 하셔야 정상 처리됩니다."
 
-#: talermerchantdemos/blog/templates/base.html.j2:23
-msgid "GNU Taler Demo: Essay Shop"
-msgstr "GNU Taler 데모: 에세이 샵"
-
-#: talermerchantdemos/blog/templates/base.html.j2:34
-#: talermerchantdemos/donations/templates/base.html.j2:31
-#: talermerchantdemos/survey/templates/base.html.j2:31
-msgid "Taler Demo"
-msgstr "Taler 데모"
+#: talermerchantdemos/templates/blog-article-frame.html.j2:17
+#, fuzzy
+msgid "This article can't be refunded anymore."
+msgstr "환불 불가 상품(기간 만료)"
 
-#: talermerchantdemos/blog/templates/base.html.j2:35
+#: talermerchantdemos/templates/blog-base.html.j2:9
 msgid "Essay shop"
 msgstr "에세이 샵"
 
-#: talermerchantdemos/blog/templates/base.html.j2:37
+#: talermerchantdemos/templates/blog-base.html.j2:11
 msgid "On this page you can buy articles using an imaginary currency."
 msgstr "이 페이지에서는 가상 화폐로 기사를 구매하실 수 있습니다."
 
-#: talermerchantdemos/blog/templates/base.html.j2:38
+#: talermerchantdemos/templates/blog-base.html.j2:12
 msgid ""
 "The articles are chapters from Richard Stallman's book &quot;Free "
 "Software, Free Society&quot;."
 msgstr "이 기사들은 리차드 스톨만의 저서 &quot; 자유 소프트웨어, 자유 사회 &quot;의 내용들을 가져왔습니다."
 
-#: talermerchantdemos/blog/templates/base.html.j2:39
+#: talermerchantdemos/templates/blog-base.html.j2:13
 msgid ""
 "The book is <a href=\"{shop}\">published by the FSF</a> and available "
 "gratis at <a href=\"{gnu}\">gnu.org</a>."
@@ -107,82 +127,73 @@ msgstr ""
 "이 책은 <a href=\"{shop}\"> 자유 소프트웨어 재단(FSF)에서 출판되었으며 </a> 무료로 <a "
 "href=\"{gnu}\"> gnu.org </a> 에서 볼 수 있습니다."
 
-#: talermerchantdemos/blog/templates/confirm_refund.html.j2:3
+#: talermerchantdemos/templates/blog-confirm-refund.html.j2:3
 msgid "Confirm refund request for article"
 msgstr "기사 환불 요청 확인 완료"
 
-#: talermerchantdemos/blog/templates/confirm_refund.html.j2:7
+#: talermerchantdemos/templates/blog-confirm-refund.html.j2:7
 msgid "Do you want to get a refund for the article <em>{name}</em>?"
 msgstr "<em> {name} </em> 기사를 환불하시겠습니까?"
 
-#: talermerchantdemos/blog/templates/confirm_refund.html.j2:8
+#: talermerchantdemos/templates/blog-confirm-refund.html.j2:8
 msgid ""
 "In this demonstration, refunds will be automatically approved by the "
 "merchant."
 msgstr "이 데모 버전에서는 판매자가 승인한 환불은 자동적으로 처리됩니다."
 
-#: talermerchantdemos/blog/templates/confirm_refund.html.j2:9
+#: talermerchantdemos/templates/blog-confirm-refund.html.j2:9
 msgid ""
 "After you have obtained a refund, you will not be able to read the "
 "article anymore."
 msgstr "환불이 완료되면 기사를 더이상 읽으실 수 없습니다."
 
-#: talermerchantdemos/blog/templates/confirm_refund.html.j2:15
+#: talermerchantdemos/templates/blog-confirm-refund.html.j2:15
 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 "환불은 기사 결제 시 사용됐던 계좌로만 받을 수 있습니다."
 
-#: talermerchantdemos/blog/templates/confirm_refund.html.j2:21
+#: talermerchantdemos/templates/blog-confirm-refund.html.j2:21
 msgid "Request refund"
 msgstr "환불 요청"
 
-#: talermerchantdemos/blog/templates/error.html.j2:3
-#: talermerchantdemos/donations/templates/error.html.j2:3
-#: talermerchantdemos/survey/templates/error.html.j2:3
+#: talermerchantdemos/templates/blog-error.html.j2:3
+#: talermerchantdemos/templates/donations-error.html.j2:3
 #: talermerchantdemos/templates/landing-error.html.j2:3
+#: talermerchantdemos/templates/survey-error.html.j2:3
 msgid "Error encountered"
 msgstr "오류가 발생했습니다"
 
-#: talermerchantdemos/blog/templates/error.html.j2:9
-#: talermerchantdemos/donations/templates/error.html.j2:9
-#: talermerchantdemos/survey/templates/error.html.j2:9
+#: talermerchantdemos/templates/blog-error.html.j2:9
+#: talermerchantdemos/templates/donations-error.html.j2:9
+#: talermerchantdemos/templates/survey-error.html.j2:9
 msgid "The backend returned status code {code}."
 msgstr "백엔드에서 상태 코드 {code}를 반환했습니다."
 
-#: talermerchantdemos/blog/templates/error.html.j2:14
-#: talermerchantdemos/donations/templates/error.html.j2:14
-#: talermerchantdemos/survey/templates/error.html.j2:14
+#: talermerchantdemos/templates/blog-error.html.j2:14
+#: talermerchantdemos/templates/donations-error.html.j2:14
+#: talermerchantdemos/templates/survey-error.html.j2:14
 msgid "Backend response:"
 msgstr "백엔드 응답:"
 
-#: talermerchantdemos/blog/templates/error.html.j2:19
-#: talermerchantdemos/donations/templates/error.html.j2:19
-#: talermerchantdemos/survey/templates/error.html.j2:19
+#: talermerchantdemos/templates/blog-error.html.j2:19
+#: talermerchantdemos/templates/donations-error.html.j2:19
 #: talermerchantdemos/templates/landing-error.html.j2:8
+#: talermerchantdemos/templates/survey-error.html.j2:19
 msgid "Stack trace:"
 msgstr "스택 추적:"
 
-#: talermerchantdemos/blog/templates/footer.html.j2:5
-#: talermerchantdemos/donations/templates/footer.html.j2:5
-#: talermerchantdemos/survey/templates/footer.html.j2:5
-#: talermerchantdemos/templates/footer.html.j2:5
-msgid ""
-"You can learn more about GNU Taler on our main <a "
-"href=\"{site}\">website</a>."
-msgstr "GNU Taler에 대한 더 많은 정보는 메인 <a href=\"{site}\"> 사이트 </a> 에서 확인하실 수 있습니다."
-
-#: talermerchantdemos/blog/templates/index.html.j2:3
+#: talermerchantdemos/templates/blog-index.html.j2:3
 msgid "Essay Shop: Free Software, Free Society"
 msgstr "에세이 샵: 자유 소프트웨어, 자유 사회"
 
-#: talermerchantdemos/blog/templates/index.html.j2:5
+#: talermerchantdemos/templates/blog-index.html.j2:5
 msgid ""
 "This is the latest edition of <cite>Free Software, Free Society: Selected"
 " Essays of Richard M. Stallman.</cite>"
 msgstr "이 글은 <cite> 자유 소프트웨어, 자유 사회: 리차드 스톨만의 선정된 수필. </cite> 최신판입니다"
 
-#: talermerchantdemos/blog/templates/index.html.j2:13
+#: talermerchantdemos/templates/blog-index.html.j2:13
 msgid ""
 "Verbatim copying and distribution of this entire book are permitted "
 "worldwide, without royalty, in any medium, provided this notice is "
@@ -194,115 +205,97 @@ msgstr ""
 "이 고지가 제공되는 한, 이 책은 로열티 없이 전세계적으로 복사 및 배포가 가능합니다. 한영 번역본 역시무료 소트웨어 재단에 허락 "
 "하에 제공된다는 고지와 저작권 표시만 있다면 복사 및 배포가 가능합니다."
 
-#: talermerchantdemos/blog/templates/index.html.j2:18
+#: talermerchantdemos/templates/blog-index.html.j2:18
 msgid "Chapters"
 msgstr "챕터들"
 
-#: talermerchantdemos/blog/templates/index.html.j2:21
+#: talermerchantdemos/templates/blog-index.html.j2:20
 msgid "Click on an individual chapter to to purchase it with GNU Taler."
 msgstr "각각의 챕터들을 클릭을 함과 동시에 GNU Taler 통해 구매하세요."
 
-#: talermerchantdemos/blog/templates/index.html.j2:22
+#: talermerchantdemos/templates/blog-index.html.j2:21
+#, fuzzy
 msgid ""
 "You can get free, virtual money to buy articles on this page at the <a "
-"href=\"{}\")\">bank</a>"
+"href=\"{}\")\">bank</a>."
 msgstr "기사들을 구매할 수 있는 무료 가상 화폐를 이 페이지에서 <a href=\"{}\")\">bank</a> 드립니다"
 
-#: talermerchantdemos/blog/templates/index.html.j2:30
+#: talermerchantdemos/templates/blog-index.html.j2:28
 msgid "Pay to read more..."
 msgstr "밑의 내용이 알고싶으시다면 구매하세요."
 
-#: talermerchantdemos/blog/templates/index.html.j2:33
+#: talermerchantdemos/templates/blog-index.html.j2:31
 msgid "No articles available in this language."
 msgstr "해당 언어로 제공되는 기사들은 없습니다."
 
-#: talermerchantdemos/blog/templates/menu.html.j2:6
-#: talermerchantdemos/donations/templates/menu.html.j2:6
-#: talermerchantdemos/survey/templates/menu.html.j2:6
-#: talermerchantdemos/templates/landing-base.html.j2:32
-#: talermerchantdemos/templates/menu.html.j2:6
+#: talermerchantdemos/templates/common-base.html.j2:20
+#, fuzzy
+msgid "GNU Taler Demo"
+msgstr "Taler 데모"
+
+#: talermerchantdemos/templates/common-base.html.j2:44
+#: talermerchantdemos/templates/landing-base.html.j2:5
 msgid "Introduction"
 msgstr "소개"
 
-#: talermerchantdemos/blog/templates/menu.html.j2:9
-#: talermerchantdemos/donations/templates/menu.html.j2:9
-#: talermerchantdemos/survey/templates/menu.html.j2:9
-#: talermerchantdemos/templates/menu.html.j2:9
+#: talermerchantdemos/templates/common-base.html.j2:47
 msgid "Bank"
 msgstr "은행"
 
-#: talermerchantdemos/blog/templates/menu.html.j2:12
-#: talermerchantdemos/donations/templates/menu.html.j2:12
-#: talermerchantdemos/survey/templates/menu.html.j2:12
-#: talermerchantdemos/templates/menu.html.j2:12
+#: talermerchantdemos/templates/common-base.html.j2:50
 msgid "Essay Shop"
 msgstr "에세이 샵"
 
-#: talermerchantdemos/blog/templates/menu.html.j2:15
-#: talermerchantdemos/donations/templates/base.html.j2:32
-#: talermerchantdemos/donations/templates/menu.html.j2:15
-#: talermerchantdemos/survey/templates/menu.html.j2:15
-#: talermerchantdemos/templates/menu.html.j2:15
+#: talermerchantdemos/templates/common-base.html.j2:53
+#: talermerchantdemos/templates/donations-base.html.j2:6
 msgid "Donations"
 msgstr "기부"
 
-#: talermerchantdemos/blog/templates/menu.html.j2:18
-#: talermerchantdemos/donations/templates/menu.html.j2:18
-#: talermerchantdemos/survey/templates/menu.html.j2:18
-#: talermerchantdemos/templates/menu.html.j2:18
+#: talermerchantdemos/templates/common-base.html.j2:56
 msgid "Tipping/Survey"
 msgstr "팁 / 설문조사"
 
-#: talermerchantdemos/blog/templates/menu.html.j2:21
-#: talermerchantdemos/donations/templates/menu.html.j2:21
-#: talermerchantdemos/survey/templates/menu.html.j2:21
-#: talermerchantdemos/templates/menu.html.j2:21
-msgid "Back-office"
-msgstr "관리자 페이지"
-
-#: talermerchantdemos/donations/donations.py:143
-msgid "parameter '{}' required"
-msgstr "파라메터 '{}' 필요"
-
-#: talermerchantdemos/donations/templates/base.html.j2:20
-msgid "GNU Taler Demo: Donations"
-msgstr "GNU Taler 데모: 후원"
+#: talermerchantdemos/templates/common-base.html.j2:85
+msgid ""
+"You can learn more about GNU Taler on our main <a "
+"href=\"{site}\">website</a>."
+msgstr "GNU Taler에 대한 더 많은 정보는 메인 <a href=\"{site}\"> 사이트 </a> 에서 확인하실 수 있습니다."
 
-#: talermerchantdemos/donations/templates/base.html.j2:34
+#: talermerchantdemos/templates/donations-base.html.j2:8
 msgid "This is the donation page."
 msgstr "후원 페이지입니다."
 
-#: talermerchantdemos/donations/templates/base.html.j2:35
+#: talermerchantdemos/templates/donations-base.html.j2:9
 msgid ""
 "Using this page you can make donations in {currency} to Free Software "
 "projects."
 msgstr "이 페이지에서 {통화} 를 통해 무료 소프트웨어 프로젝트들을 후원할 수 있습니다."
 
-#: talermerchantdemos/donations/templates/checkout.html.j2:5
+#: talermerchantdemos/templates/donations-checkout.html.j2:5
 msgid "Select your payment method"
 msgstr "결제 방법 선택"
 
-#: talermerchantdemos/donations/templates/checkout.html.j2:9
+#: talermerchantdemos/templates/donations-checkout.html.j2:9
 msgid "This is an example for a \"checkout\" page of a Web shop."
 msgstr "이는 웹샵의 \"체크아웃\" 페이지 예시입니다."
 
-#: talermerchantdemos/donations/templates/checkout.html.j2:10
+#: talermerchantdemos/templates/donations-checkout.html.j2:10
 msgid ""
 "On the previous page, you have created the shopping cart and decided "
 "which product to buy (i.e. which project to donate KUDOS to)."
 msgstr "이전 페이지에서는 장바구니를 생성하고 구매할 제품을 결정하는 과정이었습니다(예: KUDOS로 후원할 프로젝트 선택)."
 
-#: talermerchantdemos/donations/templates/checkout.html.j2:11
+#: talermerchantdemos/templates/donations-checkout.html.j2:11
 msgid ""
 "As Taler is not yet universally used, we expect merchants will offer "
 "various payment options."
 msgstr "현재 탈러는 보편적으로 사용되지 않기 때문에, 자사는 판매자들이 다양한 결제 옵션들을 제공해주기를 기대하고 있습니다."
 
-#: talermerchantdemos/donations/templates/checkout.html.j2:12
+#: talermerchantdemos/templates/donations-checkout.html.j2:12
 msgid "To continue with the demo, select the &quot;Taler&quot; payment option."
 msgstr "데모 버전을 계속 이어할려면 &quot; Taler &quot; 결제 옵션을 선택하세요."
 
-#: talermerchantdemos/donations/templates/checkout.html.j2:17
+#: talermerchantdemos/templates/donations-checkout.html.j2:17
 msgid ""
 "Note that you must select Taler here for the demo to continue, as the "
 "other payment options are just placeholders and not really working in the"
@@ -311,7 +304,7 @@ msgstr ""
 "데모를 계속하려면 여기에서 Taler를 선택해야합니다. 다른 결제 옵션은 빈자리를 채우는 것일 뿐, 실제로 작동하는 기능이 아니기 "
 "때문입니다."
 
-#: talermerchantdemos/donations/templates/checkout.html.j2:18
+#: talermerchantdemos/templates/donations-checkout.html.j2:18
 msgid ""
 "It would be possible to ask the user to make this choice already on the "
 "previous page (with the shopping cart); we just separated the two steps "
@@ -320,15 +313,15 @@ msgstr ""
 "사용자에게 이전 페이지(장바구니)에서 이 선택을 하도록 요청할 수 있습니다. 각 단계를 최대한 간단하게 유지하기 위해 이같이 두 "
 "단계로 과정을 나누었습니다."
 
-#: talermerchantdemos/donations/templates/checkout.html.j2:44
+#: talermerchantdemos/templates/donations-checkout.html.j2:44
 msgid "Confirm selection"
 msgstr "선택 확인"
 
-#: talermerchantdemos/donations/templates/fulfillment.html.j2:4
+#: talermerchantdemos/templates/donations-fulfillment.html.j2:4
 msgid "Donation Receipt"
 msgstr "후원 영수증"
 
-#: talermerchantdemos/donations/templates/fulfillment.html.j2:7
+#: talermerchantdemos/templates/donations-fulfillment.html.j2:7
 msgid ""
 "Thank you, <strong>{donor}</strong>, for donating "
 "<strong>{amount}</strong> to <strong>{receiver}</strong>."
@@ -336,51 +329,51 @@ msgstr ""
 "<strong> {후원자} </strong> 님 <strong> {후원 금액}</strong>을 <strong> {후원 대상} "
 "</strong>에게 후원해주셔서 감사합니다."
 
-#: talermerchantdemos/donations/templates/fulfillment.html.j2:12
+#: talermerchantdemos/templates/donations-fulfillment.html.j2:12
 msgid ""
 "Please keep the order identifier <strong>{id}</strong> as a receipt for "
 "your donation."
 msgstr "주문 식별자 <strong> {아이디} </strong> 를 후원 증명을 위한 영수증으로 보관해주세요."
 
-#: talermerchantdemos/donations/templates/fulfillment.html.j2:13
+#: talermerchantdemos/templates/donations-fulfillment.html.j2:13
 msgid ""
 "You can show other people that you donated by sharing <a "
 "href=\"{link}\">this link</a> with them."
 msgstr "<a href=\"{link}\"> 이 링크 </a> 를 공유해 다른 사람들에게 후원 내역을 보여줄 수 있습니다."
 
-#: talermerchantdemos/donations/templates/fulfillment.html.j2:19
+#: talermerchantdemos/templates/donations-fulfillment.html.j2:19
 msgid "You can always make <a href=\"{link}\">another donation</a>."
 msgstr "당신은 <a href=\"{link}\"> 를 통해 언제든 다른 후원 역시 할 수 있습니다</a>."
 
-#: talermerchantdemos/donations/templates/index.html.j2:4
+#: talermerchantdemos/templates/donations-index.html.j2:4
 msgid "Donate to Free Software projects"
 msgstr "무료 소프트웨어 프로젝트에 후원하기"
 
-#: talermerchantdemos/donations/templates/index.html.j2:8
+#: talermerchantdemos/templates/donations-index.html.j2:8
 msgid ""
 "This donations website shows the user experience for donations with GNU "
 "Taler."
 msgstr "여기 후원 홈페이지에서 GNU Taler를 통해 후원 경험을 해보세요."
 
-#: talermerchantdemos/donations/templates/index.html.j2:9
+#: talermerchantdemos/templates/donations-index.html.j2:9
 msgid "You can make donations in an toy currency ({currency})"
 msgstr "장난감 통화 ({통화})로 후원할 수 있습니다"
 
-#: talermerchantdemos/donations/templates/index.html.j2:16
+#: talermerchantdemos/templates/donations-index.html.j2:16
 msgid ""
 "Please select a project, the amount (*) of {currency} you wish to donate,"
 " and enter the donor's name that will appear on your receipt:"
 msgstr "기부하고 싶은 프로젝트, 기부 {통화} 액수, 그리고 영수증에 입력될 기부자 이름을 입력하세요:"
 
-#: talermerchantdemos/donations/templates/index.html.j2:33
+#: talermerchantdemos/templates/donations-index.html.j2:33
 msgid "Anonymous Donor"
 msgstr "익명의 후원자"
 
-#: talermerchantdemos/donations/templates/index.html.j2:34
+#: talermerchantdemos/templates/donations-index.html.j2:34
 msgid "Donate!"
 msgstr "후원하세요!"
 
-#: talermerchantdemos/donations/templates/index.html.j2:39
+#: talermerchantdemos/templates/donations-index.html.j2:39
 msgid ""
 "(*) To make the demo a bit more interesting, the 5 {currency} option is "
 "deliberately implemented with a fault: the merchant will try to make you "
@@ -394,79 +387,23 @@ msgstr ""
 "wallet을 통해 다시 검토하실 수 있습니다. 이 방식을 통해 Taler에서는 사용자 분들이 잘못된 정보로 결제하시는 일이 없도록"
 " 보호할 겁니다."
 
-#: talermerchantdemos/donations/templates/provider-not-supported.html.j2:4
+#: talermerchantdemos/templates/donations-provider-not-supported.html.j2:4
 msgid "Payment Provider Not Supported"
 msgstr "지원되지 않는 결제 제공 업체입니다"
 
-#: talermerchantdemos/donations/templates/provider-not-supported.html.j2:7
+#: talermerchantdemos/templates/donations-provider-not-supported.html.j2:7
 msgid "Unfortunately the selected payment provider is not supported in this 
demo."
 msgstr "선택하신 결제 업체는 이 데모 버전에서는 지원할 수 없습니다."
 
-#: talermerchantdemos/donations/templates/provider-not-supported.html.j2:8
+#: talermerchantdemos/templates/donations-provider-not-supported.html.j2:8
 msgid "Please go back and select &quot;Taler&quot;."
 msgstr "되돌아 가서 &quot; Taler &quot; 를 선택해주세요."
 
-#: talermerchantdemos/httpcommon/__init__.py:24
-#: talermerchantdemos/httpcommon/__init__.py:58
-msgid "Could not establish connection to backend"
-msgstr "백엔드와 연결을 하지 못하고 있습니다"
-
-#: talermerchantdemos/httpcommon/__init__.py:30
-#: talermerchantdemos/httpcommon/__init__.py:62
-msgid "Could not parse response from backend"
-msgstr "백엔드의 응답을 분석할 수 없습니다"
-
-#: talermerchantdemos/httpcommon/__init__.py:36
-#: talermerchantdemos/httpcommon/__init__.py:66
-msgid "Backend returned error status"
-msgstr "백엔드에 대한 오류 수신"
-
-#: talermerchantdemos/landing/landing.py:197
-#: talermerchantdemos/survey/survey.py:179
-msgid "HTTP method not allowed for this page"
-msgstr "이 페이지에서는 HTTP가 유효하지 않습니다"
-
-#: talermerchantdemos/survey/templates/base.html.j2:20
-msgid "GNU Taler Demo: Survey"
-msgstr "GNU Taler 데모: 설문조사"
-
-#: talermerchantdemos/survey/templates/base.html.j2:32
-msgid "Survey"
-msgstr "설문조사"
-
-#: talermerchantdemos/survey/templates/base.html.j2:34
-msgid "This page demonstrates how to tip visitors for completing small tasks."
-msgstr "해당 페이지에서는 방문자가 작은 단계를 마무리할 때마다 어떤 식으로 팀을 받는지 설명하고 있습니다."
-
-#: talermerchantdemos/survey/templates/base.html.j2:35
-msgid ""
-"Tipping is a way for offer cash rewards that go directly into a user's "
-"wallet."
-msgstr "여기서 팁을 준다는 의미는 사용자분들은 walllet에 현금 보상이 곧바로 지급되는 과정을 말합니다."
-
-#: talermerchantdemos/survey/templates/index.html.j2:6
-msgid ""
-"Please participate in our survey about payment systems and receive a tip "
-"in return."
-msgstr "저희 결제 시스템에 대한 설문조사에 참여하시고 팁을 받아가세요."
-
-#: talermerchantdemos/survey/templates/index.html.j2:12
-msgid "Which payment system do you prefer?"
-msgstr "어떤 결제 시스템을 선호하시나요?"
-
-#: talermerchantdemos/survey/templates/index.html.j2:23
-msgid "Submit Survey"
-msgstr "설문조사 제출하기"
-
-#: talermerchantdemos/templates/landing-base.html.j2:20
-msgid "GNU Taler Demo: Introduction"
-msgstr "GNU Taler 데모: 소개"
-
-#: talermerchantdemos/templates/landing-base.html.j2:34
+#: talermerchantdemos/templates/landing-base.html.j2:7
 msgid "This is the GNU Taler demo."
 msgstr "GNU Taler 데모를 찾아주셔서 감사합니다."
 
-#: talermerchantdemos/templates/landing-base.html.j2:35
+#: talermerchantdemos/templates/landing-base.html.j2:8
 msgid "Here you can try out the GNU Taler payment system using a toy currency."
 msgstr "저희 사이트에서 장난감 화폐를 통해 GNU Taler 결제 시스템을 사용해 보실 수 있습니다."
 
@@ -572,10 +509,11 @@ msgid "Step 4: Check money flow"
 msgstr "4단계: 자금 흐름 확인하기"
 
 #: talermerchantdemos/templates/landing-index.html.j2:59
+#, fuzzy
 msgid ""
 "You can see the wire transfers from the escrow account of the exchange to"
-" the merchants on the <a href=\"{bank}/public-accounts\">public accounts "
-"page</a> of the bank."
+" the merchants on the <a href=\"{bank}\">public accounts page</a> of the "
+"bank."
 msgstr ""
 "거래소의 에스크로 계좌에서 은행의 <a href=\"{bank}/public-accounts\">공용 계좌 페이지에서</a> "
 "판매자에게 송금되는 것을 확인하실 수 있습니다."
@@ -612,6 +550,34 @@ msgstr "저희 Taler에서는 자사와 웹사이트 관리에 대한 피드백
 msgid "Let us know what you think by <a href=\"{link}\">contacting us</a>."
 msgstr "저희에게 <a href=\"{link}\">관리자에게 연락하기</a>를 통해 여러분의 의견을 들려주세요."
 
+#: talermerchantdemos/templates/survey-base.html.j2:6
+msgid "Survey"
+msgstr "설문조사"
+
+#: talermerchantdemos/templates/survey-base.html.j2:8
+msgid "This page demonstrates how to tip visitors for completing small tasks."
+msgstr "해당 페이지에서는 방문자가 작은 단계를 마무리할 때마다 어떤 식으로 팀을 받는지 설명하고 있습니다."
+
+#: talermerchantdemos/templates/survey-base.html.j2:9
+msgid ""
+"Tipping is a way for offer cash rewards that go directly into a user's "
+"wallet."
+msgstr "여기서 팁을 준다는 의미는 사용자분들은 walllet에 현금 보상이 곧바로 지급되는 과정을 말합니다."
+
+#: talermerchantdemos/templates/survey-index.html.j2:6
+msgid ""
+"Please participate in our survey about payment systems and receive a tip "
+"in return."
+msgstr "저희 결제 시스템에 대한 설문조사에 참여하시고 팁을 받아가세요."
+
+#: talermerchantdemos/templates/survey-index.html.j2:12
+msgid "Which payment system do you prefer?"
+msgstr "어떤 결제 시스템을 선호하시나요?"
+
+#: talermerchantdemos/templates/survey-index.html.j2:23
+msgid "Submit Survey"
+msgstr "설문조사 제출하기"
+
 #~ msgid "English [en]"
 #~ msgstr "영어[en]"
 
@@ -624,3 +590,18 @@ msgstr "저희에게 <a href=\"{link}\">관리자에게 연락하기</a>를 통
 #~ msgid "Swedish [sv]"
 #~ msgstr "스웨덴어[sv]"
 
+#~ msgid "GNU Taler Demo: Essay Shop"
+#~ msgstr "GNU Taler 데모: 에세이 샵"
+
+#~ msgid "Back-office"
+#~ msgstr "관리자 페이지"
+
+#~ msgid "GNU Taler Demo: Donations"
+#~ msgstr "GNU Taler 데모: 후원"
+
+#~ msgid "GNU Taler Demo: Survey"
+#~ msgstr "GNU Taler 데모: 설문조사"
+
+#~ msgid "GNU Taler Demo: Introduction"
+#~ msgstr "GNU Taler 데모: 소개"
+
diff --git a/translations/messages.pot b/translations/messages.pot
index 629397a..c9c8f4e 100644
--- a/translations/messages.pot
+++ b/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: 2021-04-21 18:28+0200\n"
+"POT-Creation-Date: 2021-05-11 09:13+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,168 +17,178 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Generated-By: Babel 2.9.0\n"
 
-#: talermerchantdemos/blog/blog.py:114
-#: talermerchantdemos/donations/donations.py:157
-#: talermerchantdemos/landing/landing.py:117
-#: talermerchantdemos/survey/survey.py:110
+#: talermerchantdemos/blog/blog.py:126
+#: talermerchantdemos/donations/donations.py:139
+#: talermerchantdemos/landing/landing.py:93
+#: talermerchantdemos/survey/survey.py:100
 msgid "Internal error"
 msgstr ""
 
-#: talermerchantdemos/blog/blog.py:180
+#: talermerchantdemos/blog/blog.py:186
 msgid "Cannot refund unpaid article"
 msgstr ""
 
-#: talermerchantdemos/blog/blog.py:186
+#: talermerchantdemos/blog/blog.py:193
 msgid "Article is not anymore refundable"
 msgstr ""
 
-#: talermerchantdemos/blog/blog.py:217
+#: talermerchantdemos/blog/blog.py:229
 msgid "You did not pay for this article (nice try!)"
 msgstr ""
 
-#: talermerchantdemos/blog/blog.py:223
+#: talermerchantdemos/blog/blog.py:234
 msgid "Item not refundable (anymore)"
 msgstr ""
 
-#: talermerchantdemos/blog/blog.py:248
+#: talermerchantdemos/blog/blog.py:260
 msgid "Internal error: Files for article ({}) not found."
 msgstr ""
 
-#: talermerchantdemos/blog/blog.py:253
+#: talermerchantdemos/blog/blog.py:267
 msgid "Supplemental file ({}) for article ({}) not found."
 msgstr ""
 
-#: talermerchantdemos/blog/blog.py:326 talermerchantdemos/blog/blog.py:339
+#: talermerchantdemos/blog/blog.py:343 talermerchantdemos/blog/blog.py:357
 msgid "Direct access forbidden"
 msgstr ""
 
-#: talermerchantdemos/blog/blog.py:405
+#: talermerchantdemos/blog/blog.py:413
 msgid "Internal server error"
 msgstr ""
 
-#: talermerchantdemos/blog/blog.py:412
-#: talermerchantdemos/donations/donations.py:323
-#: talermerchantdemos/landing/landing.py:189
-#: talermerchantdemos/survey/survey.py:171
+#: talermerchantdemos/blog/blog.py:421
+#: talermerchantdemos/donations/donations.py:282
+#: talermerchantdemos/landing/landing.py:166
+#: talermerchantdemos/survey/survey.py:167
 msgid "Page not found"
 msgstr ""
 
-#: talermerchantdemos/blog/templates/article_frame.html.j2:9
+#: talermerchantdemos/donations/donations.py:125
+msgid "parameter '{}' required"
+msgstr ""
+
+#: talermerchantdemos/httpcommon/__init__.py:48
+#: talermerchantdemos/httpcommon/__init__.py:84
+msgid "Could not establish connection to backend"
+msgstr ""
+
+#: talermerchantdemos/httpcommon/__init__.py:54
+#: talermerchantdemos/httpcommon/__init__.py:89
+msgid "Could not parse response from backend"
+msgstr ""
+
+#: talermerchantdemos/httpcommon/__init__.py:59
+#: talermerchantdemos/httpcommon/__init__.py:92
+msgid "Backend returned error status"
+msgstr ""
+
+#: talermerchantdemos/landing/landing.py:174
+#: talermerchantdemos/survey/survey.py:175
+msgid "HTTP method not allowed for this page"
+msgstr ""
+
+#: talermerchantdemos/templates/blog-article-frame.html.j2:11
+#: talermerchantdemos/templates/blog-article-frame.html.j2:16
 msgid "Taler allows merchants to offer refunds to customers."
 msgstr ""
 
-#: talermerchantdemos/blog/templates/article_frame.html.j2:10
+#: talermerchantdemos/templates/blog-article-frame.html.j2:12
 msgid ""
 "You can <a href=\"{url}\">request a refund</a> within the first hour "
 "after buying this article."
 msgstr ""
 
-#: talermerchantdemos/blog/templates/base.html.j2:23
-msgid "GNU Taler Demo: Essay Shop"
-msgstr ""
-
-#: talermerchantdemos/blog/templates/base.html.j2:34
-#: talermerchantdemos/donations/templates/base.html.j2:31
-#: talermerchantdemos/survey/templates/base.html.j2:31
-msgid "Taler Demo"
+#: talermerchantdemos/templates/blog-article-frame.html.j2:17
+msgid "This article can't be refunded anymore."
 msgstr ""
 
-#: talermerchantdemos/blog/templates/base.html.j2:35
+#: talermerchantdemos/templates/blog-base.html.j2:9
 msgid "Essay shop"
 msgstr ""
 
-#: talermerchantdemos/blog/templates/base.html.j2:37
+#: talermerchantdemos/templates/blog-base.html.j2:11
 msgid "On this page you can buy articles using an imaginary currency."
 msgstr ""
 
-#: talermerchantdemos/blog/templates/base.html.j2:38
+#: talermerchantdemos/templates/blog-base.html.j2:12
 msgid ""
 "The articles are chapters from Richard Stallman's book &quot;Free "
 "Software, Free Society&quot;."
 msgstr ""
 
-#: talermerchantdemos/blog/templates/base.html.j2:39
+#: talermerchantdemos/templates/blog-base.html.j2:13
 msgid ""
 "The book is <a href=\"{shop}\">published by the FSF</a> and available "
 "gratis at <a href=\"{gnu}\">gnu.org</a>."
 msgstr ""
 
-#: talermerchantdemos/blog/templates/confirm_refund.html.j2:3
+#: talermerchantdemos/templates/blog-confirm-refund.html.j2:3
 msgid "Confirm refund request for article"
 msgstr ""
 
-#: talermerchantdemos/blog/templates/confirm_refund.html.j2:7
+#: talermerchantdemos/templates/blog-confirm-refund.html.j2:7
 msgid "Do you want to get a refund for the article <em>{name}</em>?"
 msgstr ""
 
-#: talermerchantdemos/blog/templates/confirm_refund.html.j2:8
+#: talermerchantdemos/templates/blog-confirm-refund.html.j2:8
 msgid ""
 "In this demonstration, refunds will be automatically approved by the "
 "merchant."
 msgstr ""
 
-#: talermerchantdemos/blog/templates/confirm_refund.html.j2:9
+#: talermerchantdemos/templates/blog-confirm-refund.html.j2:9
 msgid ""
 "After you have obtained a refund, you will not be able to read the "
 "article anymore."
 msgstr ""
 
-#: talermerchantdemos/blog/templates/confirm_refund.html.j2:15
+#: talermerchantdemos/templates/blog-confirm-refund.html.j2:15
 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 ""
 
-#: talermerchantdemos/blog/templates/confirm_refund.html.j2:21
+#: talermerchantdemos/templates/blog-confirm-refund.html.j2:21
 msgid "Request refund"
 msgstr ""
 
-#: talermerchantdemos/blog/templates/error.html.j2:3
-#: talermerchantdemos/donations/templates/error.html.j2:3
-#: talermerchantdemos/survey/templates/error.html.j2:3
+#: talermerchantdemos/templates/blog-error.html.j2:3
+#: talermerchantdemos/templates/donations-error.html.j2:3
 #: talermerchantdemos/templates/landing-error.html.j2:3
+#: talermerchantdemos/templates/survey-error.html.j2:3
 msgid "Error encountered"
 msgstr ""
 
-#: talermerchantdemos/blog/templates/error.html.j2:9
-#: talermerchantdemos/donations/templates/error.html.j2:9
-#: talermerchantdemos/survey/templates/error.html.j2:9
+#: talermerchantdemos/templates/blog-error.html.j2:9
+#: talermerchantdemos/templates/donations-error.html.j2:9
+#: talermerchantdemos/templates/survey-error.html.j2:9
 msgid "The backend returned status code {code}."
 msgstr ""
 
-#: talermerchantdemos/blog/templates/error.html.j2:14
-#: talermerchantdemos/donations/templates/error.html.j2:14
-#: talermerchantdemos/survey/templates/error.html.j2:14
+#: talermerchantdemos/templates/blog-error.html.j2:14
+#: talermerchantdemos/templates/donations-error.html.j2:14
+#: talermerchantdemos/templates/survey-error.html.j2:14
 msgid "Backend response:"
 msgstr ""
 
-#: talermerchantdemos/blog/templates/error.html.j2:19
-#: talermerchantdemos/donations/templates/error.html.j2:19
-#: talermerchantdemos/survey/templates/error.html.j2:19
+#: talermerchantdemos/templates/blog-error.html.j2:19
+#: talermerchantdemos/templates/donations-error.html.j2:19
 #: talermerchantdemos/templates/landing-error.html.j2:8
+#: talermerchantdemos/templates/survey-error.html.j2:19
 msgid "Stack trace:"
 msgstr ""
 
-#: talermerchantdemos/blog/templates/footer.html.j2:5
-#: talermerchantdemos/donations/templates/footer.html.j2:5
-#: talermerchantdemos/survey/templates/footer.html.j2:5
-#: talermerchantdemos/templates/footer.html.j2:5
-msgid ""
-"You can learn more about GNU Taler on our main <a "
-"href=\"{site}\">website</a>."
-msgstr ""
-
-#: talermerchantdemos/blog/templates/index.html.j2:3
+#: talermerchantdemos/templates/blog-index.html.j2:3
 msgid "Essay Shop: Free Software, Free Society"
 msgstr ""
 
-#: talermerchantdemos/blog/templates/index.html.j2:5
+#: talermerchantdemos/templates/blog-index.html.j2:5
 msgid ""
 "This is the latest edition of <cite>Free Software, Free Society: Selected"
 " Essays of Richard M. Stallman.</cite>"
 msgstr ""
 
-#: talermerchantdemos/blog/templates/index.html.j2:13
+#: talermerchantdemos/templates/blog-index.html.j2:13
 msgid ""
 "Verbatim copying and distribution of this entire book are permitted "
 "worldwide, without royalty, in any medium, provided this notice is "
@@ -188,187 +198,167 @@ msgid ""
 "copyright notice and this permission notice are preserved on all copies."
 msgstr ""
 
-#: talermerchantdemos/blog/templates/index.html.j2:18
+#: talermerchantdemos/templates/blog-index.html.j2:18
 msgid "Chapters"
 msgstr ""
 
-#: talermerchantdemos/blog/templates/index.html.j2:21
+#: talermerchantdemos/templates/blog-index.html.j2:20
 msgid "Click on an individual chapter to to purchase it with GNU Taler."
 msgstr ""
 
-#: talermerchantdemos/blog/templates/index.html.j2:22
+#: talermerchantdemos/templates/blog-index.html.j2:21
 msgid ""
 "You can get free, virtual money to buy articles on this page at the <a "
-"href=\"{}\")\">bank</a>"
+"href=\"{}\")\">bank</a>."
 msgstr ""
 
-#: talermerchantdemos/blog/templates/index.html.j2:30
+#: talermerchantdemos/templates/blog-index.html.j2:28
 msgid "Pay to read more..."
 msgstr ""
 
-#: talermerchantdemos/blog/templates/index.html.j2:33
+#: talermerchantdemos/templates/blog-index.html.j2:31
 msgid "No articles available in this language."
 msgstr ""
 
-#: talermerchantdemos/blog/templates/menu.html.j2:6
-#: talermerchantdemos/donations/templates/menu.html.j2:6
-#: talermerchantdemos/survey/templates/menu.html.j2:6
-#: talermerchantdemos/templates/landing-base.html.j2:32
-#: talermerchantdemos/templates/menu.html.j2:6
+#: talermerchantdemos/templates/common-base.html.j2:20
+msgid "GNU Taler Demo"
+msgstr ""
+
+#: talermerchantdemos/templates/common-base.html.j2:44
+#: talermerchantdemos/templates/landing-base.html.j2:5
 msgid "Introduction"
 msgstr ""
 
-#: talermerchantdemos/blog/templates/menu.html.j2:9
-#: talermerchantdemos/donations/templates/menu.html.j2:9
-#: talermerchantdemos/survey/templates/menu.html.j2:9
-#: talermerchantdemos/templates/menu.html.j2:9
+#: talermerchantdemos/templates/common-base.html.j2:47
 msgid "Bank"
 msgstr ""
 
-#: talermerchantdemos/blog/templates/menu.html.j2:12
-#: talermerchantdemos/donations/templates/menu.html.j2:12
-#: talermerchantdemos/survey/templates/menu.html.j2:12
-#: talermerchantdemos/templates/menu.html.j2:12
+#: talermerchantdemos/templates/common-base.html.j2:50
 msgid "Essay Shop"
 msgstr ""
 
-#: talermerchantdemos/blog/templates/menu.html.j2:15
-#: talermerchantdemos/donations/templates/base.html.j2:32
-#: talermerchantdemos/donations/templates/menu.html.j2:15
-#: talermerchantdemos/survey/templates/menu.html.j2:15
-#: talermerchantdemos/templates/menu.html.j2:15
+#: talermerchantdemos/templates/common-base.html.j2:53
+#: talermerchantdemos/templates/donations-base.html.j2:6
 msgid "Donations"
 msgstr ""
 
-#: talermerchantdemos/blog/templates/menu.html.j2:18
-#: talermerchantdemos/donations/templates/menu.html.j2:18
-#: talermerchantdemos/survey/templates/menu.html.j2:18
-#: talermerchantdemos/templates/menu.html.j2:18
+#: talermerchantdemos/templates/common-base.html.j2:56
 msgid "Tipping/Survey"
 msgstr ""
 
-#: talermerchantdemos/blog/templates/menu.html.j2:21
-#: talermerchantdemos/donations/templates/menu.html.j2:21
-#: talermerchantdemos/survey/templates/menu.html.j2:21
-#: talermerchantdemos/templates/menu.html.j2:21
-msgid "Back-office"
-msgstr ""
-
-#: talermerchantdemos/donations/donations.py:143
-msgid "parameter '{}' required"
-msgstr ""
-
-#: talermerchantdemos/donations/templates/base.html.j2:20
-msgid "GNU Taler Demo: Donations"
+#: talermerchantdemos/templates/common-base.html.j2:85
+msgid ""
+"You can learn more about GNU Taler on our main <a "
+"href=\"{site}\">website</a>."
 msgstr ""
 
-#: talermerchantdemos/donations/templates/base.html.j2:34
+#: talermerchantdemos/templates/donations-base.html.j2:8
 msgid "This is the donation page."
 msgstr ""
 
-#: talermerchantdemos/donations/templates/base.html.j2:35
+#: talermerchantdemos/templates/donations-base.html.j2:9
 msgid ""
 "Using this page you can make donations in {currency} to Free Software "
 "projects."
 msgstr ""
 
-#: talermerchantdemos/donations/templates/checkout.html.j2:5
+#: talermerchantdemos/templates/donations-checkout.html.j2:5
 msgid "Select your payment method"
 msgstr ""
 
-#: talermerchantdemos/donations/templates/checkout.html.j2:9
+#: talermerchantdemos/templates/donations-checkout.html.j2:9
 msgid "This is an example for a \"checkout\" page of a Web shop."
 msgstr ""
 
-#: talermerchantdemos/donations/templates/checkout.html.j2:10
+#: talermerchantdemos/templates/donations-checkout.html.j2:10
 msgid ""
 "On the previous page, you have created the shopping cart and decided "
 "which product to buy (i.e. which project to donate KUDOS to)."
 msgstr ""
 
-#: talermerchantdemos/donations/templates/checkout.html.j2:11
+#: talermerchantdemos/templates/donations-checkout.html.j2:11
 msgid ""
 "As Taler is not yet universally used, we expect merchants will offer "
 "various payment options."
 msgstr ""
 
-#: talermerchantdemos/donations/templates/checkout.html.j2:12
+#: talermerchantdemos/templates/donations-checkout.html.j2:12
 msgid "To continue with the demo, select the &quot;Taler&quot; payment option."
 msgstr ""
 
-#: talermerchantdemos/donations/templates/checkout.html.j2:17
+#: talermerchantdemos/templates/donations-checkout.html.j2:17
 msgid ""
 "Note that you must select Taler here for the demo to continue, as the "
 "other payment options are just placeholders and not really working in the"
 " demonstration."
 msgstr ""
 
-#: talermerchantdemos/donations/templates/checkout.html.j2:18
+#: talermerchantdemos/templates/donations-checkout.html.j2:18
 msgid ""
 "It would be possible to ask the user to make this choice already on the "
 "previous page (with the shopping cart); we just separated the two steps "
 "to keep each step as simple as possible."
 msgstr ""
 
-#: talermerchantdemos/donations/templates/checkout.html.j2:44
+#: talermerchantdemos/templates/donations-checkout.html.j2:44
 msgid "Confirm selection"
 msgstr ""
 
-#: talermerchantdemos/donations/templates/fulfillment.html.j2:4
+#: talermerchantdemos/templates/donations-fulfillment.html.j2:4
 msgid "Donation Receipt"
 msgstr ""
 
-#: talermerchantdemos/donations/templates/fulfillment.html.j2:7
+#: talermerchantdemos/templates/donations-fulfillment.html.j2:7
 msgid ""
 "Thank you, <strong>{donor}</strong>, for donating "
 "<strong>{amount}</strong> to <strong>{receiver}</strong>."
 msgstr ""
 
-#: talermerchantdemos/donations/templates/fulfillment.html.j2:12
+#: talermerchantdemos/templates/donations-fulfillment.html.j2:12
 msgid ""
 "Please keep the order identifier <strong>{id}</strong> as a receipt for "
 "your donation."
 msgstr ""
 
-#: talermerchantdemos/donations/templates/fulfillment.html.j2:13
+#: talermerchantdemos/templates/donations-fulfillment.html.j2:13
 msgid ""
 "You can show other people that you donated by sharing <a "
 "href=\"{link}\">this link</a> with them."
 msgstr ""
 
-#: talermerchantdemos/donations/templates/fulfillment.html.j2:19
+#: talermerchantdemos/templates/donations-fulfillment.html.j2:19
 msgid "You can always make <a href=\"{link}\">another donation</a>."
 msgstr ""
 
-#: talermerchantdemos/donations/templates/index.html.j2:4
+#: talermerchantdemos/templates/donations-index.html.j2:4
 msgid "Donate to Free Software projects"
 msgstr ""
 
-#: talermerchantdemos/donations/templates/index.html.j2:8
+#: talermerchantdemos/templates/donations-index.html.j2:8
 msgid ""
 "This donations website shows the user experience for donations with GNU "
 "Taler."
 msgstr ""
 
-#: talermerchantdemos/donations/templates/index.html.j2:9
+#: talermerchantdemos/templates/donations-index.html.j2:9
 msgid "You can make donations in an toy currency ({currency})"
 msgstr ""
 
-#: talermerchantdemos/donations/templates/index.html.j2:16
+#: talermerchantdemos/templates/donations-index.html.j2:16
 msgid ""
 "Please select a project, the amount (*) of {currency} you wish to donate,"
 " and enter the donor's name that will appear on your receipt:"
 msgstr ""
 
-#: talermerchantdemos/donations/templates/index.html.j2:33
+#: talermerchantdemos/templates/donations-index.html.j2:33
 msgid "Anonymous Donor"
 msgstr ""
 
-#: talermerchantdemos/donations/templates/index.html.j2:34
+#: talermerchantdemos/templates/donations-index.html.j2:34
 msgid "Donate!"
 msgstr ""
 
-#: talermerchantdemos/donations/templates/index.html.j2:39
+#: talermerchantdemos/templates/donations-index.html.j2:39
 msgid ""
 "(*) To make the demo a bit more interesting, the 5 {currency} option is "
 "deliberately implemented with a fault: the merchant will try to make you "
@@ -378,79 +368,23 @@ msgid ""
 "from committing to erroneous payments."
 msgstr ""
 
-#: talermerchantdemos/donations/templates/provider-not-supported.html.j2:4
+#: talermerchantdemos/templates/donations-provider-not-supported.html.j2:4
 msgid "Payment Provider Not Supported"
 msgstr ""
 
-#: talermerchantdemos/donations/templates/provider-not-supported.html.j2:7
+#: talermerchantdemos/templates/donations-provider-not-supported.html.j2:7
 msgid "Unfortunately the selected payment provider is not supported in this 
demo."
 msgstr ""
 
-#: talermerchantdemos/donations/templates/provider-not-supported.html.j2:8
+#: talermerchantdemos/templates/donations-provider-not-supported.html.j2:8
 msgid "Please go back and select &quot;Taler&quot;."
 msgstr ""
 
-#: talermerchantdemos/httpcommon/__init__.py:24
-#: talermerchantdemos/httpcommon/__init__.py:58
-msgid "Could not establish connection to backend"
-msgstr ""
-
-#: talermerchantdemos/httpcommon/__init__.py:30
-#: talermerchantdemos/httpcommon/__init__.py:62
-msgid "Could not parse response from backend"
-msgstr ""
-
-#: talermerchantdemos/httpcommon/__init__.py:36
-#: talermerchantdemos/httpcommon/__init__.py:66
-msgid "Backend returned error status"
-msgstr ""
-
-#: talermerchantdemos/landing/landing.py:197
-#: talermerchantdemos/survey/survey.py:179
-msgid "HTTP method not allowed for this page"
-msgstr ""
-
-#: talermerchantdemos/survey/templates/base.html.j2:20
-msgid "GNU Taler Demo: Survey"
-msgstr ""
-
-#: talermerchantdemos/survey/templates/base.html.j2:32
-msgid "Survey"
-msgstr ""
-
-#: talermerchantdemos/survey/templates/base.html.j2:34
-msgid "This page demonstrates how to tip visitors for completing small tasks."
-msgstr ""
-
-#: talermerchantdemos/survey/templates/base.html.j2:35
-msgid ""
-"Tipping is a way for offer cash rewards that go directly into a user's "
-"wallet."
-msgstr ""
-
-#: talermerchantdemos/survey/templates/index.html.j2:6
-msgid ""
-"Please participate in our survey about payment systems and receive a tip "
-"in return."
-msgstr ""
-
-#: talermerchantdemos/survey/templates/index.html.j2:12
-msgid "Which payment system do you prefer?"
-msgstr ""
-
-#: talermerchantdemos/survey/templates/index.html.j2:23
-msgid "Submit Survey"
-msgstr ""
-
-#: talermerchantdemos/templates/landing-base.html.j2:20
-msgid "GNU Taler Demo: Introduction"
-msgstr ""
-
-#: talermerchantdemos/templates/landing-base.html.j2:34
+#: talermerchantdemos/templates/landing-base.html.j2:7
 msgid "This is the GNU Taler demo."
 msgstr ""
 
-#: talermerchantdemos/templates/landing-base.html.j2:35
+#: talermerchantdemos/templates/landing-base.html.j2:8
 msgid "Here you can try out the GNU Taler payment system using a toy currency."
 msgstr ""
 
@@ -554,8 +488,8 @@ msgstr ""
 #: talermerchantdemos/templates/landing-index.html.j2:59
 msgid ""
 "You can see the wire transfers from the escrow account of the exchange to"
-" the merchants on the <a href=\"{bank}/public-accounts\">public accounts "
-"page</a> of the bank."
+" the merchants on the <a href=\"{bank}\">public accounts page</a> of the "
+"bank."
 msgstr ""
 
 #: talermerchantdemos/templates/landing-index.html.j2:60
@@ -590,3 +524,31 @@ msgstr ""
 msgid "Let us know what you think by <a href=\"{link}\">contacting us</a>."
 msgstr ""
 
+#: talermerchantdemos/templates/survey-base.html.j2:6
+msgid "Survey"
+msgstr ""
+
+#: talermerchantdemos/templates/survey-base.html.j2:8
+msgid "This page demonstrates how to tip visitors for completing small tasks."
+msgstr ""
+
+#: talermerchantdemos/templates/survey-base.html.j2:9
+msgid ""
+"Tipping is a way for offer cash rewards that go directly into a user's "
+"wallet."
+msgstr ""
+
+#: talermerchantdemos/templates/survey-index.html.j2:6
+msgid ""
+"Please participate in our survey about payment systems and receive a tip "
+"in return."
+msgstr ""
+
+#: talermerchantdemos/templates/survey-index.html.j2:12
+msgid "Which payment system do you prefer?"
+msgstr ""
+
+#: talermerchantdemos/templates/survey-index.html.j2:23
+msgid "Submit Survey"
+msgstr ""
+
diff --git a/translations/pt/LC_MESSAGES/messages.po 
b/translations/pt/LC_MESSAGES/messages.po
index 28903a0..ba4ded6 100644
--- a/translations/pt/LC_MESSAGES/messages.po
+++ b/translations/pt/LC_MESSAGES/messages.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PROJECT VERSION\n"
 "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2021-04-21 18:28+0200\n"
+"POT-Creation-Date: 2021-05-11 09:13+0200\n"
 "PO-Revision-Date: 2021-02-24 11:17+0000\n"
 "Last-Translator: Stefan <eintritt@hotmail.com>\n"
 "Language: pt\n"
@@ -19,57 +19,82 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Generated-By: Babel 2.9.0\n"
 
-#: talermerchantdemos/blog/blog.py:114
-#: talermerchantdemos/donations/donations.py:157
-#: talermerchantdemos/landing/landing.py:117
-#: talermerchantdemos/survey/survey.py:110
+#: talermerchantdemos/blog/blog.py:126
+#: talermerchantdemos/donations/donations.py:139
+#: talermerchantdemos/landing/landing.py:93
+#: talermerchantdemos/survey/survey.py:100
 msgid "Internal error"
 msgstr "Erro interno"
 
-#: talermerchantdemos/blog/blog.py:180
+#: talermerchantdemos/blog/blog.py:186
 msgid "Cannot refund unpaid article"
 msgstr "Não é possível reembolsar artigo por pagar"
 
-#: talermerchantdemos/blog/blog.py:186
+#: talermerchantdemos/blog/blog.py:193
 msgid "Article is not anymore refundable"
 msgstr "Já não é possível reembolsar artigo"
 
-#: talermerchantdemos/blog/blog.py:217
+#: talermerchantdemos/blog/blog.py:229
 msgid "You did not pay for this article (nice try!)"
 msgstr "Não pagou este artigo (boa tentativa!)"
 
-#: talermerchantdemos/blog/blog.py:223
+#: talermerchantdemos/blog/blog.py:234
 msgid "Item not refundable (anymore)"
 msgstr "Artigo (já) não é reembolsável"
 
-#: talermerchantdemos/blog/blog.py:248
+#: talermerchantdemos/blog/blog.py:260
 msgid "Internal error: Files for article ({}) not found."
 msgstr "Erro interno: Não foram encontrados os ficheiros para o artigo ({})."
 
-#: talermerchantdemos/blog/blog.py:253
+#: talermerchantdemos/blog/blog.py:267
 msgid "Supplemental file ({}) for article ({}) not found."
 msgstr "Não foi encontrado o ficheiro suplementar ({}) do artigo ({})."
 
-#: talermerchantdemos/blog/blog.py:326 talermerchantdemos/blog/blog.py:339
+#: talermerchantdemos/blog/blog.py:343 talermerchantdemos/blog/blog.py:357
 msgid "Direct access forbidden"
 msgstr "Acesso direto proibido"
 
-#: talermerchantdemos/blog/blog.py:405
+#: talermerchantdemos/blog/blog.py:413
 msgid "Internal server error"
 msgstr "Erro interno do servidor"
 
-#: talermerchantdemos/blog/blog.py:412
-#: talermerchantdemos/donations/donations.py:323
-#: talermerchantdemos/landing/landing.py:189
-#: talermerchantdemos/survey/survey.py:171
+#: talermerchantdemos/blog/blog.py:421
+#: talermerchantdemos/donations/donations.py:282
+#: talermerchantdemos/landing/landing.py:166
+#: talermerchantdemos/survey/survey.py:167
 msgid "Page not found"
 msgstr "Página não encontrada"
 
-#: talermerchantdemos/blog/templates/article_frame.html.j2:9
+#: talermerchantdemos/donations/donations.py:125
+msgid "parameter '{}' required"
+msgstr "necessário parâmetro '{}'"
+
+#: talermerchantdemos/httpcommon/__init__.py:48
+#: talermerchantdemos/httpcommon/__init__.py:84
+msgid "Could not establish connection to backend"
+msgstr "Não foi possível estabelecer uma ligação ao backend"
+
+#: talermerchantdemos/httpcommon/__init__.py:54
+#: talermerchantdemos/httpcommon/__init__.py:89
+msgid "Could not parse response from backend"
+msgstr "Não foi possível analisar a resposta do backend"
+
+#: talermerchantdemos/httpcommon/__init__.py:59
+#: talermerchantdemos/httpcommon/__init__.py:92
+msgid "Backend returned error status"
+msgstr "Backend apresentou um erro"
+
+#: talermerchantdemos/landing/landing.py:174
+#: talermerchantdemos/survey/survey.py:175
+msgid "HTTP method not allowed for this page"
+msgstr "Método HTTP não permitido para esta página"
+
+#: talermerchantdemos/templates/blog-article-frame.html.j2:11
+#: talermerchantdemos/templates/blog-article-frame.html.j2:16
 msgid "Taler allows merchants to offer refunds to customers."
 msgstr "O Taler permite que comerciantes reembolsem os seus clientes."
 
-#: talermerchantdemos/blog/templates/article_frame.html.j2:10
+#: talermerchantdemos/templates/blog-article-frame.html.j2:12
 msgid ""
 "You can <a href=\"{url}\">request a refund</a> within the first hour "
 "after buying this article."
@@ -77,25 +102,20 @@ msgstr ""
 "Pode <a href=\"{url}\">pedir um reembolso</a> até uma hora após a compra "
 "deste artigo."
 
-#: talermerchantdemos/blog/templates/base.html.j2:23
-msgid "GNU Taler Demo: Essay Shop"
-msgstr "Demonstração do GNU Taler: Loja de Ensaios"
-
-#: talermerchantdemos/blog/templates/base.html.j2:34
-#: talermerchantdemos/donations/templates/base.html.j2:31
-#: talermerchantdemos/survey/templates/base.html.j2:31
-msgid "Taler Demo"
-msgstr "Demonstração do Taler"
+#: talermerchantdemos/templates/blog-article-frame.html.j2:17
+#, fuzzy
+msgid "This article can't be refunded anymore."
+msgstr "Artigo (já) não é reembolsável"
 
-#: talermerchantdemos/blog/templates/base.html.j2:35
+#: talermerchantdemos/templates/blog-base.html.j2:9
 msgid "Essay shop"
 msgstr "Loja de ensaios"
 
-#: talermerchantdemos/blog/templates/base.html.j2:37
+#: talermerchantdemos/templates/blog-base.html.j2:11
 msgid "On this page you can buy articles using an imaginary currency."
 msgstr "Nesta página, pode comprar artigos usando uma moeda imaginária."
 
-#: talermerchantdemos/blog/templates/base.html.j2:38
+#: talermerchantdemos/templates/blog-base.html.j2:12
 msgid ""
 "The articles are chapters from Richard Stallman's book &quot;Free "
 "Software, Free Society&quot;."
@@ -103,7 +123,7 @@ msgstr ""
 "Os artigos são capítulos do livro &quot;Free Software, Free "
 "Society&quot;, de Richard Stallman."
 
-#: talermerchantdemos/blog/templates/base.html.j2:39
+#: talermerchantdemos/templates/blog-base.html.j2:13
 msgid ""
 "The book is <a href=\"{shop}\">published by the FSF</a> and available "
 "gratis at <a href=\"{gnu}\">gnu.org</a>."
@@ -111,15 +131,15 @@ msgstr ""
 "Este livro é <a href=\"{shop}\">publicado pela FSF</a> e está disponível "
 "gratuitamente no site <a href=\"{gnu}\">gnu.org</a>."
 
-#: talermerchantdemos/blog/templates/confirm_refund.html.j2:3
+#: talermerchantdemos/templates/blog-confirm-refund.html.j2:3
 msgid "Confirm refund request for article"
 msgstr "Confirmar pedido de reembolso pelo artigo"
 
-#: talermerchantdemos/blog/templates/confirm_refund.html.j2:7
+#: talermerchantdemos/templates/blog-confirm-refund.html.j2:7
 msgid "Do you want to get a refund for the article <em>{name}</em>?"
 msgstr "Deseja obter um reembolso pelo artigo <em>{name}</em>?"
 
-#: talermerchantdemos/blog/templates/confirm_refund.html.j2:8
+#: talermerchantdemos/templates/blog-confirm-refund.html.j2:8
 msgid ""
 "In this demonstration, refunds will be automatically approved by the "
 "merchant."
@@ -127,13 +147,13 @@ msgstr ""
 "Nesta demonstração, reembolsos serão aprovados automaticamente pelo "
 "comerciante."
 
-#: talermerchantdemos/blog/templates/confirm_refund.html.j2:9
+#: talermerchantdemos/templates/blog-confirm-refund.html.j2:9
 msgid ""
 "After you have obtained a refund, you will not be able to read the "
 "article anymore."
 msgstr "Depois de obter um reembolso, deixará de poder ler este artigo."
 
-#: talermerchantdemos/blog/templates/confirm_refund.html.j2:15
+#: talermerchantdemos/templates/blog-confirm-refund.html.j2:15
 msgid ""
 "You will only be able to receive the refund on the same wallet that you "
 "have used to pay for this article originally."
@@ -141,52 +161,41 @@ msgstr ""
 "Apenas poderá receber o reembolso com a mesma carteira que usou para "
 "pagar pelo artigo."
 
-#: talermerchantdemos/blog/templates/confirm_refund.html.j2:21
+#: talermerchantdemos/templates/blog-confirm-refund.html.j2:21
 msgid "Request refund"
 msgstr "Pedir reembolso"
 
-#: talermerchantdemos/blog/templates/error.html.j2:3
-#: talermerchantdemos/donations/templates/error.html.j2:3
-#: talermerchantdemos/survey/templates/error.html.j2:3
+#: talermerchantdemos/templates/blog-error.html.j2:3
+#: talermerchantdemos/templates/donations-error.html.j2:3
 #: talermerchantdemos/templates/landing-error.html.j2:3
+#: talermerchantdemos/templates/survey-error.html.j2:3
 msgid "Error encountered"
 msgstr "Ocorreu um erro"
 
-#: talermerchantdemos/blog/templates/error.html.j2:9
-#: talermerchantdemos/donations/templates/error.html.j2:9
-#: talermerchantdemos/survey/templates/error.html.j2:9
+#: talermerchantdemos/templates/blog-error.html.j2:9
+#: talermerchantdemos/templates/donations-error.html.j2:9
+#: talermerchantdemos/templates/survey-error.html.j2:9
 msgid "The backend returned status code {code}."
 msgstr ""
 
-#: talermerchantdemos/blog/templates/error.html.j2:14
-#: talermerchantdemos/donations/templates/error.html.j2:14
-#: talermerchantdemos/survey/templates/error.html.j2:14
+#: talermerchantdemos/templates/blog-error.html.j2:14
+#: talermerchantdemos/templates/donations-error.html.j2:14
+#: talermerchantdemos/templates/survey-error.html.j2:14
 msgid "Backend response:"
 msgstr ""
 
-#: talermerchantdemos/blog/templates/error.html.j2:19
-#: talermerchantdemos/donations/templates/error.html.j2:19
-#: talermerchantdemos/survey/templates/error.html.j2:19
+#: talermerchantdemos/templates/blog-error.html.j2:19
+#: talermerchantdemos/templates/donations-error.html.j2:19
 #: talermerchantdemos/templates/landing-error.html.j2:8
+#: talermerchantdemos/templates/survey-error.html.j2:19
 msgid "Stack trace:"
 msgstr ""
 
-#: talermerchantdemos/blog/templates/footer.html.j2:5
-#: talermerchantdemos/donations/templates/footer.html.j2:5
-#: talermerchantdemos/survey/templates/footer.html.j2:5
-#: talermerchantdemos/templates/footer.html.j2:5
-msgid ""
-"You can learn more about GNU Taler on our main <a "
-"href=\"{site}\">website</a>."
-msgstr ""
-"Pode aprender mais acerca do GNU Taler no nosso <a "
-"href=\"{site}\">site</a> principal."
-
-#: talermerchantdemos/blog/templates/index.html.j2:3
+#: talermerchantdemos/templates/blog-index.html.j2:3
 msgid "Essay Shop: Free Software, Free Society"
 msgstr "Loja de Ensaios: Free Software, Free Society"
 
-#: talermerchantdemos/blog/templates/index.html.j2:5
+#: talermerchantdemos/templates/blog-index.html.j2:5
 msgid ""
 "This is the latest edition of <cite>Free Software, Free Society: Selected"
 " Essays of Richard M. Stallman.</cite>"
@@ -194,7 +203,7 @@ msgstr ""
 "Esta é a edição mais recente de <cite>Free Software, Free Society: "
 "Selected Essays of Richard M. Stallman.</cite>"
 
-#: talermerchantdemos/blog/templates/index.html.j2:13
+#: talermerchantdemos/templates/blog-index.html.j2:13
 msgid ""
 "Verbatim copying and distribution of this entire book are permitted "
 "worldwide, without royalty, in any medium, provided this notice is "
@@ -211,87 +220,71 @@ msgstr ""
 " e a notificação de direitos de autor e esta nota de permissão sejam "
 "preservadas em todas as cópias."
 
-#: talermerchantdemos/blog/templates/index.html.j2:18
+#: talermerchantdemos/templates/blog-index.html.j2:18
 msgid "Chapters"
 msgstr "Capítulos"
 
-#: talermerchantdemos/blog/templates/index.html.j2:21
+#: talermerchantdemos/templates/blog-index.html.j2:20
 msgid "Click on an individual chapter to to purchase it with GNU Taler."
 msgstr "Clique num capítulo individual para o comprar com o GNU Taler."
 
-#: talermerchantdemos/blog/templates/index.html.j2:22
+#: talermerchantdemos/templates/blog-index.html.j2:21
+#, fuzzy
 msgid ""
 "You can get free, virtual money to buy articles on this page at the <a "
-"href=\"{}\")\">bank</a>"
+"href=\"{}\")\">bank</a>."
 msgstr ""
 "Para comprar artigos nesta página, pode obter dinheiro virtual de forma "
 "gratuita no <a href=\"{}\")\">banco</a>"
 
-#: talermerchantdemos/blog/templates/index.html.j2:30
+#: talermerchantdemos/templates/blog-index.html.j2:28
 msgid "Pay to read more..."
 msgstr "Pagar para ler mais..."
 
-#: talermerchantdemos/blog/templates/index.html.j2:33
+#: talermerchantdemos/templates/blog-index.html.j2:31
 msgid "No articles available in this language."
 msgstr "Não há artigos disponíveis nesta língua."
 
-#: talermerchantdemos/blog/templates/menu.html.j2:6
-#: talermerchantdemos/donations/templates/menu.html.j2:6
-#: talermerchantdemos/survey/templates/menu.html.j2:6
-#: talermerchantdemos/templates/landing-base.html.j2:32
-#: talermerchantdemos/templates/menu.html.j2:6
+#: talermerchantdemos/templates/common-base.html.j2:20
+#, fuzzy
+msgid "GNU Taler Demo"
+msgstr "Demonstração do Taler"
+
+#: talermerchantdemos/templates/common-base.html.j2:44
+#: talermerchantdemos/templates/landing-base.html.j2:5
 msgid "Introduction"
 msgstr "Introdução"
 
-#: talermerchantdemos/blog/templates/menu.html.j2:9
-#: talermerchantdemos/donations/templates/menu.html.j2:9
-#: talermerchantdemos/survey/templates/menu.html.j2:9
-#: talermerchantdemos/templates/menu.html.j2:9
+#: talermerchantdemos/templates/common-base.html.j2:47
 msgid "Bank"
 msgstr "Banco"
 
-#: talermerchantdemos/blog/templates/menu.html.j2:12
-#: talermerchantdemos/donations/templates/menu.html.j2:12
-#: talermerchantdemos/survey/templates/menu.html.j2:12
-#: talermerchantdemos/templates/menu.html.j2:12
+#: talermerchantdemos/templates/common-base.html.j2:50
 msgid "Essay Shop"
 msgstr "Loja de Ensaios"
 
-#: talermerchantdemos/blog/templates/menu.html.j2:15
-#: talermerchantdemos/donations/templates/base.html.j2:32
-#: talermerchantdemos/donations/templates/menu.html.j2:15
-#: talermerchantdemos/survey/templates/menu.html.j2:15
-#: talermerchantdemos/templates/menu.html.j2:15
+#: talermerchantdemos/templates/common-base.html.j2:53
+#: talermerchantdemos/templates/donations-base.html.j2:6
 msgid "Donations"
 msgstr "Doações"
 
-#: talermerchantdemos/blog/templates/menu.html.j2:18
-#: talermerchantdemos/donations/templates/menu.html.j2:18
-#: talermerchantdemos/survey/templates/menu.html.j2:18
-#: talermerchantdemos/templates/menu.html.j2:18
+#: talermerchantdemos/templates/common-base.html.j2:56
 msgid "Tipping/Survey"
 msgstr "Gorjeta/Inquérito"
 
-#: talermerchantdemos/blog/templates/menu.html.j2:21
-#: talermerchantdemos/donations/templates/menu.html.j2:21
-#: talermerchantdemos/survey/templates/menu.html.j2:21
-#: talermerchantdemos/templates/menu.html.j2:21
-msgid "Back-office"
-msgstr "Back-office"
-
-#: talermerchantdemos/donations/donations.py:143
-msgid "parameter '{}' required"
-msgstr "necessário parâmetro '{}'"
-
-#: talermerchantdemos/donations/templates/base.html.j2:20
-msgid "GNU Taler Demo: Donations"
-msgstr "Demonstração do GNU Taler: Doações"
+#: talermerchantdemos/templates/common-base.html.j2:85
+msgid ""
+"You can learn more about GNU Taler on our main <a "
+"href=\"{site}\">website</a>."
+msgstr ""
+"Pode aprender mais acerca do GNU Taler no nosso <a "
+"href=\"{site}\">site</a> principal."
 
-#: talermerchantdemos/donations/templates/base.html.j2:34
+#: talermerchantdemos/templates/donations-base.html.j2:8
 msgid "This is the donation page."
 msgstr "Esta é a página de doações."
 
-#: talermerchantdemos/donations/templates/base.html.j2:35
+#: talermerchantdemos/templates/donations-base.html.j2:9
 msgid ""
 "Using this page you can make donations in {currency} to Free Software "
 "projects."
@@ -299,15 +292,15 @@ msgstr ""
 "Nesta página, pode fazer doações em {currency} a projetos de Softwares "
 "Livres."
 
-#: talermerchantdemos/donations/templates/checkout.html.j2:5
+#: talermerchantdemos/templates/donations-checkout.html.j2:5
 msgid "Select your payment method"
 msgstr "Selecione o seu método de pagamento"
 
-#: talermerchantdemos/donations/templates/checkout.html.j2:9
+#: talermerchantdemos/templates/donations-checkout.html.j2:9
 msgid "This is an example for a \"checkout\" page of a Web shop."
 msgstr "Isto é um exemplo de uma página de \"checkout\" de uma loja online."
 
-#: talermerchantdemos/donations/templates/checkout.html.j2:10
+#: talermerchantdemos/templates/donations-checkout.html.j2:10
 msgid ""
 "On the previous page, you have created the shopping cart and decided "
 "which product to buy (i.e. which project to donate KUDOS to)."
@@ -315,7 +308,7 @@ msgstr ""
 "Na página anterior, criou um carrinho de compras e decidiu qual produto "
 "vai comprar (ou seja, a que projeto vai doar KUDOS)."
 
-#: talermerchantdemos/donations/templates/checkout.html.j2:11
+#: talermerchantdemos/templates/donations-checkout.html.j2:11
 msgid ""
 "As Taler is not yet universally used, we expect merchants will offer "
 "various payment options."
@@ -323,13 +316,13 @@ msgstr ""
 "Como o Taler ainda não é usado de forma universal, prevemos que os "
 "comerciantes lhe apresentem várias opções de pagamento."
 
-#: talermerchantdemos/donations/templates/checkout.html.j2:12
+#: talermerchantdemos/templates/donations-checkout.html.j2:12
 msgid "To continue with the demo, select the &quot;Taler&quot; payment option."
 msgstr ""
 "Para continuar a demonstração, selecione a opção de pagamento "
 "&quot;Taler&quot;."
 
-#: talermerchantdemos/donations/templates/checkout.html.j2:17
+#: talermerchantdemos/templates/donations-checkout.html.j2:17
 msgid ""
 "Note that you must select Taler here for the demo to continue, as the "
 "other payment options are just placeholders and not really working in the"
@@ -339,7 +332,7 @@ msgstr ""
 "pois os outros métodos de pagamento são apenas para efeitos da "
 "demonstração e, na realidade, não funcionam."
 
-#: talermerchantdemos/donations/templates/checkout.html.j2:18
+#: talermerchantdemos/templates/donations-checkout.html.j2:18
 msgid ""
 "It would be possible to ask the user to make this choice already on the "
 "previous page (with the shopping cart); we just separated the two steps "
@@ -349,15 +342,15 @@ msgstr ""
 "(com o carrinho de compras), apenas separámos os dois passos para que "
 "cada passo seja o mais simples possível."
 
-#: talermerchantdemos/donations/templates/checkout.html.j2:44
+#: talermerchantdemos/templates/donations-checkout.html.j2:44
 msgid "Confirm selection"
 msgstr "Confirmar seleção"
 
-#: talermerchantdemos/donations/templates/fulfillment.html.j2:4
+#: talermerchantdemos/templates/donations-fulfillment.html.j2:4
 msgid "Donation Receipt"
 msgstr "Recibo de Doação"
 
-#: talermerchantdemos/donations/templates/fulfillment.html.j2:7
+#: talermerchantdemos/templates/donations-fulfillment.html.j2:7
 msgid ""
 "Thank you, <strong>{donor}</strong>, for donating "
 "<strong>{amount}</strong> to <strong>{receiver}</strong>."
@@ -365,7 +358,7 @@ msgstr ""
 "Obrigado, <strong>{donor}</strong>, por doar <strong>{amount}</strong> a "
 "<strong>{receiver}</strong>."
 
-#: talermerchantdemos/donations/templates/fulfillment.html.j2:12
+#: talermerchantdemos/templates/donations-fulfillment.html.j2:12
 msgid ""
 "Please keep the order identifier <strong>{id}</strong> as a receipt for "
 "your donation."
@@ -373,7 +366,7 @@ msgstr ""
 "Por favor guarde o identificador do pedido <strong>{id}</strong> como "
 "recibo da sua doação."
 
-#: talermerchantdemos/donations/templates/fulfillment.html.j2:13
+#: talermerchantdemos/templates/donations-fulfillment.html.j2:13
 msgid ""
 "You can show other people that you donated by sharing <a "
 "href=\"{link}\">this link</a> with them."
@@ -381,15 +374,15 @@ msgstr ""
 "Partilhe <a href=\"{link}\"> este link</a> com outras pessoas para que "
 "estas fiquem a saber que fez uma doação."
 
-#: talermerchantdemos/donations/templates/fulfillment.html.j2:19
+#: talermerchantdemos/templates/donations-fulfillment.html.j2:19
 msgid "You can always make <a href=\"{link}\">another donation</a>."
 msgstr "Pode sempre fazer <a href=\"{link}\">outra doação</a>."
 
-#: talermerchantdemos/donations/templates/index.html.j2:4
+#: talermerchantdemos/templates/donations-index.html.j2:4
 msgid "Donate to Free Software projects"
 msgstr "Doe a projetos de Software Livre"
 
-#: talermerchantdemos/donations/templates/index.html.j2:8
+#: talermerchantdemos/templates/donations-index.html.j2:8
 msgid ""
 "This donations website shows the user experience for donations with GNU "
 "Taler."
@@ -397,11 +390,11 @@ msgstr ""
 "Este site de doações demonstra a experiência de utilizador na realização "
 "de doações usando o GNU Taler."
 
-#: talermerchantdemos/donations/templates/index.html.j2:9
+#: talermerchantdemos/templates/donations-index.html.j2:9
 msgid "You can make donations in an toy currency ({currency})"
 msgstr "Pode fazer doações usando a moeda falsa ({currency})"
 
-#: talermerchantdemos/donations/templates/index.html.j2:16
+#: talermerchantdemos/templates/donations-index.html.j2:16
 msgid ""
 "Please select a project, the amount (*) of {currency} you wish to donate,"
 " and enter the donor's name that will appear on your receipt:"
@@ -409,15 +402,15 @@ msgstr ""
 "Por favor selecione um projeto, a quantidade (*) de {currency} que deseja"
 " doar e insira o nome do doador que irá aparecer no seu recibo:"
 
-#: talermerchantdemos/donations/templates/index.html.j2:33
+#: talermerchantdemos/templates/donations-index.html.j2:33
 msgid "Anonymous Donor"
 msgstr "Doador Anónimo"
 
-#: talermerchantdemos/donations/templates/index.html.j2:34
+#: talermerchantdemos/templates/donations-index.html.j2:34
 msgid "Donate!"
 msgstr "Faça uma doação!"
 
-#: talermerchantdemos/donations/templates/index.html.j2:39
+#: talermerchantdemos/templates/donations-index.html.j2:39
 msgid ""
 "(*) To make the demo a bit more interesting, the 5 {currency} option is "
 "deliberately implemented with a fault: the merchant will try to make you "
@@ -433,87 +426,25 @@ msgstr ""
 "oportunidade de rever a oferta final do comerciante na carteira do Taler."
 " Desta forma, o Taler evita que faça pagamentos incorretos."
 
-#: talermerchantdemos/donations/templates/provider-not-supported.html.j2:4
+#: talermerchantdemos/templates/donations-provider-not-supported.html.j2:4
 msgid "Payment Provider Not Supported"
 msgstr "Provedor de Pagamentos Não Suportado"
 
-#: talermerchantdemos/donations/templates/provider-not-supported.html.j2:7
+#: talermerchantdemos/templates/donations-provider-not-supported.html.j2:7
 msgid "Unfortunately the selected payment provider is not supported in this 
demo."
 msgstr ""
 "Infelizmente, o provedor de pagamentos selecionado não é suportado por "
 "esta demonstração."
 
-#: talermerchantdemos/donations/templates/provider-not-supported.html.j2:8
+#: talermerchantdemos/templates/donations-provider-not-supported.html.j2:8
 msgid "Please go back and select &quot;Taler&quot;."
 msgstr "Por favor volte atrás e selecione o &quot;Taler&quot;."
 
-#: talermerchantdemos/httpcommon/__init__.py:24
-#: talermerchantdemos/httpcommon/__init__.py:58
-msgid "Could not establish connection to backend"
-msgstr "Não foi possível estabelecer uma ligação ao backend"
-
-#: talermerchantdemos/httpcommon/__init__.py:30
-#: talermerchantdemos/httpcommon/__init__.py:62
-msgid "Could not parse response from backend"
-msgstr "Não foi possível analisar a resposta do backend"
-
-#: talermerchantdemos/httpcommon/__init__.py:36
-#: talermerchantdemos/httpcommon/__init__.py:66
-msgid "Backend returned error status"
-msgstr "Backend apresentou um erro"
-
-#: talermerchantdemos/landing/landing.py:197
-#: talermerchantdemos/survey/survey.py:179
-msgid "HTTP method not allowed for this page"
-msgstr "Método HTTP não permitido para esta página"
-
-#: talermerchantdemos/survey/templates/base.html.j2:20
-msgid "GNU Taler Demo: Survey"
-msgstr "Demonstração do GNU Taler: Inquérito"
-
-#: talermerchantdemos/survey/templates/base.html.j2:32
-msgid "Survey"
-msgstr "Inquérito"
-
-#: talermerchantdemos/survey/templates/base.html.j2:34
-msgid "This page demonstrates how to tip visitors for completing small tasks."
-msgstr ""
-"Esta página demonstra como dar gorjetas a visitantes que completarem "
-"pequenas tarefas."
-
-#: talermerchantdemos/survey/templates/base.html.j2:35
-msgid ""
-"Tipping is a way for offer cash rewards that go directly into a user's "
-"wallet."
-msgstr ""
-"Dar gorjetas é uma forma de dar recompensas em dinheiro que vão "
-"diretamente para a carteira de um usuário."
-
-#: talermerchantdemos/survey/templates/index.html.j2:6
-msgid ""
-"Please participate in our survey about payment systems and receive a tip "
-"in return."
-msgstr ""
-"Por favor participe no nosso inquérito sobre sistemas de pagamento e, em "
-"troca, receba uma gorjeta."
-
-#: talermerchantdemos/survey/templates/index.html.j2:12
-msgid "Which payment system do you prefer?"
-msgstr "Que sistema de pagamento prefere?"
-
-#: talermerchantdemos/survey/templates/index.html.j2:23
-msgid "Submit Survey"
-msgstr "Submeter Inquérito"
-
-#: talermerchantdemos/templates/landing-base.html.j2:20
-msgid "GNU Taler Demo: Introduction"
-msgstr "Demonstração do GNU Taler: Introdução"
-
-#: talermerchantdemos/templates/landing-base.html.j2:34
+#: talermerchantdemos/templates/landing-base.html.j2:7
 msgid "This is the GNU Taler demo."
 msgstr "Esta é a demonstração do GNU Taler."
 
-#: talermerchantdemos/templates/landing-base.html.j2:35
+#: talermerchantdemos/templates/landing-base.html.j2:8
 msgid "Here you can try out the GNU Taler payment system using a toy currency."
 msgstr "Aqui, pode testar o sistema de pagamento GNU Taler usando uma moeda 
falsa."
 
@@ -640,10 +571,11 @@ msgid "Step 4: Check money flow"
 msgstr "Passo 4: Consultar o fluxo de dinheiro"
 
 #: talermerchantdemos/templates/landing-index.html.j2:59
+#, fuzzy
 msgid ""
 "You can see the wire transfers from the escrow account of the exchange to"
-" the merchants on the <a href=\"{bank}/public-accounts\">public accounts "
-"page</a> of the bank."
+" the merchants on the <a href=\"{bank}\">public accounts page</a> of the "
+"bank."
 msgstr ""
 "Pode ver as transferências bancárias da conta de depósito da troca aos "
 "comerciantes na <a href=\"{bank}/public-accounts\">página de contas "
@@ -685,6 +617,40 @@ msgstr "Valorizamos feedback acerca do Talor e desta 
demonstração."
 msgid "Let us know what you think by <a href=\"{link}\">contacting us</a>."
 msgstr "<a href=\"{link}\">Contacte-nos</a> e diga-nos aquilo que pensa."
 
+#: talermerchantdemos/templates/survey-base.html.j2:6
+msgid "Survey"
+msgstr "Inquérito"
+
+#: talermerchantdemos/templates/survey-base.html.j2:8
+msgid "This page demonstrates how to tip visitors for completing small tasks."
+msgstr ""
+"Esta página demonstra como dar gorjetas a visitantes que completarem "
+"pequenas tarefas."
+
+#: talermerchantdemos/templates/survey-base.html.j2:9
+msgid ""
+"Tipping is a way for offer cash rewards that go directly into a user's "
+"wallet."
+msgstr ""
+"Dar gorjetas é uma forma de dar recompensas em dinheiro que vão "
+"diretamente para a carteira de um usuário."
+
+#: talermerchantdemos/templates/survey-index.html.j2:6
+msgid ""
+"Please participate in our survey about payment systems and receive a tip "
+"in return."
+msgstr ""
+"Por favor participe no nosso inquérito sobre sistemas de pagamento e, em "
+"troca, receba uma gorjeta."
+
+#: talermerchantdemos/templates/survey-index.html.j2:12
+msgid "Which payment system do you prefer?"
+msgstr "Que sistema de pagamento prefere?"
+
+#: talermerchantdemos/templates/survey-index.html.j2:23
+msgid "Submit Survey"
+msgstr "Submeter Inquérito"
+
 #~ msgid "English [en]"
 #~ msgstr "Inglês [en]"
 
@@ -697,3 +663,18 @@ msgstr "<a href=\"{link}\">Contacte-nos</a> e diga-nos 
aquilo que pensa."
 #~ msgid "Swedish [sv]"
 #~ msgstr "Sueco [sv]"
 
+#~ msgid "GNU Taler Demo: Essay Shop"
+#~ msgstr "Demonstração do GNU Taler: Loja de Ensaios"
+
+#~ msgid "Back-office"
+#~ msgstr "Back-office"
+
+#~ msgid "GNU Taler Demo: Donations"
+#~ msgstr "Demonstração do GNU Taler: Doações"
+
+#~ msgid "GNU Taler Demo: Survey"
+#~ msgstr "Demonstração do GNU Taler: Inquérito"
+
+#~ msgid "GNU Taler Demo: Introduction"
+#~ msgstr "Demonstração do GNU Taler: Introdução"
+
diff --git a/translations/pt_BR/LC_MESSAGES/messages.mo 
b/translations/pt_BR/LC_MESSAGES/messages.mo
index b1b93f4..57cad52 100644
Binary files a/translations/pt_BR/LC_MESSAGES/messages.mo and 
b/translations/pt_BR/LC_MESSAGES/messages.mo differ
diff --git a/translations/pt_BR/LC_MESSAGES/messages.po 
b/translations/pt_BR/LC_MESSAGES/messages.po
index 7aad132..4122627 100644
--- a/translations/pt_BR/LC_MESSAGES/messages.po
+++ b/translations/pt_BR/LC_MESSAGES/messages.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PROJECT VERSION\n"
 "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2021-04-21 18:28+0200\n"
+"POT-Creation-Date: 2021-05-11 09:13+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: Automatically generated\n"
 "Language: pt_BR\n"
@@ -18,168 +18,178 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Generated-By: Babel 2.9.0\n"
 
-#: talermerchantdemos/blog/blog.py:114
-#: talermerchantdemos/donations/donations.py:157
-#: talermerchantdemos/landing/landing.py:117
-#: talermerchantdemos/survey/survey.py:110
+#: talermerchantdemos/blog/blog.py:126
+#: talermerchantdemos/donations/donations.py:139
+#: talermerchantdemos/landing/landing.py:93
+#: talermerchantdemos/survey/survey.py:100
 msgid "Internal error"
 msgstr ""
 
-#: talermerchantdemos/blog/blog.py:180
+#: talermerchantdemos/blog/blog.py:186
 msgid "Cannot refund unpaid article"
 msgstr ""
 
-#: talermerchantdemos/blog/blog.py:186
+#: talermerchantdemos/blog/blog.py:193
 msgid "Article is not anymore refundable"
 msgstr ""
 
-#: talermerchantdemos/blog/blog.py:217
+#: talermerchantdemos/blog/blog.py:229
 msgid "You did not pay for this article (nice try!)"
 msgstr ""
 
-#: talermerchantdemos/blog/blog.py:223
+#: talermerchantdemos/blog/blog.py:234
 msgid "Item not refundable (anymore)"
 msgstr ""
 
-#: talermerchantdemos/blog/blog.py:248
+#: talermerchantdemos/blog/blog.py:260
 msgid "Internal error: Files for article ({}) not found."
 msgstr ""
 
-#: talermerchantdemos/blog/blog.py:253
+#: talermerchantdemos/blog/blog.py:267
 msgid "Supplemental file ({}) for article ({}) not found."
 msgstr ""
 
-#: talermerchantdemos/blog/blog.py:326 talermerchantdemos/blog/blog.py:339
+#: talermerchantdemos/blog/blog.py:343 talermerchantdemos/blog/blog.py:357
 msgid "Direct access forbidden"
 msgstr ""
 
-#: talermerchantdemos/blog/blog.py:405
+#: talermerchantdemos/blog/blog.py:413
 msgid "Internal server error"
 msgstr ""
 
-#: talermerchantdemos/blog/blog.py:412
-#: talermerchantdemos/donations/donations.py:323
-#: talermerchantdemos/landing/landing.py:189
-#: talermerchantdemos/survey/survey.py:171
+#: talermerchantdemos/blog/blog.py:421
+#: talermerchantdemos/donations/donations.py:282
+#: talermerchantdemos/landing/landing.py:166
+#: talermerchantdemos/survey/survey.py:167
 msgid "Page not found"
 msgstr ""
 
-#: talermerchantdemos/blog/templates/article_frame.html.j2:9
+#: talermerchantdemos/donations/donations.py:125
+msgid "parameter '{}' required"
+msgstr ""
+
+#: talermerchantdemos/httpcommon/__init__.py:48
+#: talermerchantdemos/httpcommon/__init__.py:84
+msgid "Could not establish connection to backend"
+msgstr ""
+
+#: talermerchantdemos/httpcommon/__init__.py:54
+#: talermerchantdemos/httpcommon/__init__.py:89
+msgid "Could not parse response from backend"
+msgstr ""
+
+#: talermerchantdemos/httpcommon/__init__.py:59
+#: talermerchantdemos/httpcommon/__init__.py:92
+msgid "Backend returned error status"
+msgstr ""
+
+#: talermerchantdemos/landing/landing.py:174
+#: talermerchantdemos/survey/survey.py:175
+msgid "HTTP method not allowed for this page"
+msgstr ""
+
+#: talermerchantdemos/templates/blog-article-frame.html.j2:11
+#: talermerchantdemos/templates/blog-article-frame.html.j2:16
 msgid "Taler allows merchants to offer refunds to customers."
 msgstr ""
 
-#: talermerchantdemos/blog/templates/article_frame.html.j2:10
+#: talermerchantdemos/templates/blog-article-frame.html.j2:12
 msgid ""
 "You can <a href=\"{url}\">request a refund</a> within the first hour "
 "after buying this article."
 msgstr ""
 
-#: talermerchantdemos/blog/templates/base.html.j2:23
-msgid "GNU Taler Demo: Essay Shop"
+#: talermerchantdemos/templates/blog-article-frame.html.j2:17
+msgid "This article can't be refunded anymore."
 msgstr ""
 
-#: talermerchantdemos/blog/templates/base.html.j2:34
-#: talermerchantdemos/donations/templates/base.html.j2:31
-#: talermerchantdemos/survey/templates/base.html.j2:31
-msgid "Taler Demo"
-msgstr ""
-
-#: talermerchantdemos/blog/templates/base.html.j2:35
+#: talermerchantdemos/templates/blog-base.html.j2:9
 msgid "Essay shop"
 msgstr ""
 
-#: talermerchantdemos/blog/templates/base.html.j2:37
+#: talermerchantdemos/templates/blog-base.html.j2:11
 msgid "On this page you can buy articles using an imaginary currency."
 msgstr ""
 
-#: talermerchantdemos/blog/templates/base.html.j2:38
+#: talermerchantdemos/templates/blog-base.html.j2:12
 msgid ""
 "The articles are chapters from Richard Stallman's book &quot;Free "
 "Software, Free Society&quot;."
 msgstr ""
 
-#: talermerchantdemos/blog/templates/base.html.j2:39
+#: talermerchantdemos/templates/blog-base.html.j2:13
 msgid ""
 "The book is <a href=\"{shop}\">published by the FSF</a> and available "
 "gratis at <a href=\"{gnu}\">gnu.org</a>."
 msgstr ""
 
-#: talermerchantdemos/blog/templates/confirm_refund.html.j2:3
+#: talermerchantdemos/templates/blog-confirm-refund.html.j2:3
 msgid "Confirm refund request for article"
 msgstr ""
 
-#: talermerchantdemos/blog/templates/confirm_refund.html.j2:7
+#: talermerchantdemos/templates/blog-confirm-refund.html.j2:7
 msgid "Do you want to get a refund for the article <em>{name}</em>?"
 msgstr ""
 
-#: talermerchantdemos/blog/templates/confirm_refund.html.j2:8
+#: talermerchantdemos/templates/blog-confirm-refund.html.j2:8
 msgid ""
 "In this demonstration, refunds will be automatically approved by the "
 "merchant."
 msgstr ""
 
-#: talermerchantdemos/blog/templates/confirm_refund.html.j2:9
+#: talermerchantdemos/templates/blog-confirm-refund.html.j2:9
 msgid ""
 "After you have obtained a refund, you will not be able to read the "
 "article anymore."
 msgstr ""
 
-#: talermerchantdemos/blog/templates/confirm_refund.html.j2:15
+#: talermerchantdemos/templates/blog-confirm-refund.html.j2:15
 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 ""
 
-#: talermerchantdemos/blog/templates/confirm_refund.html.j2:21
+#: talermerchantdemos/templates/blog-confirm-refund.html.j2:21
 msgid "Request refund"
 msgstr ""
 
-#: talermerchantdemos/blog/templates/error.html.j2:3
-#: talermerchantdemos/donations/templates/error.html.j2:3
-#: talermerchantdemos/survey/templates/error.html.j2:3
+#: talermerchantdemos/templates/blog-error.html.j2:3
+#: talermerchantdemos/templates/donations-error.html.j2:3
 #: talermerchantdemos/templates/landing-error.html.j2:3
+#: talermerchantdemos/templates/survey-error.html.j2:3
 msgid "Error encountered"
 msgstr ""
 
-#: talermerchantdemos/blog/templates/error.html.j2:9
-#: talermerchantdemos/donations/templates/error.html.j2:9
-#: talermerchantdemos/survey/templates/error.html.j2:9
+#: talermerchantdemos/templates/blog-error.html.j2:9
+#: talermerchantdemos/templates/donations-error.html.j2:9
+#: talermerchantdemos/templates/survey-error.html.j2:9
 msgid "The backend returned status code {code}."
 msgstr ""
 
-#: talermerchantdemos/blog/templates/error.html.j2:14
-#: talermerchantdemos/donations/templates/error.html.j2:14
-#: talermerchantdemos/survey/templates/error.html.j2:14
+#: talermerchantdemos/templates/blog-error.html.j2:14
+#: talermerchantdemos/templates/donations-error.html.j2:14
+#: talermerchantdemos/templates/survey-error.html.j2:14
 msgid "Backend response:"
 msgstr ""
 
-#: talermerchantdemos/blog/templates/error.html.j2:19
-#: talermerchantdemos/donations/templates/error.html.j2:19
-#: talermerchantdemos/survey/templates/error.html.j2:19
+#: talermerchantdemos/templates/blog-error.html.j2:19
+#: talermerchantdemos/templates/donations-error.html.j2:19
 #: talermerchantdemos/templates/landing-error.html.j2:8
+#: talermerchantdemos/templates/survey-error.html.j2:19
 msgid "Stack trace:"
 msgstr ""
 
-#: talermerchantdemos/blog/templates/footer.html.j2:5
-#: talermerchantdemos/donations/templates/footer.html.j2:5
-#: talermerchantdemos/survey/templates/footer.html.j2:5
-#: talermerchantdemos/templates/footer.html.j2:5
-msgid ""
-"You can learn more about GNU Taler on our main <a "
-"href=\"{site}\">website</a>."
-msgstr ""
-
-#: talermerchantdemos/blog/templates/index.html.j2:3
+#: talermerchantdemos/templates/blog-index.html.j2:3
 msgid "Essay Shop: Free Software, Free Society"
 msgstr ""
 
-#: talermerchantdemos/blog/templates/index.html.j2:5
+#: talermerchantdemos/templates/blog-index.html.j2:5
 msgid ""
 "This is the latest edition of <cite>Free Software, Free Society: Selected"
 " Essays of Richard M. Stallman.</cite>"
 msgstr ""
 
-#: talermerchantdemos/blog/templates/index.html.j2:13
+#: talermerchantdemos/templates/blog-index.html.j2:13
 msgid ""
 "Verbatim copying and distribution of this entire book are permitted "
 "worldwide, without royalty, in any medium, provided this notice is "
@@ -189,187 +199,167 @@ msgid ""
 "copyright notice and this permission notice are preserved on all copies."
 msgstr ""
 
-#: talermerchantdemos/blog/templates/index.html.j2:18
+#: talermerchantdemos/templates/blog-index.html.j2:18
 msgid "Chapters"
 msgstr ""
 
-#: talermerchantdemos/blog/templates/index.html.j2:21
+#: talermerchantdemos/templates/blog-index.html.j2:20
 msgid "Click on an individual chapter to to purchase it with GNU Taler."
 msgstr ""
 
-#: talermerchantdemos/blog/templates/index.html.j2:22
+#: talermerchantdemos/templates/blog-index.html.j2:21
 msgid ""
 "You can get free, virtual money to buy articles on this page at the <a "
-"href=\"{}\")\">bank</a>"
+"href=\"{}\")\">bank</a>."
 msgstr ""
 
-#: talermerchantdemos/blog/templates/index.html.j2:30
+#: talermerchantdemos/templates/blog-index.html.j2:28
 msgid "Pay to read more..."
 msgstr ""
 
-#: talermerchantdemos/blog/templates/index.html.j2:33
+#: talermerchantdemos/templates/blog-index.html.j2:31
 msgid "No articles available in this language."
 msgstr ""
 
-#: talermerchantdemos/blog/templates/menu.html.j2:6
-#: talermerchantdemos/donations/templates/menu.html.j2:6
-#: talermerchantdemos/survey/templates/menu.html.j2:6
-#: talermerchantdemos/templates/landing-base.html.j2:32
-#: talermerchantdemos/templates/menu.html.j2:6
+#: talermerchantdemos/templates/common-base.html.j2:20
+msgid "GNU Taler Demo"
+msgstr ""
+
+#: talermerchantdemos/templates/common-base.html.j2:44
+#: talermerchantdemos/templates/landing-base.html.j2:5
 msgid "Introduction"
 msgstr ""
 
-#: talermerchantdemos/blog/templates/menu.html.j2:9
-#: talermerchantdemos/donations/templates/menu.html.j2:9
-#: talermerchantdemos/survey/templates/menu.html.j2:9
-#: talermerchantdemos/templates/menu.html.j2:9
+#: talermerchantdemos/templates/common-base.html.j2:47
 msgid "Bank"
 msgstr ""
 
-#: talermerchantdemos/blog/templates/menu.html.j2:12
-#: talermerchantdemos/donations/templates/menu.html.j2:12
-#: talermerchantdemos/survey/templates/menu.html.j2:12
-#: talermerchantdemos/templates/menu.html.j2:12
+#: talermerchantdemos/templates/common-base.html.j2:50
 msgid "Essay Shop"
 msgstr ""
 
-#: talermerchantdemos/blog/templates/menu.html.j2:15
-#: talermerchantdemos/donations/templates/base.html.j2:32
-#: talermerchantdemos/donations/templates/menu.html.j2:15
-#: talermerchantdemos/survey/templates/menu.html.j2:15
-#: talermerchantdemos/templates/menu.html.j2:15
+#: talermerchantdemos/templates/common-base.html.j2:53
+#: talermerchantdemos/templates/donations-base.html.j2:6
 msgid "Donations"
 msgstr ""
 
-#: talermerchantdemos/blog/templates/menu.html.j2:18
-#: talermerchantdemos/donations/templates/menu.html.j2:18
-#: talermerchantdemos/survey/templates/menu.html.j2:18
-#: talermerchantdemos/templates/menu.html.j2:18
+#: talermerchantdemos/templates/common-base.html.j2:56
 msgid "Tipping/Survey"
 msgstr ""
 
-#: talermerchantdemos/blog/templates/menu.html.j2:21
-#: talermerchantdemos/donations/templates/menu.html.j2:21
-#: talermerchantdemos/survey/templates/menu.html.j2:21
-#: talermerchantdemos/templates/menu.html.j2:21
-msgid "Back-office"
-msgstr ""
-
-#: talermerchantdemos/donations/donations.py:143
-msgid "parameter '{}' required"
-msgstr ""
-
-#: talermerchantdemos/donations/templates/base.html.j2:20
-msgid "GNU Taler Demo: Donations"
+#: talermerchantdemos/templates/common-base.html.j2:85
+msgid ""
+"You can learn more about GNU Taler on our main <a "
+"href=\"{site}\">website</a>."
 msgstr ""
 
-#: talermerchantdemos/donations/templates/base.html.j2:34
+#: talermerchantdemos/templates/donations-base.html.j2:8
 msgid "This is the donation page."
 msgstr ""
 
-#: talermerchantdemos/donations/templates/base.html.j2:35
+#: talermerchantdemos/templates/donations-base.html.j2:9
 msgid ""
 "Using this page you can make donations in {currency} to Free Software "
 "projects."
 msgstr ""
 
-#: talermerchantdemos/donations/templates/checkout.html.j2:5
+#: talermerchantdemos/templates/donations-checkout.html.j2:5
 msgid "Select your payment method"
 msgstr ""
 
-#: talermerchantdemos/donations/templates/checkout.html.j2:9
+#: talermerchantdemos/templates/donations-checkout.html.j2:9
 msgid "This is an example for a \"checkout\" page of a Web shop."
 msgstr ""
 
-#: talermerchantdemos/donations/templates/checkout.html.j2:10
+#: talermerchantdemos/templates/donations-checkout.html.j2:10
 msgid ""
 "On the previous page, you have created the shopping cart and decided "
 "which product to buy (i.e. which project to donate KUDOS to)."
 msgstr ""
 
-#: talermerchantdemos/donations/templates/checkout.html.j2:11
+#: talermerchantdemos/templates/donations-checkout.html.j2:11
 msgid ""
 "As Taler is not yet universally used, we expect merchants will offer "
 "various payment options."
 msgstr ""
 
-#: talermerchantdemos/donations/templates/checkout.html.j2:12
+#: talermerchantdemos/templates/donations-checkout.html.j2:12
 msgid "To continue with the demo, select the &quot;Taler&quot; payment option."
 msgstr ""
 
-#: talermerchantdemos/donations/templates/checkout.html.j2:17
+#: talermerchantdemos/templates/donations-checkout.html.j2:17
 msgid ""
 "Note that you must select Taler here for the demo to continue, as the "
 "other payment options are just placeholders and not really working in the"
 " demonstration."
 msgstr ""
 
-#: talermerchantdemos/donations/templates/checkout.html.j2:18
+#: talermerchantdemos/templates/donations-checkout.html.j2:18
 msgid ""
 "It would be possible to ask the user to make this choice already on the "
 "previous page (with the shopping cart); we just separated the two steps "
 "to keep each step as simple as possible."
 msgstr ""
 
-#: talermerchantdemos/donations/templates/checkout.html.j2:44
+#: talermerchantdemos/templates/donations-checkout.html.j2:44
 msgid "Confirm selection"
 msgstr ""
 
-#: talermerchantdemos/donations/templates/fulfillment.html.j2:4
+#: talermerchantdemos/templates/donations-fulfillment.html.j2:4
 msgid "Donation Receipt"
 msgstr ""
 
-#: talermerchantdemos/donations/templates/fulfillment.html.j2:7
+#: talermerchantdemos/templates/donations-fulfillment.html.j2:7
 msgid ""
 "Thank you, <strong>{donor}</strong>, for donating "
 "<strong>{amount}</strong> to <strong>{receiver}</strong>."
 msgstr ""
 
-#: talermerchantdemos/donations/templates/fulfillment.html.j2:12
+#: talermerchantdemos/templates/donations-fulfillment.html.j2:12
 msgid ""
 "Please keep the order identifier <strong>{id}</strong> as a receipt for "
 "your donation."
 msgstr ""
 
-#: talermerchantdemos/donations/templates/fulfillment.html.j2:13
+#: talermerchantdemos/templates/donations-fulfillment.html.j2:13
 msgid ""
 "You can show other people that you donated by sharing <a "
 "href=\"{link}\">this link</a> with them."
 msgstr ""
 
-#: talermerchantdemos/donations/templates/fulfillment.html.j2:19
+#: talermerchantdemos/templates/donations-fulfillment.html.j2:19
 msgid "You can always make <a href=\"{link}\">another donation</a>."
 msgstr ""
 
-#: talermerchantdemos/donations/templates/index.html.j2:4
+#: talermerchantdemos/templates/donations-index.html.j2:4
 msgid "Donate to Free Software projects"
 msgstr ""
 
-#: talermerchantdemos/donations/templates/index.html.j2:8
+#: talermerchantdemos/templates/donations-index.html.j2:8
 msgid ""
 "This donations website shows the user experience for donations with GNU "
 "Taler."
 msgstr ""
 
-#: talermerchantdemos/donations/templates/index.html.j2:9
+#: talermerchantdemos/templates/donations-index.html.j2:9
 msgid "You can make donations in an toy currency ({currency})"
 msgstr ""
 
-#: talermerchantdemos/donations/templates/index.html.j2:16
+#: talermerchantdemos/templates/donations-index.html.j2:16
 msgid ""
 "Please select a project, the amount (*) of {currency} you wish to donate,"
 " and enter the donor's name that will appear on your receipt:"
 msgstr ""
 
-#: talermerchantdemos/donations/templates/index.html.j2:33
+#: talermerchantdemos/templates/donations-index.html.j2:33
 msgid "Anonymous Donor"
 msgstr ""
 
-#: talermerchantdemos/donations/templates/index.html.j2:34
+#: talermerchantdemos/templates/donations-index.html.j2:34
 msgid "Donate!"
 msgstr ""
 
-#: talermerchantdemos/donations/templates/index.html.j2:39
+#: talermerchantdemos/templates/donations-index.html.j2:39
 msgid ""
 "(*) To make the demo a bit more interesting, the 5 {currency} option is "
 "deliberately implemented with a fault: the merchant will try to make you "
@@ -379,79 +369,23 @@ msgid ""
 "from committing to erroneous payments."
 msgstr ""
 
-#: talermerchantdemos/donations/templates/provider-not-supported.html.j2:4
+#: talermerchantdemos/templates/donations-provider-not-supported.html.j2:4
 msgid "Payment Provider Not Supported"
 msgstr ""
 
-#: talermerchantdemos/donations/templates/provider-not-supported.html.j2:7
+#: talermerchantdemos/templates/donations-provider-not-supported.html.j2:7
 msgid "Unfortunately the selected payment provider is not supported in this 
demo."
 msgstr ""
 
-#: talermerchantdemos/donations/templates/provider-not-supported.html.j2:8
+#: talermerchantdemos/templates/donations-provider-not-supported.html.j2:8
 msgid "Please go back and select &quot;Taler&quot;."
 msgstr ""
 
-#: talermerchantdemos/httpcommon/__init__.py:24
-#: talermerchantdemos/httpcommon/__init__.py:58
-msgid "Could not establish connection to backend"
-msgstr ""
-
-#: talermerchantdemos/httpcommon/__init__.py:30
-#: talermerchantdemos/httpcommon/__init__.py:62
-msgid "Could not parse response from backend"
-msgstr ""
-
-#: talermerchantdemos/httpcommon/__init__.py:36
-#: talermerchantdemos/httpcommon/__init__.py:66
-msgid "Backend returned error status"
-msgstr ""
-
-#: talermerchantdemos/landing/landing.py:197
-#: talermerchantdemos/survey/survey.py:179
-msgid "HTTP method not allowed for this page"
-msgstr ""
-
-#: talermerchantdemos/survey/templates/base.html.j2:20
-msgid "GNU Taler Demo: Survey"
-msgstr ""
-
-#: talermerchantdemos/survey/templates/base.html.j2:32
-msgid "Survey"
-msgstr ""
-
-#: talermerchantdemos/survey/templates/base.html.j2:34
-msgid "This page demonstrates how to tip visitors for completing small tasks."
-msgstr ""
-
-#: talermerchantdemos/survey/templates/base.html.j2:35
-msgid ""
-"Tipping is a way for offer cash rewards that go directly into a user's "
-"wallet."
-msgstr ""
-
-#: talermerchantdemos/survey/templates/index.html.j2:6
-msgid ""
-"Please participate in our survey about payment systems and receive a tip "
-"in return."
-msgstr ""
-
-#: talermerchantdemos/survey/templates/index.html.j2:12
-msgid "Which payment system do you prefer?"
-msgstr ""
-
-#: talermerchantdemos/survey/templates/index.html.j2:23
-msgid "Submit Survey"
-msgstr ""
-
-#: talermerchantdemos/templates/landing-base.html.j2:20
-msgid "GNU Taler Demo: Introduction"
-msgstr ""
-
-#: talermerchantdemos/templates/landing-base.html.j2:34
+#: talermerchantdemos/templates/landing-base.html.j2:7
 msgid "This is the GNU Taler demo."
 msgstr ""
 
-#: talermerchantdemos/templates/landing-base.html.j2:35
+#: talermerchantdemos/templates/landing-base.html.j2:8
 msgid "Here you can try out the GNU Taler payment system using a toy currency."
 msgstr ""
 
@@ -555,8 +489,8 @@ msgstr ""
 #: talermerchantdemos/templates/landing-index.html.j2:59
 msgid ""
 "You can see the wire transfers from the escrow account of the exchange to"
-" the merchants on the <a href=\"{bank}/public-accounts\">public accounts "
-"page</a> of the bank."
+" the merchants on the <a href=\"{bank}\">public accounts page</a> of the "
+"bank."
 msgstr ""
 
 #: talermerchantdemos/templates/landing-index.html.j2:60
@@ -591,6 +525,34 @@ msgstr ""
 msgid "Let us know what you think by <a href=\"{link}\">contacting us</a>."
 msgstr ""
 
+#: talermerchantdemos/templates/survey-base.html.j2:6
+msgid "Survey"
+msgstr ""
+
+#: talermerchantdemos/templates/survey-base.html.j2:8
+msgid "This page demonstrates how to tip visitors for completing small tasks."
+msgstr ""
+
+#: talermerchantdemos/templates/survey-base.html.j2:9
+msgid ""
+"Tipping is a way for offer cash rewards that go directly into a user's "
+"wallet."
+msgstr ""
+
+#: talermerchantdemos/templates/survey-index.html.j2:6
+msgid ""
+"Please participate in our survey about payment systems and receive a tip "
+"in return."
+msgstr ""
+
+#: talermerchantdemos/templates/survey-index.html.j2:12
+msgid "Which payment system do you prefer?"
+msgstr ""
+
+#: talermerchantdemos/templates/survey-index.html.j2:23
+msgid "Submit Survey"
+msgstr ""
+
 #~ msgid "English [en]"
 #~ msgstr ""
 
@@ -603,3 +565,35 @@ msgstr ""
 #~ msgid "Swedish [sv]"
 #~ msgstr ""
 
+#~ msgid "GNU Taler Demo: Essay Shop"
+#~ msgstr ""
+
+#~ msgid "Taler Demo"
+#~ msgstr ""
+
+#~ msgid ""
+#~ "You can get free, virtual money to"
+#~ " buy articles on this page at "
+#~ "the <a href=\"{}\")\">bank</a>"
+#~ msgstr ""
+
+#~ msgid "Back-office"
+#~ msgstr ""
+
+#~ msgid "GNU Taler Demo: Donations"
+#~ msgstr ""
+
+#~ msgid "GNU Taler Demo: Survey"
+#~ msgstr ""
+
+#~ msgid "GNU Taler Demo: Introduction"
+#~ msgstr ""
+
+#~ msgid ""
+#~ "You can see the wire transfers "
+#~ "from the escrow account of the "
+#~ "exchange to the merchants on the "
+#~ "<a href=\"{bank}/public-accounts\">public accounts"
+#~ " page</a> of the bank."
+#~ msgstr ""
+
diff --git a/translations/ru/LC_MESSAGES/messages.po 
b/translations/ru/LC_MESSAGES/messages.po
index 747095a..43d8e60 100644
--- a/translations/ru/LC_MESSAGES/messages.po
+++ b/translations/ru/LC_MESSAGES/messages.po
@@ -7,97 +7,116 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PROJECT VERSION\n"
 "Report-Msgid-Bugs-To: eintritt@hotmail.com\n"
-"POT-Creation-Date: 2021-03-12 18:42+0100\n"
+"POT-Creation-Date: 2021-05-11 09:13+0200\n"
 "PO-Revision-Date: 2021-04-27 04:41+0000\n"
 "Last-Translator: Yulia Greben <yulia.greben@gmail.com>\n"
-"Language-Team: Russian <http://weblate.taler.net/projects/gnu-taler/";
-"demonstration-pages/ru/>\n"
 "Language: ru\n"
+"Language-Team: Russian <http://weblate.taler.net/projects/gnu-taler";
+"/demonstration-pages/ru/>\n"
+"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
+"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=utf-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
-"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
-"X-Generator: Weblate 4.4.2\n"
-"Generated-By: Babel 2.6.0\n"
-
-#: talermerchantdemos/blog/blog.py:114
-#: talermerchantdemos/donations/donations.py:157
-#: talermerchantdemos/landing/landing.py:117
-#: talermerchantdemos/survey/survey.py:110
+"Generated-By: Babel 2.9.0\n"
+
+#: talermerchantdemos/blog/blog.py:126
+#: talermerchantdemos/donations/donations.py:139
+#: talermerchantdemos/landing/landing.py:93
+#: talermerchantdemos/survey/survey.py:100
 msgid "Internal error"
 msgstr "Внутренняя ошибка"
 
-#: talermerchantdemos/blog/blog.py:180
+#: talermerchantdemos/blog/blog.py:186
 msgid "Cannot refund unpaid article"
 msgstr "Возврат средств за неоплаченный товар невозможен"
 
-#: talermerchantdemos/blog/blog.py:186
+#: talermerchantdemos/blog/blog.py:193
 msgid "Article is not anymore refundable"
 msgstr "Товар более не подлежит возврату"
 
-#: talermerchantdemos/blog/blog.py:217
+#: talermerchantdemos/blog/blog.py:229
 msgid "You did not pay for this article (nice try!)"
 msgstr "Вы не оплатили этот товар (Неплохая попытка!)"
 
-#: talermerchantdemos/blog/blog.py:223
+#: talermerchantdemos/blog/blog.py:234
 msgid "Item not refundable (anymore)"
 msgstr "Товар более не подлежит возврату"
 
-#: talermerchantdemos/blog/blog.py:248
+#: talermerchantdemos/blog/blog.py:260
 msgid "Internal error: Files for article ({}) not found."
 msgstr "Внутренняя ошибка. Файлы для товара ({}) не найдены."
 
-#: talermerchantdemos/blog/blog.py:253
+#: talermerchantdemos/blog/blog.py:267
 msgid "Supplemental file ({}) for article ({}) not found."
 msgstr "Вспомогательный файл для товара не найден."
 
-#: talermerchantdemos/blog/blog.py:326 talermerchantdemos/blog/blog.py:339
+#: talermerchantdemos/blog/blog.py:343 talermerchantdemos/blog/blog.py:357
 msgid "Direct access forbidden"
 msgstr "Прямой доступ запрещён"
 
-#: talermerchantdemos/blog/blog.py:405
+#: talermerchantdemos/blog/blog.py:413
 msgid "Internal server error"
 msgstr "Внутренняя ошибка сервера"
 
-#: talermerchantdemos/blog/blog.py:412
-#: talermerchantdemos/donations/donations.py:323
-#: talermerchantdemos/landing/landing.py:189
-#: talermerchantdemos/survey/survey.py:171
+#: talermerchantdemos/blog/blog.py:421
+#: talermerchantdemos/donations/donations.py:282
+#: talermerchantdemos/landing/landing.py:166
+#: talermerchantdemos/survey/survey.py:167
 msgid "Page not found"
 msgstr "Страница не найдена"
 
-#: talermerchantdemos/blog/templates/article_frame.html.j2:9
+#: talermerchantdemos/donations/donations.py:125
+msgid "parameter '{}' required"
+msgstr "обязательный '{}'параметр"
+
+#: talermerchantdemos/httpcommon/__init__.py:48
+#: talermerchantdemos/httpcommon/__init__.py:84
+msgid "Could not establish connection to backend"
+msgstr ""
+
+#: talermerchantdemos/httpcommon/__init__.py:54
+#: talermerchantdemos/httpcommon/__init__.py:89
+msgid "Could not parse response from backend"
+msgstr ""
+
+#: talermerchantdemos/httpcommon/__init__.py:59
+#: talermerchantdemos/httpcommon/__init__.py:92
+msgid "Backend returned error status"
+msgstr ""
+
+#: talermerchantdemos/landing/landing.py:174
+#: talermerchantdemos/survey/survey.py:175
+msgid "HTTP method not allowed for this page"
+msgstr ""
+
+#: talermerchantdemos/templates/blog-article-frame.html.j2:11
+#: talermerchantdemos/templates/blog-article-frame.html.j2:16
 msgid "Taler allows merchants to offer refunds to customers."
 msgstr "Taler устанавливает право для продавцов на возврат товара 
покупателями."
 
-#: talermerchantdemos/blog/templates/article_frame.html.j2:10
+#: talermerchantdemos/templates/blog-article-frame.html.j2:12
 msgid ""
 "You can <a href=\"{url}\">request a refund</a> within the first hour "
 "after buying this article."
 msgstr ""
-"Вы можете <a href=\"{url}\">запросить возврат средств за товар</a> в течение "
-"первого часа после его покупки."
+"Вы можете <a href=\"{url}\">запросить возврат средств за товар</a> в "
+"течение первого часа после его покупки."
 
-#: talermerchantdemos/blog/templates/base.html.j2:23
-msgid "GNU Taler Demo: Essay Shop"
-msgstr "Демоверсия GNU Taler. Демо-магазин."
-
-#: talermerchantdemos/blog/templates/base.html.j2:34
-#: talermerchantdemos/donations/templates/base.html.j2:31
-#: talermerchantdemos/survey/templates/base.html.j2:31
-msgid "Taler Demo"
-msgstr "Демоверсия Taler"
+#: talermerchantdemos/templates/blog-article-frame.html.j2:17
+#, fuzzy
+msgid "This article can't be refunded anymore."
+msgstr "Товар более не подлежит возврату"
 
-#: talermerchantdemos/blog/templates/base.html.j2:35
+#: talermerchantdemos/templates/blog-base.html.j2:9
 msgid "Essay shop"
 msgstr "Демо-магазин"
 
-#: talermerchantdemos/blog/templates/base.html.j2:37
+#: talermerchantdemos/templates/blog-base.html.j2:11
 msgid "On this page you can buy articles using an imaginary currency."
 msgstr "Здесь вы можете делать заказ и оплачивать его в вымышленной валюте."
 
-#: talermerchantdemos/blog/templates/base.html.j2:38
+#: talermerchantdemos/templates/blog-base.html.j2:12
 msgid ""
 "The articles are chapters from Richard Stallman's book &quot;Free "
 "Software, Free Society&quot;."
@@ -105,38 +124,38 @@ msgstr ""
 "Товаром являются главы из книги Ричарда Мэттью Столлмана «Free Software, "
 "Free Society»."
 
-#: talermerchantdemos/blog/templates/base.html.j2:39
+#: talermerchantdemos/templates/blog-base.html.j2:13
 msgid ""
 "The book is <a href=\"{shop}\">published by the FSF</a> and available "
 "gratis at <a href=\"{gnu}\">gnu.org</a>."
 msgstr ""
-"Книга <a href=\"{shop}\">опубликована ФСПО («Фонд свободного программного "
-"обеспечения»)</a>. Бесплатную версию книги можно найти на сайте <a href=\""
-"{gnu}\">www.gnu.org</a>."
+"Книга <a href=\"{shop}\">опубликована ФСПО («Фонд свободного программного"
+" обеспечения»)</a>. Бесплатную версию книги можно найти на сайте <a "
+"href=\"{gnu}\">www.gnu.org</a>."
 
-#: talermerchantdemos/blog/templates/confirm_refund.html.j2:3
+#: talermerchantdemos/templates/blog-confirm-refund.html.j2:3
 msgid "Confirm refund request for article"
 msgstr "Подтвердите запрос на возврат"
 
-#: talermerchantdemos/blog/templates/confirm_refund.html.j2:7
+#: talermerchantdemos/templates/blog-confirm-refund.html.j2:7
 msgid "Do you want to get a refund for the article <em>{name}</em>?"
 msgstr "Вы хотите получить возврат за товар <em>{name}</em>?"
 
-#: talermerchantdemos/blog/templates/confirm_refund.html.j2:8
+#: talermerchantdemos/templates/blog-confirm-refund.html.j2:8
 msgid ""
 "In this demonstration, refunds will be automatically approved by the "
 "merchant."
 msgstr "В этой презентации возврат будет одобрен продавцом автоматически."
 
-#: talermerchantdemos/blog/templates/confirm_refund.html.j2:9
+#: talermerchantdemos/templates/blog-confirm-refund.html.j2:9
 msgid ""
 "After you have obtained a refund, you will not be able to read the "
 "article anymore."
 msgstr ""
-"После получения средств за возврат товара, вы больше не сможете читать эту "
-"главу."
+"После получения средств за возврат товара, вы больше не сможете читать "
+"эту главу."
 
-#: talermerchantdemos/blog/templates/confirm_refund.html.j2:15
+#: talermerchantdemos/templates/blog-confirm-refund.html.j2:15
 msgid ""
 "You will only be able to receive the refund on the same wallet that you "
 "have used to pay for this article originally."
@@ -144,51 +163,41 @@ msgstr ""
 "Вы сможете получить возврат на тот же кошелёк, посредством которого "
 "оплачивали товар изначально."
 
-#: talermerchantdemos/blog/templates/confirm_refund.html.j2:21
+#: talermerchantdemos/templates/blog-confirm-refund.html.j2:21
 msgid "Request refund"
 msgstr "Запросить возврат"
 
-#: talermerchantdemos/blog/templates/error.html.j2:3
-#: talermerchantdemos/donations/templates/error.html.j2:3
-#: talermerchantdemos/survey/templates/error.html.j2:3
+#: talermerchantdemos/templates/blog-error.html.j2:3
+#: talermerchantdemos/templates/donations-error.html.j2:3
 #: talermerchantdemos/templates/landing-error.html.j2:3
+#: talermerchantdemos/templates/survey-error.html.j2:3
 msgid "Error encountered"
 msgstr "Обнаружена ошибка"
 
-#: talermerchantdemos/blog/templates/error.html.j2:9
-#: talermerchantdemos/donations/templates/error.html.j2:9
-#: talermerchantdemos/survey/templates/error.html.j2:9
+#: talermerchantdemos/templates/blog-error.html.j2:9
+#: talermerchantdemos/templates/donations-error.html.j2:9
+#: talermerchantdemos/templates/survey-error.html.j2:9
 msgid "The backend returned status code {code}."
 msgstr "Бэкэнд вернул код состояния {code}."
 
-#: talermerchantdemos/blog/templates/error.html.j2:14
-#: talermerchantdemos/donations/templates/error.html.j2:14
-#: talermerchantdemos/survey/templates/error.html.j2:14
+#: talermerchantdemos/templates/blog-error.html.j2:14
+#: talermerchantdemos/templates/donations-error.html.j2:14
+#: talermerchantdemos/templates/survey-error.html.j2:14
 msgid "Backend response:"
 msgstr "Бэкэнд ответ"
 
-#: talermerchantdemos/blog/templates/error.html.j2:19
-#: talermerchantdemos/donations/templates/error.html.j2:19
-#: talermerchantdemos/survey/templates/error.html.j2:19
+#: talermerchantdemos/templates/blog-error.html.j2:19
+#: talermerchantdemos/templates/donations-error.html.j2:19
 #: talermerchantdemos/templates/landing-error.html.j2:8
+#: talermerchantdemos/templates/survey-error.html.j2:19
 msgid "Stack trace:"
 msgstr "Стек-трейс:"
 
-#: talermerchantdemos/blog/templates/footer.html.j2:5
-#: talermerchantdemos/donations/templates/footer.html.j2:5
-#: talermerchantdemos/survey/templates/footer.html.j2:5
-#: talermerchantdemos/templates/footer.html.j2:5
-msgid ""
-"You can learn more about GNU Taler on our main <a "
-"href=\"{site}\">website</a>."
-msgstr ""
-"Подробнее о GNU Taler можно прочитать на нашем <a href=\"{site}\">сайте</a>."
-
-#: talermerchantdemos/blog/templates/index.html.j2:3
+#: talermerchantdemos/templates/blog-index.html.j2:3
 msgid "Essay Shop: Free Software, Free Society"
 msgstr "Демо-магазин: свободное ПО, свободное общество."
 
-#: talermerchantdemos/blog/templates/index.html.j2:5
+#: talermerchantdemos/templates/blog-index.html.j2:5
 msgid ""
 "This is the latest edition of <cite>Free Software, Free Society: Selected"
 " Essays of Richard M. Stallman.</cite>"
@@ -196,7 +205,7 @@ msgstr ""
 "Это новейшая версия сборника эссе Ричарда Мэттью Столлмана <cite>«Free "
 "Software, Free Society: Selected Essays of Richard M. Stallman».</cite>"
 
-#: talermerchantdemos/blog/templates/index.html.j2:13
+#: talermerchantdemos/templates/blog-index.html.j2:13
 msgid ""
 "Verbatim copying and distribution of this entire book are permitted "
 "worldwide, without royalty, in any medium, provided this notice is "
@@ -205,121 +214,108 @@ msgid ""
 "translation has been approved by the Free Software Foundation and the "
 "copyright notice and this permission notice are preserved on all copies."
 msgstr ""
-"Копирование и распространение дословной копии данной книги в полном объёме "
-"разрешено во всех странах мира без выплаты роялти и на любом носителе при "
-"условии, что данное уведомление сохранено. Копирование и распространение "
-"переведённой копии книги с языка оригинала, английского, на другие языки "
-"разрешено при условии, что перевод был одобрен ФСПО, и данное уведомление о "
-"разрешении и авторском праве сохранено на всех копиях сборника."
+"Копирование и распространение дословной копии данной книги в полном "
+"объёме разрешено во всех странах мира без выплаты роялти и на любом "
+"носителе при условии, что данное уведомление сохранено. Копирование и "
+"распространение переведённой копии книги с языка оригинала, английского, "
+"на другие языки разрешено при условии, что перевод был одобрен ФСПО, и "
+"данное уведомление о разрешении и авторском праве сохранено на всех "
+"копиях сборника."
 
-#: talermerchantdemos/blog/templates/index.html.j2:18
+#: talermerchantdemos/templates/blog-index.html.j2:18
 msgid "Chapters"
 msgstr "Главы"
 
-#: talermerchantdemos/blog/templates/index.html.j2:21
+#: talermerchantdemos/templates/blog-index.html.j2:20
 msgid "Click on an individual chapter to to purchase it with GNU Taler."
 msgstr ""
-"Для того, чтобы приобрести интересующую вас главу через GNU Taler, нажмите "
-"на неё кнопкой «мыши»."
+"Для того, чтобы приобрести интересующую вас главу через GNU Taler, "
+"нажмите на неё кнопкой «мыши»."
 
-#: talermerchantdemos/blog/templates/index.html.j2:22
+#: talermerchantdemos/templates/blog-index.html.j2:21
+#, fuzzy
 msgid ""
 "You can get free, virtual money to buy articles on this page at the <a "
-"href=\"{}\")\">bank</a>"
+"href=\"{}\")\">bank</a>."
 msgstr ""
 "Для того, чтобы получить виртуальные деньги для оплаты товара бесплатно, "
 "перейдите на страницу <a href=\"{}\")\">«Банк»bank</a>"
 
-#: talermerchantdemos/blog/templates/index.html.j2:30
+#: talermerchantdemos/templates/blog-index.html.j2:28
 msgid "Pay to read more..."
 msgstr "Оплатить и читать далее"
 
-#: talermerchantdemos/blog/templates/index.html.j2:33
+#: talermerchantdemos/templates/blog-index.html.j2:31
 msgid "No articles available in this language."
 msgstr "Глав на этом языке не найдено."
 
-#: talermerchantdemos/blog/templates/menu.html.j2:6
-#: talermerchantdemos/donations/templates/menu.html.j2:6
-#: talermerchantdemos/survey/templates/menu.html.j2:6
-#: talermerchantdemos/templates/landing-base.html.j2:32
-#: talermerchantdemos/templates/menu.html.j2:6
+#: talermerchantdemos/templates/common-base.html.j2:20
+#, fuzzy
+msgid "GNU Taler Demo"
+msgstr "Демоверсия Taler"
+
+#: talermerchantdemos/templates/common-base.html.j2:44
+#: talermerchantdemos/templates/landing-base.html.j2:5
 msgid "Introduction"
 msgstr "Введение"
 
-#: talermerchantdemos/blog/templates/menu.html.j2:9
-#: talermerchantdemos/donations/templates/menu.html.j2:9
-#: talermerchantdemos/survey/templates/menu.html.j2:9
-#: talermerchantdemos/templates/menu.html.j2:9
+#: talermerchantdemos/templates/common-base.html.j2:47
 msgid "Bank"
 msgstr "Банк"
 
-#: talermerchantdemos/blog/templates/menu.html.j2:12
-#: talermerchantdemos/donations/templates/menu.html.j2:12
-#: talermerchantdemos/survey/templates/menu.html.j2:12
-#: talermerchantdemos/templates/menu.html.j2:12
+#: talermerchantdemos/templates/common-base.html.j2:50
 msgid "Essay Shop"
 msgstr "Демо-магазин"
 
-#: talermerchantdemos/blog/templates/menu.html.j2:15
-#: talermerchantdemos/donations/templates/base.html.j2:32
-#: talermerchantdemos/donations/templates/menu.html.j2:15
-#: talermerchantdemos/survey/templates/menu.html.j2:15
-#: talermerchantdemos/templates/menu.html.j2:15
+#: talermerchantdemos/templates/common-base.html.j2:53
+#: talermerchantdemos/templates/donations-base.html.j2:6
 msgid "Donations"
 msgstr "Сбор средств"
 
-#: talermerchantdemos/blog/templates/menu.html.j2:18
-#: talermerchantdemos/donations/templates/menu.html.j2:18
-#: talermerchantdemos/survey/templates/menu.html.j2:18
-#: talermerchantdemos/templates/menu.html.j2:18
+#: talermerchantdemos/templates/common-base.html.j2:56
 msgid "Tipping/Survey"
 msgstr "Платный опрос"
 
-#: talermerchantdemos/blog/templates/menu.html.j2:21
-#: talermerchantdemos/donations/templates/menu.html.j2:21
-#: talermerchantdemos/survey/templates/menu.html.j2:21
-#: talermerchantdemos/templates/menu.html.j2:21
-msgid "Back-office"
-msgstr "Бэк-офис"
-
-#: talermerchantdemos/donations/donations.py:143
-msgid "parameter '{}' required"
-msgstr "обязательный '{}'параметр"
-
-#: talermerchantdemos/donations/templates/base.html.j2:20
-msgid "GNU Taler Demo: Donations"
-msgstr "Демоверсия GNU Taler: приём добровольных средств"
+#: talermerchantdemos/templates/common-base.html.j2:85
+msgid ""
+"You can learn more about GNU Taler on our main <a "
+"href=\"{site}\">website</a>."
+msgstr ""
+"Подробнее о GNU Taler можно прочитать на нашем <a "
+"href=\"{site}\">сайте</a>."
 
-#: talermerchantdemos/donations/templates/base.html.j2:34
+#: talermerchantdemos/templates/donations-base.html.j2:8
 msgid "This is the donation page."
 msgstr "Страница для приёма добровольных средств."
 
-#: talermerchantdemos/donations/templates/base.html.j2:35
+#: talermerchantdemos/templates/donations-base.html.j2:9
 msgid ""
 "Using this page you can make donations in {currency} to Free Software "
 "projects."
 msgstr ""
-"Эта станица предназначена для приёма добровольных средств в {currency} на "
-"осуществления проектов с использованием свободного программного обеспечения."
+"Эта станица предназначена для приёма добровольных средств в {currency} на"
+" осуществления проектов с использованием свободного программного "
+"обеспечения."
 
-#: talermerchantdemos/donations/templates/checkout.html.j2:5
+#: talermerchantdemos/templates/donations-checkout.html.j2:5
 msgid "Select your payment method"
 msgstr "Выберите способ оплаты"
 
-#: talermerchantdemos/donations/templates/checkout.html.j2:9
+#: talermerchantdemos/templates/donations-checkout.html.j2:9
 msgid "This is an example for a \"checkout\" page of a Web shop."
 msgstr "Это пример страницы интернет-магазина «Оформить заказ»."
 
-#: talermerchantdemos/donations/templates/checkout.html.j2:10
+#: talermerchantdemos/templates/donations-checkout.html.j2:10
 msgid ""
 "On the previous page, you have created the shopping cart and decided "
 "which product to buy (i.e. which project to donate KUDOS to)."
 msgstr ""
-"Вы создали корзину для интернет-магазина на предыдущей странице и добавили в "
-"неё товар, который хотите купить, то есть проект, который вы хотите "
-"поддержать и внести добровольное финансовое вознаграждение в KUDOS."
+"Вы создали корзину для интернет-магазина на предыдущей странице и "
+"добавили в неё товар, который хотите купить, то есть проект, который вы "
+"хотите поддержать и внести добровольное финансовое вознаграждение в "
+"KUDOS."
 
-#: talermerchantdemos/donations/templates/checkout.html.j2:11
+#: talermerchantdemos/templates/donations-checkout.html.j2:11
 msgid ""
 "As Taler is not yet universally used, we expect merchants will offer "
 "various payment options."
@@ -327,13 +323,13 @@ msgstr ""
 "Так как Taler пока не используется повсеместно, мы ожидаем, что продавцы "
 "будут принимать платежи различными способами."
 
-#: talermerchantdemos/donations/templates/checkout.html.j2:12
+#: talermerchantdemos/templates/donations-checkout.html.j2:12
 msgid "To continue with the demo, select the &quot;Taler&quot; payment option."
 msgstr ""
-"Для того, чтобы продолжить работать с этой демоверсией, ниже выберите способ "
-"оплаты «Taler»."
+"Для того, чтобы продолжить работать с этой демоверсией, ниже выберите "
+"способ оплаты «Taler»."
 
-#: talermerchantdemos/donations/templates/checkout.html.j2:17
+#: talermerchantdemos/templates/donations-checkout.html.j2:17
 msgid ""
 "Note that you must select Taler here for the demo to continue, as the "
 "other payment options are just placeholders and not really working in the"
@@ -342,33 +338,33 @@ msgstr ""
 "Для продолжения работы демоверсии, выберите «Taler» в качестве способа "
 "оплаты, так как остальные способы оплаты не работают в этой презентации."
 
-#: talermerchantdemos/donations/templates/checkout.html.j2:18
+#: talermerchantdemos/templates/donations-checkout.html.j2:18
 msgid ""
 "It would be possible to ask the user to make this choice already on the "
 "previous page (with the shopping cart); we just separated the two steps "
 "to keep each step as simple as possible."
 msgstr ""
-"Пользователь может выбрать способ оплаты и на предыдущей странице во время "
-"добавления товара в корзину. Мы просто разделили этап оформления заказа на "
-"два более простых шага."
+"Пользователь может выбрать способ оплаты и на предыдущей странице во "
+"время добавления товара в корзину. Мы просто разделили этап оформления "
+"заказа на два более простых шага."
 
-#: talermerchantdemos/donations/templates/checkout.html.j2:44
+#: talermerchantdemos/templates/donations-checkout.html.j2:44
 msgid "Confirm selection"
 msgstr "Подтвердите выбор"
 
-#: talermerchantdemos/donations/templates/fulfillment.html.j2:4
+#: talermerchantdemos/templates/donations-fulfillment.html.j2:4
 msgid "Donation Receipt"
 msgstr "Подтверждение о внесении средств"
 
-#: talermerchantdemos/donations/templates/fulfillment.html.j2:7
+#: talermerchantdemos/templates/donations-fulfillment.html.j2:7
 msgid ""
 "Thank you, <strong>{donor}</strong>, for donating "
 "<strong>{amount}</strong> to <strong>{receiver}</strong>."
 msgstr ""
-"Спасибо, <strong>{donor}</strong>, за внесение средств <strong>{amount}</"
-"strong> на <strong>{receiver}</strong>."
+"Спасибо, <strong>{donor}</strong>, за внесение средств "
+"<strong>{amount}</strong> на <strong>{receiver}</strong>."
 
-#: talermerchantdemos/donations/templates/fulfillment.html.j2:12
+#: talermerchantdemos/templates/donations-fulfillment.html.j2:12
 msgid ""
 "Please keep the order identifier <strong>{id}</strong> as a receipt for "
 "your donation."
@@ -376,25 +372,25 @@ msgstr ""
 "Пожалуйста, сохраняйте номер вашего заказа <strong>{id}</strong> как "
 "подтверждение о внесении средств."
 
-#: talermerchantdemos/donations/templates/fulfillment.html.j2:13
+#: talermerchantdemos/templates/donations-fulfillment.html.j2:13
 msgid ""
 "You can show other people that you donated by sharing <a "
 "href=\"{link}\">this link</a> with them."
 msgstr ""
-"Поделитесь <a href=\"{link}\">ссылкой</a> и расскажите другим о том, что вы "
-"поддержали проект."
+"Поделитесь <a href=\"{link}\">ссылкой</a> и расскажите другим о том, что "
+"вы поддержали проект."
 
-#: talermerchantdemos/donations/templates/fulfillment.html.j2:19
+#: talermerchantdemos/templates/donations-fulfillment.html.j2:19
 msgid "You can always make <a href=\"{link}\">another donation</a>."
 msgstr "Вы всегда можете внести <a href=\"{link}\">ещё средства</a>."
 
-#: talermerchantdemos/donations/templates/index.html.j2:4
+#: talermerchantdemos/templates/donations-index.html.j2:4
 msgid "Donate to Free Software projects"
 msgstr ""
 "Сбор добровольных средств на осуществление проектов с использованием "
 "свободного программного обеспечения"
 
-#: talermerchantdemos/donations/templates/index.html.j2:8
+#: talermerchantdemos/templates/donations-index.html.j2:8
 msgid ""
 "This donations website shows the user experience for donations with GNU "
 "Taler."
@@ -402,29 +398,29 @@ msgstr ""
 "Здесь продемонстрировано, как пользоваться страницей по сбору средств с "
 "использованием GNU Taler."
 
-#: talermerchantdemos/donations/templates/index.html.j2:9
+#: talermerchantdemos/templates/donations-index.html.j2:9
 msgid "You can make donations in an toy currency ({currency})"
 msgstr "Вы можете внести средства в игровой валюте ({currency})"
 
-#: talermerchantdemos/donations/templates/index.html.j2:16
+#: talermerchantdemos/templates/donations-index.html.j2:16
 msgid ""
 "Please select a project, the amount (*) of {currency} you wish to donate,"
 " and enter the donor's name that will appear on your receipt:"
 msgstr ""
 "Пожалуйста, выберите проект, который вы хотите поддержать, сумму (*) "
 "добровольного взноса в {currency} , а также введите имя человека, "
-"осуществляющего взнос, которое будет отображено в подтверждении о внесении "
-"средств:"
+"осуществляющего взнос, которое будет отображено в подтверждении о "
+"внесении средств:"
 
-#: talermerchantdemos/donations/templates/index.html.j2:33
+#: talermerchantdemos/templates/donations-index.html.j2:33
 msgid "Anonymous Donor"
 msgstr "Анонимный спонсор"
 
-#: talermerchantdemos/donations/templates/index.html.j2:34
+#: talermerchantdemos/templates/donations-index.html.j2:34
 msgid "Donate!"
 msgstr "Внести средства!"
 
-#: talermerchantdemos/donations/templates/index.html.j2:39
+#: talermerchantdemos/templates/donations-index.html.j2:39
 msgid ""
 "(*) To make the demo a bit more interesting, the 5 {currency} option is "
 "deliberately implemented with a fault: the merchant will try to make you "
@@ -434,85 +430,29 @@ msgid ""
 "from committing to erroneous payments."
 msgstr ""
 "(*) Для того, чтобы сделать демоверсию немого интереснее, мы намеренно "
-"заложили ошибку в опцию «5 {currency}»: продавец попытается предложить вам "
-"внести средства в размере 6 {currency} вместо 5 {currency}, заявленных в "
-"поле. Не беспокойтесь, у вас будет возможность проверить окончательную сумму "
-"в кошельке Taler. Таким образом Taler защищает вас от совершения ошибочных "
-"платежей."
+"заложили ошибку в опцию «5 {currency}»: продавец попытается предложить "
+"вам внести средства в размере 6 {currency} вместо 5 {currency}, "
+"заявленных в поле. Не беспокойтесь, у вас будет возможность проверить "
+"окончательную сумму в кошельке Taler. Таким образом Taler защищает вас от"
+" совершения ошибочных платежей."
 
-#: talermerchantdemos/donations/templates/provider-not-supported.html.j2:4
+#: talermerchantdemos/templates/donations-provider-not-supported.html.j2:4
 msgid "Payment Provider Not Supported"
 msgstr ""
 
-#: talermerchantdemos/donations/templates/provider-not-supported.html.j2:7
+#: talermerchantdemos/templates/donations-provider-not-supported.html.j2:7
 msgid "Unfortunately the selected payment provider is not supported in this 
demo."
 msgstr ""
 
-#: talermerchantdemos/donations/templates/provider-not-supported.html.j2:8
+#: talermerchantdemos/templates/donations-provider-not-supported.html.j2:8
 msgid "Please go back and select &quot;Taler&quot;."
 msgstr ""
 
-#: talermerchantdemos/httpcommon/__init__.py:24
-#: talermerchantdemos/httpcommon/__init__.py:58
-msgid "Could not establish connection to backend"
-msgstr ""
-
-#: talermerchantdemos/httpcommon/__init__.py:30
-#: talermerchantdemos/httpcommon/__init__.py:62
-msgid "Could not parse response from backend"
-msgstr ""
-
-#: talermerchantdemos/httpcommon/__init__.py:36
-#: talermerchantdemos/httpcommon/__init__.py:66
-msgid "Backend returned error status"
-msgstr ""
-
-#: talermerchantdemos/landing/landing.py:197
-#: talermerchantdemos/survey/survey.py:179
-msgid "HTTP method not allowed for this page"
-msgstr ""
-
-#: talermerchantdemos/survey/templates/base.html.j2:20
-msgid "GNU Taler Demo: Survey"
-msgstr ""
-
-#: talermerchantdemos/survey/templates/base.html.j2:32
-msgid "Survey"
-msgstr ""
-
-#: talermerchantdemos/survey/templates/base.html.j2:34
-msgid "This page demonstrates how to tip visitors for completing small tasks."
-msgstr ""
-
-#: talermerchantdemos/survey/templates/base.html.j2:35
-msgid ""
-"Tipping is a way for offer cash rewards that go directly into a user's "
-"wallet."
-msgstr ""
-
-#: talermerchantdemos/survey/templates/index.html.j2:6
-msgid ""
-"Please participate in our survey about payment systems and receive a tip "
-"in return."
-msgstr ""
-
-#: talermerchantdemos/survey/templates/index.html.j2:12
-msgid "Which payment system do you prefer?"
-msgstr ""
-
-#: talermerchantdemos/survey/templates/index.html.j2:23
-msgid "Submit Survey"
-msgstr ""
-
-#: talermerchantdemos/templates/landing-base.html.j2:20
-msgid "GNU Taler Demo: Introduction"
-msgstr ""
-
-#: talermerchantdemos/templates/landing-base.html.j2:34
+#: talermerchantdemos/templates/landing-base.html.j2:7
 msgid "This is the GNU Taler demo."
 msgstr ""
 
-#: talermerchantdemos/templates/landing-base.html.j2:35
+#: talermerchantdemos/templates/landing-base.html.j2:8
 msgid "Here you can try out the GNU Taler payment system using a toy currency."
 msgstr ""
 
@@ -616,8 +556,8 @@ msgstr ""
 #: talermerchantdemos/templates/landing-index.html.j2:59
 msgid ""
 "You can see the wire transfers from the escrow account of the exchange to"
-" the merchants on the <a href=\"{bank}/public-accounts\">public accounts "
-"page</a> of the bank."
+" the merchants on the <a href=\"{bank}\">public accounts page</a> of the "
+"bank."
 msgstr ""
 
 #: talermerchantdemos/templates/landing-index.html.j2:60
@@ -652,6 +592,34 @@ msgstr ""
 msgid "Let us know what you think by <a href=\"{link}\">contacting us</a>."
 msgstr ""
 
+#: talermerchantdemos/templates/survey-base.html.j2:6
+msgid "Survey"
+msgstr ""
+
+#: talermerchantdemos/templates/survey-base.html.j2:8
+msgid "This page demonstrates how to tip visitors for completing small tasks."
+msgstr ""
+
+#: talermerchantdemos/templates/survey-base.html.j2:9
+msgid ""
+"Tipping is a way for offer cash rewards that go directly into a user's "
+"wallet."
+msgstr ""
+
+#: talermerchantdemos/templates/survey-index.html.j2:6
+msgid ""
+"Please participate in our survey about payment systems and receive a tip "
+"in return."
+msgstr ""
+
+#: talermerchantdemos/templates/survey-index.html.j2:12
+msgid "Which payment system do you prefer?"
+msgstr ""
+
+#: talermerchantdemos/templates/survey-index.html.j2:23
+msgid "Submit Survey"
+msgstr ""
+
 #~ msgid "English [en]"
 #~ msgstr ""
 
@@ -663,3 +631,27 @@ msgstr ""
 
 #~ msgid "Swedish [sv]"
 #~ msgstr ""
+
+#~ msgid "GNU Taler Demo: Essay Shop"
+#~ msgstr "Демоверсия GNU Taler. Демо-магазин."
+
+#~ msgid "Back-office"
+#~ msgstr "Бэк-офис"
+
+#~ msgid "GNU Taler Demo: Donations"
+#~ msgstr "Демоверсия GNU Taler: приём добровольных средств"
+
+#~ msgid "GNU Taler Demo: Survey"
+#~ msgstr ""
+
+#~ msgid "GNU Taler Demo: Introduction"
+#~ msgstr ""
+
+#~ msgid ""
+#~ "You can see the wire transfers "
+#~ "from the escrow account of the "
+#~ "exchange to the merchants on the "
+#~ "<a href=\"{bank}/public-accounts\">public accounts"
+#~ " page</a> of the bank."
+#~ msgstr ""
+
diff --git a/translations/sv/LC_MESSAGES/messages.po 
b/translations/sv/LC_MESSAGES/messages.po
index e4b003e..6229dc3 100644
--- a/translations/sv/LC_MESSAGES/messages.po
+++ b/translations/sv/LC_MESSAGES/messages.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PROJECT VERSION\n"
 "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2021-04-21 18:28+0200\n"
+"POT-Creation-Date: 2021-05-11 09:13+0200\n"
 "PO-Revision-Date: 2021-02-06 13:43+0000\n"
 "Last-Translator: Stefan Lidstrom <stefan.lidstrom@tanker.se>\n"
 "Language: sv\n"
@@ -19,57 +19,82 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Generated-By: Babel 2.9.0\n"
 
-#: talermerchantdemos/blog/blog.py:114
-#: talermerchantdemos/donations/donations.py:157
-#: talermerchantdemos/landing/landing.py:117
-#: talermerchantdemos/survey/survey.py:110
+#: talermerchantdemos/blog/blog.py:126
+#: talermerchantdemos/donations/donations.py:139
+#: talermerchantdemos/landing/landing.py:93
+#: talermerchantdemos/survey/survey.py:100
 msgid "Internal error"
 msgstr "Internt fel"
 
-#: talermerchantdemos/blog/blog.py:180
+#: talermerchantdemos/blog/blog.py:186
 msgid "Cannot refund unpaid article"
 msgstr "Obetald artikel kan ej återbetalas"
 
-#: talermerchantdemos/blog/blog.py:186
+#: talermerchantdemos/blog/blog.py:193
 msgid "Article is not anymore refundable"
 msgstr "Återbetalning är inte längre möjlig"
 
-#: talermerchantdemos/blog/blog.py:217
+#: talermerchantdemos/blog/blog.py:229
 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:223
+#: talermerchantdemos/blog/blog.py:234
 msgid "Item not refundable (anymore)"
 msgstr "Återbetalning kan inte (längre) göras"
 
-#: talermerchantdemos/blog/blog.py:248
+#: talermerchantdemos/blog/blog.py:260
 msgid "Internal error: Files for article ({}) not found."
 msgstr "Internt fel: Underlag för artikel ({}) hittades inte."
 
-#: talermerchantdemos/blog/blog.py:253
+#: talermerchantdemos/blog/blog.py:267
 msgid "Supplemental file ({}) for article ({}) not found."
 msgstr "Kompletterande information ({}) för artikel ({}) hittades inte."
 
-#: talermerchantdemos/blog/blog.py:326 talermerchantdemos/blog/blog.py:339
+#: talermerchantdemos/blog/blog.py:343 talermerchantdemos/blog/blog.py:357
 msgid "Direct access forbidden"
 msgstr "Direkt åtkomst förbjuden"
 
-#: talermerchantdemos/blog/blog.py:405
+#: talermerchantdemos/blog/blog.py:413
 msgid "Internal server error"
 msgstr "Internt serverfel"
 
-#: talermerchantdemos/blog/blog.py:412
-#: talermerchantdemos/donations/donations.py:323
-#: talermerchantdemos/landing/landing.py:189
-#: talermerchantdemos/survey/survey.py:171
+#: talermerchantdemos/blog/blog.py:421
+#: talermerchantdemos/donations/donations.py:282
+#: talermerchantdemos/landing/landing.py:166
+#: talermerchantdemos/survey/survey.py:167
 msgid "Page not found"
 msgstr "Sidan hittades inte"
 
-#: talermerchantdemos/blog/templates/article_frame.html.j2:9
+#: talermerchantdemos/donations/donations.py:125
+msgid "parameter '{}' required"
+msgstr "parameter '{}' krävs"
+
+#: talermerchantdemos/httpcommon/__init__.py:48
+#: talermerchantdemos/httpcommon/__init__.py:84
+msgid "Could not establish connection to backend"
+msgstr "Det gick inte att upprätta anslutning till backend"
+
+#: talermerchantdemos/httpcommon/__init__.py:54
+#: talermerchantdemos/httpcommon/__init__.py:89
+msgid "Could not parse response from backend"
+msgstr "Det gick inte att tolka svaret från backend"
+
+#: talermerchantdemos/httpcommon/__init__.py:59
+#: talermerchantdemos/httpcommon/__init__.py:92
+msgid "Backend returned error status"
+msgstr "Backend returnerade felstatus"
+
+#: talermerchantdemos/landing/landing.py:174
+#: talermerchantdemos/survey/survey.py:175
+msgid "HTTP method not allowed for this page"
+msgstr "HTTP-metoden är inte tillåten för den här sidan"
+
+#: talermerchantdemos/templates/blog-article-frame.html.j2:11
+#: talermerchantdemos/templates/blog-article-frame.html.j2:16
 msgid "Taler allows merchants to offer refunds to customers."
 msgstr "Taler tillåter säljare att erbjuda återbetalning till kunder."
 
-#: talermerchantdemos/blog/templates/article_frame.html.j2:10
+#: talermerchantdemos/templates/blog-article-frame.html.j2:12
 msgid ""
 "You can <a href=\"{url}\">request a refund</a> within the first hour "
 "after buying this article."
@@ -77,25 +102,20 @@ msgstr ""
 "Du kan <a href=\"{url}\">begära återbetalning</a> inom den första timmen "
 "efter att du har köpt den här artikeln."
 
-#: talermerchantdemos/blog/templates/base.html.j2:23
-msgid "GNU Taler Demo: Essay Shop"
-msgstr "GNU Taler Demo: Artiklar att köpa"
-
-#: talermerchantdemos/blog/templates/base.html.j2:34
-#: talermerchantdemos/donations/templates/base.html.j2:31
-#: talermerchantdemos/survey/templates/base.html.j2:31
-msgid "Taler Demo"
-msgstr "Taler Demo"
+#: talermerchantdemos/templates/blog-article-frame.html.j2:17
+#, fuzzy
+msgid "This article can't be refunded anymore."
+msgstr "Återbetalning kan inte (längre) göras"
 
-#: talermerchantdemos/blog/templates/base.html.j2:35
+#: talermerchantdemos/templates/blog-base.html.j2:9
 msgid "Essay shop"
 msgstr "Artiklar att köpa"
 
-#: talermerchantdemos/blog/templates/base.html.j2:37
+#: talermerchantdemos/templates/blog-base.html.j2:11
 msgid "On this page you can buy articles using an imaginary currency."
 msgstr "På den här sidan kan du köpa artiklar med en imaginär valuta."
 
-#: talermerchantdemos/blog/templates/base.html.j2:38
+#: talermerchantdemos/templates/blog-base.html.j2:12
 msgid ""
 "The articles are chapters from Richard Stallman's book &quot;Free "
 "Software, Free Society&quot;."
@@ -103,7 +123,7 @@ msgstr ""
 "Artiklarna är kapitel från Richard Stallmans bok &quot;Free Software, "
 "Free Society&quot;."
 
-#: talermerchantdemos/blog/templates/base.html.j2:39
+#: talermerchantdemos/templates/blog-base.html.j2:13
 msgid ""
 "The book is <a href=\"{shop}\">published by the FSF</a> and available "
 "gratis at <a href=\"{gnu}\">gnu.org</a>."
@@ -111,21 +131,21 @@ msgstr ""
 "Boken <a href=\"{shop}\">publiceras av FSF</a> och finns gratis på <a "
 "href=\"{gnu}\">gnu.org</a> ."
 
-#: talermerchantdemos/blog/templates/confirm_refund.html.j2:3
+#: talermerchantdemos/templates/blog-confirm-refund.html.j2:3
 msgid "Confirm refund request for article"
 msgstr "Bekräfta återbetalning av artikeln"
 
-#: talermerchantdemos/blog/templates/confirm_refund.html.j2:7
+#: talermerchantdemos/templates/blog-confirm-refund.html.j2:7
 msgid "Do you want to get a refund for the article <em>{name}</em>?"
 msgstr "Vill du få en återbetalning för artikeln <em>{name}</em> ?"
 
-#: talermerchantdemos/blog/templates/confirm_refund.html.j2:8
+#: talermerchantdemos/templates/blog-confirm-refund.html.j2:8
 msgid ""
 "In this demonstration, refunds will be automatically approved by the "
 "merchant."
 msgstr "I denna demo godkänns återbetalningar automatiskt av säljaren."
 
-#: talermerchantdemos/blog/templates/confirm_refund.html.j2:9
+#: talermerchantdemos/templates/blog-confirm-refund.html.j2:9
 msgid ""
 "After you have obtained a refund, you will not be able to read the "
 "article anymore."
@@ -133,7 +153,7 @@ msgstr ""
 "När du har fått en återbetalning kommer du inte att kunna läsa artikeln "
 "längre."
 
-#: talermerchantdemos/blog/templates/confirm_refund.html.j2:15
+#: talermerchantdemos/templates/blog-confirm-refund.html.j2:15
 msgid ""
 "You will only be able to receive the refund on the same wallet that you "
 "have used to pay for this article originally."
@@ -141,50 +161,41 @@ msgstr ""
 "Du kommer bara att kunna få återbetalning till samma plånbok som du "
 "tidigare använt för att betala för den här artikeln."
 
-#: talermerchantdemos/blog/templates/confirm_refund.html.j2:21
+#: talermerchantdemos/templates/blog-confirm-refund.html.j2:21
 msgid "Request refund"
 msgstr "Begär återbetalning"
 
-#: talermerchantdemos/blog/templates/error.html.j2:3
-#: talermerchantdemos/donations/templates/error.html.j2:3
-#: talermerchantdemos/survey/templates/error.html.j2:3
+#: talermerchantdemos/templates/blog-error.html.j2:3
+#: talermerchantdemos/templates/donations-error.html.j2:3
 #: talermerchantdemos/templates/landing-error.html.j2:3
+#: talermerchantdemos/templates/survey-error.html.j2:3
 msgid "Error encountered"
 msgstr "Fel påträffades"
 
-#: talermerchantdemos/blog/templates/error.html.j2:9
-#: talermerchantdemos/donations/templates/error.html.j2:9
-#: talermerchantdemos/survey/templates/error.html.j2:9
+#: talermerchantdemos/templates/blog-error.html.j2:9
+#: talermerchantdemos/templates/donations-error.html.j2:9
+#: talermerchantdemos/templates/survey-error.html.j2:9
 msgid "The backend returned status code {code}."
 msgstr "Backend returnerade statuskoden {code}."
 
-#: talermerchantdemos/blog/templates/error.html.j2:14
-#: talermerchantdemos/donations/templates/error.html.j2:14
-#: talermerchantdemos/survey/templates/error.html.j2:14
+#: talermerchantdemos/templates/blog-error.html.j2:14
+#: talermerchantdemos/templates/donations-error.html.j2:14
+#: talermerchantdemos/templates/survey-error.html.j2:14
 msgid "Backend response:"
 msgstr "Svar från backend:"
 
-#: talermerchantdemos/blog/templates/error.html.j2:19
-#: talermerchantdemos/donations/templates/error.html.j2:19
-#: talermerchantdemos/survey/templates/error.html.j2:19
+#: talermerchantdemos/templates/blog-error.html.j2:19
+#: talermerchantdemos/templates/donations-error.html.j2:19
 #: talermerchantdemos/templates/landing-error.html.j2:8
+#: talermerchantdemos/templates/survey-error.html.j2:19
 msgid "Stack trace:"
 msgstr "Stackspårning:"
 
-#: talermerchantdemos/blog/templates/footer.html.j2:5
-#: talermerchantdemos/donations/templates/footer.html.j2:5
-#: talermerchantdemos/survey/templates/footer.html.j2:5
-#: talermerchantdemos/templates/footer.html.j2:5
-msgid ""
-"You can learn more about GNU Taler on our main <a "
-"href=\"{site}\">website</a>."
-msgstr "Du kan lära dig mer om GNU Taler på vår <a href=\"{site}\">webb</a> ."
-
-#: talermerchantdemos/blog/templates/index.html.j2:3
+#: talermerchantdemos/templates/blog-index.html.j2:3
 msgid "Essay Shop: Free Software, Free Society"
 msgstr "Artikel Shop: Fri programvara, Free Society"
 
-#: talermerchantdemos/blog/templates/index.html.j2:5
+#: talermerchantdemos/templates/blog-index.html.j2:5
 msgid ""
 "This is the latest edition of <cite>Free Software, Free Society: Selected"
 " Essays of Richard M. Stallman.</cite>"
@@ -192,7 +203,7 @@ msgstr ""
 "Detta är den senaste upplagan av <cite>Free Software, Free Society: "
 "Selected Essays of Richard M</cite>"
 
-#: talermerchantdemos/blog/templates/index.html.j2:13
+#: talermerchantdemos/templates/blog-index.html.j2:13
 msgid ""
 "Verbatim copying and distribution of this entire book are permitted "
 "worldwide, without royalty, in any medium, provided this notice is "
@@ -209,87 +220,69 @@ msgstr ""
 "upphovsrättsmeddelandet och detta tillståndsmeddelande bevaras i alla "
 "kopior."
 
-#: talermerchantdemos/blog/templates/index.html.j2:18
+#: talermerchantdemos/templates/blog-index.html.j2:18
 msgid "Chapters"
 msgstr "Kapitel"
 
-#: talermerchantdemos/blog/templates/index.html.j2:21
+#: talermerchantdemos/templates/blog-index.html.j2:20
 msgid "Click on an individual chapter to to purchase it with GNU Taler."
 msgstr "Klicka på ett enskilt kapitel för att köpa det med GNU Taler."
 
-#: talermerchantdemos/blog/templates/index.html.j2:22
+#: talermerchantdemos/templates/blog-index.html.j2:21
+#, fuzzy
 msgid ""
 "You can get free, virtual money to buy articles on this page at the <a "
-"href=\"{}\")\">bank</a>"
+"href=\"{}\")\">bank</a>."
 msgstr ""
 "Du kan få gratis, virtuella pengar för att köpa artiklar på den här sidan"
 " i <a href=\"{}\")\">banken</a>"
 
-#: talermerchantdemos/blog/templates/index.html.j2:30
+#: talermerchantdemos/templates/blog-index.html.j2:28
 msgid "Pay to read more..."
 msgstr "Betala för att läsa mer ..."
 
-#: talermerchantdemos/blog/templates/index.html.j2:33
+#: talermerchantdemos/templates/blog-index.html.j2:31
 msgid "No articles available in this language."
 msgstr "Inga artiklar är tillgängliga på detta språk."
 
-#: talermerchantdemos/blog/templates/menu.html.j2:6
-#: talermerchantdemos/donations/templates/menu.html.j2:6
-#: talermerchantdemos/survey/templates/menu.html.j2:6
-#: talermerchantdemos/templates/landing-base.html.j2:32
-#: talermerchantdemos/templates/menu.html.j2:6
+#: talermerchantdemos/templates/common-base.html.j2:20
+#, fuzzy
+msgid "GNU Taler Demo"
+msgstr "Taler Demo"
+
+#: talermerchantdemos/templates/common-base.html.j2:44
+#: talermerchantdemos/templates/landing-base.html.j2:5
 msgid "Introduction"
 msgstr "Inledning"
 
-#: talermerchantdemos/blog/templates/menu.html.j2:9
-#: talermerchantdemos/donations/templates/menu.html.j2:9
-#: talermerchantdemos/survey/templates/menu.html.j2:9
-#: talermerchantdemos/templates/menu.html.j2:9
+#: talermerchantdemos/templates/common-base.html.j2:47
 msgid "Bank"
 msgstr "Bank"
 
-#: talermerchantdemos/blog/templates/menu.html.j2:12
-#: talermerchantdemos/donations/templates/menu.html.j2:12
-#: talermerchantdemos/survey/templates/menu.html.j2:12
-#: talermerchantdemos/templates/menu.html.j2:12
+#: talermerchantdemos/templates/common-base.html.j2:50
 msgid "Essay Shop"
 msgstr "Artiklar att köpa"
 
-#: talermerchantdemos/blog/templates/menu.html.j2:15
-#: talermerchantdemos/donations/templates/base.html.j2:32
-#: talermerchantdemos/donations/templates/menu.html.j2:15
-#: talermerchantdemos/survey/templates/menu.html.j2:15
-#: talermerchantdemos/templates/menu.html.j2:15
+#: talermerchantdemos/templates/common-base.html.j2:53
+#: talermerchantdemos/templates/donations-base.html.j2:6
 msgid "Donations"
 msgstr "Donationer"
 
-#: talermerchantdemos/blog/templates/menu.html.j2:18
-#: talermerchantdemos/donations/templates/menu.html.j2:18
-#: talermerchantdemos/survey/templates/menu.html.j2:18
-#: talermerchantdemos/templates/menu.html.j2:18
+#: talermerchantdemos/templates/common-base.html.j2:56
 msgid "Tipping/Survey"
 msgstr "Enkät/Belöning"
 
-#: talermerchantdemos/blog/templates/menu.html.j2:21
-#: talermerchantdemos/donations/templates/menu.html.j2:21
-#: talermerchantdemos/survey/templates/menu.html.j2:21
-#: talermerchantdemos/templates/menu.html.j2:21
-msgid "Back-office"
-msgstr "backoffice"
-
-#: talermerchantdemos/donations/donations.py:143
-msgid "parameter '{}' required"
-msgstr "parameter '{}' krävs"
-
-#: talermerchantdemos/donations/templates/base.html.j2:20
-msgid "GNU Taler Demo: Donations"
-msgstr "GNU Taler Demo: Donationer"
+#: talermerchantdemos/templates/common-base.html.j2:85
+msgid ""
+"You can learn more about GNU Taler on our main <a "
+"href=\"{site}\">website</a>."
+msgstr "Du kan lära dig mer om GNU Taler på vår <a href=\"{site}\">webb</a> ."
 
-#: talermerchantdemos/donations/templates/base.html.j2:34
+#: talermerchantdemos/templates/donations-base.html.j2:8
 msgid "This is the donation page."
 msgstr "Det här är donationssidan."
 
-#: talermerchantdemos/donations/templates/base.html.j2:35
+#: talermerchantdemos/templates/donations-base.html.j2:9
 msgid ""
 "Using this page you can make donations in {currency} to Free Software "
 "projects."
@@ -297,15 +290,15 @@ msgstr ""
 "Med hjälp av denna sida kan du göra donationer i {currency} till Free "
 "Software-projekt."
 
-#: talermerchantdemos/donations/templates/checkout.html.j2:5
+#: talermerchantdemos/templates/donations-checkout.html.j2:5
 msgid "Select your payment method"
 msgstr "Välj din betalningsmetod"
 
-#: talermerchantdemos/donations/templates/checkout.html.j2:9
+#: talermerchantdemos/templates/donations-checkout.html.j2:9
 msgid "This is an example for a \"checkout\" page of a Web shop."
 msgstr "Detta är ett exempel på \"kassan\" i en webbshop."
 
-#: talermerchantdemos/donations/templates/checkout.html.j2:10
+#: talermerchantdemos/templates/donations-checkout.html.j2:10
 msgid ""
 "On the previous page, you have created the shopping cart and decided "
 "which product to buy (i.e. which project to donate KUDOS to)."
@@ -313,7 +306,7 @@ msgstr ""
 "På föregående sida har du skapat kundvagnen och bestämt vilken produkt du"
 " ska köpa (dvs. vilket projekt du vill donera KUDOS till)."
 
-#: talermerchantdemos/donations/templates/checkout.html.j2:11
+#: talermerchantdemos/templates/donations-checkout.html.j2:11
 msgid ""
 "As Taler is not yet universally used, we expect merchants will offer "
 "various payment options."
@@ -321,13 +314,13 @@ msgstr ""
 "Eftersom Taler ännu inte används allmänt, förväntar vi oss att säljaren "
 "kommer att erbjuda olika betalningsalternativ."
 
-#: talermerchantdemos/donations/templates/checkout.html.j2:12
+#: talermerchantdemos/templates/donations-checkout.html.j2:12
 msgid "To continue with the demo, select the &quot;Taler&quot; payment option."
 msgstr ""
 "För att fortsätta med demon, välj betalningsalternativet "
 "&quot;Taler&quot;."
 
-#: talermerchantdemos/donations/templates/checkout.html.j2:17
+#: talermerchantdemos/templates/donations-checkout.html.j2:17
 msgid ""
 "Note that you must select Taler here for the demo to continue, as the "
 "other payment options are just placeholders and not really working in the"
@@ -337,7 +330,7 @@ msgstr ""
 "eftersom de andra betalningsalternativen bara är platshållare och inte "
 "riktigt fungerar i demonstrationen."
 
-#: talermerchantdemos/donations/templates/checkout.html.j2:18
+#: talermerchantdemos/templates/donations-checkout.html.j2:18
 msgid ""
 "It would be possible to ask the user to make this choice already on the "
 "previous page (with the shopping cart); we just separated the two steps "
@@ -347,15 +340,15 @@ msgstr ""
 "föregående sida (kundvagnen); vi separerade bara de två stegen för att "
 "hålla varje steg så enkelt som möjligt."
 
-#: talermerchantdemos/donations/templates/checkout.html.j2:44
+#: talermerchantdemos/templates/donations-checkout.html.j2:44
 msgid "Confirm selection"
 msgstr "Bekräfta valet"
 
-#: talermerchantdemos/donations/templates/fulfillment.html.j2:4
+#: talermerchantdemos/templates/donations-fulfillment.html.j2:4
 msgid "Donation Receipt"
 msgstr "Gåvokvitto"
 
-#: talermerchantdemos/donations/templates/fulfillment.html.j2:7
+#: talermerchantdemos/templates/donations-fulfillment.html.j2:7
 msgid ""
 "Thank you, <strong>{donor}</strong>, for donating "
 "<strong>{amount}</strong> to <strong>{receiver}</strong>."
@@ -363,7 +356,7 @@ msgstr ""
 "Tack, <strong>{donor}</strong>, för att du donerade "
 "<strong>{amount}</strong> till <strong>{receiver}</strong> ."
 
-#: talermerchantdemos/donations/templates/fulfillment.html.j2:12
+#: talermerchantdemos/templates/donations-fulfillment.html.j2:12
 msgid ""
 "Please keep the order identifier <strong>{id}</strong> as a receipt for "
 "your donation."
@@ -371,7 +364,7 @@ msgstr ""
 "Behåll beställnings ID <strong>{id}</strong> som ett kvitto på din "
 "donation."
 
-#: talermerchantdemos/donations/templates/fulfillment.html.j2:13
+#: talermerchantdemos/templates/donations-fulfillment.html.j2:13
 msgid ""
 "You can show other people that you donated by sharing <a "
 "href=\"{link}\">this link</a> with them."
@@ -379,25 +372,25 @@ msgstr ""
 "Du kan visa andra personer att du donerat genom att dela den <a "
 "href=\"{link}\">här länken</a> med dem."
 
-#: talermerchantdemos/donations/templates/fulfillment.html.j2:19
+#: talermerchantdemos/templates/donations-fulfillment.html.j2:19
 msgid "You can always make <a href=\"{link}\">another donation</a>."
 msgstr "Du kan alltid göra en <a href=\"{link}\">ny donation</a> ."
 
-#: talermerchantdemos/donations/templates/index.html.j2:4
+#: talermerchantdemos/templates/donations-index.html.j2:4
 msgid "Donate to Free Software projects"
 msgstr "Donera till projekt för fri programvara"
 
-#: talermerchantdemos/donations/templates/index.html.j2:8
+#: talermerchantdemos/templates/donations-index.html.j2:8
 msgid ""
 "This donations website shows the user experience for donations with GNU "
 "Taler."
 msgstr "Denna donationswebbplats visar användandet av donationer med GNU 
Taler."
 
-#: talermerchantdemos/donations/templates/index.html.j2:9
+#: talermerchantdemos/templates/donations-index.html.j2:9
 msgid "You can make donations in an toy currency ({currency})"
 msgstr "Du kan göra donationer i en leksaksvaluta ({currency})"
 
-#: talermerchantdemos/donations/templates/index.html.j2:16
+#: talermerchantdemos/templates/donations-index.html.j2:16
 msgid ""
 "Please select a project, the amount (*) of {currency} you wish to donate,"
 " and enter the donor's name that will appear on your receipt:"
@@ -405,15 +398,15 @@ msgstr ""
 "Välj ett projekt, beloppet (*) av {currency} som du vill donera och ange "
 "givarens namn som kommer att visas på ditt kvitto:"
 
-#: talermerchantdemos/donations/templates/index.html.j2:33
+#: talermerchantdemos/templates/donations-index.html.j2:33
 msgid "Anonymous Donor"
 msgstr "Anonym givare"
 
-#: talermerchantdemos/donations/templates/index.html.j2:34
+#: talermerchantdemos/templates/donations-index.html.j2:34
 msgid "Donate!"
 msgstr "Donera!"
 
-#: talermerchantdemos/donations/templates/index.html.j2:39
+#: talermerchantdemos/templates/donations-index.html.j2:39
 msgid ""
 "(*) To make the demo a bit more interesting, the 5 {currency} option is "
 "deliberately implemented with a fault: the merchant will try to make you "
@@ -429,83 +422,23 @@ msgstr ""
 "det slutliga erbjudandet från säljaren i Taler-plånboken. På det sättet "
 "skyddar Taler dig från att göra felaktiga betalningar."
 
-#: talermerchantdemos/donations/templates/provider-not-supported.html.j2:4
+#: talermerchantdemos/templates/donations-provider-not-supported.html.j2:4
 msgid "Payment Provider Not Supported"
 msgstr "Betalningsleverantören stöds inte"
 
-#: talermerchantdemos/donations/templates/provider-not-supported.html.j2:7
+#: talermerchantdemos/templates/donations-provider-not-supported.html.j2:7
 msgid "Unfortunately the selected payment provider is not supported in this 
demo."
 msgstr "Tyvärr stöds inte den valda betalningsleverantören i denna demo."
 
-#: talermerchantdemos/donations/templates/provider-not-supported.html.j2:8
+#: talermerchantdemos/templates/donations-provider-not-supported.html.j2:8
 msgid "Please go back and select &quot;Taler&quot;."
 msgstr "Gå tillbaka och välj &quot;Taler&quot;."
 
-#: talermerchantdemos/httpcommon/__init__.py:24
-#: talermerchantdemos/httpcommon/__init__.py:58
-msgid "Could not establish connection to backend"
-msgstr "Det gick inte att upprätta anslutning till backend"
-
-#: talermerchantdemos/httpcommon/__init__.py:30
-#: talermerchantdemos/httpcommon/__init__.py:62
-msgid "Could not parse response from backend"
-msgstr "Det gick inte att tolka svaret från backend"
-
-#: talermerchantdemos/httpcommon/__init__.py:36
-#: talermerchantdemos/httpcommon/__init__.py:66
-msgid "Backend returned error status"
-msgstr "Backend returnerade felstatus"
-
-#: talermerchantdemos/landing/landing.py:197
-#: talermerchantdemos/survey/survey.py:179
-msgid "HTTP method not allowed for this page"
-msgstr "HTTP-metoden är inte tillåten för den här sidan"
-
-#: talermerchantdemos/survey/templates/base.html.j2:20
-msgid "GNU Taler Demo: Survey"
-msgstr "GNU Taler Demo: Enkät"
-
-#: talermerchantdemos/survey/templates/base.html.j2:32
-msgid "Survey"
-msgstr "Enkät"
-
-#: talermerchantdemos/survey/templates/base.html.j2:34
-msgid "This page demonstrates how to tip visitors for completing small tasks."
-msgstr "Den här sidan visar hur du kan belöna besökare som utfört små 
uppgifter."
-
-#: talermerchantdemos/survey/templates/base.html.j2:35
-msgid ""
-"Tipping is a way for offer cash rewards that go directly into a user's "
-"wallet."
-msgstr ""
-"Dricks är ett sätt att erbjuda kontantersättning som går direkt in i en "
-"användares plånbok."
-
-#: talermerchantdemos/survey/templates/index.html.j2:6
-msgid ""
-"Please participate in our survey about payment systems and receive a tip "
-"in return."
-msgstr ""
-"Vänligen delta i vår undersökning om betalningssystem och få en slant i "
-"utbyte."
-
-#: talermerchantdemos/survey/templates/index.html.j2:12
-msgid "Which payment system do you prefer?"
-msgstr "Vilket betalningssystem föredrar du?"
-
-#: talermerchantdemos/survey/templates/index.html.j2:23
-msgid "Submit Survey"
-msgstr "Skicka in enkäten"
-
-#: talermerchantdemos/templates/landing-base.html.j2:20
-msgid "GNU Taler Demo: Introduction"
-msgstr "GNU Taler Demo: Introduktion"
-
-#: talermerchantdemos/templates/landing-base.html.j2:34
+#: talermerchantdemos/templates/landing-base.html.j2:7
 msgid "This is the GNU Taler demo."
 msgstr "Detta är GNU Taler-demon."
 
-#: talermerchantdemos/templates/landing-base.html.j2:35
+#: talermerchantdemos/templates/landing-base.html.j2:8
 msgid "Here you can try out the GNU Taler payment system using a toy currency."
 msgstr "Här kan du prova GNU Taler betalningssystem med en leksaksvaluta."
 
@@ -625,10 +558,11 @@ msgid "Step 4: Check money flow"
 msgstr "Steg 4: Kontrollera penningflödet"
 
 #: talermerchantdemos/templates/landing-index.html.j2:59
+#, fuzzy
 msgid ""
 "You can see the wire transfers from the escrow account of the exchange to"
-" the merchants on the <a href=\"{bank}/public-accounts\">public accounts "
-"page</a> of the bank."
+" the merchants on the <a href=\"{bank}\">public accounts page</a> of the "
+"bank."
 msgstr ""
 "På bankens <a href=\"{bank}/public-accounts\">offentliga kontosida</a> "
 "kan du se banköverföringarna från växlingskontorets konto till handlarna."
@@ -669,6 +603,38 @@ msgstr "Vi uppskattar feedback om Taler och denna demo."
 msgid "Let us know what you think by <a href=\"{link}\">contacting us</a>."
 msgstr "Låt oss veta vad du tycker genom att <a href=\"{link}\">kontakta 
oss</a> ."
 
+#: talermerchantdemos/templates/survey-base.html.j2:6
+msgid "Survey"
+msgstr "Enkät"
+
+#: talermerchantdemos/templates/survey-base.html.j2:8
+msgid "This page demonstrates how to tip visitors for completing small tasks."
+msgstr "Den här sidan visar hur du kan belöna besökare som utfört små 
uppgifter."
+
+#: talermerchantdemos/templates/survey-base.html.j2:9
+msgid ""
+"Tipping is a way for offer cash rewards that go directly into a user's "
+"wallet."
+msgstr ""
+"Dricks är ett sätt att erbjuda kontantersättning som går direkt in i en "
+"användares plånbok."
+
+#: talermerchantdemos/templates/survey-index.html.j2:6
+msgid ""
+"Please participate in our survey about payment systems and receive a tip "
+"in return."
+msgstr ""
+"Vänligen delta i vår undersökning om betalningssystem och få en slant i "
+"utbyte."
+
+#: talermerchantdemos/templates/survey-index.html.j2:12
+msgid "Which payment system do you prefer?"
+msgstr "Vilket betalningssystem föredrar du?"
+
+#: talermerchantdemos/templates/survey-index.html.j2:23
+msgid "Submit Survey"
+msgstr "Skicka in enkäten"
+
 #~ msgid ""
 #~ "After installation, you may be asked "
 #~ "to grant the brower-based Taler "
@@ -693,3 +659,18 @@ msgstr "Låt oss veta vad du tycker genom att <a 
href=\"{link}\">kontakta oss</a
 #~ msgid "Swedish [sv]"
 #~ msgstr "Svenska[sv]"
 
+#~ msgid "GNU Taler Demo: Essay Shop"
+#~ msgstr "GNU Taler Demo: Artiklar att köpa"
+
+#~ msgid "Back-office"
+#~ msgstr "backoffice"
+
+#~ msgid "GNU Taler Demo: Donations"
+#~ msgstr "GNU Taler Demo: Donationer"
+
+#~ msgid "GNU Taler Demo: Survey"
+#~ msgstr "GNU Taler Demo: Enkät"
+
+#~ msgid "GNU Taler Demo: Introduction"
+#~ msgstr "GNU Taler Demo: Introduktion"
+
diff --git a/translations/tr/LC_MESSAGES/messages.po 
b/translations/tr/LC_MESSAGES/messages.po
index d2ca70d..3dfb1fe 100644
--- a/translations/tr/LC_MESSAGES/messages.po
+++ b/translations/tr/LC_MESSAGES/messages.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PROJECT VERSION\n"
 "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2021-04-21 18:28+0200\n"
+"POT-Creation-Date: 2021-05-11 09:13+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: Automatically generated\n"
 "Language: tr\n"
@@ -18,168 +18,178 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Generated-By: Babel 2.9.0\n"
 
-#: talermerchantdemos/blog/blog.py:114
-#: talermerchantdemos/donations/donations.py:157
-#: talermerchantdemos/landing/landing.py:117
-#: talermerchantdemos/survey/survey.py:110
+#: talermerchantdemos/blog/blog.py:126
+#: talermerchantdemos/donations/donations.py:139
+#: talermerchantdemos/landing/landing.py:93
+#: talermerchantdemos/survey/survey.py:100
 msgid "Internal error"
 msgstr ""
 
-#: talermerchantdemos/blog/blog.py:180
+#: talermerchantdemos/blog/blog.py:186
 msgid "Cannot refund unpaid article"
 msgstr ""
 
-#: talermerchantdemos/blog/blog.py:186
+#: talermerchantdemos/blog/blog.py:193
 msgid "Article is not anymore refundable"
 msgstr ""
 
-#: talermerchantdemos/blog/blog.py:217
+#: talermerchantdemos/blog/blog.py:229
 msgid "You did not pay for this article (nice try!)"
 msgstr ""
 
-#: talermerchantdemos/blog/blog.py:223
+#: talermerchantdemos/blog/blog.py:234
 msgid "Item not refundable (anymore)"
 msgstr ""
 
-#: talermerchantdemos/blog/blog.py:248
+#: talermerchantdemos/blog/blog.py:260
 msgid "Internal error: Files for article ({}) not found."
 msgstr ""
 
-#: talermerchantdemos/blog/blog.py:253
+#: talermerchantdemos/blog/blog.py:267
 msgid "Supplemental file ({}) for article ({}) not found."
 msgstr ""
 
-#: talermerchantdemos/blog/blog.py:326 talermerchantdemos/blog/blog.py:339
+#: talermerchantdemos/blog/blog.py:343 talermerchantdemos/blog/blog.py:357
 msgid "Direct access forbidden"
 msgstr ""
 
-#: talermerchantdemos/blog/blog.py:405
+#: talermerchantdemos/blog/blog.py:413
 msgid "Internal server error"
 msgstr ""
 
-#: talermerchantdemos/blog/blog.py:412
-#: talermerchantdemos/donations/donations.py:323
-#: talermerchantdemos/landing/landing.py:189
-#: talermerchantdemos/survey/survey.py:171
+#: talermerchantdemos/blog/blog.py:421
+#: talermerchantdemos/donations/donations.py:282
+#: talermerchantdemos/landing/landing.py:166
+#: talermerchantdemos/survey/survey.py:167
 msgid "Page not found"
 msgstr ""
 
-#: talermerchantdemos/blog/templates/article_frame.html.j2:9
+#: talermerchantdemos/donations/donations.py:125
+msgid "parameter '{}' required"
+msgstr ""
+
+#: talermerchantdemos/httpcommon/__init__.py:48
+#: talermerchantdemos/httpcommon/__init__.py:84
+msgid "Could not establish connection to backend"
+msgstr ""
+
+#: talermerchantdemos/httpcommon/__init__.py:54
+#: talermerchantdemos/httpcommon/__init__.py:89
+msgid "Could not parse response from backend"
+msgstr ""
+
+#: talermerchantdemos/httpcommon/__init__.py:59
+#: talermerchantdemos/httpcommon/__init__.py:92
+msgid "Backend returned error status"
+msgstr ""
+
+#: talermerchantdemos/landing/landing.py:174
+#: talermerchantdemos/survey/survey.py:175
+msgid "HTTP method not allowed for this page"
+msgstr ""
+
+#: talermerchantdemos/templates/blog-article-frame.html.j2:11
+#: talermerchantdemos/templates/blog-article-frame.html.j2:16
 msgid "Taler allows merchants to offer refunds to customers."
 msgstr ""
 
-#: talermerchantdemos/blog/templates/article_frame.html.j2:10
+#: talermerchantdemos/templates/blog-article-frame.html.j2:12
 msgid ""
 "You can <a href=\"{url}\">request a refund</a> within the first hour "
 "after buying this article."
 msgstr ""
 
-#: talermerchantdemos/blog/templates/base.html.j2:23
-msgid "GNU Taler Demo: Essay Shop"
+#: talermerchantdemos/templates/blog-article-frame.html.j2:17
+msgid "This article can't be refunded anymore."
 msgstr ""
 
-#: talermerchantdemos/blog/templates/base.html.j2:34
-#: talermerchantdemos/donations/templates/base.html.j2:31
-#: talermerchantdemos/survey/templates/base.html.j2:31
-msgid "Taler Demo"
-msgstr ""
-
-#: talermerchantdemos/blog/templates/base.html.j2:35
+#: talermerchantdemos/templates/blog-base.html.j2:9
 msgid "Essay shop"
 msgstr ""
 
-#: talermerchantdemos/blog/templates/base.html.j2:37
+#: talermerchantdemos/templates/blog-base.html.j2:11
 msgid "On this page you can buy articles using an imaginary currency."
 msgstr ""
 
-#: talermerchantdemos/blog/templates/base.html.j2:38
+#: talermerchantdemos/templates/blog-base.html.j2:12
 msgid ""
 "The articles are chapters from Richard Stallman's book &quot;Free "
 "Software, Free Society&quot;."
 msgstr ""
 
-#: talermerchantdemos/blog/templates/base.html.j2:39
+#: talermerchantdemos/templates/blog-base.html.j2:13
 msgid ""
 "The book is <a href=\"{shop}\">published by the FSF</a> and available "
 "gratis at <a href=\"{gnu}\">gnu.org</a>."
 msgstr ""
 
-#: talermerchantdemos/blog/templates/confirm_refund.html.j2:3
+#: talermerchantdemos/templates/blog-confirm-refund.html.j2:3
 msgid "Confirm refund request for article"
 msgstr ""
 
-#: talermerchantdemos/blog/templates/confirm_refund.html.j2:7
+#: talermerchantdemos/templates/blog-confirm-refund.html.j2:7
 msgid "Do you want to get a refund for the article <em>{name}</em>?"
 msgstr ""
 
-#: talermerchantdemos/blog/templates/confirm_refund.html.j2:8
+#: talermerchantdemos/templates/blog-confirm-refund.html.j2:8
 msgid ""
 "In this demonstration, refunds will be automatically approved by the "
 "merchant."
 msgstr ""
 
-#: talermerchantdemos/blog/templates/confirm_refund.html.j2:9
+#: talermerchantdemos/templates/blog-confirm-refund.html.j2:9
 msgid ""
 "After you have obtained a refund, you will not be able to read the "
 "article anymore."
 msgstr ""
 
-#: talermerchantdemos/blog/templates/confirm_refund.html.j2:15
+#: talermerchantdemos/templates/blog-confirm-refund.html.j2:15
 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 ""
 
-#: talermerchantdemos/blog/templates/confirm_refund.html.j2:21
+#: talermerchantdemos/templates/blog-confirm-refund.html.j2:21
 msgid "Request refund"
 msgstr ""
 
-#: talermerchantdemos/blog/templates/error.html.j2:3
-#: talermerchantdemos/donations/templates/error.html.j2:3
-#: talermerchantdemos/survey/templates/error.html.j2:3
+#: talermerchantdemos/templates/blog-error.html.j2:3
+#: talermerchantdemos/templates/donations-error.html.j2:3
 #: talermerchantdemos/templates/landing-error.html.j2:3
+#: talermerchantdemos/templates/survey-error.html.j2:3
 msgid "Error encountered"
 msgstr ""
 
-#: talermerchantdemos/blog/templates/error.html.j2:9
-#: talermerchantdemos/donations/templates/error.html.j2:9
-#: talermerchantdemos/survey/templates/error.html.j2:9
+#: talermerchantdemos/templates/blog-error.html.j2:9
+#: talermerchantdemos/templates/donations-error.html.j2:9
+#: talermerchantdemos/templates/survey-error.html.j2:9
 msgid "The backend returned status code {code}."
 msgstr ""
 
-#: talermerchantdemos/blog/templates/error.html.j2:14
-#: talermerchantdemos/donations/templates/error.html.j2:14
-#: talermerchantdemos/survey/templates/error.html.j2:14
+#: talermerchantdemos/templates/blog-error.html.j2:14
+#: talermerchantdemos/templates/donations-error.html.j2:14
+#: talermerchantdemos/templates/survey-error.html.j2:14
 msgid "Backend response:"
 msgstr ""
 
-#: talermerchantdemos/blog/templates/error.html.j2:19
-#: talermerchantdemos/donations/templates/error.html.j2:19
-#: talermerchantdemos/survey/templates/error.html.j2:19
+#: talermerchantdemos/templates/blog-error.html.j2:19
+#: talermerchantdemos/templates/donations-error.html.j2:19
 #: talermerchantdemos/templates/landing-error.html.j2:8
+#: talermerchantdemos/templates/survey-error.html.j2:19
 msgid "Stack trace:"
 msgstr ""
 
-#: talermerchantdemos/blog/templates/footer.html.j2:5
-#: talermerchantdemos/donations/templates/footer.html.j2:5
-#: talermerchantdemos/survey/templates/footer.html.j2:5
-#: talermerchantdemos/templates/footer.html.j2:5
-msgid ""
-"You can learn more about GNU Taler on our main <a "
-"href=\"{site}\">website</a>."
-msgstr ""
-
-#: talermerchantdemos/blog/templates/index.html.j2:3
+#: talermerchantdemos/templates/blog-index.html.j2:3
 msgid "Essay Shop: Free Software, Free Society"
 msgstr ""
 
-#: talermerchantdemos/blog/templates/index.html.j2:5
+#: talermerchantdemos/templates/blog-index.html.j2:5
 msgid ""
 "This is the latest edition of <cite>Free Software, Free Society: Selected"
 " Essays of Richard M. Stallman.</cite>"
 msgstr ""
 
-#: talermerchantdemos/blog/templates/index.html.j2:13
+#: talermerchantdemos/templates/blog-index.html.j2:13
 msgid ""
 "Verbatim copying and distribution of this entire book are permitted "
 "worldwide, without royalty, in any medium, provided this notice is "
@@ -189,187 +199,167 @@ msgid ""
 "copyright notice and this permission notice are preserved on all copies."
 msgstr ""
 
-#: talermerchantdemos/blog/templates/index.html.j2:18
+#: talermerchantdemos/templates/blog-index.html.j2:18
 msgid "Chapters"
 msgstr ""
 
-#: talermerchantdemos/blog/templates/index.html.j2:21
+#: talermerchantdemos/templates/blog-index.html.j2:20
 msgid "Click on an individual chapter to to purchase it with GNU Taler."
 msgstr ""
 
-#: talermerchantdemos/blog/templates/index.html.j2:22
+#: talermerchantdemos/templates/blog-index.html.j2:21
 msgid ""
 "You can get free, virtual money to buy articles on this page at the <a "
-"href=\"{}\")\">bank</a>"
+"href=\"{}\")\">bank</a>."
 msgstr ""
 
-#: talermerchantdemos/blog/templates/index.html.j2:30
+#: talermerchantdemos/templates/blog-index.html.j2:28
 msgid "Pay to read more..."
 msgstr ""
 
-#: talermerchantdemos/blog/templates/index.html.j2:33
+#: talermerchantdemos/templates/blog-index.html.j2:31
 msgid "No articles available in this language."
 msgstr ""
 
-#: talermerchantdemos/blog/templates/menu.html.j2:6
-#: talermerchantdemos/donations/templates/menu.html.j2:6
-#: talermerchantdemos/survey/templates/menu.html.j2:6
-#: talermerchantdemos/templates/landing-base.html.j2:32
-#: talermerchantdemos/templates/menu.html.j2:6
+#: talermerchantdemos/templates/common-base.html.j2:20
+msgid "GNU Taler Demo"
+msgstr ""
+
+#: talermerchantdemos/templates/common-base.html.j2:44
+#: talermerchantdemos/templates/landing-base.html.j2:5
 msgid "Introduction"
 msgstr ""
 
-#: talermerchantdemos/blog/templates/menu.html.j2:9
-#: talermerchantdemos/donations/templates/menu.html.j2:9
-#: talermerchantdemos/survey/templates/menu.html.j2:9
-#: talermerchantdemos/templates/menu.html.j2:9
+#: talermerchantdemos/templates/common-base.html.j2:47
 msgid "Bank"
 msgstr ""
 
-#: talermerchantdemos/blog/templates/menu.html.j2:12
-#: talermerchantdemos/donations/templates/menu.html.j2:12
-#: talermerchantdemos/survey/templates/menu.html.j2:12
-#: talermerchantdemos/templates/menu.html.j2:12
+#: talermerchantdemos/templates/common-base.html.j2:50
 msgid "Essay Shop"
 msgstr ""
 
-#: talermerchantdemos/blog/templates/menu.html.j2:15
-#: talermerchantdemos/donations/templates/base.html.j2:32
-#: talermerchantdemos/donations/templates/menu.html.j2:15
-#: talermerchantdemos/survey/templates/menu.html.j2:15
-#: talermerchantdemos/templates/menu.html.j2:15
+#: talermerchantdemos/templates/common-base.html.j2:53
+#: talermerchantdemos/templates/donations-base.html.j2:6
 msgid "Donations"
 msgstr ""
 
-#: talermerchantdemos/blog/templates/menu.html.j2:18
-#: talermerchantdemos/donations/templates/menu.html.j2:18
-#: talermerchantdemos/survey/templates/menu.html.j2:18
-#: talermerchantdemos/templates/menu.html.j2:18
+#: talermerchantdemos/templates/common-base.html.j2:56
 msgid "Tipping/Survey"
 msgstr ""
 
-#: talermerchantdemos/blog/templates/menu.html.j2:21
-#: talermerchantdemos/donations/templates/menu.html.j2:21
-#: talermerchantdemos/survey/templates/menu.html.j2:21
-#: talermerchantdemos/templates/menu.html.j2:21
-msgid "Back-office"
-msgstr ""
-
-#: talermerchantdemos/donations/donations.py:143
-msgid "parameter '{}' required"
-msgstr ""
-
-#: talermerchantdemos/donations/templates/base.html.j2:20
-msgid "GNU Taler Demo: Donations"
+#: talermerchantdemos/templates/common-base.html.j2:85
+msgid ""
+"You can learn more about GNU Taler on our main <a "
+"href=\"{site}\">website</a>."
 msgstr ""
 
-#: talermerchantdemos/donations/templates/base.html.j2:34
+#: talermerchantdemos/templates/donations-base.html.j2:8
 msgid "This is the donation page."
 msgstr ""
 
-#: talermerchantdemos/donations/templates/base.html.j2:35
+#: talermerchantdemos/templates/donations-base.html.j2:9
 msgid ""
 "Using this page you can make donations in {currency} to Free Software "
 "projects."
 msgstr ""
 
-#: talermerchantdemos/donations/templates/checkout.html.j2:5
+#: talermerchantdemos/templates/donations-checkout.html.j2:5
 msgid "Select your payment method"
 msgstr ""
 
-#: talermerchantdemos/donations/templates/checkout.html.j2:9
+#: talermerchantdemos/templates/donations-checkout.html.j2:9
 msgid "This is an example for a \"checkout\" page of a Web shop."
 msgstr ""
 
-#: talermerchantdemos/donations/templates/checkout.html.j2:10
+#: talermerchantdemos/templates/donations-checkout.html.j2:10
 msgid ""
 "On the previous page, you have created the shopping cart and decided "
 "which product to buy (i.e. which project to donate KUDOS to)."
 msgstr ""
 
-#: talermerchantdemos/donations/templates/checkout.html.j2:11
+#: talermerchantdemos/templates/donations-checkout.html.j2:11
 msgid ""
 "As Taler is not yet universally used, we expect merchants will offer "
 "various payment options."
 msgstr ""
 
-#: talermerchantdemos/donations/templates/checkout.html.j2:12
+#: talermerchantdemos/templates/donations-checkout.html.j2:12
 msgid "To continue with the demo, select the &quot;Taler&quot; payment option."
 msgstr ""
 
-#: talermerchantdemos/donations/templates/checkout.html.j2:17
+#: talermerchantdemos/templates/donations-checkout.html.j2:17
 msgid ""
 "Note that you must select Taler here for the demo to continue, as the "
 "other payment options are just placeholders and not really working in the"
 " demonstration."
 msgstr ""
 
-#: talermerchantdemos/donations/templates/checkout.html.j2:18
+#: talermerchantdemos/templates/donations-checkout.html.j2:18
 msgid ""
 "It would be possible to ask the user to make this choice already on the "
 "previous page (with the shopping cart); we just separated the two steps "
 "to keep each step as simple as possible."
 msgstr ""
 
-#: talermerchantdemos/donations/templates/checkout.html.j2:44
+#: talermerchantdemos/templates/donations-checkout.html.j2:44
 msgid "Confirm selection"
 msgstr ""
 
-#: talermerchantdemos/donations/templates/fulfillment.html.j2:4
+#: talermerchantdemos/templates/donations-fulfillment.html.j2:4
 msgid "Donation Receipt"
 msgstr ""
 
-#: talermerchantdemos/donations/templates/fulfillment.html.j2:7
+#: talermerchantdemos/templates/donations-fulfillment.html.j2:7
 msgid ""
 "Thank you, <strong>{donor}</strong>, for donating "
 "<strong>{amount}</strong> to <strong>{receiver}</strong>."
 msgstr ""
 
-#: talermerchantdemos/donations/templates/fulfillment.html.j2:12
+#: talermerchantdemos/templates/donations-fulfillment.html.j2:12
 msgid ""
 "Please keep the order identifier <strong>{id}</strong> as a receipt for "
 "your donation."
 msgstr ""
 
-#: talermerchantdemos/donations/templates/fulfillment.html.j2:13
+#: talermerchantdemos/templates/donations-fulfillment.html.j2:13
 msgid ""
 "You can show other people that you donated by sharing <a "
 "href=\"{link}\">this link</a> with them."
 msgstr ""
 
-#: talermerchantdemos/donations/templates/fulfillment.html.j2:19
+#: talermerchantdemos/templates/donations-fulfillment.html.j2:19
 msgid "You can always make <a href=\"{link}\">another donation</a>."
 msgstr ""
 
-#: talermerchantdemos/donations/templates/index.html.j2:4
+#: talermerchantdemos/templates/donations-index.html.j2:4
 msgid "Donate to Free Software projects"
 msgstr ""
 
-#: talermerchantdemos/donations/templates/index.html.j2:8
+#: talermerchantdemos/templates/donations-index.html.j2:8
 msgid ""
 "This donations website shows the user experience for donations with GNU "
 "Taler."
 msgstr ""
 
-#: talermerchantdemos/donations/templates/index.html.j2:9
+#: talermerchantdemos/templates/donations-index.html.j2:9
 msgid "You can make donations in an toy currency ({currency})"
 msgstr ""
 
-#: talermerchantdemos/donations/templates/index.html.j2:16
+#: talermerchantdemos/templates/donations-index.html.j2:16
 msgid ""
 "Please select a project, the amount (*) of {currency} you wish to donate,"
 " and enter the donor's name that will appear on your receipt:"
 msgstr ""
 
-#: talermerchantdemos/donations/templates/index.html.j2:33
+#: talermerchantdemos/templates/donations-index.html.j2:33
 msgid "Anonymous Donor"
 msgstr ""
 
-#: talermerchantdemos/donations/templates/index.html.j2:34
+#: talermerchantdemos/templates/donations-index.html.j2:34
 msgid "Donate!"
 msgstr ""
 
-#: talermerchantdemos/donations/templates/index.html.j2:39
+#: talermerchantdemos/templates/donations-index.html.j2:39
 msgid ""
 "(*) To make the demo a bit more interesting, the 5 {currency} option is "
 "deliberately implemented with a fault: the merchant will try to make you "
@@ -379,79 +369,23 @@ msgid ""
 "from committing to erroneous payments."
 msgstr ""
 
-#: talermerchantdemos/donations/templates/provider-not-supported.html.j2:4
+#: talermerchantdemos/templates/donations-provider-not-supported.html.j2:4
 msgid "Payment Provider Not Supported"
 msgstr ""
 
-#: talermerchantdemos/donations/templates/provider-not-supported.html.j2:7
+#: talermerchantdemos/templates/donations-provider-not-supported.html.j2:7
 msgid "Unfortunately the selected payment provider is not supported in this 
demo."
 msgstr ""
 
-#: talermerchantdemos/donations/templates/provider-not-supported.html.j2:8
+#: talermerchantdemos/templates/donations-provider-not-supported.html.j2:8
 msgid "Please go back and select &quot;Taler&quot;."
 msgstr ""
 
-#: talermerchantdemos/httpcommon/__init__.py:24
-#: talermerchantdemos/httpcommon/__init__.py:58
-msgid "Could not establish connection to backend"
-msgstr ""
-
-#: talermerchantdemos/httpcommon/__init__.py:30
-#: talermerchantdemos/httpcommon/__init__.py:62
-msgid "Could not parse response from backend"
-msgstr ""
-
-#: talermerchantdemos/httpcommon/__init__.py:36
-#: talermerchantdemos/httpcommon/__init__.py:66
-msgid "Backend returned error status"
-msgstr ""
-
-#: talermerchantdemos/landing/landing.py:197
-#: talermerchantdemos/survey/survey.py:179
-msgid "HTTP method not allowed for this page"
-msgstr ""
-
-#: talermerchantdemos/survey/templates/base.html.j2:20
-msgid "GNU Taler Demo: Survey"
-msgstr ""
-
-#: talermerchantdemos/survey/templates/base.html.j2:32
-msgid "Survey"
-msgstr ""
-
-#: talermerchantdemos/survey/templates/base.html.j2:34
-msgid "This page demonstrates how to tip visitors for completing small tasks."
-msgstr ""
-
-#: talermerchantdemos/survey/templates/base.html.j2:35
-msgid ""
-"Tipping is a way for offer cash rewards that go directly into a user's "
-"wallet."
-msgstr ""
-
-#: talermerchantdemos/survey/templates/index.html.j2:6
-msgid ""
-"Please participate in our survey about payment systems and receive a tip "
-"in return."
-msgstr ""
-
-#: talermerchantdemos/survey/templates/index.html.j2:12
-msgid "Which payment system do you prefer?"
-msgstr ""
-
-#: talermerchantdemos/survey/templates/index.html.j2:23
-msgid "Submit Survey"
-msgstr ""
-
-#: talermerchantdemos/templates/landing-base.html.j2:20
-msgid "GNU Taler Demo: Introduction"
-msgstr ""
-
-#: talermerchantdemos/templates/landing-base.html.j2:34
+#: talermerchantdemos/templates/landing-base.html.j2:7
 msgid "This is the GNU Taler demo."
 msgstr ""
 
-#: talermerchantdemos/templates/landing-base.html.j2:35
+#: talermerchantdemos/templates/landing-base.html.j2:8
 msgid "Here you can try out the GNU Taler payment system using a toy currency."
 msgstr ""
 
@@ -555,8 +489,8 @@ msgstr ""
 #: talermerchantdemos/templates/landing-index.html.j2:59
 msgid ""
 "You can see the wire transfers from the escrow account of the exchange to"
-" the merchants on the <a href=\"{bank}/public-accounts\">public accounts "
-"page</a> of the bank."
+" the merchants on the <a href=\"{bank}\">public accounts page</a> of the "
+"bank."
 msgstr ""
 
 #: talermerchantdemos/templates/landing-index.html.j2:60
@@ -591,6 +525,34 @@ msgstr ""
 msgid "Let us know what you think by <a href=\"{link}\">contacting us</a>."
 msgstr ""
 
+#: talermerchantdemos/templates/survey-base.html.j2:6
+msgid "Survey"
+msgstr ""
+
+#: talermerchantdemos/templates/survey-base.html.j2:8
+msgid "This page demonstrates how to tip visitors for completing small tasks."
+msgstr ""
+
+#: talermerchantdemos/templates/survey-base.html.j2:9
+msgid ""
+"Tipping is a way for offer cash rewards that go directly into a user's "
+"wallet."
+msgstr ""
+
+#: talermerchantdemos/templates/survey-index.html.j2:6
+msgid ""
+"Please participate in our survey about payment systems and receive a tip "
+"in return."
+msgstr ""
+
+#: talermerchantdemos/templates/survey-index.html.j2:12
+msgid "Which payment system do you prefer?"
+msgstr ""
+
+#: talermerchantdemos/templates/survey-index.html.j2:23
+msgid "Submit Survey"
+msgstr ""
+
 #~ msgid "English [en]"
 #~ msgstr ""
 
@@ -603,3 +565,35 @@ msgstr ""
 #~ msgid "Swedish [sv]"
 #~ msgstr ""
 
+#~ msgid "GNU Taler Demo: Essay Shop"
+#~ msgstr ""
+
+#~ msgid "Taler Demo"
+#~ msgstr ""
+
+#~ msgid ""
+#~ "You can get free, virtual money to"
+#~ " buy articles on this page at "
+#~ "the <a href=\"{}\")\">bank</a>"
+#~ msgstr ""
+
+#~ msgid "Back-office"
+#~ msgstr ""
+
+#~ msgid "GNU Taler Demo: Donations"
+#~ msgstr ""
+
+#~ msgid "GNU Taler Demo: Survey"
+#~ msgstr ""
+
+#~ msgid "GNU Taler Demo: Introduction"
+#~ msgstr ""
+
+#~ msgid ""
+#~ "You can see the wire transfers "
+#~ "from the escrow account of the "
+#~ "exchange to the merchants on the "
+#~ "<a href=\"{bank}/public-accounts\">public accounts"
+#~ " page</a> of the bank."
+#~ msgstr ""
+
diff --git a/translations/zh_Hant/LC_MESSAGES/messages.mo 
b/translations/zh_Hant/LC_MESSAGES/messages.mo
index 2f9ebbb..7995095 100644
Binary files a/translations/zh_Hant/LC_MESSAGES/messages.mo and 
b/translations/zh_Hant/LC_MESSAGES/messages.mo differ
diff --git a/translations/zh_Hant/LC_MESSAGES/messages.po 
b/translations/zh_Hant/LC_MESSAGES/messages.po
index 4f1d4ca..732ef48 100644
--- a/translations/zh_Hant/LC_MESSAGES/messages.po
+++ b/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: 2021-03-12 18:42+0100\n"
+"POT-Creation-Date: 2021-05-11 09:13+0200\n"
 "PO-Revision-Date: 2021-04-10 10:05+0000\n"
 "Last-Translator: Ting-Yi Fu <futingyi0215@gmail.com>\n"
 "Language: zh_Hant\n"
@@ -19,174 +19,188 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Generated-By: Babel 2.9.0\n"
 
-#: talermerchantdemos/blog/blog.py:114
-#: talermerchantdemos/donations/donations.py:157
-#: talermerchantdemos/landing/landing.py:117
-#: talermerchantdemos/survey/survey.py:110
+#: talermerchantdemos/blog/blog.py:126
+#: talermerchantdemos/donations/donations.py:139
+#: talermerchantdemos/landing/landing.py:93
+#: talermerchantdemos/survey/survey.py:100
 msgid "Internal error"
 msgstr "內部錯誤"
 
-#: talermerchantdemos/blog/blog.py:180
+#: talermerchantdemos/blog/blog.py:186
 msgid "Cannot refund unpaid article"
 msgstr "無法退款未付款項目"
 
-#: talermerchantdemos/blog/blog.py:186
+#: talermerchantdemos/blog/blog.py:193
 msgid "Article is not anymore refundable"
 msgstr "此項目已無法退款"
 
-#: talermerchantdemos/blog/blog.py:217
+#: talermerchantdemos/blog/blog.py:229
 #, fuzzy
 msgid "You did not pay for this article (nice try!)"
 msgstr "您並沒有為此項目付款(可惜沒成功!)"
 
-#: talermerchantdemos/blog/blog.py:223
+#: talermerchantdemos/blog/blog.py:234
 #, fuzzy
 msgid "Item not refundable (anymore)"
 msgstr "此項目無法退款(已無法)"
 
-#: talermerchantdemos/blog/blog.py:248
+#: talermerchantdemos/blog/blog.py:260
 msgid "Internal error: Files for article ({}) not found."
 msgstr "內部錯誤: 找不到此項目({})的檔案。"
 
-#: talermerchantdemos/blog/blog.py:253
+#: talermerchantdemos/blog/blog.py:267
 #, fuzzy
 msgid "Supplemental file ({}) for article ({}) not found."
 msgstr "找不到項目({})的補充文件({})。"
 
-#: talermerchantdemos/blog/blog.py:326 talermerchantdemos/blog/blog.py:339
+#: talermerchantdemos/blog/blog.py:343 talermerchantdemos/blog/blog.py:357
 #, fuzzy
 msgid "Direct access forbidden"
 msgstr "不允許直接存取"
 
-#: talermerchantdemos/blog/blog.py:405
+#: talermerchantdemos/blog/blog.py:413
 #, fuzzy
 msgid "Internal server error"
 msgstr "內部伺服器錯誤"
 
-#: talermerchantdemos/blog/blog.py:412
-#: talermerchantdemos/donations/donations.py:323
-#: talermerchantdemos/landing/landing.py:189
-#: talermerchantdemos/survey/survey.py:171
+#: talermerchantdemos/blog/blog.py:421
+#: talermerchantdemos/donations/donations.py:282
+#: talermerchantdemos/landing/landing.py:166
+#: talermerchantdemos/survey/survey.py:167
 msgid "Page not found"
 msgstr "找不到此頁面"
 
-#: talermerchantdemos/blog/templates/article_frame.html.j2:9
+#: talermerchantdemos/donations/donations.py:125
+msgid "parameter '{}' required"
+msgstr "需要'{}'參數"
+
+#: talermerchantdemos/httpcommon/__init__.py:48
+#: talermerchantdemos/httpcommon/__init__.py:84
+msgid "Could not establish connection to backend"
+msgstr "無法建立後台連線"
+
+#: talermerchantdemos/httpcommon/__init__.py:54
+#: talermerchantdemos/httpcommon/__init__.py:89
+#, fuzzy
+msgid "Could not parse response from backend"
+msgstr "無法解析後台回覆"
+
+#: talermerchantdemos/httpcommon/__init__.py:59
+#: talermerchantdemos/httpcommon/__init__.py:92
+#, fuzzy
+msgid "Backend returned error status"
+msgstr "後台回傳錯誤狀態"
+
+#: talermerchantdemos/landing/landing.py:174
+#: talermerchantdemos/survey/survey.py:175
+#, fuzzy
+msgid "HTTP method not allowed for this page"
+msgstr "HTTP方法不被此頁面允許"
+
+#: talermerchantdemos/templates/blog-article-frame.html.j2:11
+#: talermerchantdemos/templates/blog-article-frame.html.j2:16
 #, fuzzy
 msgid "Taler allows merchants to offer refunds to customers."
 msgstr "Taler使得商家可以提供退款給顧客。"
 
-#: talermerchantdemos/blog/templates/article_frame.html.j2:10
+#: talermerchantdemos/templates/blog-article-frame.html.j2:12
 msgid ""
 "You can <a href=\"{url}\">request a refund</a> within the first hour "
 "after buying this article."
 msgstr "您可以再購買此文章的一個小時內 <a href=\"{url}\">要求退款</a>。"
 
-#: talermerchantdemos/blog/templates/base.html.j2:23
-msgid "GNU Taler Demo: Essay Shop"
-msgstr "GNU Taler 演示: 文章商店"
-
-#: talermerchantdemos/blog/templates/base.html.j2:34
-#: talermerchantdemos/donations/templates/base.html.j2:31
-#: talermerchantdemos/survey/templates/base.html.j2:31
-msgid "Taler Demo"
-msgstr "Taler 演示"
+#: talermerchantdemos/templates/blog-article-frame.html.j2:17
+#, fuzzy
+msgid "This article can't be refunded anymore."
+msgstr "此項目無法退款(已無法)"
 
-#: talermerchantdemos/blog/templates/base.html.j2:35
+#: talermerchantdemos/templates/blog-base.html.j2:9
 msgid "Essay shop"
 msgstr "文章商店"
 
-#: talermerchantdemos/blog/templates/base.html.j2:37
+#: talermerchantdemos/templates/blog-base.html.j2:11
 msgid "On this page you can buy articles using an imaginary currency."
 msgstr "您可以使用虛擬貨幣在此頁面購買文章。"
 
-#: talermerchantdemos/blog/templates/base.html.j2:38
+#: talermerchantdemos/templates/blog-base.html.j2:12
 msgid ""
 "The articles are chapters from Richard Stallman's book &quot;Free "
 "Software, Free Society&quot;."
 msgstr "這些文章是Richard Stallman所寫的書裡面的篇章 &quot;Free Software, Free 
Society&quot;。"
 
-#: talermerchantdemos/blog/templates/base.html.j2:39
+#: talermerchantdemos/templates/blog-base.html.j2:13
 #, fuzzy
 msgid ""
 "The book is <a href=\"{shop}\">published by the FSF</a> and available "
 "gratis at <a href=\"{gnu}\">gnu.org</a>."
 msgstr "這本書由 <a href=\"{shop}\">FSF出版,</a> 並可於<a 
href=\"{gnu}\">gnu.org免費取得</a>"
 
-#: talermerchantdemos/blog/templates/confirm_refund.html.j2:3
+#: talermerchantdemos/templates/blog-confirm-refund.html.j2:3
 msgid "Confirm refund request for article"
 msgstr "確認申請項目退款"
 
-#: talermerchantdemos/blog/templates/confirm_refund.html.j2:7
+#: talermerchantdemos/templates/blog-confirm-refund.html.j2:7
 #, fuzzy
 msgid "Do you want to get a refund for the article <em>{name}</em>?"
 msgstr "您想為商品<em>{name}</em>退款嗎?"
 
-#: talermerchantdemos/blog/templates/confirm_refund.html.j2:8
+#: talermerchantdemos/templates/blog-confirm-refund.html.j2:8
 msgid ""
 "In this demonstration, refunds will be automatically approved by the "
 "merchant."
 msgstr "在這個demo中,退款會由商家自動批准。"
 
-#: talermerchantdemos/blog/templates/confirm_refund.html.j2:9
+#: talermerchantdemos/templates/blog-confirm-refund.html.j2:9
 msgid ""
 "After you have obtained a refund, you will not be able to read the "
 "article anymore."
 msgstr "在獲得退款之後,您將無法再次閱讀此文章。"
 
-#: talermerchantdemos/blog/templates/confirm_refund.html.j2:15
+#: talermerchantdemos/templates/blog-confirm-refund.html.j2:15
 #, fuzzy
 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 "您只能透過使用當初購買文章所使用的錢包獲取退款。"
 
-#: talermerchantdemos/blog/templates/confirm_refund.html.j2:21
+#: talermerchantdemos/templates/blog-confirm-refund.html.j2:21
 msgid "Request refund"
 msgstr "要求退款"
 
-#: talermerchantdemos/blog/templates/error.html.j2:3
-#: talermerchantdemos/donations/templates/error.html.j2:3
-#: talermerchantdemos/survey/templates/error.html.j2:3
+#: talermerchantdemos/templates/blog-error.html.j2:3
+#: talermerchantdemos/templates/donations-error.html.j2:3
 #: talermerchantdemos/templates/landing-error.html.j2:3
+#: talermerchantdemos/templates/survey-error.html.j2:3
 #, fuzzy
 msgid "Error encountered"
 msgstr "發生錯誤"
 
-#: talermerchantdemos/blog/templates/error.html.j2:9
-#: talermerchantdemos/donations/templates/error.html.j2:9
-#: talermerchantdemos/survey/templates/error.html.j2:9
+#: talermerchantdemos/templates/blog-error.html.j2:9
+#: talermerchantdemos/templates/donations-error.html.j2:9
+#: talermerchantdemos/templates/survey-error.html.j2:9
 msgid "The backend returned status code {code}."
 msgstr "後端回傳狀態碼 {code}。"
 
-#: talermerchantdemos/blog/templates/error.html.j2:14
-#: talermerchantdemos/donations/templates/error.html.j2:14
-#: talermerchantdemos/survey/templates/error.html.j2:14
+#: talermerchantdemos/templates/blog-error.html.j2:14
+#: talermerchantdemos/templates/donations-error.html.j2:14
+#: talermerchantdemos/templates/survey-error.html.j2:14
 #, fuzzy
 msgid "Backend response:"
 msgstr "後端回應:"
 
-#: talermerchantdemos/blog/templates/error.html.j2:19
-#: talermerchantdemos/donations/templates/error.html.j2:19
-#: talermerchantdemos/survey/templates/error.html.j2:19
+#: talermerchantdemos/templates/blog-error.html.j2:19
+#: talermerchantdemos/templates/donations-error.html.j2:19
 #: talermerchantdemos/templates/landing-error.html.j2:8
+#: talermerchantdemos/templates/survey-error.html.j2:19
 #, fuzzy
 msgid "Stack trace:"
 msgstr "堆疊追蹤:"
 
-#: talermerchantdemos/blog/templates/footer.html.j2:5
-#: talermerchantdemos/donations/templates/footer.html.j2:5
-#: talermerchantdemos/survey/templates/footer.html.j2:5
-#: talermerchantdemos/templates/footer.html.j2:5
-msgid ""
-"You can learn more about GNU Taler on our main <a "
-"href=\"{site}\">website</a>."
-msgstr "您可以從我們的主要 <a href=\"{site}\">網站</a>深入了解GNU Taler。"
-
-#: talermerchantdemos/blog/templates/index.html.j2:3
+#: talermerchantdemos/templates/blog-index.html.j2:3
 msgid "Essay Shop: Free Software, Free Society"
 msgstr "文章商店: Free Software, Free Society"
 
-#: talermerchantdemos/blog/templates/index.html.j2:5
+#: talermerchantdemos/templates/blog-index.html.j2:5
 msgid ""
 "This is the latest edition of <cite>Free Software, Free Society: Selected"
 " Essays of Richard M. Stallman.</cite>"
@@ -194,7 +208,7 @@ msgstr ""
 "這是最新版本的<cite>Free Software, Free Society: Selected Essays of Richard M. "
 "Stallman.</cite>"
 
-#: talermerchantdemos/blog/templates/index.html.j2:13
+#: talermerchantdemos/templates/blog-index.html.j2:13
 #, fuzzy
 msgid ""
 "Verbatim copying and distribution of this entire book are permitted "
@@ -203,129 +217,109 @@ msgid ""
 "this book from the original English into another language provided the "
 "translation has been approved by the Free Software Foundation and the "
 "copyright notice and this permission notice are preserved on all copies."
-msgstr ""
-"只要保留本通知、無需使用費,整本書允許被透過任何媒介在全世界範圍內被逐字複製和分發。此書被免費軟體基金會批准且所有副本保留版權聲明與許可通知的內容被許可從"
-"原文英文翻譯到另一個語言並複製、分發。"
+msgstr 
"只要保留本通知、無需使用費,整本書允許被透過任何媒介在全世界範圍內被逐字複製和分發。此書被免費軟體基金會批准且所有副本保留版權聲明與許可通知的內容被許可從原文英文翻譯到另一個語言並複製、分發。"
 
-#: talermerchantdemos/blog/templates/index.html.j2:18
+#: talermerchantdemos/templates/blog-index.html.j2:18
 msgid "Chapters"
 msgstr "章節"
 
-#: talermerchantdemos/blog/templates/index.html.j2:21
+#: talermerchantdemos/templates/blog-index.html.j2:20
 msgid "Click on an individual chapter to to purchase it with GNU Taler."
 msgstr "點選並使用GNU Taler來購買特定章節。"
 
-#: talermerchantdemos/blog/templates/index.html.j2:22
+#: talermerchantdemos/templates/blog-index.html.j2:21
+#, fuzzy
 msgid ""
 "You can get free, virtual money to buy articles on this page at the <a "
-"href=\"{}\")\">bank</a>"
+"href=\"{}\")\">bank</a>."
 msgstr "您可以在<a href=\"{}\")\">銀行</a>獲得免費的、虛擬的貨幣以在此頁面購買文章"
 
-#: talermerchantdemos/blog/templates/index.html.j2:30
+#: talermerchantdemos/templates/blog-index.html.j2:28
 msgid "Pay to read more..."
 msgstr "付款以閱讀更多..."
 
-#: talermerchantdemos/blog/templates/index.html.j2:33
+#: talermerchantdemos/templates/blog-index.html.j2:31
 msgid "No articles available in this language."
 msgstr "沒有此以語言撰寫的文章。"
 
-#: talermerchantdemos/blog/templates/menu.html.j2:6
-#: talermerchantdemos/donations/templates/menu.html.j2:6
-#: talermerchantdemos/survey/templates/menu.html.j2:6
-#: talermerchantdemos/templates/landing-base.html.j2:32
-#: talermerchantdemos/templates/menu.html.j2:6
+#: talermerchantdemos/templates/common-base.html.j2:20
+#, fuzzy
+msgid "GNU Taler Demo"
+msgstr "Taler 演示"
+
+#: talermerchantdemos/templates/common-base.html.j2:44
+#: talermerchantdemos/templates/landing-base.html.j2:5
 msgid "Introduction"
 msgstr "簡介"
 
-#: talermerchantdemos/blog/templates/menu.html.j2:9
-#: talermerchantdemos/donations/templates/menu.html.j2:9
-#: talermerchantdemos/survey/templates/menu.html.j2:9
-#: talermerchantdemos/templates/menu.html.j2:9
+#: talermerchantdemos/templates/common-base.html.j2:47
 msgid "Bank"
 msgstr "銀行"
 
-#: talermerchantdemos/blog/templates/menu.html.j2:12
-#: talermerchantdemos/donations/templates/menu.html.j2:12
-#: talermerchantdemos/survey/templates/menu.html.j2:12
-#: talermerchantdemos/templates/menu.html.j2:12
+#: talermerchantdemos/templates/common-base.html.j2:50
 msgid "Essay Shop"
 msgstr "論文商店"
 
-#: talermerchantdemos/blog/templates/menu.html.j2:15
-#: talermerchantdemos/donations/templates/base.html.j2:32
-#: talermerchantdemos/donations/templates/menu.html.j2:15
-#: talermerchantdemos/survey/templates/menu.html.j2:15
-#: talermerchantdemos/templates/menu.html.j2:15
+#: talermerchantdemos/templates/common-base.html.j2:53
+#: talermerchantdemos/templates/donations-base.html.j2:6
 msgid "Donations"
 msgstr "捐款"
 
-#: talermerchantdemos/blog/templates/menu.html.j2:18
-#: talermerchantdemos/donations/templates/menu.html.j2:18
-#: talermerchantdemos/survey/templates/menu.html.j2:18
-#: talermerchantdemos/templates/menu.html.j2:18
+#: talermerchantdemos/templates/common-base.html.j2:56
 msgid "Tipping/Survey"
 msgstr "小費/調查"
 
-#: talermerchantdemos/blog/templates/menu.html.j2:21
-#: talermerchantdemos/donations/templates/menu.html.j2:21
-#: talermerchantdemos/survey/templates/menu.html.j2:21
-#: talermerchantdemos/templates/menu.html.j2:21
-msgid "Back-office"
-msgstr "後台"
-
-#: talermerchantdemos/donations/donations.py:143
-msgid "parameter '{}' required"
-msgstr "需要'{}'參數"
-
-#: talermerchantdemos/donations/templates/base.html.j2:20
-msgid "GNU Taler Demo: Donations"
-msgstr "GNU Taler 演示: 捐款"
+#: talermerchantdemos/templates/common-base.html.j2:85
+msgid ""
+"You can learn more about GNU Taler on our main <a "
+"href=\"{site}\">website</a>."
+msgstr "您可以從我們的主要 <a href=\"{site}\">網站</a>深入了解GNU Taler。"
 
-#: talermerchantdemos/donations/templates/base.html.j2:34
+#: talermerchantdemos/templates/donations-base.html.j2:8
 msgid "This is the donation page."
 msgstr "這是捐款頁面。"
 
-#: talermerchantdemos/donations/templates/base.html.j2:35
+#: talermerchantdemos/templates/donations-base.html.j2:9
 msgid ""
 "Using this page you can make donations in {currency} to Free Software "
 "projects."
 msgstr "您可以透過此頁面使用{currency}來捐款給無償軟體專案。"
 
-#: talermerchantdemos/donations/templates/checkout.html.j2:5
+#: talermerchantdemos/templates/donations-checkout.html.j2:5
 msgid "Select your payment method"
 msgstr "請選取您的付款方式"
 
-#: talermerchantdemos/donations/templates/checkout.html.j2:9
+#: talermerchantdemos/templates/donations-checkout.html.j2:9
 msgid "This is an example for a \"checkout\" page of a Web shop."
 msgstr "這是一個網路商店的\"付款\"頁面範例。"
 
-#: talermerchantdemos/donations/templates/checkout.html.j2:10
+#: talermerchantdemos/templates/donations-checkout.html.j2:10
 #, fuzzy
 msgid ""
 "On the previous page, you have created the shopping cart and decided "
 "which product to buy (i.e. which project to donate KUDOS to)."
 msgstr "您已在前一個頁面創建了一個購物車並決定將購入的產品 (範例: 要捐款KUDOS給哪個專案)。"
 
-#: talermerchantdemos/donations/templates/checkout.html.j2:11
+#: talermerchantdemos/templates/donations-checkout.html.j2:11
 #, fuzzy
 msgid ""
 "As Taler is not yet universally used, we expect merchants will offer "
 "various payment options."
 msgstr "由於Taler的使用尚未普及,我們期望商家會提供各種付款方式。"
 
-#: talermerchantdemos/donations/templates/checkout.html.j2:12
+#: talermerchantdemos/templates/donations-checkout.html.j2:12
 #, fuzzy
 msgid "To continue with the demo, select the &quot;Taler&quot; payment option."
 msgstr "請選擇 &quot;Taler&quot;付款選項以繼續進行demo。"
 
-#: talermerchantdemos/donations/templates/checkout.html.j2:17
+#: talermerchantdemos/templates/donations-checkout.html.j2:17
 msgid ""
 "Note that you must select Taler here for the demo to continue, as the "
 "other payment options are just placeholders and not really working in the"
 " demonstration."
 msgstr "請注意,您必須在此處選擇Taler來繼續demo的進行,因為其他的支付選項僅為佔位符、無法在demo中運作。"
 
-#: talermerchantdemos/donations/templates/checkout.html.j2:18
+#: talermerchantdemos/templates/donations-checkout.html.j2:18
 #, fuzzy
 msgid ""
 "It would be possible to ask the user to make this choice already on the "
@@ -333,16 +327,16 @@ msgid ""
 "to keep each step as simple as possible."
 msgstr "可以要求使用者在前一頁(使用購物車)做出此選擇;我們只是分開了兩個步驟,以保持每一步儘可能簡單。"
 
-#: talermerchantdemos/donations/templates/checkout.html.j2:44
+#: talermerchantdemos/templates/donations-checkout.html.j2:44
 #, fuzzy
 msgid "Confirm selection"
 msgstr "確認選擇的項目"
 
-#: talermerchantdemos/donations/templates/fulfillment.html.j2:4
+#: talermerchantdemos/templates/donations-fulfillment.html.j2:4
 msgid "Donation Receipt"
 msgstr "捐款收據"
 
-#: talermerchantdemos/donations/templates/fulfillment.html.j2:7
+#: talermerchantdemos/templates/donations-fulfillment.html.j2:7
 #, fuzzy
 msgid ""
 "Thank you, <strong>{donor}</strong>, for donating "
@@ -351,53 +345,53 @@ msgstr ""
 "謝謝您,<strong>{donor}</strong>捐獻了<strong>{amount}</strong> 予 "
 "<strong>{receiver}</strong>。"
 
-#: talermerchantdemos/donations/templates/fulfillment.html.j2:12
+#: talermerchantdemos/templates/donations-fulfillment.html.j2:12
 msgid ""
 "Please keep the order identifier <strong>{id}</strong> as a receipt for "
 "your donation."
 msgstr "請保留訂單識別號碼 <strong>{id}</strong>做為您捐款的收據。"
 
-#: talermerchantdemos/donations/templates/fulfillment.html.j2:13
+#: talermerchantdemos/templates/donations-fulfillment.html.j2:13
 msgid ""
 "You can show other people that you donated by sharing <a "
 "href=\"{link}\">this link</a> with them."
 msgstr "您可以分享 <a href=\"{link}\">此連結</a>以展示您的捐款予他人。"
 
-#: talermerchantdemos/donations/templates/fulfillment.html.j2:19
+#: talermerchantdemos/templates/donations-fulfillment.html.j2:19
 msgid "You can always make <a href=\"{link}\">another donation</a>."
 msgstr "您隨時可以<a href=\"{link}\">捐款</a>。"
 
-#: talermerchantdemos/donations/templates/index.html.j2:4
+#: talermerchantdemos/templates/donations-index.html.j2:4
 msgid "Donate to Free Software projects"
 msgstr "捐款給無償軟體專案"
 
-#: talermerchantdemos/donations/templates/index.html.j2:8
+#: talermerchantdemos/templates/donations-index.html.j2:8
 #, fuzzy
 msgid ""
 "This donations website shows the user experience for donations with GNU "
 "Taler."
 msgstr "這個捐款網頁展示了與GNU Taler捐款的顧客體驗。"
 
-#: talermerchantdemos/donations/templates/index.html.j2:9
+#: talermerchantdemos/templates/donations-index.html.j2:9
 #, fuzzy
 msgid "You can make donations in an toy currency ({currency})"
 msgstr "您可以使用任何的toy currency ({currency})來捐款"
 
-#: talermerchantdemos/donations/templates/index.html.j2:16
+#: talermerchantdemos/templates/donations-index.html.j2:16
 msgid ""
 "Please select a project, the amount (*) of {currency} you wish to donate,"
 " and enter the donor's name that will appear on your receipt:"
 msgstr "請選擇一個專案、您欲捐款的金額 (*)以及貨幣{currency},並輸入顯示在收據上的捐款人姓名:"
 
-#: talermerchantdemos/donations/templates/index.html.j2:33
+#: talermerchantdemos/templates/donations-index.html.j2:33
 msgid "Anonymous Donor"
 msgstr "匿名捐款人"
 
-#: talermerchantdemos/donations/templates/index.html.j2:34
+#: talermerchantdemos/templates/donations-index.html.j2:34
 msgid "Donate!"
 msgstr "捐款!"
 
-#: talermerchantdemos/donations/templates/index.html.j2:39
+#: talermerchantdemos/templates/donations-index.html.j2:39
 #, fuzzy
 msgid ""
 "(*) To make the demo a bit more interesting, the 5 {currency} option is "
@@ -410,86 +404,25 @@ msgstr ""
 "(*)為了使演示更有趣一點,5 {貨幣}這個選項的錯誤為故意實施的:在顯示的表單中,商家將嘗試讓你捐贈 6 {貨幣] 而不是 5 {貨幣} "
 "。但是請不要擔心,在Taler wallet中,會提供機會給您檢查商家最終折扣表單。透過此種方式,Taler保護您、免於支付錯誤的款項。"
 
-#: talermerchantdemos/donations/templates/provider-not-supported.html.j2:4
+#: talermerchantdemos/templates/donations-provider-not-supported.html.j2:4
 #, fuzzy
 msgid "Payment Provider Not Supported"
 msgstr "不支援付款提供商"
 
-#: talermerchantdemos/donations/templates/provider-not-supported.html.j2:7
+#: talermerchantdemos/templates/donations-provider-not-supported.html.j2:7
 msgid "Unfortunately the selected payment provider is not supported in this 
demo."
 msgstr "很抱歉,您所選擇的付款提供商不支持此demo。"
 
-#: talermerchantdemos/donations/templates/provider-not-supported.html.j2:8
+#: talermerchantdemos/templates/donations-provider-not-supported.html.j2:8
 #, fuzzy
 msgid "Please go back and select &quot;Taler&quot;."
 msgstr "請回到先前步驟並選擇&quot;Taler&quot;。"
 
-#: talermerchantdemos/httpcommon/__init__.py:24
-#: talermerchantdemos/httpcommon/__init__.py:58
-msgid "Could not establish connection to backend"
-msgstr "無法建立後台連線"
-
-#: talermerchantdemos/httpcommon/__init__.py:30
-#: talermerchantdemos/httpcommon/__init__.py:62
-#, fuzzy
-msgid "Could not parse response from backend"
-msgstr "無法解析後台回覆"
-
-#: talermerchantdemos/httpcommon/__init__.py:36
-#: talermerchantdemos/httpcommon/__init__.py:66
-#, fuzzy
-msgid "Backend returned error status"
-msgstr "後台回傳錯誤狀態"
-
-#: talermerchantdemos/landing/landing.py:197
-#: talermerchantdemos/survey/survey.py:179
-#, fuzzy
-msgid "HTTP method not allowed for this page"
-msgstr "HTTP方法不被此頁面允許"
-
-#: talermerchantdemos/survey/templates/base.html.j2:20
-msgid "GNU Taler Demo: Survey"
-msgstr "GNU Taler Demo: 問卷調查"
-
-#: talermerchantdemos/survey/templates/base.html.j2:32
-msgid "Survey"
-msgstr "問卷調查"
-
-#: talermerchantdemos/survey/templates/base.html.j2:34
-#, fuzzy
-msgid "This page demonstrates how to tip visitors for completing small tasks."
-msgstr "這個頁面展示了如何給予小費予完成任務的訪客。"
-
-#: talermerchantdemos/survey/templates/base.html.j2:35
-#, fuzzy
-msgid ""
-"Tipping is a way for offer cash rewards that go directly into a user's "
-"wallet."
-msgstr "給予小費是一種直接提供現金回饋至使用者錢包的方式。"
-
-#: talermerchantdemos/survey/templates/index.html.j2:6
-msgid ""
-"Please participate in our survey about payment systems and receive a tip "
-"in return."
-msgstr "請參與我們關於支付系統的問卷調查以獲得小費。"
-
-#: talermerchantdemos/survey/templates/index.html.j2:12
-msgid "Which payment system do you prefer?"
-msgstr "請問您偏好哪個支付系統?"
-
-#: talermerchantdemos/survey/templates/index.html.j2:23
-msgid "Submit Survey"
-msgstr "提交問卷"
-
-#: talermerchantdemos/templates/landing-base.html.j2:20
-msgid "GNU Taler Demo: Introduction"
-msgstr "GNU Taler Demo: 介紹"
-
-#: talermerchantdemos/templates/landing-base.html.j2:34
+#: talermerchantdemos/templates/landing-base.html.j2:7
 msgid "This is the GNU Taler demo."
 msgstr "這是GNU Taler的demo。"
 
-#: talermerchantdemos/templates/landing-base.html.j2:35
+#: talermerchantdemos/templates/landing-base.html.j2:8
 #, fuzzy
 msgid "Here you can try out the GNU Taler payment system using a toy currency."
 msgstr "您可以在這裡嘗試使用toy currency來使用GNU Taler付款系統。"
@@ -595,7 +528,7 @@ msgstr ""
 msgid "The book is also available for free at <a href=\"{fsf}\">the FSF</a>."
 msgstr "您也可以在<a href=\"{fsf}\">the FSF</a>免費參閱此書。"
 
-#: talermerchantdemos/landing/templates/index.html.j2:50
+#: talermerchantdemos/templates/landing-index.html.j2:50
 #, fuzzy
 msgid ""
 "At the project <a href=\"{donations}\">donation website</a> you can show "
@@ -608,12 +541,12 @@ msgstr "在項目<a href=\"{donations}\">捐贈網站上,</a>您可以通過
 msgid "Step 4: Check money flow"
 msgstr "步驟四: 檢查資金流量"
 
-#: talermerchantdemos/landing/templates/index.html.j2:59
+#: talermerchantdemos/templates/landing-index.html.j2:59
 #, fuzzy
 msgid ""
 "You can see the wire transfers from the escrow account of the exchange to"
-" the merchants on the <a href=\"{bank}/public-accounts\">public accounts "
-"page</a> of the bank."
+" the merchants on the <a href=\"{bank}\">public accounts page</a> of the "
+"bank."
 msgstr "您可以在銀行的<a 
href=\"{bank}/public-accounts\">公共帳戶頁面</a>上看到從交易所的託管賬戶到商人的電匯。"
 
 #: talermerchantdemos/templates/landing-index.html.j2:60
@@ -653,6 +586,36 @@ msgstr "謝謝您對於Taler 和此示範的回饋。"
 msgid "Let us know what you think by <a href=\"{link}\">contacting us</a>."
 msgstr "<a href=\"{link}\">聯絡我們</a>並讓我們知道您的想法。"
 
+#: talermerchantdemos/templates/survey-base.html.j2:6
+msgid "Survey"
+msgstr "問卷調查"
+
+#: talermerchantdemos/templates/survey-base.html.j2:8
+#, fuzzy
+msgid "This page demonstrates how to tip visitors for completing small tasks."
+msgstr "這個頁面展示了如何給予小費予完成任務的訪客。"
+
+#: talermerchantdemos/templates/survey-base.html.j2:9
+#, fuzzy
+msgid ""
+"Tipping is a way for offer cash rewards that go directly into a user's "
+"wallet."
+msgstr "給予小費是一種直接提供現金回饋至使用者錢包的方式。"
+
+#: talermerchantdemos/templates/survey-index.html.j2:6
+msgid ""
+"Please participate in our survey about payment systems and receive a tip "
+"in return."
+msgstr "請參與我們關於支付系統的問卷調查以獲得小費。"
+
+#: talermerchantdemos/templates/survey-index.html.j2:12
+msgid "Which payment system do you prefer?"
+msgstr "請問您偏好哪個支付系統?"
+
+#: talermerchantdemos/templates/survey-index.html.j2:23
+msgid "Submit Survey"
+msgstr "提交問卷"
+
 #~ msgid "English [en]"
 #~ msgstr "英語 [en]"
 
@@ -665,3 +628,18 @@ msgstr "<a href=\"{link}\">聯絡我們</a>並讓我們知道您的想法。"
 #~ msgid "Swedish [sv]"
 #~ msgstr "瑞典語 [sv]"
 
+#~ msgid "GNU Taler Demo: Essay Shop"
+#~ msgstr "GNU Taler 演示: 文章商店"
+
+#~ msgid "Back-office"
+#~ msgstr "後台"
+
+#~ msgid "GNU Taler Demo: Donations"
+#~ msgstr "GNU Taler 演示: 捐款"
+
+#~ msgid "GNU Taler Demo: Survey"
+#~ msgstr "GNU Taler Demo: 問卷調查"
+
+#~ msgid "GNU Taler Demo: Introduction"
+#~ msgstr "GNU Taler Demo: 介紹"
+

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



reply via email to

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