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: debian: initial pack


From: gnunet
Subject: [taler-taler-merchant-demos] branch master updated: debian: initial packaging
Date: Wed, 04 Oct 2023 20:49:30 +0200

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

dold 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 d85ed11  debian: initial packaging
d85ed11 is described below

commit d85ed110b9224b061b9131edf30cf81bd2c5acaa
Author: Florian Dold <florian@dold.me>
AuthorDate: Wed Oct 4 20:49:22 2023 +0200

    debian: initial packaging
---
 debian/README                                      |  10 +
 debian/changelog                                   |   5 +
 debian/control                                     |  17 +
 debian/copyright                                   | 699 +++++++++++++++++++++
 debian/rules                                       |  45 ++
 .../translations/ar/LC_MESSAGES/messages.po        |  89 +--
 .../translations/de/LC_MESSAGES/messages.po        |  95 +--
 .../translations/en/LC_MESSAGES/messages.po        | 101 +--
 .../translations/es/LC_MESSAGES/messages.po        | 109 ++--
 .../translations/fr/LC_MESSAGES/messages.po        |  89 +--
 .../translations/hi/LC_MESSAGES/messages.po        | 101 +--
 .../translations/it/LC_MESSAGES/messages.po        | 105 ++--
 .../translations/ja/LC_MESSAGES/messages.po        |  89 +--
 .../translations/ko/LC_MESSAGES/messages.po        |  89 +--
 talermerchantdemos/translations/messages.pot       |  80 +--
 .../translations/pt/LC_MESSAGES/messages.po        |  89 +--
 .../translations/ru/LC_MESSAGES/messages.po        |  89 +--
 .../translations/sv/LC_MESSAGES/messages.po        |  89 +--
 .../translations/tr/LC_MESSAGES/messages.po        |  89 +--
 .../translations/zh_Hant/LC_MESSAGES/messages.po   |  89 +--
 20 files changed, 1568 insertions(+), 600 deletions(-)

diff --git a/debian/README b/debian/README
new file mode 100644
index 0000000..563c0f3
--- /dev/null
+++ b/debian/README
@@ -0,0 +1,10 @@
+This directory contains files required to build a debian package
+for taler-merchant-demos.
+
+This is NOT a 'clean' Debian package.
+
+$ ./bootstrap
+$ ./configure
+$ make DESTDIR=$PWD/mydest install
+$ dpkg-buildpackage -rfakeroot -b -uc -us
+
diff --git a/debian/changelog b/debian/changelog
new file mode 100644
index 0000000..5c0c380
--- /dev/null
+++ b/debian/changelog
@@ -0,0 +1,5 @@
+taler-merchant-demos (0.9.3) unstable; urgency=medium
+
+  * Starting to package for v0.9.3.
+
+ -- Florian Dold <dold@taler.net>  Wed, 04 Oct 2023 20:42:33 +0200
diff --git a/debian/control b/debian/control
new file mode 100644
index 0000000..66aae32
--- /dev/null
+++ b/debian/control
@@ -0,0 +1,17 @@
+Source: taler-merchant-demos
+Section: net
+Priority: optional
+Maintainer: Taler Systems SA <deb@taler.net>
+Uploaders: Christian Grothoff <grothoff@gnu.org>, Florian Dold <dold@taler.net>
+Build-Depends:
+ debhelper-compat (= 12),
+ unzip
+Standards-Version: 4.1.0
+Vcs-Git: https://git.taler.net/taler-merchant-demos.git
+Homepage: https://taler.net/
+
+Package: taler-merchant-demos
+Architecture: all
+         ${misc:Depends}
+Recommends: apache2 | nginx | httpd
+Description: Demo storefronts for the Taler merchant.
diff --git a/debian/copyright b/debian/copyright
new file mode 100644
index 0000000..555d608
--- /dev/null
+++ b/debian/copyright
@@ -0,0 +1,699 @@
+Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
+Upstream-Name: GNU Taler
+Upstream-Contact: Christian Grothoff <christian@grothoff.org>
+Source: https://taler.net/
+
+Files: *
+Copyright:
+ (C) 2013-2020 Taler Systems SA
+License: AGPL-3+
+Comment: Many contributors are mentioned in AUTHORS
+
+Files: debian/*
+Copyright:
+ (C) 2020 Christian Grothoff <grothoff@gnu.org>
+License: GPL-3+
+
+Files: debian/po/*
+Copyright:
+License: GPL-3+
+
+License: GPL-3+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+ .
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+ .
+ You should have received a copy of the GNU General Public License
+ along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ .
+ The complete text of the GNU General Public License
+ can be found in /usr/share/common-licenses/GPL-3 file.
+
+License: AGPL-3+
+                    GNU AFFERO GENERAL PUBLIC LICENSE
+                       Version 3, 19 November 2007
+ .
+ Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+ .
+                            Preamble
+ .
+ The GNU Affero General Public License is a free, copyleft license for
+ software and other kinds of works, specifically designed to ensure
+ cooperation with the community in the case of network server software.
+ .
+ The licenses for most software and other practical works are designed
+ to take away your freedom to share and change the works.  By contrast,
+ our General Public Licenses are intended to guarantee your freedom to
+ share and change all versions of a program--to make sure it remains free
+ software for all its users.
+ .
+  When we speak of free software, we are referring to freedom, not
+ price.  Our General Public Licenses are designed to make sure that you
+ have the freedom to distribute copies of free software (and charge for
+ them if you wish), that you receive source code or can get it if you
+ want it, that you can change the software or use pieces of it in new
+ free programs, and that you know you can do these things.
+ .
+  Developers that use our General Public Licenses protect your rights
+ with two steps: (1) assert copyright on the software, and (2) offer
+ you this License which gives you legal permission to copy, distribute
+ and/or modify the software.
+ .
+ A secondary benefit of defending all users' freedom is that
+ improvements made in alternate versions of the program, if they
+ receive widespread use, become available for other developers to
+ incorporate.  Many developers of free software are heartened and
+ encouraged by the resulting cooperation.  However, in the case of
+ software used on network servers, this result may fail to come about.
+ The GNU General Public License permits making a modified version and
+ letting the public access it on a server without ever releasing its
+ source code to the public.
+ .
+ The GNU Affero General Public License is designed specifically to
+ ensure that, in such cases, the modified source code becomes available
+ to the community.  It requires the operator of a network server to
+ provide the source code of the modified version running there to the
+ users of that server.  Therefore, public use of a modified version, on
+ a publicly accessible server, gives the public access to the source
+ code of the modified version.
+ .
+ An older license, called the Affero General Public License and
+ published by Affero, was designed to accomplish similar goals.  This is
+ a different license, not a version of the Affero GPL, but Affero has
+ released a new version of the Affero GPL which permits relicensing under
+ this license.
+ .
+ The precise terms and conditions for copying, distribution and
+ modification follow.
+ .
+                       TERMS AND CONDITIONS
+ .
+  0. Definitions.
+ .
+  "This License" refers to version 3 of the GNU Affero General Public License.
+ .
+  "Copyright" also means copyright-like laws that apply to other kinds of
+ works, such as semiconductor masks.
+ .
+ "The Program" refers to any copyrightable work licensed under this
+ License.  Each licensee is addressed as "you".  "Licensees" and
+ "recipients" may be individuals or organizations.
+ .
+ To "modify" a work means to copy from or adapt all or part of the work
+ in a fashion requiring copyright permission, other than the making of an
+ exact copy.  The resulting work is called a "modified version" of the
+ earlier work or a work "based on" the earlier work.
+ .
+ A "covered work" means either the unmodified Program or a work based
+ on the Program.
+ .
+ To "propagate" a work means to do anything with it that, without
+ permission, would make you directly or secondarily liable for
+ infringement under applicable copyright law, except executing it on a
+ computer or modifying a private copy.  Propagation includes copying,
+ distribution (with or without modification), making available to the
+ public, and in some countries other activities as well.
+ .
+ To "convey" a work means any kind of propagation that enables other
+ parties to make or receive copies.  Mere interaction with a user through
+ a computer network, with no transfer of a copy, is not conveying.
+ .
+ An interactive user interface displays "Appropriate Legal Notices"
+ to the extent that it includes a convenient and prominently visible
+ feature that (1) displays an appropriate copyright notice, and (2)
+ tells the user that there is no warranty for the work (except to the
+ extent that warranties are provided), that licensees may convey the
+ work under this License, and how to view a copy of this License.  If
+ the interface presents a list of user commands or options, such as a
+ menu, a prominent item in the list meets this criterion.
+ .
+ 1. Source Code.
+ .
+ The "source code" for a work means the preferred form of the work
+ for making modifications to it.  "Object code" means any non-source
+ form of a work.
+ .
+ A "Standard Interface" means an interface that either is an official
+ standard defined by a recognized standards body, or, in the case of
+ interfaces specified for a particular programming language, one that
+ is widely used among developers working in that language.
+ .
+ The "System Libraries" of an executable work include anything, other
+ than the work as a whole, that (a) is included in the normal form of
+ packaging a Major Component, but which is not part of that Major
+ Component, and (b) serves only to enable use of the work with that
+ Major Component, or to implement a Standard Interface for which an
+ implementation is available to the public in source code form.  A
+ "Major Component", in this context, means a major essential component
+ (kernel, window system, and so on) of the specific operating system
+ (if any) on which the executable work runs, or a compiler used to
+ produce the work, or an object code interpreter used to run it.
+ .
+ The "Corresponding Source" for a work in object code form means all
+ the source code needed to generate, install, and (for an executable
+ work) run the object code and to modify the work, including scripts to
+ control those activities.  However, it does not include the work's
+ System Libraries, or general-purpose tools or generally available free
+ programs which are used unmodified in performing those activities but
+ which are not part of the work.  For example, Corresponding Source
+ includes interface definition files associated with source files for
+ the work, and the source code for shared libraries and dynamically
+ linked subprograms that the work is specifically designed to require,
+ such as by intimate data communication or control flow between those
+ subprograms and other parts of the work.
+ .
+ The Corresponding Source need not include anything that users
+ can regenerate automatically from other parts of the Corresponding
+ Source.
+ .
+ The Corresponding Source for a work in source code form is that
+ same work.
+ .
+  2. Basic Permissions.
+ .
+  All rights granted under this License are granted for the term of
+ copyright on the Program, and are irrevocable provided the stated
+ conditions are met.  This License explicitly affirms your unlimited
+ permission to run the unmodified Program.  The output from running a
+ covered work is covered by this License only if the output, given its
+ content, constitutes a covered work.  This License acknowledges your
+ rights of fair use or other equivalent, as provided by copyright law.
+ .
+ You may make, run and propagate covered works that you do not
+ convey, without conditions so long as your license otherwise remains
+ in force.  You may convey covered works to others for the sole purpose
+ of having them make modifications exclusively for you, or provide you
+ with facilities for running those works, provided that you comply with
+ the terms of this License in conveying all material for which you do
+ not control copyright.  Those thus making or running the covered works
+ for you must do so exclusively on your behalf, under your direction
+ and control, on terms that prohibit them from making any copies of
+ your copyrighted material outside their relationship with you.
+ .
+ Conveying under any other circumstances is permitted solely under
+ the conditions stated below.  Sublicensing is not allowed; section 10
+ makes it unnecessary.
+ .
+  3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+ .
+ No covered work shall be deemed part of an effective technological
+ measure under any applicable law fulfilling obligations under article
+ 11 of the WIPO copyright treaty adopted on 20 December 1996, or
+ similar laws prohibiting or restricting circumvention of such
+ measures.
+ .
+ When you convey a covered work, you waive any legal power to forbid
+ circumvention of technological measures to the extent such circumvention
+ is effected by exercising rights under this License with respect to
+ the covered work, and you disclaim any intention to limit operation or
+ modification of the work as a means of enforcing, against the work's
+ users, your or third parties' legal rights to forbid circumvention of
+ technological measures.
+ .
+  4. Conveying Verbatim Copies.
+ .
+ You may convey verbatim copies of the Program's source code as you
+ receive it, in any medium, provided that you conspicuously and
+ appropriately publish on each copy an appropriate copyright notice;
+ keep intact all notices stating that this License and any
+ non-permissive terms added in accord with section 7 apply to the code;
+ keep intact all notices of the absence of any warranty; and give all
+ recipients a copy of this License along with the Program.
+ .
+ You may charge any price or no price for each copy that you convey,
+ and you may offer support or warranty protection for a fee.
+ .
+  5. Conveying Modified Source Versions.
+ .
+ You may convey a work based on the Program, or the modifications to
+ produce it from the Program, in the form of source code under the
+ terms of section 4, provided that you also meet all of these conditions:
+ .
+    a) The work must carry prominent notices stating that you modified
+    it, and giving a relevant date.
+ .
+    b) The work must carry prominent notices stating that it is
+    released under this License and any conditions added under section
+    7.  This requirement modifies the requirement in section 4 to
+    "keep intact all notices".
+ .
+    c) You must license the entire work, as a whole, under this
+    License to anyone who comes into possession of a copy.  This
+    License will therefore apply, along with any applicable section 7
+    additional terms, to the whole of the work, and all its parts,
+    regardless of how they are packaged.  This License gives no
+    permission to license the work in any other way, but it does not
+    invalidate such permission if you have separately received it.
+ .
+    d) If the work has interactive user interfaces, each must display
+    Appropriate Legal Notices; however, if the Program has interactive
+    interfaces that do not display Appropriate Legal Notices, your
+    work need not make them do so.
+ .
+ A compilation of a covered work with other separate and independent
+ works, which are not by their nature extensions of the covered work,
+ and which are not combined with it such as to form a larger program,
+ in or on a volume of a storage or distribution medium, is called an
+ "aggregate" if the compilation and its resulting copyright are not
+ used to limit the access or legal rights of the compilation's users
+ beyond what the individual works permit.  Inclusion of a covered work
+ in an aggregate does not cause this License to apply to the other
+ parts of the aggregate.
+ .
+  6. Conveying Non-Source Forms.
+ .
+ You may convey a covered work in object code form under the terms
+ of sections 4 and 5, provided that you also convey the
+ machine-readable Corresponding Source under the terms of this License,
+ in one of these ways:
+ .
+    a) Convey the object code in, or embodied in, a physical product
+    (including a physical distribution medium), accompanied by the
+    Corresponding Source fixed on a durable physical medium
+    customarily used for software interchange.
+ .
+    b) Convey the object code in, or embodied in, a physical product
+    (including a physical distribution medium), accompanied by a
+    written offer, valid for at least three years and valid for as
+    long as you offer spare parts or customer support for that product
+    model, to give anyone who possesses the object code either (1) a
+    copy of the Corresponding Source for all the software in the
+    product that is covered by this License, on a durable physical
+    medium customarily used for software interchange, for a price no
+    more than your reasonable cost of physically performing this
+    conveying of source, or (2) access to copy the
+    Corresponding Source from a network server at no charge.
+ .
+    c) Convey individual copies of the object code with a copy of the
+    written offer to provide the Corresponding Source.  This
+    alternative is allowed only occasionally and noncommercially, and
+    only if you received the object code with such an offer, in accord
+    with subsection 6b.
+ .
+    d) Convey the object code by offering access from a designated
+    place (gratis or for a charge), and offer equivalent access to the
+    Corresponding Source in the same way through the same place at no
+    further charge.  You need not require recipients to copy the
+    Corresponding Source along with the object code.  If the place to
+    copy the object code is a network server, the Corresponding Source
+    may be on a different server (operated by you or a third party)
+    that supports equivalent copying facilities, provided you maintain
+    clear directions next to the object code saying where to find the
+    Corresponding Source.  Regardless of what server hosts the
+    Corresponding Source, you remain obligated to ensure that it is
+    available for as long as needed to satisfy these requirements.
+ .
+    e) Convey the object code using peer-to-peer transmission, provided
+    you inform other peers where the object code and Corresponding
+    Source of the work are being offered to the general public at no
+    charge under subsection 6d.
+ .
+ A separable portion of the object code, whose source code is excluded
+ from the Corresponding Source as a System Library, need not be
+ included in conveying the object code work.
+ .
+ A "User Product" is either (1) a "consumer product", which means any
+ tangible personal property which is normally used for personal, family,
+ or household purposes, or (2) anything designed or sold for incorporation
+ into a dwelling.  In determining whether a product is a consumer product,
+ doubtful cases shall be resolved in favor of coverage.  For a particular
+  product received by a particular user, "normally used" refers to a
+ typical or common use of that class of product, regardless of the status
+ of the particular user or of the way in which the particular user
+ actually uses, or expects or is expected to use, the product.  A product
+ is a consumer product regardless of whether the product has substantial
+ commercial, industrial or non-consumer uses, unless such uses represent
+ the only significant mode of use of the product.
+ .
+ "Installation Information" for a User Product means any methods,
+ procedures, authorization keys, or other information required to install
+ and execute modified versions of a covered work in that User Product from
+ a modified version of its Corresponding Source.  The information must
+ suffice to ensure that the continued functioning of the modified object
+ code is in no case prevented or interfered with solely because
+ modification has been made.
+ .
+ If you convey an object code work under this section in, or with, or
+ specifically for use in, a User Product, and the conveying occurs as
+ part of a transaction in which the right of possession and use of the
+ User Product is transferred to the recipient in perpetuity or for a
+ fixed term (regardless of how the transaction is characterized), the
+ Corresponding Source conveyed under this section must be accompanied
+ by the Installation Information.  But this requirement does not apply
+ if neither you nor any third party retains the ability to install
+ modified object code on the User Product (for example, the work has
+ been installed in ROM).
+ .
+ The requirement to provide Installation Information does not include a
+ requirement to continue to provide support service, warranty, or updates
+ for a work that has been modified or installed by the recipient, or for
+ the User Product in which it has been modified or installed.  Access to a
+ network may be denied when the modification itself materially and
+ adversely affects the operation of the network or violates the rules and
+ protocols for communication across the network.
+ .
+ Corresponding Source conveyed, and Installation Information provided,
+ in accord with this section must be in a format that is publicly
+ documented (and with an implementation available to the public in
+ source code form), and must require no special password or key for
+ unpacking, reading or copying.
+ .
+  7. Additional Terms.
+ .
+ "Additional permissions" are terms that supplement the terms of this
+ License by making exceptions from one or more of its conditions.
+ Additional permissions that are applicable to the entire Program shall
+ be treated as though they were included in this License, to the extent
+ that they are valid under applicable law.  If additional permissions
+ apply only to part of the Program, that part may be used separately
+ under those permissions, but the entire Program remains governed by
+ this License without regard to the additional permissions.
+ .
+ When you convey a copy of a covered work, you may at your option
+ remove any additional permissions from that copy, or from any part of
+ it.  (Additional permissions may be written to require their own
+ removal in certain cases when you modify the work.)  You may place
+ additional permissions on material, added by you to a covered work,
+ for which you have or can give appropriate copyright permission.
+ .
+ Notwithstanding any other provision of this License, for material you
+ add to a covered work, you may (if authorized by the copyright holders of
+ that material) supplement the terms of this License with terms:
+ .
+    a) Disclaiming warranty or limiting liability differently from the
+    terms of sections 15 and 16 of this License; or
+ .
+    b) Requiring preservation of specified reasonable legal notices or
+    author attributions in that material or in the Appropriate Legal
+    Notices displayed by works containing it; or
+ .
+    c) Prohibiting misrepresentation of the origin of that material, or
+    requiring that modified versions of such material be marked in
+    reasonable ways as different from the original version; or
+ .
+    d) Limiting the use for publicity purposes of names of licensors or
+    authors of the material; or
+ .
+    e) Declining to grant rights under trademark law for use of some
+    trade names, trademarks, or service marks; or
+ .
+    f) Requiring indemnification of licensors and authors of that
+    material by anyone who conveys the material (or modified versions of
+    it) with contractual assumptions of liability to the recipient, for
+    any liability that these contractual assumptions directly impose on
+    those licensors and authors.
+ .
+ All other non-permissive additional terms are considered "further
+ restrictions" within the meaning of section 10.  If the Program as you
+ received it, or any part of it, contains a notice stating that it is
+ governed by this License along with a term that is a further
+ restriction, you may remove that term.  If a license document contains
+ a further restriction but permits relicensing or conveying under this
+ License, you may add to a covered work material governed by the terms
+ of that license document, provided that the further restriction does
+ not survive such relicensing or conveying.
+ .
+ If you add terms to a covered work in accord with this section, you
+ must place, in the relevant source files, a statement of the
+ additional terms that apply to those files, or a notice indicating
+ where to find the applicable terms.
+ .
+ Additional terms, permissive or non-permissive, may be stated in the
+ form of a separately written license, or stated as exceptions;
+ the above requirements apply either way.
+ .
+  8. Termination.
+ .
+ You may not propagate or modify a covered work except as expressly
+ provided under this License.  Any attempt otherwise to propagate or
+ modify it is void, and will automatically terminate your rights under
+ this License (including any patent licenses granted under the third
+ paragraph of section 11).
+ .
+ However, if you cease all violation of this License, then your
+ license from a particular copyright holder is reinstated (a)
+ provisionally, unless and until the copyright holder explicitly and
+ finally terminates your license, and (b) permanently, if the copyright
+ holder fails to notify you of the violation by some reasonable means
+ prior to 60 days after the cessation.
+ .
+ Moreover, your license from a particular copyright holder is
+ reinstated permanently if the copyright holder notifies you of the
+ violation by some reasonable means, this is the first time you have
+ received notice of violation of this License (for any work) from that
+ copyright holder, and you cure the violation prior to 30 days after
+ your receipt of the notice.
+ .
+ Termination of your rights under this section does not terminate the
+ licenses of parties who have received copies or rights from you under
+ this License.  If your rights have been terminated and not permanently
+ reinstated, you do not qualify to receive new licenses for the same
+ material under section 10.
+ .
+  9. Acceptance Not Required for Having Copies.
+ .
+ You are not required to accept this License in order to receive or
+ run a copy of the Program.  Ancillary propagation of a covered work
+ occurring solely as a consequence of using peer-to-peer transmission
+ to receive a copy likewise does not require acceptance.  However,
+ nothing other than this License grants you permission to propagate or
+ modify any covered work.  These actions infringe copyright if you do
+ not accept this License.  Therefore, by modifying or propagating a
+ covered work, you indicate your acceptance of this License to do so.
+ .
+  10. Automatic Licensing of Downstream Recipients.
+ .
+ Each time you convey a covered work, the recipient automatically
+ receives a license from the original licensors, to run, modify and
+ propagate that work, subject to this License.  You are not responsible
+ for enforcing compliance by third parties with this License.
+ .
+ An "entity transaction" is a transaction transferring control of an
+ organization, or substantially all assets of one, or subdividing an
+ organization, or merging organizations.  If propagation of a covered
+ work results from an entity transaction, each party to that
+ transaction who receives a copy of the work also receives whatever
+ licenses to the work the party's predecessor in interest had or could
+ give under the previous paragraph, plus a right to possession of the
+ Corresponding Source of the work from the predecessor in interest, if
+ the predecessor has it or can get it with reasonable efforts.
+ .
+  You may not impose any further restrictions on the exercise of the
+ rights granted or affirmed under this License.  For example, you may
+ not impose a license fee, royalty, or other charge for exercise of
+ rights granted under this License, and you may not initiate litigation
+ (including a cross-claim or counterclaim in a lawsuit) alleging that
+ any patent claim is infringed by making, using, selling, offering for
+ sale, or importing the Program or any portion of it.
+ .
+  11. Patents.
+ .
+ A "contributor" is a copyright holder who authorizes use under this
+ License of the Program or a work on which the Program is based.  The
+ work thus licensed is called the contributor's "contributor version".
+ .
+ A contributor's "essential patent claims" are all patent claims
+ owned or controlled by the contributor, whether already acquired or
+ hereafter acquired, that would be infringed by some manner, permitted
+ by this License, of making, using, or selling its contributor version,
+ but do not include claims that would be infringed only as a
+ consequence of further modification of the contributor version.  For
+ purposes of this definition, "control" includes the right to grant
+ patent sublicenses in a manner consistent with the requirements of
+ this License.
+ .
+ Each contributor grants you a non-exclusive, worldwide, royalty-free
+ patent license under the contributor's essential patent claims, to
+ make, use, sell, offer for sale, import and otherwise run, modify and
+ propagate the contents of its contributor version.
+ .
+ In the following three paragraphs, a "patent license" is any express
+ agreement or commitment, however denominated, not to enforce a patent
+ (such as an express permission to practice a patent or covenant not to
+ sue for patent infringement).  To "grant" such a patent license to a
+ party means to make such an agreement or commitment not to enforce a
+ patent against the party.
+ .
+ If you convey a covered work, knowingly relying on a patent license,
+ and the Corresponding Source of the work is not available for anyone
+ to copy, free of charge and under the terms of this License, through a
+ publicly available network server or other readily accessible means,
+ then you must either (1) cause the Corresponding Source to be so
+ available, or (2) arrange to deprive yourself of the benefit of the
+ patent license for this particular work, or (3) arrange, in a manner
+ consistent with the requirements of this License, to extend the patent
+ license to downstream recipients.  "Knowingly relying" means you have
+ actual knowledge that, but for the patent license, your conveying the
+ covered work in a country, or your recipient's use of the covered work
+ in a country, would infringe one or more identifiable patents in that
+ country that you have reason to believe are valid.
+ .
+ If, pursuant to or in connection with a single transaction or
+ arrangement, you convey, or propagate by procuring conveyance of, a
+ covered work, and grant a patent license to some of the parties
+ receiving the covered work authorizing them to use, propagate, modify
+ or convey a specific copy of the covered work, then the patent license
+ you grant is automatically extended to all recipients of the covered
+ work and works based on it.
+ .
+ A patent license is "discriminatory" if it does not include within
+ the scope of its coverage, prohibits the exercise of, or is
+ conditioned on the non-exercise of one or more of the rights that are
+ specifically granted under this License.  You may not convey a covered
+ work if you are a party to an arrangement with a third party that is
+ in the business of distributing software, under which you make payment
+ to the third party based on the extent of your activity of conveying
+ the work, and under which the third party grants, to any of the
+ parties who would receive the covered work from you, a discriminatory
+ patent license (a) in connection with copies of the covered work
+ conveyed by you (or copies made from those copies), or (b) primarily
+ for and in connection with specific products or compilations that
+ contain the covered work, unless you entered into that arrangement,
+ or that patent license was granted, prior to 28 March 2007.
+ .
+ Nothing in this License shall be construed as excluding or limiting
+ any implied license or other defenses to infringement that may
+ otherwise be available to you under applicable patent law.
+ .
+  12. No Surrender of Others' Freedom.
+ .
+ If conditions are imposed on you (whether by court order, agreement or
+ otherwise) that contradict the conditions of this License, they do not
+ excuse you from the conditions of this License.  If you cannot convey a
+ covered work so as to satisfy simultaneously your obligations under this
+ License and any other pertinent obligations, then as a consequence you may
+ not convey it at all.  For example, if you agree to terms that obligate you
+ to collect a royalty for further conveying from those to whom you convey
+ the Program, the only way you could satisfy both those terms and this
+ License would be to refrain entirely from conveying the Program.
+ .
+  13. Remote Network Interaction; Use with the GNU General Public License.
+ .
+ Notwithstanding any other provision of this License, if you modify the
+ Program, your modified version must prominently offer all users
+ interacting with it remotely through a computer network (if your version
+ supports such interaction) an opportunity to receive the Corresponding
+ Source of your version by providing access to the Corresponding Source
+ from a network server at no charge, through some standard or customary
+ means of facilitating copying of software.  This Corresponding Source
+ shall include the Corresponding Source for any work covered by version 3
+ of the GNU General Public License that is incorporated pursuant to the
+ following paragraph.
+ .
+ Notwithstanding any other provision of this License, you have
+ permission to link or combine any covered work with a work licensed
+ under version 3 of the GNU General Public License into a single
+ combined work, and to convey the resulting work.  The terms of this
+ License will continue to apply to the part which is the covered work,
+ but the work with which it is combined will remain governed by version
+ 3 of the GNU General Public License.
+ .
+ 14. Revised Versions of this License.
+ .
+ The Free Software Foundation may publish revised and/or new versions of
+ the GNU Affero General Public License from time to time.  Such new versions
+ will be similar in spirit to the present version, but may differ in detail to
+ address new problems or concerns.
+ .
+ Each version is given a distinguishing version number.  If the
+ Program specifies that a certain numbered version of the GNU Affero General
+ Public License "or any later version" applies to it, you have the
+ option of following the terms and conditions either of that numbered
+ version or of any later version published by the Free Software
+ Foundation.  If the Program does not specify a version number of the
+ GNU Affero General Public License, you may choose any version ever published
+ by the Free Software Foundation.
+ .
+ If the Program specifies that a proxy can decide which future
+ versions of the GNU Affero General Public License can be used, that proxy's
+ public statement of acceptance of a version permanently authorizes you
+ to choose that version for the Program.
+ .
+ Later license versions may give you additional or different
+ permissions.  However, no additional obligations are imposed on any
+ author or copyright holder as a result of your choosing to follow a
+ later version.
+ .
+  15. Disclaimer of Warranty.
+ .
+ THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
+ APPLICABLE LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+ HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
+ OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
+ THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
+ IS WITH YOU.  SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
+ ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+ .
+  16. Limitation of Liability.
+ .
+ IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+ WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
+ THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
+ GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
+ USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
+ DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
+ PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
+ EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
+ SUCH DAMAGES.
+ .
+  17. Interpretation of Sections 15 and 16.
+ .
+ If the disclaimer of warranty and limitation of liability provided
+ above cannot be given local legal effect according to their terms,
+ reviewing courts shall apply local law that most closely approximates
+ an absolute waiver of all civil liability in connection with the
+ Program, unless a warranty or assumption of liability accompanies a
+ copy of the Program in return for a fee.
+ .
+                     END OF TERMS AND CONDITIONS
+ .
+            How to Apply These Terms to Your New Programs
+ .
+ If you develop a new program, and you want it to be of the greatest
+ possible use to the public, the best way to achieve this is to make it
+ free software which everyone can redistribute and change under these terms.
+ .
+ To do so, attach the following notices to the program.  It is safest
+ to attach them to the start of each source file to most effectively
+ state the exclusion of warranty; and each file should have at least
+ the "copyright" line and a pointer to where the full notice is found.
+ .
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+ .
+    This program is free software: you can redistribute it and/or modify
+    it under the terms of the GNU Affero General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+ .
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU Affero General Public License for more details.
+ .
+    You should have received a copy of the GNU Affero General Public License
+    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ .
+ Also add information on how to contact you by electronic and paper mail.
+ .
+ If your software can interact with users remotely through a computer
+ network, you should also make sure that it provides a way for users to
+ get its source.  For example, if your program is a web application, its
+ interface could display a "Source" link that leads users to an archive
+ of the code.  There are many ways you could offer source, and different
+ solutions will be better for different programs; see section 13 for the
+ specific requirements.
+ .
+ You should also get your employer (if you work as a programmer) or school,
+ if any, to sign a "copyright disclaimer" for the program, if necessary.
+ For more information on this, and how to apply and follow the GNU AGPL, see
+ <http://www.gnu.org/licenses/>.
diff --git a/debian/rules b/debian/rules
new file mode 100755
index 0000000..a97b787
--- /dev/null
+++ b/debian/rules
@@ -0,0 +1,45 @@
+#!/usr/bin/make -f
+
+include /usr/share/dpkg/default.mk
+
+SHELL := sh -e
+
+DEV =
+FULLVER = $(DEB_VERSION_UPSTREAM)$(DEV)
+
+%:
+       dh ${@}
+
+clean:
+       rm -rf mydest
+
+# Override the build step, because we current need to do it manually
+# outside the regular Debian package build.
+override_dh_auto_build:
+       true
+override_dh_auto_test:
+       true
+override_dh_auto_configure:
+       true
+override_dh_auto_install:
+       dh_install mydest/* /
+
+# Override this step because it's very slow and likely
+# unnecessary for us.
+override_dh_strip_nondeterminism:
+       true
+
+override_dh_install:
+       dh_install
+# Needs to be called manually for debhelper-compat < 13
+       dh_installtmpfiles
+
+override_dh_installsystemd:
+       # Need to specify units manually, since we have multiple
+       # and dh_installsystemd by default only looks for "<package>.service".
+       # dh_installsystemd -ptaler-merchant-demos --name=XXX --no-start 
--no-enable
+       # final invocation to generate daemon reload
+       dh_installsystemd
+
+get-orig-source:
+       uscan --force-download --rename
diff --git a/talermerchantdemos/translations/ar/LC_MESSAGES/messages.po 
b/talermerchantdemos/translations/ar/LC_MESSAGES/messages.po
index eadef72..8cc218f 100644
--- a/talermerchantdemos/translations/ar/LC_MESSAGES/messages.po
+++ b/talermerchantdemos/translations/ar/LC_MESSAGES/messages.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PROJECT VERSION\n"
 "Report-Msgid-Bugs-To: eintritt@hotmail.com\n"
-"POT-Creation-Date: 2023-02-24 14:38+0100\n"
+"POT-Creation-Date: 2023-10-04 20:41+0200\n"
 "PO-Revision-Date: 2022-12-26 18:33+0000\n"
 "Last-Translator: Stefan Kügel <skuegel@web.de>\n"
 "Language: ar\n"
@@ -20,9 +20,9 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Generated-By: Babel 2.11.0\n"
 
-#: talermerchantdemos/blog/blog.py:130 talermerchantdemos/blog/blog.py:209
-#: talermerchantdemos/blog/blog.py:448 talermerchantdemos/blog/blog.py:457
-#: talermerchantdemos/blog/blog.py:467
+#: talermerchantdemos/blog/blog.py:150 talermerchantdemos/blog/blog.py:229
+#: talermerchantdemos/blog/blog.py:389 talermerchantdemos/blog/blog.py:558
+#: talermerchantdemos/blog/blog.py:567 talermerchantdemos/blog/blog.py:577
 #: talermerchantdemos/donations/donations.py:144
 #: talermerchantdemos/donations/donations.py:313
 #: talermerchantdemos/landing/landing.py:95
@@ -37,59 +37,69 @@ msgstr ""
 msgid "GNU Taler Demo: Error"
 msgstr ""
 
-#: talermerchantdemos/blog/blog.py:131 talermerchantdemos/landing/landing.py:96
+#: talermerchantdemos/blog/blog.py:151 talermerchantdemos/landing/landing.py:96
 msgid "Internal error"
 msgstr "خطأ داخلي"
 
-#: talermerchantdemos/blog/blog.py:184
+#: talermerchantdemos/blog/blog.py:204
 msgid "GNU Taler Demo: Essay Shop"
 msgstr ""
 
-#: talermerchantdemos/blog/blog.py:202
+#: talermerchantdemos/blog/blog.py:222
 msgid "Cannot refund unpaid article"
 msgstr "تعذر استرداد المقالة غير المدفوعة"
 
-#: talermerchantdemos/blog/blog.py:210
+#: talermerchantdemos/blog/blog.py:230
 msgid "Article is not anymore refundable"
 msgstr "المقال غير قابل للاسترداد بعد الآن"
 
-#: talermerchantdemos/blog/blog.py:214
+#: talermerchantdemos/blog/blog.py:234
 msgid "GNU Taler Demo: Confirm refund"
 msgstr ""
 
-#: talermerchantdemos/blog/blog.py:247
+#: talermerchantdemos/blog/blog.py:267
 msgid "You did not pay for this article (nice try!)"
 msgstr "لم تقم بالدفع لهذا المقال (محاولة جيدة!)"
 
-#: talermerchantdemos/blog/blog.py:252
+#: talermerchantdemos/blog/blog.py:272
 msgid "Item not refundable (anymore)"
 msgstr "المقال غير قابل للاسترداد (بعد الآن)"
 
-#: talermerchantdemos/blog/blog.py:278
+#: talermerchantdemos/blog/blog.py:298
 msgid "Internal error: Files for article ({}) not found."
 msgstr "خطأ داخلي: ملفات المقال ({}) غير موجودة."
 
-#: talermerchantdemos/blog/blog.py:285
+#: talermerchantdemos/blog/blog.py:305
 msgid "Supplemental file ({}) for article ({}) not found."
 msgstr "الملف الإضافي ({}) للمقال ({}) غير موجود."
 
-#: talermerchantdemos/blog/blog.py:293
+#: talermerchantdemos/blog/blog.py:313
 msgid "GNU Taler Demo: Article"
 msgstr ""
 
-#: talermerchantdemos/blog/blog.py:365 talermerchantdemos/blog/blog.py:379
+#: talermerchantdemos/blog/blog.py:390
+msgid "Please enable cookies."
+msgstr ""
+
+#: talermerchantdemos/blog/blog.py:408 talermerchantdemos/blog/blog.py:439
 msgid "Direct access forbidden"
 msgstr "الدخول المباشر غير مسموح"
 
-#: talermerchantdemos/blog/blog.py:397
+#: talermerchantdemos/blog/blog.py:431
+#: talermerchantdemos/httpcommon/__init__.py:52
+#: talermerchantdemos/httpcommon/__init__.py:75
+msgid "Backend returned error status"
+msgstr "عادت الخلفية لحالة الخطأ"
+
+#: talermerchantdemos/blog/blog.py:490
 msgid "GNU Taler Demo: Refunded"
 msgstr ""
 
-#: talermerchantdemos/blog/blog.py:449
+#: talermerchantdemos/blog/blog.py:559
 msgid "Internal server error"
 msgstr "خطأ في الserver الداخلي"
 
-#: talermerchantdemos/blog/blog.py:458
+#: talermerchantdemos/blog/blog.py:568
 #: talermerchantdemos/donations/donations.py:314
 #: talermerchantdemos/landing/landing.py:181
 #: talermerchantdemos/survey/survey.py:183
@@ -115,7 +125,7 @@ msgid "Backend could not create the order"
 msgstr ""
 
 #: talermerchantdemos/httpcommon/__init__.py:41
-#: talermerchantdemos/httpcommon/__init__.py:81
+#: talermerchantdemos/httpcommon/__init__.py:91
 msgid "Could not establish connection to backend"
 msgstr "لم نتمكن من إنشاء اتصال مع الشبكة الخلفية"
 
@@ -124,12 +134,7 @@ msgstr "لم نتمكن من إنشاء اتصال مع الشبكة الخلف
 msgid "Could not parse the response from backend"
 msgstr "تعذر تحليل الاستجابة من الخلفية"
 
-#: talermerchantdemos/httpcommon/__init__.py:52
-#: talermerchantdemos/httpcommon/__init__.py:89
-msgid "Backend returned error status"
-msgstr "عادت الخلفية لحالة الخطأ"
-
-#: talermerchantdemos/httpcommon/__init__.py:86
+#: talermerchantdemos/httpcommon/__init__.py:96
 msgid "Could not parse response from backend"
 msgstr "تعذر تحليل الاستجابة من الخلفية"
 
@@ -180,6 +185,10 @@ msgstr ""
 msgid "You will not be able to read the article until you pay for it again."
 msgstr "عند استرجاع مدفوعاتك لن تتمكن من قراءة هذا المقال."
 
+#: talermerchantdemos/templates/blog-article-refunded.html.j2:18
+msgid "Click here to pay it again."
+msgstr ""
+
 #: talermerchantdemos/templates/blog-base.html.j2:10
 msgid "Essay shop"
 msgstr "متجر المقالات"
@@ -291,7 +300,8 @@ msgid "Chapters"
 msgstr "فصول"
 
 #: talermerchantdemos/templates/blog-index.html.j2:25
-msgid "Click on an individual chapter to to purchase it with GNU Taler."
+#, fuzzy
+msgid "Click on an individual chapter to purchase it with GNU Taler."
 msgstr "اضغط على الفصل لشراءه مع GNU Taler."
 
 #: talermerchantdemos/templates/blog-index.html.j2:26
@@ -331,8 +341,9 @@ msgid "Donations"
 msgstr "تبرعات"
 
 #: talermerchantdemos/templates/common-base.html.j2:70
-msgid "Tipping/Survey"
-msgstr ""
+#: talermerchantdemos/templates/survey-base.html.j2:11
+msgid "Survey"
+msgstr "استطلاع الآراء"
 
 #: talermerchantdemos/templates/common-base.html.j2:109
 #, fuzzy
@@ -633,7 +644,8 @@ msgid "Step 5: Survey"
 msgstr "الخطوة الخامسة: استطلاع الرأي"
 
 #: talermerchantdemos/templates/landing-index.html.j2:68
-msgid "Websites can give tips to visitors for completing tasks."
+#, fuzzy
+msgid "Websites can give rewards to visitors for completing tasks."
 msgstr "يمكن أن تقدم المواقع الإلكترونية نصائح للزوار لإكمال المهام."
 
 #: talermerchantdemos/templates/landing-index.html.j2:69
@@ -656,18 +668,16 @@ 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:11
-msgid "Survey"
-msgstr "استطلاع الآراء"
-
 #: talermerchantdemos/templates/survey-base.html.j2:13
-msgid "This page demonstrates how to tip visitors for completing small tasks."
+#, fuzzy
+msgid "This page demonstrates how to reward visitors for completing small 
tasks."
 msgstr "توضح هذه الصفحة كيفية إرشاد الزائرين لإكمال المهام الصغيرة."
 
 #: talermerchantdemos/templates/survey-base.html.j2:14
+#, fuzzy
 msgid ""
-"Tipping is a way for offer cash rewards that go directly into a user's "
-"wallet."
+"Rewarding is a way of offering cash rewards that go straight into a "
+"user's wallet."
 msgstr "الاستطلاع هو طريقة لتقديم مكافآت نقدية تذهب مباشرة إلى محفظة المستخدم."
 
 #: talermerchantdemos/templates/survey-error-graceful.html.j2:3
@@ -675,9 +685,10 @@ msgid "Unexpected result"
 msgstr ""
 
 #: talermerchantdemos/templates/survey-index.html.j2:6
+#, fuzzy
 msgid ""
-"Please participate in our survey about payment systems and receive a tip "
-"in return."
+"Please participate in our survey about payment systems and receive a "
+"reward in return."
 msgstr "يرجى المشاركة في استطلاعنا حول أنظمة الدفع والحصول على معلومات في 
المقابل."
 
 #: talermerchantdemos/templates/survey-index.html.j2:13
@@ -722,7 +733,7 @@ msgstr "إرسال استطلاع الآراء"
 #~ msgstr "متجر المقالات"
 
 #~ msgid "Tipping/Survey"
-#~ msgstr "استطلاع الآراء"
+#~ msgstr ""
 
 #~ msgid ""
 #~ "You can learn more about GNU Taler"
diff --git a/talermerchantdemos/translations/de/LC_MESSAGES/messages.po 
b/talermerchantdemos/translations/de/LC_MESSAGES/messages.po
index c9b4d0a..0806729 100644
--- a/talermerchantdemos/translations/de/LC_MESSAGES/messages.po
+++ b/talermerchantdemos/translations/de/LC_MESSAGES/messages.po
@@ -5,24 +5,23 @@
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: taler-merchant-demos\n"
+"Project-Id-Version:  taler-merchant-demos\n"
 "Report-Msgid-Bugs-To: eintritt@hotmail.com\n"
-"POT-Creation-Date: 2023-02-24 14:38+0100\n"
+"POT-Creation-Date: 2023-10-04 20:41+0200\n"
 "PO-Revision-Date: 2023-08-13 10:31+0000\n"
 "Last-Translator: Stefan Kügel <skuegel@web.de>\n"
-"Language-Team: German <https://weblate.taler.net/projects/gnu-taler/";
-"demonstration-pages/de/>\n"
 "Language: de\n"
+"Language-Team: German <https://weblate.taler.net/projects/gnu-taler";
+"/demonstration-pages/de/>\n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=utf-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Generator: Weblate 4.13.1\n"
 "Generated-By: Babel 2.11.0\n"
 
-#: talermerchantdemos/blog/blog.py:130 talermerchantdemos/blog/blog.py:209
-#: talermerchantdemos/blog/blog.py:448 talermerchantdemos/blog/blog.py:457
-#: talermerchantdemos/blog/blog.py:467
+#: talermerchantdemos/blog/blog.py:150 talermerchantdemos/blog/blog.py:229
+#: talermerchantdemos/blog/blog.py:389 talermerchantdemos/blog/blog.py:558
+#: talermerchantdemos/blog/blog.py:567 talermerchantdemos/blog/blog.py:577
 #: talermerchantdemos/donations/donations.py:144
 #: talermerchantdemos/donations/donations.py:313
 #: talermerchantdemos/landing/landing.py:95
@@ -37,61 +36,71 @@ msgstr ""
 msgid "GNU Taler Demo: Error"
 msgstr "GNU Taler Demo: Fehler"
 
-#: talermerchantdemos/blog/blog.py:131 talermerchantdemos/landing/landing.py:96
+#: talermerchantdemos/blog/blog.py:151 talermerchantdemos/landing/landing.py:96
 msgid "Internal error"
 msgstr "Interner Fehler"
 
-#: talermerchantdemos/blog/blog.py:184
+#: talermerchantdemos/blog/blog.py:204
 msgid "GNU Taler Demo: Essay Shop"
 msgstr "GNU Taler Demo: Buchhandlung"
 
-#: talermerchantdemos/blog/blog.py:202
+#: talermerchantdemos/blog/blog.py:222
 msgid "Cannot refund unpaid article"
 msgstr ""
 "Den Kaufpreis eines Artikels, der nicht bezahlt wurde, können wir nicht "
 "erstatten"
 
-#: talermerchantdemos/blog/blog.py:210
+#: talermerchantdemos/blog/blog.py:230
 msgid "Article is not anymore refundable"
 msgstr "Den Kaufpreis für diesen Aufsatz können wir leider nicht mehr 
erstatten"
 
-#: talermerchantdemos/blog/blog.py:214
+#: talermerchantdemos/blog/blog.py:234
 msgid "GNU Taler Demo: Confirm refund"
 msgstr "GNU Taler Demo: Rückerstattung bestätigen"
 
-#: talermerchantdemos/blog/blog.py:247
+#: talermerchantdemos/blog/blog.py:267
 msgid "You did not pay for this article (nice try!)"
 msgstr "Für diesen Aufsatz wurde noch kein Kaufpreis entrichtet"
 
-#: talermerchantdemos/blog/blog.py:252
+#: talermerchantdemos/blog/blog.py:272
 msgid "Item not refundable (anymore)"
 msgstr "Dieser Artikel kann nicht (mehr) erstattet werden"
 
-#: talermerchantdemos/blog/blog.py:278
+#: talermerchantdemos/blog/blog.py:298
 msgid "Internal error: Files for article ({}) not found."
 msgstr "Interner Fehler: Die Datei für diesen Aufsatz ({}) wurden nicht 
gefunden."
 
-#: talermerchantdemos/blog/blog.py:285
+#: talermerchantdemos/blog/blog.py:305
 msgid "Supplemental file ({}) for article ({}) not found."
 msgstr "Die Zusatzdatei ({}) für den Artikel ({}) wurde nicht gefunden."
 
-#: talermerchantdemos/blog/blog.py:293
+#: talermerchantdemos/blog/blog.py:313
 msgid "GNU Taler Demo: Article"
 msgstr "GNU Taler Demo: Artikel"
 
-#: talermerchantdemos/blog/blog.py:365 talermerchantdemos/blog/blog.py:379
+#: talermerchantdemos/blog/blog.py:390
+msgid "Please enable cookies."
+msgstr ""
+
+#: talermerchantdemos/blog/blog.py:408 talermerchantdemos/blog/blog.py:439
 msgid "Direct access forbidden"
 msgstr "Direktzugriff verboten"
 
-#: talermerchantdemos/blog/blog.py:397
+#: talermerchantdemos/blog/blog.py:431
+#: talermerchantdemos/httpcommon/__init__.py:52
+#: talermerchantdemos/httpcommon/__init__.py:75
+msgid "Backend returned error status"
+msgstr "Das Backend lieferte einen Fehlerstatus zurück"
+
+#: talermerchantdemos/blog/blog.py:490
 msgid "GNU Taler Demo: Refunded"
 msgstr "GNU Taler Demo: Zurückerstattet"
 
-#: talermerchantdemos/blog/blog.py:449
+#: talermerchantdemos/blog/blog.py:559
 msgid "Internal server error"
 msgstr "Interner Server-Fehler"
 
-#: talermerchantdemos/blog/blog.py:458
+#: talermerchantdemos/blog/blog.py:568
 #: talermerchantdemos/donations/donations.py:314
 #: talermerchantdemos/landing/landing.py:181
 #: talermerchantdemos/survey/survey.py:183
@@ -117,7 +126,7 @@ msgid "Backend could not create the order"
 msgstr "Das Backend konnte die Bestellung nicht erzeugen"
 
 #: talermerchantdemos/httpcommon/__init__.py:41
-#: talermerchantdemos/httpcommon/__init__.py:81
+#: talermerchantdemos/httpcommon/__init__.py:91
 msgid "Could not establish connection to backend"
 msgstr "Es war nicht möglich, eine Verbindung zum Backend aufzubauen"
 
@@ -125,12 +134,7 @@ msgstr "Es war nicht möglich, eine Verbindung zum Backend 
aufzubauen"
 msgid "Could not parse the response from backend"
 msgstr "Es war nicht möglich, die Rückmeldung des Backend zu parsen"
 
-#: talermerchantdemos/httpcommon/__init__.py:52
-#: talermerchantdemos/httpcommon/__init__.py:89
-msgid "Backend returned error status"
-msgstr "Das Backend lieferte einen Fehlerstatus zurück"
-
-#: talermerchantdemos/httpcommon/__init__.py:86
+#: talermerchantdemos/httpcommon/__init__.py:96
 msgid "Could not parse response from backend"
 msgstr "Es war nicht möglich, die Rückmeldung des Backend zu parsen"
 
@@ -185,6 +189,10 @@ msgstr ""
 "Sie werden den Aufsatz nicht mehr lesen können, bis Sie für ihn erneut "
 "bezahlen."
 
+#: talermerchantdemos/templates/blog-article-refunded.html.j2:18
+msgid "Click here to pay it again."
+msgstr ""
+
 #: talermerchantdemos/templates/blog-base.html.j2:10
 msgid "Essay shop"
 msgstr "Buchhandlung"
@@ -311,7 +319,8 @@ msgid "Chapters"
 msgstr "Die Aufsätze"
 
 #: talermerchantdemos/templates/blog-index.html.j2:25
-msgid "Click on an individual chapter to to purchase it with GNU Taler."
+#, fuzzy
+msgid "Click on an individual chapter to purchase it with GNU Taler."
 msgstr ""
 "Mit einem Klick auf einzelne Aufsätze kauft man diese in der "
 "Phantasiewährung über das Bezahlsystem GNU Taler."
@@ -351,7 +360,8 @@ msgid "Donations"
 msgstr "Spenden"
 
 #: talermerchantdemos/templates/common-base.html.j2:70
-msgid "Tipping/Survey"
+#: talermerchantdemos/templates/survey-base.html.j2:11
+msgid "Survey"
 msgstr "Tipping/Umfrage"
 
 #: talermerchantdemos/templates/common-base.html.j2:109
@@ -698,7 +708,8 @@ msgid "Step 5: Survey"
 msgstr "Schritt 5: Die Tipping-Funktion kennenlernen"
 
 #: talermerchantdemos/templates/landing-index.html.j2:68
-msgid "Websites can give tips to visitors for completing tasks."
+#, fuzzy
+msgid "Websites can give rewards to visitors for completing tasks."
 msgstr ""
 "Webseiten können ihre Besucher für Arbeiten belohnen, indem sie ihnen "
 "digitales Geld in ihre Wallets buchen. Wir veranschaulichen die Tipping-"
@@ -732,20 +743,18 @@ 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:11
-msgid "Survey"
-msgstr "Tipping/Umfrage"
-
 #: talermerchantdemos/templates/survey-base.html.j2:13
-msgid "This page demonstrates how to tip visitors for completing small tasks."
+#, fuzzy
+msgid "This page demonstrates how to reward 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:14
+#, fuzzy
 msgid ""
-"Tipping is a way for offer cash rewards that go directly into a user's "
-"wallet."
+"Rewarding is a way of offering cash rewards that go straight into a "
+"user's wallet."
 msgstr ""
 "Tipping („Trinkgeld geben“) bucht digitales Bargeld direkt in das Wallet "
 "der Webseitenbesucher."
@@ -755,9 +764,10 @@ msgid "Unexpected result"
 msgstr "Unerwartetes Ergebnis"
 
 #: talermerchantdemos/templates/survey-index.html.j2:6
+#, fuzzy
 msgid ""
-"Please participate in our survey about payment systems and receive a tip "
-"in return."
+"Please participate in our survey about payment systems and receive a "
+"reward 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."
@@ -1041,3 +1051,4 @@ msgstr "Antwort abschicken"
 #~ "Alles Wissenswerte zu GNU Taler gibt "
 #~ "es auf unseren <a "
 #~ "href=\"{site}\">Webseiten</a>."
+
diff --git a/talermerchantdemos/translations/en/LC_MESSAGES/messages.po 
b/talermerchantdemos/translations/en/LC_MESSAGES/messages.po
index b03100f..b652cf6 100644
--- a/talermerchantdemos/translations/en/LC_MESSAGES/messages.po
+++ b/talermerchantdemos/translations/en/LC_MESSAGES/messages.po
@@ -3,7 +3,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PROJECT VERSION\n"
 "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2023-02-24 14:38+0100\n"
+"POT-Creation-Date: 2023-10-04 20:41+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language: en\n"
@@ -14,9 +14,9 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Generated-By: Babel 2.11.0\n"
 
-#: talermerchantdemos/blog/blog.py:130 talermerchantdemos/blog/blog.py:209
-#: talermerchantdemos/blog/blog.py:448 talermerchantdemos/blog/blog.py:457
-#: talermerchantdemos/blog/blog.py:467
+#: talermerchantdemos/blog/blog.py:150 talermerchantdemos/blog/blog.py:229
+#: talermerchantdemos/blog/blog.py:389 talermerchantdemos/blog/blog.py:558
+#: talermerchantdemos/blog/blog.py:567 talermerchantdemos/blog/blog.py:577
 #: talermerchantdemos/donations/donations.py:144
 #: talermerchantdemos/donations/donations.py:313
 #: talermerchantdemos/landing/landing.py:95
@@ -31,59 +31,69 @@ msgstr ""
 msgid "GNU Taler Demo: Error"
 msgstr ""
 
-#: talermerchantdemos/blog/blog.py:131 talermerchantdemos/landing/landing.py:96
+#: talermerchantdemos/blog/blog.py:151 talermerchantdemos/landing/landing.py:96
 msgid "Internal error"
 msgstr ""
 
-#: talermerchantdemos/blog/blog.py:184
+#: talermerchantdemos/blog/blog.py:204
 msgid "GNU Taler Demo: Essay Shop"
 msgstr ""
 
-#: talermerchantdemos/blog/blog.py:202
+#: talermerchantdemos/blog/blog.py:222
 msgid "Cannot refund unpaid article"
 msgstr ""
 
-#: talermerchantdemos/blog/blog.py:210
+#: talermerchantdemos/blog/blog.py:230
 msgid "Article is not anymore refundable"
 msgstr ""
 
-#: talermerchantdemos/blog/blog.py:214
+#: talermerchantdemos/blog/blog.py:234
 msgid "GNU Taler Demo: Confirm refund"
 msgstr ""
 
-#: talermerchantdemos/blog/blog.py:247
+#: talermerchantdemos/blog/blog.py:267
 msgid "You did not pay for this article (nice try!)"
 msgstr ""
 
-#: talermerchantdemos/blog/blog.py:252
+#: talermerchantdemos/blog/blog.py:272
 msgid "Item not refundable (anymore)"
 msgstr ""
 
-#: talermerchantdemos/blog/blog.py:278
+#: talermerchantdemos/blog/blog.py:298
 msgid "Internal error: Files for article ({}) not found."
 msgstr ""
 
-#: talermerchantdemos/blog/blog.py:285
+#: talermerchantdemos/blog/blog.py:305
 msgid "Supplemental file ({}) for article ({}) not found."
 msgstr ""
 
-#: talermerchantdemos/blog/blog.py:293
+#: talermerchantdemos/blog/blog.py:313
 msgid "GNU Taler Demo: Article"
 msgstr ""
 
-#: talermerchantdemos/blog/blog.py:365 talermerchantdemos/blog/blog.py:379
+#: talermerchantdemos/blog/blog.py:390
+msgid "Please enable cookies."
+msgstr ""
+
+#: talermerchantdemos/blog/blog.py:408 talermerchantdemos/blog/blog.py:439
 msgid "Direct access forbidden"
 msgstr ""
 
-#: talermerchantdemos/blog/blog.py:397
+#: talermerchantdemos/blog/blog.py:431
+#: talermerchantdemos/httpcommon/__init__.py:52
+#: talermerchantdemos/httpcommon/__init__.py:75
+msgid "Backend returned error status"
+msgstr ""
+
+#: talermerchantdemos/blog/blog.py:490
 msgid "GNU Taler Demo: Refunded"
 msgstr ""
 
-#: talermerchantdemos/blog/blog.py:449
+#: talermerchantdemos/blog/blog.py:559
 msgid "Internal server error"
 msgstr ""
 
-#: talermerchantdemos/blog/blog.py:458
+#: talermerchantdemos/blog/blog.py:568
 #: talermerchantdemos/donations/donations.py:314
 #: talermerchantdemos/landing/landing.py:181
 #: talermerchantdemos/survey/survey.py:183
@@ -109,7 +119,7 @@ msgid "Backend could not create the order"
 msgstr ""
 
 #: talermerchantdemos/httpcommon/__init__.py:41
-#: talermerchantdemos/httpcommon/__init__.py:81
+#: talermerchantdemos/httpcommon/__init__.py:91
 msgid "Could not establish connection to backend"
 msgstr ""
 
@@ -117,12 +127,7 @@ msgstr ""
 msgid "Could not parse the response from backend"
 msgstr ""
 
-#: talermerchantdemos/httpcommon/__init__.py:52
-#: talermerchantdemos/httpcommon/__init__.py:89
-msgid "Backend returned error status"
-msgstr ""
-
-#: talermerchantdemos/httpcommon/__init__.py:86
+#: talermerchantdemos/httpcommon/__init__.py:96
 msgid "Could not parse response from backend"
 msgstr ""
 
@@ -169,6 +174,10 @@ msgstr ""
 msgid "You will not be able to read the article until you pay for it again."
 msgstr ""
 
+#: talermerchantdemos/templates/blog-article-refunded.html.j2:18
+msgid "Click here to pay it again."
+msgstr ""
+
 #: talermerchantdemos/templates/blog-base.html.j2:10
 msgid "Essay shop"
 msgstr ""
@@ -270,7 +279,7 @@ msgid "Chapters"
 msgstr ""
 
 #: talermerchantdemos/templates/blog-index.html.j2:25
-msgid "Click on an individual chapter to to purchase it with GNU Taler."
+msgid "Click on an individual chapter to purchase it with GNU Taler."
 msgstr ""
 
 #: talermerchantdemos/templates/blog-index.html.j2:26
@@ -306,7 +315,8 @@ msgid "Donations"
 msgstr ""
 
 #: talermerchantdemos/templates/common-base.html.j2:70
-msgid "Tipping/Survey"
+#: talermerchantdemos/templates/survey-base.html.j2:11
+msgid "Survey"
 msgstr ""
 
 #: talermerchantdemos/templates/common-base.html.j2:109
@@ -566,7 +576,7 @@ msgid "Step 5: Survey"
 msgstr ""
 
 #: talermerchantdemos/templates/landing-index.html.j2:68
-msgid "Websites can give tips to visitors for completing tasks."
+msgid "Websites can give rewards to visitors for completing tasks."
 msgstr ""
 
 #: talermerchantdemos/templates/landing-index.html.j2:69
@@ -587,18 +597,14 @@ msgstr ""
 msgid "Let us know what you think by <a href=\"{link}\">contacting us</a>."
 msgstr ""
 
-#: talermerchantdemos/templates/survey-base.html.j2:11
-msgid "Survey"
-msgstr ""
-
 #: talermerchantdemos/templates/survey-base.html.j2:13
-msgid "This page demonstrates how to tip visitors for completing small tasks."
+msgid "This page demonstrates how to reward visitors for completing small 
tasks."
 msgstr ""
 
 #: talermerchantdemos/templates/survey-base.html.j2:14
 msgid ""
-"Tipping is a way for offer cash rewards that go directly into a user's "
-"wallet."
+"Rewarding is a way of offering cash rewards that go straight into a "
+"user's wallet."
 msgstr ""
 
 #: talermerchantdemos/templates/survey-error-graceful.html.j2:3
@@ -607,8 +613,8 @@ msgstr ""
 
 #: talermerchantdemos/templates/survey-index.html.j2:6
 msgid ""
-"Please participate in our survey about payment systems and receive a tip "
-"in return."
+"Please participate in our survey about payment systems and receive a "
+"reward in return."
 msgstr ""
 
 #: talermerchantdemos/templates/survey-index.html.j2:13
@@ -1965,3 +1971,24 @@ msgstr ""
 #~ "href=\"{site}\">website</a>."
 #~ msgstr ""
 
+#~ msgid "Click on an individual chapter to to purchase it with GNU Taler."
+#~ msgstr ""
+
+#~ msgid "Websites can give tips to visitors for completing tasks."
+#~ msgstr ""
+
+#~ msgid "This page demonstrates how to tip visitors for completing small 
tasks."
+#~ msgstr ""
+
+#~ msgid ""
+#~ "Tipping is a way for offer cash"
+#~ " rewards that go directly into a "
+#~ "user's wallet."
+#~ msgstr ""
+
+#~ msgid ""
+#~ "Please participate in our survey about"
+#~ " payment systems and receive a tip"
+#~ " in return."
+#~ msgstr ""
+
diff --git a/talermerchantdemos/translations/es/LC_MESSAGES/messages.po 
b/talermerchantdemos/translations/es/LC_MESSAGES/messages.po
index ba0ead6..036abb5 100644
--- a/talermerchantdemos/translations/es/LC_MESSAGES/messages.po
+++ b/talermerchantdemos/translations/es/LC_MESSAGES/messages.po
@@ -7,22 +7,21 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PROJECT VERSION\n"
 "Report-Msgid-Bugs-To: eintritt@hotmail.com\n"
-"POT-Creation-Date: 2023-02-24 14:38+0100\n"
+"POT-Creation-Date: 2023-10-04 20:41+0200\n"
 "PO-Revision-Date: 2023-08-13 10:31+0000\n"
 "Last-Translator: Stefan Kügel <skuegel@web.de>\n"
-"Language-Team: Spanish <https://weblate.taler.net/projects/gnu-taler/";
-"demonstration-pages/es/>\n"
 "Language: es\n"
+"Language-Team: Spanish <https://weblate.taler.net/projects/gnu-taler";
+"/demonstration-pages/es/>\n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=utf-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Generator: Weblate 4.13.1\n"
 "Generated-By: Babel 2.11.0\n"
 
-#: talermerchantdemos/blog/blog.py:130 talermerchantdemos/blog/blog.py:209
-#: talermerchantdemos/blog/blog.py:448 talermerchantdemos/blog/blog.py:457
-#: talermerchantdemos/blog/blog.py:467
+#: talermerchantdemos/blog/blog.py:150 talermerchantdemos/blog/blog.py:229
+#: talermerchantdemos/blog/blog.py:389 talermerchantdemos/blog/blog.py:558
+#: talermerchantdemos/blog/blog.py:567 talermerchantdemos/blog/blog.py:577
 #: talermerchantdemos/donations/donations.py:144
 #: talermerchantdemos/donations/donations.py:313
 #: talermerchantdemos/landing/landing.py:95
@@ -37,59 +36,69 @@ msgstr ""
 msgid "GNU Taler Demo: Error"
 msgstr "GNU Taler Demo: Error"
 
-#: talermerchantdemos/blog/blog.py:131 talermerchantdemos/landing/landing.py:96
+#: talermerchantdemos/blog/blog.py:151 talermerchantdemos/landing/landing.py:96
 msgid "Internal error"
 msgstr "Error interno"
 
-#: talermerchantdemos/blog/blog.py:184
+#: talermerchantdemos/blog/blog.py:204
 msgid "GNU Taler Demo: Essay Shop"
 msgstr "Demostración de GNU Taler: Tienda de Pruebas"
 
-#: talermerchantdemos/blog/blog.py:202
+#: talermerchantdemos/blog/blog.py:222
 msgid "Cannot refund unpaid article"
 msgstr "No se puede realizar el reembolso de un artículo no pagado"
 
-#: talermerchantdemos/blog/blog.py:210
+#: talermerchantdemos/blog/blog.py:230
 msgid "Article is not anymore refundable"
 msgstr "El artículo ya no es reembolsable"
 
-#: talermerchantdemos/blog/blog.py:214
+#: talermerchantdemos/blog/blog.py:234
 msgid "GNU Taler Demo: Confirm refund"
 msgstr "GNU Taler Demo: Confirmar reembolso"
 
-#: talermerchantdemos/blog/blog.py:247
+#: talermerchantdemos/blog/blog.py:267
 msgid "You did not pay for this article (nice try!)"
 msgstr "No has pagado por este artículo (¡buen intento!)"
 
-#: talermerchantdemos/blog/blog.py:252
+#: talermerchantdemos/blog/blog.py:272
 msgid "Item not refundable (anymore)"
 msgstr "Artículo no reembolsable"
 
-#: talermerchantdemos/blog/blog.py:278
+#: talermerchantdemos/blog/blog.py:298
 msgid "Internal error: Files for article ({}) not found."
 msgstr "Error interno: Archivos para el artículo ({}) no encontrados."
 
-#: talermerchantdemos/blog/blog.py:285
+#: talermerchantdemos/blog/blog.py:305
 msgid "Supplemental file ({}) for article ({}) not found."
 msgstr "Archivo complementario ({}) para el artículo ({}) no encontrado."
 
-#: talermerchantdemos/blog/blog.py:293
+#: talermerchantdemos/blog/blog.py:313
 msgid "GNU Taler Demo: Article"
 msgstr "GNU Taler Demo: Artículo"
 
-#: talermerchantdemos/blog/blog.py:365 talermerchantdemos/blog/blog.py:379
+#: talermerchantdemos/blog/blog.py:390
+msgid "Please enable cookies."
+msgstr ""
+
+#: talermerchantdemos/blog/blog.py:408 talermerchantdemos/blog/blog.py:439
 msgid "Direct access forbidden"
 msgstr "Acceso directo prohibido"
 
-#: talermerchantdemos/blog/blog.py:397
+#: talermerchantdemos/blog/blog.py:431
+#: talermerchantdemos/httpcommon/__init__.py:52
+#: talermerchantdemos/httpcommon/__init__.py:75
+msgid "Backend returned error status"
+msgstr "El backend ha retornado un estado de error"
+
+#: talermerchantdemos/blog/blog.py:490
 msgid "GNU Taler Demo: Refunded"
 msgstr "GNU Taler Demo: Reembolsado"
 
-#: talermerchantdemos/blog/blog.py:449
+#: talermerchantdemos/blog/blog.py:559
 msgid "Internal server error"
 msgstr "Error interno de servidor"
 
-#: talermerchantdemos/blog/blog.py:458
+#: talermerchantdemos/blog/blog.py:568
 #: talermerchantdemos/donations/donations.py:314
 #: talermerchantdemos/landing/landing.py:181
 #: talermerchantdemos/survey/survey.py:183
@@ -116,7 +125,7 @@ msgid "Backend could not create the order"
 msgstr "El backend no ha podido crear el pedido"
 
 #: talermerchantdemos/httpcommon/__init__.py:41
-#: talermerchantdemos/httpcommon/__init__.py:81
+#: talermerchantdemos/httpcommon/__init__.py:91
 msgid "Could not establish connection to backend"
 msgstr "No se puede establecer la conexión con el backend"
 
@@ -124,12 +133,7 @@ msgstr "No se puede establecer la conexión con el backend"
 msgid "Could not parse the response from backend"
 msgstr "No se puede analizar la respuesta del backend"
 
-#: talermerchantdemos/httpcommon/__init__.py:52
-#: talermerchantdemos/httpcommon/__init__.py:89
-msgid "Backend returned error status"
-msgstr "El backend ha retornado un estado de error"
-
-#: talermerchantdemos/httpcommon/__init__.py:86
+#: talermerchantdemos/httpcommon/__init__.py:96
 msgid "Could not parse response from backend"
 msgstr "No se puede analizar la respuesta del backend"
 
@@ -180,6 +184,10 @@ msgstr ""
 msgid "You will not be able to read the article until you pay for it again."
 msgstr "No podrás leer el artículo, hasta que lo pagues de nuevo."
 
+#: talermerchantdemos/templates/blog-article-refunded.html.j2:18
+msgid "Click here to pay it again."
+msgstr ""
+
 #: talermerchantdemos/templates/blog-base.html.j2:10
 msgid "Essay shop"
 msgstr "Tienda de libros"
@@ -296,7 +304,8 @@ msgid "Chapters"
 msgstr "Capítulos"
 
 #: talermerchantdemos/templates/blog-index.html.j2:25
-msgid "Click on an individual chapter to to purchase it with GNU Taler."
+#, fuzzy
+msgid "Click on an individual chapter to purchase it with GNU Taler."
 msgstr "Haz clic en cada capítulo para comprarlo con GNU Taler."
 
 #: talermerchantdemos/templates/blog-index.html.j2:26
@@ -304,8 +313,8 @@ msgid ""
 "You can get free, virtual money to buy articles on this page at the <a "
 "href=\"{}\">bank</a>."
 msgstr ""
-"Puedes conseguir dinero virtual gratis en el <a href=\"{}\">banco</a>, para "
-"comprar artículos de esta página."
+"Puedes conseguir dinero virtual gratis en el <a href=\"{}\">banco</a>, "
+"para comprar artículos de esta página."
 
 #: talermerchantdemos/templates/blog-index.html.j2:32
 msgid "Pay to read more..."
@@ -334,8 +343,9 @@ msgid "Donations"
 msgstr "Donaciones"
 
 #: talermerchantdemos/templates/common-base.html.j2:70
-msgid "Tipping/Survey"
-msgstr "Recompensa/Encuesta"
+#: talermerchantdemos/templates/survey-base.html.j2:11
+msgid "Survey"
+msgstr "Encuesta"
 
 #: talermerchantdemos/templates/common-base.html.j2:109
 msgid ""
@@ -662,7 +672,8 @@ msgid "Step 5: Survey"
 msgstr "Paso 5: Encuesta"
 
 #: talermerchantdemos/templates/landing-index.html.j2:68
-msgid "Websites can give tips to visitors for completing tasks."
+#, fuzzy
+msgid "Websites can give rewards to visitors for completing tasks."
 msgstr "Las sitios Web pueden dar consejos a los visitantes para completar 
tareas."
 
 #: talermerchantdemos/templates/landing-index.html.j2:69
@@ -687,32 +698,31 @@ msgstr ""
 "Déjamos saber que piensas poniéndote en <a href=\"{link}\">contacto con "
 "nosotros</a>."
 
-#: talermerchantdemos/templates/survey-base.html.j2:11
-msgid "Survey"
-msgstr "Encuesta"
-
 #: talermerchantdemos/templates/survey-base.html.j2:13
-msgid "This page demonstrates how to tip visitors for completing small tasks."
+#, fuzzy
+msgid "This page demonstrates how to reward visitors for completing small 
tasks."
 msgstr ""
-"Esta página demuestra cómo dejar una recompensa a los visitantes por haber "
-"completado pequeñas tareas."
+"Esta página demuestra cómo dejar una recompensa a los visitantes por "
+"haber completado pequeñas tareas."
 
 #: talermerchantdemos/templates/survey-base.html.j2:14
+#, fuzzy
 msgid ""
-"Tipping is a way for offer cash rewards that go directly into a user's "
-"wallet."
+"Rewarding is a way of offering cash rewards that go straight into a "
+"user's wallet."
 msgstr ""
-"Dejar una recompensa es una manera de ofrecer premios con dinero, que van "
-"directamente al monedero de un usuario."
+"Dejar una recompensa es una manera de ofrecer premios con dinero, que van"
+" directamente al monedero de un usuario."
 
 #: talermerchantdemos/templates/survey-error-graceful.html.j2:3
 msgid "Unexpected result"
 msgstr "Resultado no esperado"
 
 #: talermerchantdemos/templates/survey-index.html.j2:6
+#, fuzzy
 msgid ""
-"Please participate in our survey about payment systems and receive a tip "
-"in return."
+"Please participate in our survey about payment systems and receive a "
+"reward in return."
 msgstr ""
 "Por favor participa en nuestra encuesta sobrelos sistemas de pago y "
 "recibe un consejo a cambio."
@@ -773,7 +783,7 @@ msgstr "Enviar Encuesta"
 #~ msgstr "Tienda de libros"
 
 #~ msgid "Tipping/Survey"
-#~ msgstr "Consejos/Encuestas"
+#~ msgstr "Recompensa/Encuesta"
 
 #~ msgid ""
 #~ "You can learn more about GNU Taler"
@@ -783,3 +793,4 @@ msgstr "Enviar Encuesta"
 #~ "Puedes entender más sobre GNU Taler "
 #~ "en nuestra <a href=\"{site}\">página "
 #~ "principal</a>."
+
diff --git a/talermerchantdemos/translations/fr/LC_MESSAGES/messages.po 
b/talermerchantdemos/translations/fr/LC_MESSAGES/messages.po
index f0592dd..a671df4 100644
--- a/talermerchantdemos/translations/fr/LC_MESSAGES/messages.po
+++ b/talermerchantdemos/translations/fr/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: 2023-02-24 14:38+0100\n"
+"POT-Creation-Date: 2023-10-04 20:41+0200\n"
 "PO-Revision-Date: 2023-02-11 11:03+0000\n"
 "Last-Translator: Stefan Kügel <skuegel@web.de>\n"
 "Language: fr\n"
@@ -19,9 +19,9 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Generated-By: Babel 2.11.0\n"
 
-#: talermerchantdemos/blog/blog.py:130 talermerchantdemos/blog/blog.py:209
-#: talermerchantdemos/blog/blog.py:448 talermerchantdemos/blog/blog.py:457
-#: talermerchantdemos/blog/blog.py:467
+#: talermerchantdemos/blog/blog.py:150 talermerchantdemos/blog/blog.py:229
+#: talermerchantdemos/blog/blog.py:389 talermerchantdemos/blog/blog.py:558
+#: talermerchantdemos/blog/blog.py:567 talermerchantdemos/blog/blog.py:577
 #: talermerchantdemos/donations/donations.py:144
 #: talermerchantdemos/donations/donations.py:313
 #: talermerchantdemos/landing/landing.py:95
@@ -36,59 +36,69 @@ msgstr ""
 msgid "GNU Taler Demo: Error"
 msgstr ""
 
-#: talermerchantdemos/blog/blog.py:131 talermerchantdemos/landing/landing.py:96
+#: talermerchantdemos/blog/blog.py:151 talermerchantdemos/landing/landing.py:96
 msgid "Internal error"
 msgstr "Erreur interne"
 
-#: talermerchantdemos/blog/blog.py:184
+#: talermerchantdemos/blog/blog.py:204
 msgid "GNU Taler Demo: Essay Shop"
 msgstr ""
 
-#: talermerchantdemos/blog/blog.py:202
+#: talermerchantdemos/blog/blog.py:222
 msgid "Cannot refund unpaid article"
 msgstr "Impossible de rembourser l'article non payé"
 
-#: talermerchantdemos/blog/blog.py:210
+#: talermerchantdemos/blog/blog.py:230
 msgid "Article is not anymore refundable"
 msgstr "L'article n'est plus remboursable"
 
-#: talermerchantdemos/blog/blog.py:214
+#: talermerchantdemos/blog/blog.py:234
 msgid "GNU Taler Demo: Confirm refund"
 msgstr ""
 
-#: talermerchantdemos/blog/blog.py:247
+#: talermerchantdemos/blog/blog.py:267
 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:252
+#: talermerchantdemos/blog/blog.py:272
 msgid "Item not refundable (anymore)"
 msgstr "Article non remboursable (plus)"
 
-#: talermerchantdemos/blog/blog.py:278
+#: talermerchantdemos/blog/blog.py:298
 msgid "Internal error: Files for article ({}) not found."
 msgstr "Erreur interne : Fichiers pour l'article ({}) non trouvés."
 
-#: talermerchantdemos/blog/blog.py:285
+#: talermerchantdemos/blog/blog.py:305
 msgid "Supplemental file ({}) for article ({}) not found."
 msgstr "Fichier supplémentaire ({}) pour l'article ({}) non trouvé."
 
-#: talermerchantdemos/blog/blog.py:293
+#: talermerchantdemos/blog/blog.py:313
 msgid "GNU Taler Demo: Article"
 msgstr ""
 
-#: talermerchantdemos/blog/blog.py:365 talermerchantdemos/blog/blog.py:379
+#: talermerchantdemos/blog/blog.py:390
+msgid "Please enable cookies."
+msgstr ""
+
+#: talermerchantdemos/blog/blog.py:408 talermerchantdemos/blog/blog.py:439
 msgid "Direct access forbidden"
 msgstr "Accès direct interdit"
 
-#: talermerchantdemos/blog/blog.py:397
+#: talermerchantdemos/blog/blog.py:431
+#: talermerchantdemos/httpcommon/__init__.py:52
+#: talermerchantdemos/httpcommon/__init__.py:75
+msgid "Backend returned error status"
+msgstr "Le backend a renvoyé un statut d'erreur"
+
+#: talermerchantdemos/blog/blog.py:490
 msgid "GNU Taler Demo: Refunded"
 msgstr ""
 
-#: talermerchantdemos/blog/blog.py:449
+#: talermerchantdemos/blog/blog.py:559
 msgid "Internal server error"
 msgstr "Erreur interne du serveur"
 
-#: talermerchantdemos/blog/blog.py:458
+#: talermerchantdemos/blog/blog.py:568
 #: talermerchantdemos/donations/donations.py:314
 #: talermerchantdemos/landing/landing.py:181
 #: talermerchantdemos/survey/survey.py:183
@@ -114,7 +124,7 @@ msgid "Backend could not create the order"
 msgstr "Le backend n'a pas pu créer la commande"
 
 #: talermerchantdemos/httpcommon/__init__.py:41
-#: talermerchantdemos/httpcommon/__init__.py:81
+#: talermerchantdemos/httpcommon/__init__.py:91
 msgid "Could not establish connection to backend"
 msgstr "Impossible d'établir une connexion avec le backend"
 
@@ -123,12 +133,7 @@ msgstr "Impossible d'établir une connexion avec le backend"
 msgid "Could not parse the response from backend"
 msgstr "Impossible d'analyser la réponse du backend"
 
-#: talermerchantdemos/httpcommon/__init__.py:52
-#: talermerchantdemos/httpcommon/__init__.py:89
-msgid "Backend returned error status"
-msgstr "Le backend a renvoyé un statut d'erreur"
-
-#: talermerchantdemos/httpcommon/__init__.py:86
+#: talermerchantdemos/httpcommon/__init__.py:96
 msgid "Could not parse response from backend"
 msgstr "Impossible d'analyser la réponse du backend"
 
@@ -178,6 +183,10 @@ msgstr ""
 msgid "You will not be able to read the article until you pay for it again."
 msgstr "Après avoir obtenu un remboursement, vous ne pourrez plus lire 
l'article."
 
+#: talermerchantdemos/templates/blog-article-refunded.html.j2:18
+msgid "Click here to pay it again."
+msgstr ""
+
 #: talermerchantdemos/templates/blog-base.html.j2:10
 msgid "Essay shop"
 msgstr "Boutique d'essai"
@@ -298,7 +307,8 @@ msgid "Chapters"
 msgstr "Chapitres"
 
 #: talermerchantdemos/templates/blog-index.html.j2:25
-msgid "Click on an individual chapter to to purchase it with GNU Taler."
+#, fuzzy
+msgid "Click on an individual chapter to purchase it with GNU Taler."
 msgstr "Cliquez sur un des chapitres pour l'acheter avec GNU Taler."
 
 #: talermerchantdemos/templates/blog-index.html.j2:26
@@ -336,8 +346,9 @@ msgid "Donations"
 msgstr "Dons"
 
 #: talermerchantdemos/templates/common-base.html.j2:70
-msgid "Tipping/Survey"
-msgstr "Pourboire/Sondage"
+#: talermerchantdemos/templates/survey-base.html.j2:11
+msgid "Survey"
+msgstr "Sondage"
 
 #: talermerchantdemos/templates/common-base.html.j2:109
 msgid ""
@@ -673,7 +684,8 @@ msgid "Step 5: Survey"
 msgstr "Étape 5 : Enquête"
 
 #: talermerchantdemos/templates/landing-index.html.j2:68
-msgid "Websites can give tips to visitors for completing tasks."
+#, fuzzy
+msgid "Websites can give rewards to visitors for completing tasks."
 msgstr ""
 "Les sites web peuvent donner des pourboires aux visiteurs pour accomplir "
 "des tâches."
@@ -700,20 +712,18 @@ msgstr ""
 "Faites-nous savoir ce que vous pensez en <a href=\"{link}\">nous "
 "contactant</a>."
 
-#: talermerchantdemos/templates/survey-base.html.j2:11
-msgid "Survey"
-msgstr "Sondage"
-
 #: talermerchantdemos/templates/survey-base.html.j2:13
-msgid "This page demonstrates how to tip visitors for completing small tasks."
+#, fuzzy
+msgid "This page demonstrates how to reward 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:14
+#, fuzzy
 msgid ""
-"Tipping is a way for offer cash rewards that go directly into a user's "
-"wallet."
+"Rewarding is a way of offering cash rewards that go straight 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."
@@ -723,9 +733,10 @@ msgid "Unexpected result"
 msgstr "Résultat inattendu"
 
 #: talermerchantdemos/templates/survey-index.html.j2:6
+#, fuzzy
 msgid ""
-"Please participate in our survey about payment systems and receive a tip "
-"in return."
+"Please participate in our survey about payment systems and receive a "
+"reward in return."
 msgstr ""
 "Participez à notre enquête sur les systèmes de paiement et recevez un "
 "pourboire en retour."
@@ -780,7 +791,7 @@ msgstr "Soumettre l'enquête"
 #~ msgstr "Boutique de test"
 
 #~ msgid "Tipping/Survey"
-#~ msgstr "Conseils/Sondage"
+#~ msgstr "Pourboire/Sondage"
 
 #~ msgid ""
 #~ "You can learn more about GNU Taler"
diff --git a/talermerchantdemos/translations/hi/LC_MESSAGES/messages.po 
b/talermerchantdemos/translations/hi/LC_MESSAGES/messages.po
index 39bb224..782507d 100644
--- a/talermerchantdemos/translations/hi/LC_MESSAGES/messages.po
+++ b/talermerchantdemos/translations/hi/LC_MESSAGES/messages.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PROJECT VERSION\n"
 "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2023-02-24 14:38+0100\n"
+"POT-Creation-Date: 2023-10-04 20:41+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: Automatically generated\n"
 "Language: hi\n"
@@ -18,9 +18,9 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Generated-By: Babel 2.11.0\n"
 
-#: talermerchantdemos/blog/blog.py:130 talermerchantdemos/blog/blog.py:209
-#: talermerchantdemos/blog/blog.py:448 talermerchantdemos/blog/blog.py:457
-#: talermerchantdemos/blog/blog.py:467
+#: talermerchantdemos/blog/blog.py:150 talermerchantdemos/blog/blog.py:229
+#: talermerchantdemos/blog/blog.py:389 talermerchantdemos/blog/blog.py:558
+#: talermerchantdemos/blog/blog.py:567 talermerchantdemos/blog/blog.py:577
 #: talermerchantdemos/donations/donations.py:144
 #: talermerchantdemos/donations/donations.py:313
 #: talermerchantdemos/landing/landing.py:95
@@ -35,59 +35,69 @@ msgstr ""
 msgid "GNU Taler Demo: Error"
 msgstr ""
 
-#: talermerchantdemos/blog/blog.py:131 talermerchantdemos/landing/landing.py:96
+#: talermerchantdemos/blog/blog.py:151 talermerchantdemos/landing/landing.py:96
 msgid "Internal error"
 msgstr ""
 
-#: talermerchantdemos/blog/blog.py:184
+#: talermerchantdemos/blog/blog.py:204
 msgid "GNU Taler Demo: Essay Shop"
 msgstr ""
 
-#: talermerchantdemos/blog/blog.py:202
+#: talermerchantdemos/blog/blog.py:222
 msgid "Cannot refund unpaid article"
 msgstr ""
 
-#: talermerchantdemos/blog/blog.py:210
+#: talermerchantdemos/blog/blog.py:230
 msgid "Article is not anymore refundable"
 msgstr ""
 
-#: talermerchantdemos/blog/blog.py:214
+#: talermerchantdemos/blog/blog.py:234
 msgid "GNU Taler Demo: Confirm refund"
 msgstr ""
 
-#: talermerchantdemos/blog/blog.py:247
+#: talermerchantdemos/blog/blog.py:267
 msgid "You did not pay for this article (nice try!)"
 msgstr ""
 
-#: talermerchantdemos/blog/blog.py:252
+#: talermerchantdemos/blog/blog.py:272
 msgid "Item not refundable (anymore)"
 msgstr ""
 
-#: talermerchantdemos/blog/blog.py:278
+#: talermerchantdemos/blog/blog.py:298
 msgid "Internal error: Files for article ({}) not found."
 msgstr ""
 
-#: talermerchantdemos/blog/blog.py:285
+#: talermerchantdemos/blog/blog.py:305
 msgid "Supplemental file ({}) for article ({}) not found."
 msgstr ""
 
-#: talermerchantdemos/blog/blog.py:293
+#: talermerchantdemos/blog/blog.py:313
 msgid "GNU Taler Demo: Article"
 msgstr ""
 
-#: talermerchantdemos/blog/blog.py:365 talermerchantdemos/blog/blog.py:379
+#: talermerchantdemos/blog/blog.py:390
+msgid "Please enable cookies."
+msgstr ""
+
+#: talermerchantdemos/blog/blog.py:408 talermerchantdemos/blog/blog.py:439
 msgid "Direct access forbidden"
 msgstr ""
 
-#: talermerchantdemos/blog/blog.py:397
+#: talermerchantdemos/blog/blog.py:431
+#: talermerchantdemos/httpcommon/__init__.py:52
+#: talermerchantdemos/httpcommon/__init__.py:75
+msgid "Backend returned error status"
+msgstr ""
+
+#: talermerchantdemos/blog/blog.py:490
 msgid "GNU Taler Demo: Refunded"
 msgstr ""
 
-#: talermerchantdemos/blog/blog.py:449
+#: talermerchantdemos/blog/blog.py:559
 msgid "Internal server error"
 msgstr ""
 
-#: talermerchantdemos/blog/blog.py:458
+#: talermerchantdemos/blog/blog.py:568
 #: talermerchantdemos/donations/donations.py:314
 #: talermerchantdemos/landing/landing.py:181
 #: talermerchantdemos/survey/survey.py:183
@@ -113,7 +123,7 @@ msgid "Backend could not create the order"
 msgstr ""
 
 #: talermerchantdemos/httpcommon/__init__.py:41
-#: talermerchantdemos/httpcommon/__init__.py:81
+#: talermerchantdemos/httpcommon/__init__.py:91
 msgid "Could not establish connection to backend"
 msgstr ""
 
@@ -121,12 +131,7 @@ msgstr ""
 msgid "Could not parse the response from backend"
 msgstr ""
 
-#: talermerchantdemos/httpcommon/__init__.py:52
-#: talermerchantdemos/httpcommon/__init__.py:89
-msgid "Backend returned error status"
-msgstr ""
-
-#: talermerchantdemos/httpcommon/__init__.py:86
+#: talermerchantdemos/httpcommon/__init__.py:96
 msgid "Could not parse response from backend"
 msgstr ""
 
@@ -173,6 +178,10 @@ msgstr ""
 msgid "You will not be able to read the article until you pay for it again."
 msgstr ""
 
+#: talermerchantdemos/templates/blog-article-refunded.html.j2:18
+msgid "Click here to pay it again."
+msgstr ""
+
 #: talermerchantdemos/templates/blog-base.html.j2:10
 msgid "Essay shop"
 msgstr ""
@@ -274,7 +283,7 @@ msgid "Chapters"
 msgstr ""
 
 #: talermerchantdemos/templates/blog-index.html.j2:25
-msgid "Click on an individual chapter to to purchase it with GNU Taler."
+msgid "Click on an individual chapter to purchase it with GNU Taler."
 msgstr ""
 
 #: talermerchantdemos/templates/blog-index.html.j2:26
@@ -310,7 +319,8 @@ msgid "Donations"
 msgstr ""
 
 #: talermerchantdemos/templates/common-base.html.j2:70
-msgid "Tipping/Survey"
+#: talermerchantdemos/templates/survey-base.html.j2:11
+msgid "Survey"
 msgstr ""
 
 #: talermerchantdemos/templates/common-base.html.j2:109
@@ -570,7 +580,7 @@ msgid "Step 5: Survey"
 msgstr ""
 
 #: talermerchantdemos/templates/landing-index.html.j2:68
-msgid "Websites can give tips to visitors for completing tasks."
+msgid "Websites can give rewards to visitors for completing tasks."
 msgstr ""
 
 #: talermerchantdemos/templates/landing-index.html.j2:69
@@ -591,18 +601,14 @@ msgstr ""
 msgid "Let us know what you think by <a href=\"{link}\">contacting us</a>."
 msgstr ""
 
-#: talermerchantdemos/templates/survey-base.html.j2:11
-msgid "Survey"
-msgstr ""
-
 #: talermerchantdemos/templates/survey-base.html.j2:13
-msgid "This page demonstrates how to tip visitors for completing small tasks."
+msgid "This page demonstrates how to reward visitors for completing small 
tasks."
 msgstr ""
 
 #: talermerchantdemos/templates/survey-base.html.j2:14
 msgid ""
-"Tipping is a way for offer cash rewards that go directly into a user's "
-"wallet."
+"Rewarding is a way of offering cash rewards that go straight into a "
+"user's wallet."
 msgstr ""
 
 #: talermerchantdemos/templates/survey-error-graceful.html.j2:3
@@ -611,8 +617,8 @@ msgstr ""
 
 #: talermerchantdemos/templates/survey-index.html.j2:6
 msgid ""
-"Please participate in our survey about payment systems and receive a tip "
-"in return."
+"Please participate in our survey about payment systems and receive a "
+"reward in return."
 msgstr ""
 
 #: talermerchantdemos/templates/survey-index.html.j2:13
@@ -688,3 +694,24 @@ msgstr ""
 #~ "href=\"{site}\">website</a>."
 #~ msgstr ""
 
+#~ msgid "Click on an individual chapter to to purchase it with GNU Taler."
+#~ msgstr ""
+
+#~ msgid "Websites can give tips to visitors for completing tasks."
+#~ msgstr ""
+
+#~ msgid "This page demonstrates how to tip visitors for completing small 
tasks."
+#~ msgstr ""
+
+#~ msgid ""
+#~ "Tipping is a way for offer cash"
+#~ " rewards that go directly into a "
+#~ "user's wallet."
+#~ msgstr ""
+
+#~ msgid ""
+#~ "Please participate in our survey about"
+#~ " payment systems and receive a tip"
+#~ " in return."
+#~ msgstr ""
+
diff --git a/talermerchantdemos/translations/it/LC_MESSAGES/messages.po 
b/talermerchantdemos/translations/it/LC_MESSAGES/messages.po
index 1a1554d..a05dfd1 100644
--- a/talermerchantdemos/translations/it/LC_MESSAGES/messages.po
+++ b/talermerchantdemos/translations/it/LC_MESSAGES/messages.po
@@ -7,22 +7,21 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PROJECT VERSION\n"
 "Report-Msgid-Bugs-To: eintritt@hotmail.com\n"
-"POT-Creation-Date: 2023-02-24 14:38+0100\n"
+"POT-Creation-Date: 2023-10-04 20:41+0200\n"
 "PO-Revision-Date: 2023-08-17 09:44+0000\n"
 "Last-Translator: Krystian Baran <kiszkot@murena.io>\n"
-"Language-Team: Italian <https://weblate.taler.net/projects/gnu-taler/";
-"demonstration-pages/it/>\n"
 "Language: it\n"
+"Language-Team: Italian <https://weblate.taler.net/projects/gnu-taler";
+"/demonstration-pages/it/>\n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=utf-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Generator: Weblate 4.13.1\n"
 "Generated-By: Babel 2.11.0\n"
 
-#: talermerchantdemos/blog/blog.py:130 talermerchantdemos/blog/blog.py:209
-#: talermerchantdemos/blog/blog.py:448 talermerchantdemos/blog/blog.py:457
-#: talermerchantdemos/blog/blog.py:467
+#: talermerchantdemos/blog/blog.py:150 talermerchantdemos/blog/blog.py:229
+#: talermerchantdemos/blog/blog.py:389 talermerchantdemos/blog/blog.py:558
+#: talermerchantdemos/blog/blog.py:567 talermerchantdemos/blog/blog.py:577
 #: talermerchantdemos/donations/donations.py:144
 #: talermerchantdemos/donations/donations.py:313
 #: talermerchantdemos/landing/landing.py:95
@@ -37,59 +36,69 @@ msgstr ""
 msgid "GNU Taler Demo: Error"
 msgstr "GNU Taler Demo: Errore"
 
-#: talermerchantdemos/blog/blog.py:131 talermerchantdemos/landing/landing.py:96
+#: talermerchantdemos/blog/blog.py:151 talermerchantdemos/landing/landing.py:96
 msgid "Internal error"
 msgstr "Errore interno"
 
-#: talermerchantdemos/blog/blog.py:184
+#: talermerchantdemos/blog/blog.py:204
 msgid "GNU Taler Demo: Essay Shop"
 msgstr "GNU Taler Demo: Negozio di Saggi"
 
-#: talermerchantdemos/blog/blog.py:202
+#: talermerchantdemos/blog/blog.py:222
 msgid "Cannot refund unpaid article"
 msgstr "Impossibile rimborsare un articolo non pagato"
 
-#: talermerchantdemos/blog/blog.py:210
+#: talermerchantdemos/blog/blog.py:230
 msgid "Article is not anymore refundable"
 msgstr "L'articolo non è più rimborsabile"
 
-#: talermerchantdemos/blog/blog.py:214
+#: talermerchantdemos/blog/blog.py:234
 msgid "GNU Taler Demo: Confirm refund"
 msgstr "GNU Taler Demo: Conferma rimborso"
 
-#: talermerchantdemos/blog/blog.py:247
+#: talermerchantdemos/blog/blog.py:267
 msgid "You did not pay for this article (nice try!)"
 msgstr "Non hai pagato questo articolo (bel tentativo!)"
 
-#: talermerchantdemos/blog/blog.py:252
+#: talermerchantdemos/blog/blog.py:272
 msgid "Item not refundable (anymore)"
 msgstr "Articolo non (più) rimborsabile"
 
-#: talermerchantdemos/blog/blog.py:278
+#: talermerchantdemos/blog/blog.py:298
 msgid "Internal error: Files for article ({}) not found."
 msgstr "Errore interno: File per l'articolo ({}) non trovati."
 
-#: talermerchantdemos/blog/blog.py:285
+#: talermerchantdemos/blog/blog.py:305
 msgid "Supplemental file ({}) for article ({}) not found."
 msgstr "File supplementare ({}) per l'articolo ({}) non trovato."
 
-#: talermerchantdemos/blog/blog.py:293
+#: talermerchantdemos/blog/blog.py:313
 msgid "GNU Taler Demo: Article"
 msgstr "GNU Taler Demo: Articolo"
 
-#: talermerchantdemos/blog/blog.py:365 talermerchantdemos/blog/blog.py:379
+#: talermerchantdemos/blog/blog.py:390
+msgid "Please enable cookies."
+msgstr ""
+
+#: talermerchantdemos/blog/blog.py:408 talermerchantdemos/blog/blog.py:439
 msgid "Direct access forbidden"
 msgstr "Accesso diretto vietato"
 
-#: talermerchantdemos/blog/blog.py:397
+#: talermerchantdemos/blog/blog.py:431
+#: talermerchantdemos/httpcommon/__init__.py:52
+#: talermerchantdemos/httpcommon/__init__.py:75
+msgid "Backend returned error status"
+msgstr "Il backend ha segnalato uno stato di errore"
+
+#: talermerchantdemos/blog/blog.py:490
 msgid "GNU Taler Demo: Refunded"
 msgstr "GNU Taler Demo: Rimborsato"
 
-#: talermerchantdemos/blog/blog.py:449
+#: talermerchantdemos/blog/blog.py:559
 msgid "Internal server error"
 msgstr "Errore del server"
 
-#: talermerchantdemos/blog/blog.py:458
+#: talermerchantdemos/blog/blog.py:568
 #: talermerchantdemos/donations/donations.py:314
 #: talermerchantdemos/landing/landing.py:181
 #: talermerchantdemos/survey/survey.py:183
@@ -116,7 +125,7 @@ msgid "Backend could not create the order"
 msgstr "Il backend non ha potuto creare l'ordine"
 
 #: talermerchantdemos/httpcommon/__init__.py:41
-#: talermerchantdemos/httpcommon/__init__.py:81
+#: talermerchantdemos/httpcommon/__init__.py:91
 msgid "Could not establish connection to backend"
 msgstr "Impossibile stabilire la connessione al backend"
 
@@ -125,12 +134,7 @@ msgstr "Impossibile stabilire la connessione al backend"
 msgid "Could not parse the response from backend"
 msgstr "Impossibile analizzare la risposta del backend"
 
-#: talermerchantdemos/httpcommon/__init__.py:52
-#: talermerchantdemos/httpcommon/__init__.py:89
-msgid "Backend returned error status"
-msgstr "Il backend ha segnalato uno stato di errore"
-
-#: talermerchantdemos/httpcommon/__init__.py:86
+#: talermerchantdemos/httpcommon/__init__.py:96
 msgid "Could not parse response from backend"
 msgstr "Impossibile analizzare la risposta del backend"
 
@@ -174,8 +178,8 @@ msgid ""
 "Your payment (order ID <tt>{order}<tt>) for the article \"{article}\" has"
 " been refunded."
 msgstr ""
-"Il tuo pagamento (ID ordine <tt>{order}<tt>) per l'articolo \"{article}\" è "
-"stato rimborsato."
+"Il tuo pagamento (ID ordine <tt>{order}<tt>) per l'articolo \"{article}\""
+" è stato rimborsato."
 
 #: talermerchantdemos/templates/blog-article-refunded.html.j2:14
 #, fuzzy
@@ -184,6 +188,10 @@ msgstr ""
 "Dopo aver ottenuto un rimborso, non sarà più possibile leggere questo "
 "articolo."
 
+#: talermerchantdemos/templates/blog-article-refunded.html.j2:18
+msgid "Click here to pay it again."
+msgstr ""
+
 #: talermerchantdemos/templates/blog-base.html.j2:10
 msgid "Essay shop"
 msgstr "Negozio di saggistica"
@@ -303,7 +311,8 @@ msgid "Chapters"
 msgstr "Capitoli"
 
 #: talermerchantdemos/templates/blog-index.html.j2:25
-msgid "Click on an individual chapter to to purchase it with GNU Taler."
+#, fuzzy
+msgid "Click on an individual chapter to purchase it with GNU Taler."
 msgstr "Clicca su un capitolo per comprarlo con GNU Taler."
 
 #: talermerchantdemos/templates/blog-index.html.j2:26
@@ -342,16 +351,17 @@ msgid "Donations"
 msgstr "Donazioni"
 
 #: talermerchantdemos/templates/common-base.html.j2:70
-msgid "Tipping/Survey"
-msgstr "Ricompensa/Sondaggio"
+#: talermerchantdemos/templates/survey-base.html.j2:11
+msgid "Survey"
+msgstr "Sondaggio"
 
 #: talermerchantdemos/templates/common-base.html.j2:109
 msgid ""
 "You can learn more about GNU Taler on our main <a "
 "href=\"{site}\">website</a>."
 msgstr ""
-"Per maggiori informazioni su GNU Taler, visita il nostro <a href=\"{site}\""
-">sito</a>."
+"Per maggiori informazioni su GNU Taler, visita il nostro <a "
+"href=\"{site}\">sito</a>."
 
 #: talermerchantdemos/templates/donations-base.html.j2:13
 msgid "This is the donation page."
@@ -663,7 +673,8 @@ msgid "Step 5: Survey"
 msgstr "Passo 5: Questionario"
 
 #: talermerchantdemos/templates/landing-index.html.j2:68
-msgid "Websites can give tips to visitors for completing tasks."
+#, fuzzy
+msgid "Websites can give rewards to visitors for completing tasks."
 msgstr "I siti Web possono premiare in denaro gli utenti che risolvano un 
compito."
 
 #: talermerchantdemos/templates/landing-index.html.j2:69
@@ -686,20 +697,18 @@ 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:11
-msgid "Survey"
-msgstr "Sondaggio"
-
 #: talermerchantdemos/templates/survey-base.html.j2:13
-msgid "This page demonstrates how to tip visitors for completing small tasks."
+#, fuzzy
+msgid "This page demonstrates how to reward 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:14
+#, fuzzy
 msgid ""
-"Tipping is a way for offer cash rewards that go directly into a user's "
-"wallet."
+"Rewarding is a way of offering cash rewards that go straight into a "
+"user's wallet."
 msgstr ""
 "Lasciare la mancia è un modo di offrire ricompense in denaro che vanno "
 "direttamente nel portafoglio dell'utente."
@@ -709,9 +718,10 @@ msgid "Unexpected result"
 msgstr "Risultato inaspettato"
 
 #: talermerchantdemos/templates/survey-index.html.j2:6
+#, fuzzy
 msgid ""
-"Please participate in our survey about payment systems and receive a tip "
-"in return."
+"Please participate in our survey about payment systems and receive a "
+"reward in return."
 msgstr ""
 "Per favore partecipa al nostro sondaggio sul sistema di pagamenti e "
 "ricevi una mancia in cambio."
@@ -758,7 +768,7 @@ msgstr "Invia sondaggio"
 #~ msgstr "Negozio di saggistica"
 
 #~ msgid "Tipping/Survey"
-#~ msgstr "Dare la mancia/Sondaggio"
+#~ msgstr "Ricompensa/Sondaggio"
 
 #~ msgid ""
 #~ "You can learn more about GNU Taler"
@@ -767,3 +777,4 @@ msgstr "Invia sondaggio"
 #~ msgstr ""
 #~ "Puoi saperne di più su GNU Taler"
 #~ " sul nostro <a href=\"{site}\">sito</a>."
+
diff --git a/talermerchantdemos/translations/ja/LC_MESSAGES/messages.po 
b/talermerchantdemos/translations/ja/LC_MESSAGES/messages.po
index 29f446e..4f49508 100644
--- a/talermerchantdemos/translations/ja/LC_MESSAGES/messages.po
+++ b/talermerchantdemos/translations/ja/LC_MESSAGES/messages.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PROJECT VERSION\n"
 "Report-Msgid-Bugs-To: eintritt@hotmail.com\n"
-"POT-Creation-Date: 2023-02-24 14:38+0100\n"
+"POT-Creation-Date: 2023-10-04 20:41+0200\n"
 "PO-Revision-Date: 2022-12-26 18:33+0000\n"
 "Last-Translator: Stefan Kügel <skuegel@web.de>\n"
 "Language: ja\n"
@@ -19,9 +19,9 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Generated-By: Babel 2.11.0\n"
 
-#: talermerchantdemos/blog/blog.py:130 talermerchantdemos/blog/blog.py:209
-#: talermerchantdemos/blog/blog.py:448 talermerchantdemos/blog/blog.py:457
-#: talermerchantdemos/blog/blog.py:467
+#: talermerchantdemos/blog/blog.py:150 talermerchantdemos/blog/blog.py:229
+#: talermerchantdemos/blog/blog.py:389 talermerchantdemos/blog/blog.py:558
+#: talermerchantdemos/blog/blog.py:567 talermerchantdemos/blog/blog.py:577
 #: talermerchantdemos/donations/donations.py:144
 #: talermerchantdemos/donations/donations.py:313
 #: talermerchantdemos/landing/landing.py:95
@@ -36,59 +36,69 @@ msgstr ""
 msgid "GNU Taler Demo: Error"
 msgstr ""
 
-#: talermerchantdemos/blog/blog.py:131 talermerchantdemos/landing/landing.py:96
+#: talermerchantdemos/blog/blog.py:151 talermerchantdemos/landing/landing.py:96
 msgid "Internal error"
 msgstr "内部エラー"
 
-#: talermerchantdemos/blog/blog.py:184
+#: talermerchantdemos/blog/blog.py:204
 msgid "GNU Taler Demo: Essay Shop"
 msgstr ""
 
-#: talermerchantdemos/blog/blog.py:202
+#: talermerchantdemos/blog/blog.py:222
 msgid "Cannot refund unpaid article"
 msgstr "未払いの記事の返金はできません"
 
-#: talermerchantdemos/blog/blog.py:210
+#: talermerchantdemos/blog/blog.py:230
 msgid "Article is not anymore refundable"
 msgstr "記事はもう払い戻しできません"
 
-#: talermerchantdemos/blog/blog.py:214
+#: talermerchantdemos/blog/blog.py:234
 msgid "GNU Taler Demo: Confirm refund"
 msgstr ""
 
-#: talermerchantdemos/blog/blog.py:247
+#: talermerchantdemos/blog/blog.py:267
 msgid "You did not pay for this article (nice try!)"
 msgstr "この記事のためにお金を払っていない (頑張った)"
 
-#: talermerchantdemos/blog/blog.py:252
+#: talermerchantdemos/blog/blog.py:272
 msgid "Item not refundable (anymore)"
 msgstr "(もはや)払い戻し不可な商品"
 
-#: talermerchantdemos/blog/blog.py:278
+#: talermerchantdemos/blog/blog.py:298
 msgid "Internal error: Files for article ({}) not found."
 msgstr "内部エラー: 記事 ({}) のファイルが見つかりません。"
 
-#: talermerchantdemos/blog/blog.py:285
+#: talermerchantdemos/blog/blog.py:305
 msgid "Supplemental file ({}) for article ({}) not found."
 msgstr "記事 ({}) の補足ファイル ({}) が見つかりません。"
 
-#: talermerchantdemos/blog/blog.py:293
+#: talermerchantdemos/blog/blog.py:313
 msgid "GNU Taler Demo: Article"
 msgstr ""
 
-#: talermerchantdemos/blog/blog.py:365 talermerchantdemos/blog/blog.py:379
+#: talermerchantdemos/blog/blog.py:390
+msgid "Please enable cookies."
+msgstr ""
+
+#: talermerchantdemos/blog/blog.py:408 talermerchantdemos/blog/blog.py:439
 msgid "Direct access forbidden"
 msgstr "直接アクセスは禁止されています"
 
-#: talermerchantdemos/blog/blog.py:397
+#: talermerchantdemos/blog/blog.py:431
+#: talermerchantdemos/httpcommon/__init__.py:52
+#: talermerchantdemos/httpcommon/__init__.py:75
+msgid "Backend returned error status"
+msgstr "Backend は、エラー・ステータスを返してきました"
+
+#: talermerchantdemos/blog/blog.py:490
 msgid "GNU Taler Demo: Refunded"
 msgstr ""
 
-#: talermerchantdemos/blog/blog.py:449
+#: talermerchantdemos/blog/blog.py:559
 msgid "Internal server error"
 msgstr "サーバー 内部エラー"
 
-#: talermerchantdemos/blog/blog.py:458
+#: talermerchantdemos/blog/blog.py:568
 #: talermerchantdemos/donations/donations.py:314
 #: talermerchantdemos/landing/landing.py:181
 #: talermerchantdemos/survey/survey.py:183
@@ -114,7 +124,7 @@ msgid "Backend could not create the order"
 msgstr "backendは注文を作成できませんでした"
 
 #: talermerchantdemos/httpcommon/__init__.py:41
-#: talermerchantdemos/httpcommon/__init__.py:81
+#: talermerchantdemos/httpcommon/__init__.py:91
 msgid "Could not establish connection to backend"
 msgstr "backendへのコネクションを確立することができませんでした"
 
@@ -123,12 +133,7 @@ msgstr "backendへのコネクションを確立することができません
 msgid "Could not parse the response from backend"
 msgstr "backendからの応答を解析することができませんでした"
 
-#: talermerchantdemos/httpcommon/__init__.py:52
-#: talermerchantdemos/httpcommon/__init__.py:89
-msgid "Backend returned error status"
-msgstr "Backend は、エラー・ステータスを返してきました"
-
-#: talermerchantdemos/httpcommon/__init__.py:86
+#: talermerchantdemos/httpcommon/__init__.py:96
 msgid "Could not parse response from backend"
 msgstr "backendからの応答を解析することができませんでした"
 
@@ -176,6 +181,10 @@ msgstr ""
 msgid "You will not be able to read the article until you pay for it again."
 msgstr "払い戻しを受け取った後は、記事を読むことができなくなります。"
 
+#: talermerchantdemos/templates/blog-article-refunded.html.j2:18
+msgid "Click here to pay it again."
+msgstr ""
+
 #: talermerchantdemos/templates/blog-base.html.j2:10
 msgid "Essay shop"
 msgstr "エッセイショップ"
@@ -279,7 +288,8 @@ msgid "Chapters"
 msgstr "チャプター"
 
 #: talermerchantdemos/templates/blog-index.html.j2:25
-msgid "Click on an individual chapter to to purchase it with GNU Taler."
+#, fuzzy
+msgid "Click on an individual chapter to purchase it with GNU Taler."
 msgstr "個々の章をクリックして、GNUTalerで購入してください。"
 
 #: talermerchantdemos/templates/blog-index.html.j2:26
@@ -317,8 +327,9 @@ msgid "Donations"
 msgstr "寄付"
 
 #: talermerchantdemos/templates/common-base.html.j2:70
-msgid "Tipping/Survey"
-msgstr ""
+#: talermerchantdemos/templates/survey-base.html.j2:11
+msgid "Survey"
+msgstr "アンケート"
 
 #: talermerchantdemos/templates/common-base.html.j2:109
 msgid ""
@@ -584,7 +595,8 @@ msgid "Step 5: Survey"
 msgstr "ステップ5:アンケート"
 
 #: talermerchantdemos/templates/landing-index.html.j2:68
-msgid "Websites can give tips to visitors for completing tasks."
+#, fuzzy
+msgid "Websites can give rewards to visitors for completing tasks."
 msgstr "ウェブサイトは、訪問者に対し、タスクを完了するためのヒントを与えることができます。"
 
 #: talermerchantdemos/templates/landing-index.html.j2:69
@@ -605,18 +617,16 @@ 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:11
-msgid "Survey"
-msgstr "アンケート"
-
 #: talermerchantdemos/templates/survey-base.html.j2:13
-msgid "This page demonstrates how to tip visitors for completing small tasks."
+#, fuzzy
+msgid "This page demonstrates how to reward visitors for completing small 
tasks."
 msgstr "このページでは、小さいタスクの完了に対して訪問者にチップを与える方法を紹介します。"
 
 #: talermerchantdemos/templates/survey-base.html.j2:14
+#, fuzzy
 msgid ""
-"Tipping is a way for offer cash rewards that go directly into a user's "
-"wallet."
+"Rewarding is a way of offering cash rewards that go straight into a "
+"user's wallet."
 msgstr "チップは、ユーザーのウォレットに直接入金される現金により報酬を与えるひとつの方法です。"
 
 #: talermerchantdemos/templates/survey-error-graceful.html.j2:3
@@ -624,9 +634,10 @@ msgid "Unexpected result"
 msgstr ""
 
 #: talermerchantdemos/templates/survey-index.html.j2:6
+#, fuzzy
 msgid ""
-"Please participate in our survey about payment systems and receive a tip "
-"in return."
+"Please participate in our survey about payment systems and receive a "
+"reward in return."
 msgstr "支払システムについてのアンケートに参加し、その代わりにチップをお受け取りください。"
 
 #: talermerchantdemos/templates/survey-index.html.j2:13
@@ -671,7 +682,7 @@ msgstr "アンケートを提出する"
 #~ msgstr "エッセイショップ"
 
 #~ msgid "Tipping/Survey"
-#~ msgstr "チップ/調査"
+#~ msgstr ""
 
 #~ msgid ""
 #~ "You can learn more about GNU Taler"
diff --git a/talermerchantdemos/translations/ko/LC_MESSAGES/messages.po 
b/talermerchantdemos/translations/ko/LC_MESSAGES/messages.po
index 7ea90b2..4b6f0ac 100644
--- a/talermerchantdemos/translations/ko/LC_MESSAGES/messages.po
+++ b/talermerchantdemos/translations/ko/LC_MESSAGES/messages.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PROJECT VERSION\n"
 "Report-Msgid-Bugs-To: eintritt@hotmail.com\n"
-"POT-Creation-Date: 2023-02-24 14:38+0100\n"
+"POT-Creation-Date: 2023-10-04 20:41+0200\n"
 "PO-Revision-Date: 2022-12-26 18:33+0000\n"
 "Last-Translator: Stefan Kügel <skuegel@web.de>\n"
 "Language: ko\n"
@@ -19,9 +19,9 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Generated-By: Babel 2.11.0\n"
 
-#: talermerchantdemos/blog/blog.py:130 talermerchantdemos/blog/blog.py:209
-#: talermerchantdemos/blog/blog.py:448 talermerchantdemos/blog/blog.py:457
-#: talermerchantdemos/blog/blog.py:467
+#: talermerchantdemos/blog/blog.py:150 talermerchantdemos/blog/blog.py:229
+#: talermerchantdemos/blog/blog.py:389 talermerchantdemos/blog/blog.py:558
+#: talermerchantdemos/blog/blog.py:567 talermerchantdemos/blog/blog.py:577
 #: talermerchantdemos/donations/donations.py:144
 #: talermerchantdemos/donations/donations.py:313
 #: talermerchantdemos/landing/landing.py:95
@@ -36,59 +36,69 @@ msgstr ""
 msgid "GNU Taler Demo: Error"
 msgstr ""
 
-#: talermerchantdemos/blog/blog.py:131 talermerchantdemos/landing/landing.py:96
+#: talermerchantdemos/blog/blog.py:151 talermerchantdemos/landing/landing.py:96
 msgid "Internal error"
 msgstr "내부 오류"
 
-#: talermerchantdemos/blog/blog.py:184
+#: talermerchantdemos/blog/blog.py:204
 msgid "GNU Taler Demo: Essay Shop"
 msgstr ""
 
-#: talermerchantdemos/blog/blog.py:202
+#: talermerchantdemos/blog/blog.py:222
 msgid "Cannot refund unpaid article"
 msgstr "미결제 기사는 환불할 수 없습니다"
 
-#: talermerchantdemos/blog/blog.py:210
+#: talermerchantdemos/blog/blog.py:230
 msgid "Article is not anymore refundable"
 msgstr "이 기사는 더이상 환불할 수 없습니다"
 
-#: talermerchantdemos/blog/blog.py:214
+#: talermerchantdemos/blog/blog.py:234
 msgid "GNU Taler Demo: Confirm refund"
 msgstr ""
 
-#: talermerchantdemos/blog/blog.py:247
+#: talermerchantdemos/blog/blog.py:267
 msgid "You did not pay for this article (nice try!)"
 msgstr "이 기사를 구매하지 않았습니다(다시 시도하세요!)"
 
-#: talermerchantdemos/blog/blog.py:252
+#: talermerchantdemos/blog/blog.py:272
 msgid "Item not refundable (anymore)"
 msgstr "환불 불가 상품(기간 만료)"
 
-#: talermerchantdemos/blog/blog.py:278
+#: talermerchantdemos/blog/blog.py:298
 msgid "Internal error: Files for article ({}) not found."
 msgstr "내부 오류: 기사 ({}) 관련 파일들을 찾을 수 없습니다."
 
-#: talermerchantdemos/blog/blog.py:285
+#: talermerchantdemos/blog/blog.py:305
 msgid "Supplemental file ({}) for article ({}) not found."
 msgstr "기사 관련 ({}) 추가 파일을 ({}) 찾을 수 없습니다."
 
-#: talermerchantdemos/blog/blog.py:293
+#: talermerchantdemos/blog/blog.py:313
 msgid "GNU Taler Demo: Article"
 msgstr ""
 
-#: talermerchantdemos/blog/blog.py:365 talermerchantdemos/blog/blog.py:379
+#: talermerchantdemos/blog/blog.py:390
+msgid "Please enable cookies."
+msgstr ""
+
+#: talermerchantdemos/blog/blog.py:408 talermerchantdemos/blog/blog.py:439
 msgid "Direct access forbidden"
 msgstr "직접 접속 불가능"
 
-#: talermerchantdemos/blog/blog.py:397
+#: talermerchantdemos/blog/blog.py:431
+#: talermerchantdemos/httpcommon/__init__.py:52
+#: talermerchantdemos/httpcommon/__init__.py:75
+msgid "Backend returned error status"
+msgstr "백엔드에 대한 오류 수신"
+
+#: talermerchantdemos/blog/blog.py:490
 msgid "GNU Taler Demo: Refunded"
 msgstr ""
 
-#: talermerchantdemos/blog/blog.py:449
+#: talermerchantdemos/blog/blog.py:559
 msgid "Internal server error"
 msgstr "내부 서버 오류"
 
-#: talermerchantdemos/blog/blog.py:458
+#: talermerchantdemos/blog/blog.py:568
 #: talermerchantdemos/donations/donations.py:314
 #: talermerchantdemos/landing/landing.py:181
 #: talermerchantdemos/survey/survey.py:183
@@ -114,7 +124,7 @@ msgid "Backend could not create the order"
 msgstr ""
 
 #: talermerchantdemos/httpcommon/__init__.py:41
-#: talermerchantdemos/httpcommon/__init__.py:81
+#: talermerchantdemos/httpcommon/__init__.py:91
 msgid "Could not establish connection to backend"
 msgstr "백엔드와 연결을 하지 못하고 있습니다"
 
@@ -123,12 +133,7 @@ msgstr "백엔드와 연결을 하지 못하고 있습니다"
 msgid "Could not parse the response from backend"
 msgstr "백엔드의 응답을 분석할 수 없습니다"
 
-#: talermerchantdemos/httpcommon/__init__.py:52
-#: talermerchantdemos/httpcommon/__init__.py:89
-msgid "Backend returned error status"
-msgstr "백엔드에 대한 오류 수신"
-
-#: talermerchantdemos/httpcommon/__init__.py:86
+#: talermerchantdemos/httpcommon/__init__.py:96
 msgid "Could not parse response from backend"
 msgstr "백엔드의 응답을 분석할 수 없습니다"
 
@@ -176,6 +181,10 @@ msgstr ""
 msgid "You will not be able to read the article until you pay for it again."
 msgstr "환불이 완료되면 기사를 더이상 읽으실 수 없습니다."
 
+#: talermerchantdemos/templates/blog-article-refunded.html.j2:18
+msgid "Click here to pay it again."
+msgstr ""
+
 #: talermerchantdemos/templates/blog-base.html.j2:10
 msgid "Essay shop"
 msgstr "에세이 샵"
@@ -281,7 +290,8 @@ msgid "Chapters"
 msgstr "챕터들"
 
 #: talermerchantdemos/templates/blog-index.html.j2:25
-msgid "Click on an individual chapter to to purchase it with GNU Taler."
+#, fuzzy
+msgid "Click on an individual chapter to purchase it with GNU Taler."
 msgstr "각각의 챕터들을 클릭을 함과 동시에 GNU Taler 통해 구매하세요."
 
 #: talermerchantdemos/templates/blog-index.html.j2:26
@@ -319,8 +329,9 @@ msgid "Donations"
 msgstr "기부"
 
 #: talermerchantdemos/templates/common-base.html.j2:70
-msgid "Tipping/Survey"
-msgstr ""
+#: talermerchantdemos/templates/survey-base.html.j2:11
+msgid "Survey"
+msgstr "설문조사"
 
 #: talermerchantdemos/templates/common-base.html.j2:109
 msgid ""
@@ -595,7 +606,8 @@ msgid "Step 5: Survey"
 msgstr "5단계: 설문조사하기"
 
 #: talermerchantdemos/templates/landing-index.html.j2:68
-msgid "Websites can give tips to visitors for completing tasks."
+#, fuzzy
+msgid "Websites can give rewards to visitors for completing tasks."
 msgstr "웹사이트에서는 특정 단계를 마무리한 방문자들이 한해서 팁을 제공하고 있습니다."
 
 #: talermerchantdemos/templates/landing-index.html.j2:69
@@ -616,18 +628,16 @@ 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:11
-msgid "Survey"
-msgstr "설문조사"
-
 #: talermerchantdemos/templates/survey-base.html.j2:13
-msgid "This page demonstrates how to tip visitors for completing small tasks."
+#, fuzzy
+msgid "This page demonstrates how to reward visitors for completing small 
tasks."
 msgstr "해당 페이지에서는 방문자가 작은 단계를 마무리할 때마다 어떤 식으로 팀을 받는지 설명하고 있습니다."
 
 #: talermerchantdemos/templates/survey-base.html.j2:14
+#, fuzzy
 msgid ""
-"Tipping is a way for offer cash rewards that go directly into a user's "
-"wallet."
+"Rewarding is a way of offering cash rewards that go straight into a "
+"user's wallet."
 msgstr "여기서 팁을 준다는 의미는 사용자분들은 walllet에 현금 보상이 곧바로 지급되는 과정을 말합니다."
 
 #: talermerchantdemos/templates/survey-error-graceful.html.j2:3
@@ -635,9 +645,10 @@ msgid "Unexpected result"
 msgstr ""
 
 #: talermerchantdemos/templates/survey-index.html.j2:6
+#, fuzzy
 msgid ""
-"Please participate in our survey about payment systems and receive a tip "
-"in return."
+"Please participate in our survey about payment systems and receive a "
+"reward in return."
 msgstr "저희 결제 시스템에 대한 설문조사에 참여하시고 팁을 받아가세요."
 
 #: talermerchantdemos/templates/survey-index.html.j2:13
@@ -682,7 +693,7 @@ msgstr "설문조사 제출하기"
 #~ msgstr "에세이 샵"
 
 #~ msgid "Tipping/Survey"
-#~ msgstr "팁 / 설문조사"
+#~ msgstr ""
 
 #~ msgid ""
 #~ "You can learn more about GNU Taler"
diff --git a/talermerchantdemos/translations/messages.pot 
b/talermerchantdemos/translations/messages.pot
index b8cfbf6..865cfdd 100644
--- a/talermerchantdemos/translations/messages.pot
+++ b/talermerchantdemos/translations/messages.pot
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PROJECT VERSION\n"
 "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2023-02-24 14:38+0100\n"
+"POT-Creation-Date: 2023-10-04 20:41+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,9 +17,9 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Generated-By: Babel 2.11.0\n"
 
-#: talermerchantdemos/blog/blog.py:130 talermerchantdemos/blog/blog.py:209
-#: talermerchantdemos/blog/blog.py:448 talermerchantdemos/blog/blog.py:457
-#: talermerchantdemos/blog/blog.py:467
+#: talermerchantdemos/blog/blog.py:150 talermerchantdemos/blog/blog.py:229
+#: talermerchantdemos/blog/blog.py:389 talermerchantdemos/blog/blog.py:558
+#: talermerchantdemos/blog/blog.py:567 talermerchantdemos/blog/blog.py:577
 #: talermerchantdemos/donations/donations.py:144
 #: talermerchantdemos/donations/donations.py:313
 #: talermerchantdemos/landing/landing.py:95
@@ -34,59 +34,69 @@ msgstr ""
 msgid "GNU Taler Demo: Error"
 msgstr ""
 
-#: talermerchantdemos/blog/blog.py:131 talermerchantdemos/landing/landing.py:96
+#: talermerchantdemos/blog/blog.py:151 talermerchantdemos/landing/landing.py:96
 msgid "Internal error"
 msgstr ""
 
-#: talermerchantdemos/blog/blog.py:184
+#: talermerchantdemos/blog/blog.py:204
 msgid "GNU Taler Demo: Essay Shop"
 msgstr ""
 
-#: talermerchantdemos/blog/blog.py:202
+#: talermerchantdemos/blog/blog.py:222
 msgid "Cannot refund unpaid article"
 msgstr ""
 
-#: talermerchantdemos/blog/blog.py:210
+#: talermerchantdemos/blog/blog.py:230
 msgid "Article is not anymore refundable"
 msgstr ""
 
-#: talermerchantdemos/blog/blog.py:214
+#: talermerchantdemos/blog/blog.py:234
 msgid "GNU Taler Demo: Confirm refund"
 msgstr ""
 
-#: talermerchantdemos/blog/blog.py:247
+#: talermerchantdemos/blog/blog.py:267
 msgid "You did not pay for this article (nice try!)"
 msgstr ""
 
-#: talermerchantdemos/blog/blog.py:252
+#: talermerchantdemos/blog/blog.py:272
 msgid "Item not refundable (anymore)"
 msgstr ""
 
-#: talermerchantdemos/blog/blog.py:278
+#: talermerchantdemos/blog/blog.py:298
 msgid "Internal error: Files for article ({}) not found."
 msgstr ""
 
-#: talermerchantdemos/blog/blog.py:285
+#: talermerchantdemos/blog/blog.py:305
 msgid "Supplemental file ({}) for article ({}) not found."
 msgstr ""
 
-#: talermerchantdemos/blog/blog.py:293
+#: talermerchantdemos/blog/blog.py:313
 msgid "GNU Taler Demo: Article"
 msgstr ""
 
-#: talermerchantdemos/blog/blog.py:365 talermerchantdemos/blog/blog.py:379
+#: talermerchantdemos/blog/blog.py:390
+msgid "Please enable cookies."
+msgstr ""
+
+#: talermerchantdemos/blog/blog.py:408 talermerchantdemos/blog/blog.py:439
 msgid "Direct access forbidden"
 msgstr ""
 
-#: talermerchantdemos/blog/blog.py:397
+#: talermerchantdemos/blog/blog.py:431
+#: talermerchantdemos/httpcommon/__init__.py:52
+#: talermerchantdemos/httpcommon/__init__.py:75
+msgid "Backend returned error status"
+msgstr ""
+
+#: talermerchantdemos/blog/blog.py:490
 msgid "GNU Taler Demo: Refunded"
 msgstr ""
 
-#: talermerchantdemos/blog/blog.py:449
+#: talermerchantdemos/blog/blog.py:559
 msgid "Internal server error"
 msgstr ""
 
-#: talermerchantdemos/blog/blog.py:458
+#: talermerchantdemos/blog/blog.py:568
 #: talermerchantdemos/donations/donations.py:314
 #: talermerchantdemos/landing/landing.py:181
 #: talermerchantdemos/survey/survey.py:183
@@ -112,7 +122,7 @@ msgid "Backend could not create the order"
 msgstr ""
 
 #: talermerchantdemos/httpcommon/__init__.py:41
-#: talermerchantdemos/httpcommon/__init__.py:81
+#: talermerchantdemos/httpcommon/__init__.py:91
 msgid "Could not establish connection to backend"
 msgstr ""
 
@@ -120,12 +130,7 @@ msgstr ""
 msgid "Could not parse the response from backend"
 msgstr ""
 
-#: talermerchantdemos/httpcommon/__init__.py:52
-#: talermerchantdemos/httpcommon/__init__.py:89
-msgid "Backend returned error status"
-msgstr ""
-
-#: talermerchantdemos/httpcommon/__init__.py:86
+#: talermerchantdemos/httpcommon/__init__.py:96
 msgid "Could not parse response from backend"
 msgstr ""
 
@@ -172,6 +177,10 @@ msgstr ""
 msgid "You will not be able to read the article until you pay for it again."
 msgstr ""
 
+#: talermerchantdemos/templates/blog-article-refunded.html.j2:18
+msgid "Click here to pay it again."
+msgstr ""
+
 #: talermerchantdemos/templates/blog-base.html.j2:10
 msgid "Essay shop"
 msgstr ""
@@ -273,7 +282,7 @@ msgid "Chapters"
 msgstr ""
 
 #: talermerchantdemos/templates/blog-index.html.j2:25
-msgid "Click on an individual chapter to to purchase it with GNU Taler."
+msgid "Click on an individual chapter to purchase it with GNU Taler."
 msgstr ""
 
 #: talermerchantdemos/templates/blog-index.html.j2:26
@@ -309,7 +318,8 @@ msgid "Donations"
 msgstr ""
 
 #: talermerchantdemos/templates/common-base.html.j2:70
-msgid "Tipping/Survey"
+#: talermerchantdemos/templates/survey-base.html.j2:11
+msgid "Survey"
 msgstr ""
 
 #: talermerchantdemos/templates/common-base.html.j2:109
@@ -569,7 +579,7 @@ msgid "Step 5: Survey"
 msgstr ""
 
 #: talermerchantdemos/templates/landing-index.html.j2:68
-msgid "Websites can give tips to visitors for completing tasks."
+msgid "Websites can give rewards to visitors for completing tasks."
 msgstr ""
 
 #: talermerchantdemos/templates/landing-index.html.j2:69
@@ -590,18 +600,14 @@ msgstr ""
 msgid "Let us know what you think by <a href=\"{link}\">contacting us</a>."
 msgstr ""
 
-#: talermerchantdemos/templates/survey-base.html.j2:11
-msgid "Survey"
-msgstr ""
-
 #: talermerchantdemos/templates/survey-base.html.j2:13
-msgid "This page demonstrates how to tip visitors for completing small tasks."
+msgid "This page demonstrates how to reward visitors for completing small 
tasks."
 msgstr ""
 
 #: talermerchantdemos/templates/survey-base.html.j2:14
 msgid ""
-"Tipping is a way for offer cash rewards that go directly into a user's "
-"wallet."
+"Rewarding is a way of offering cash rewards that go straight into a "
+"user's wallet."
 msgstr ""
 
 #: talermerchantdemos/templates/survey-error-graceful.html.j2:3
@@ -610,8 +616,8 @@ msgstr ""
 
 #: talermerchantdemos/templates/survey-index.html.j2:6
 msgid ""
-"Please participate in our survey about payment systems and receive a tip "
-"in return."
+"Please participate in our survey about payment systems and receive a "
+"reward in return."
 msgstr ""
 
 #: talermerchantdemos/templates/survey-index.html.j2:13
diff --git a/talermerchantdemos/translations/pt/LC_MESSAGES/messages.po 
b/talermerchantdemos/translations/pt/LC_MESSAGES/messages.po
index 62a7625..51964ea 100644
--- a/talermerchantdemos/translations/pt/LC_MESSAGES/messages.po
+++ b/talermerchantdemos/translations/pt/LC_MESSAGES/messages.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PROJECT VERSION\n"
 "Report-Msgid-Bugs-To: eintritt@hotmail.com\n"
-"POT-Creation-Date: 2023-02-24 14:38+0100\n"
+"POT-Creation-Date: 2023-10-04 20:41+0200\n"
 "PO-Revision-Date: 2022-12-26 18:33+0000\n"
 "Last-Translator: Stefan Kügel <skuegel@web.de>\n"
 "Language: pt\n"
@@ -19,9 +19,9 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Generated-By: Babel 2.11.0\n"
 
-#: talermerchantdemos/blog/blog.py:130 talermerchantdemos/blog/blog.py:209
-#: talermerchantdemos/blog/blog.py:448 talermerchantdemos/blog/blog.py:457
-#: talermerchantdemos/blog/blog.py:467
+#: talermerchantdemos/blog/blog.py:150 talermerchantdemos/blog/blog.py:229
+#: talermerchantdemos/blog/blog.py:389 talermerchantdemos/blog/blog.py:558
+#: talermerchantdemos/blog/blog.py:567 talermerchantdemos/blog/blog.py:577
 #: talermerchantdemos/donations/donations.py:144
 #: talermerchantdemos/donations/donations.py:313
 #: talermerchantdemos/landing/landing.py:95
@@ -36,59 +36,69 @@ msgstr ""
 msgid "GNU Taler Demo: Error"
 msgstr ""
 
-#: talermerchantdemos/blog/blog.py:131 talermerchantdemos/landing/landing.py:96
+#: talermerchantdemos/blog/blog.py:151 talermerchantdemos/landing/landing.py:96
 msgid "Internal error"
 msgstr "Erro interno"
 
-#: talermerchantdemos/blog/blog.py:184
+#: talermerchantdemos/blog/blog.py:204
 msgid "GNU Taler Demo: Essay Shop"
 msgstr ""
 
-#: talermerchantdemos/blog/blog.py:202
+#: talermerchantdemos/blog/blog.py:222
 msgid "Cannot refund unpaid article"
 msgstr "Não é possível reembolsar artigo por pagar"
 
-#: talermerchantdemos/blog/blog.py:210
+#: talermerchantdemos/blog/blog.py:230
 msgid "Article is not anymore refundable"
 msgstr "Já não é possível reembolsar artigo"
 
-#: talermerchantdemos/blog/blog.py:214
+#: talermerchantdemos/blog/blog.py:234
 msgid "GNU Taler Demo: Confirm refund"
 msgstr ""
 
-#: talermerchantdemos/blog/blog.py:247
+#: talermerchantdemos/blog/blog.py:267
 msgid "You did not pay for this article (nice try!)"
 msgstr "Não pagou este artigo (boa tentativa!)"
 
-#: talermerchantdemos/blog/blog.py:252
+#: talermerchantdemos/blog/blog.py:272
 msgid "Item not refundable (anymore)"
 msgstr "Artigo (já) não é reembolsável"
 
-#: talermerchantdemos/blog/blog.py:278
+#: talermerchantdemos/blog/blog.py:298
 msgid "Internal error: Files for article ({}) not found."
 msgstr "Erro interno: Não foram encontrados os ficheiros para o artigo ({})."
 
-#: talermerchantdemos/blog/blog.py:285
+#: talermerchantdemos/blog/blog.py:305
 msgid "Supplemental file ({}) for article ({}) not found."
 msgstr "Não foi encontrado o ficheiro suplementar ({}) do artigo ({})."
 
-#: talermerchantdemos/blog/blog.py:293
+#: talermerchantdemos/blog/blog.py:313
 msgid "GNU Taler Demo: Article"
 msgstr ""
 
-#: talermerchantdemos/blog/blog.py:365 talermerchantdemos/blog/blog.py:379
+#: talermerchantdemos/blog/blog.py:390
+msgid "Please enable cookies."
+msgstr ""
+
+#: talermerchantdemos/blog/blog.py:408 talermerchantdemos/blog/blog.py:439
 msgid "Direct access forbidden"
 msgstr "Acesso direto proibido"
 
-#: talermerchantdemos/blog/blog.py:397
+#: talermerchantdemos/blog/blog.py:431
+#: talermerchantdemos/httpcommon/__init__.py:52
+#: talermerchantdemos/httpcommon/__init__.py:75
+msgid "Backend returned error status"
+msgstr "Backend apresentou um erro"
+
+#: talermerchantdemos/blog/blog.py:490
 msgid "GNU Taler Demo: Refunded"
 msgstr ""
 
-#: talermerchantdemos/blog/blog.py:449
+#: talermerchantdemos/blog/blog.py:559
 msgid "Internal server error"
 msgstr "Erro interno do servidor"
 
-#: talermerchantdemos/blog/blog.py:458
+#: talermerchantdemos/blog/blog.py:568
 #: talermerchantdemos/donations/donations.py:314
 #: talermerchantdemos/landing/landing.py:181
 #: talermerchantdemos/survey/survey.py:183
@@ -114,7 +124,7 @@ msgid "Backend could not create the order"
 msgstr ""
 
 #: talermerchantdemos/httpcommon/__init__.py:41
-#: talermerchantdemos/httpcommon/__init__.py:81
+#: talermerchantdemos/httpcommon/__init__.py:91
 msgid "Could not establish connection to backend"
 msgstr "Não foi possível estabelecer uma ligação ao backend"
 
@@ -123,12 +133,7 @@ msgstr "Não foi possível estabelecer uma ligação ao 
backend"
 msgid "Could not parse the response from backend"
 msgstr "Não foi possível analisar a resposta do backend"
 
-#: talermerchantdemos/httpcommon/__init__.py:52
-#: talermerchantdemos/httpcommon/__init__.py:89
-msgid "Backend returned error status"
-msgstr "Backend apresentou um erro"
-
-#: talermerchantdemos/httpcommon/__init__.py:86
+#: talermerchantdemos/httpcommon/__init__.py:96
 msgid "Could not parse response from backend"
 msgstr "Não foi possível analisar a resposta do backend"
 
@@ -180,6 +185,10 @@ msgstr ""
 msgid "You will not be able to read the article until you pay for it again."
 msgstr "Depois de obter um reembolso, deixará de poder ler este artigo."
 
+#: talermerchantdemos/templates/blog-article-refunded.html.j2:18
+msgid "Click here to pay it again."
+msgstr ""
+
 #: talermerchantdemos/templates/blog-base.html.j2:10
 msgid "Essay shop"
 msgstr "Loja de ensaios"
@@ -298,7 +307,8 @@ msgid "Chapters"
 msgstr "Capítulos"
 
 #: talermerchantdemos/templates/blog-index.html.j2:25
-msgid "Click on an individual chapter to to purchase it with GNU Taler."
+#, fuzzy
+msgid "Click on an individual chapter to purchase it with GNU Taler."
 msgstr "Clique num capítulo individual para o comprar com o GNU Taler."
 
 #: talermerchantdemos/templates/blog-index.html.j2:26
@@ -337,8 +347,9 @@ msgid "Donations"
 msgstr "Doações"
 
 #: talermerchantdemos/templates/common-base.html.j2:70
-msgid "Tipping/Survey"
-msgstr ""
+#: talermerchantdemos/templates/survey-base.html.j2:11
+msgid "Survey"
+msgstr "Inquérito"
 
 #: talermerchantdemos/templates/common-base.html.j2:109
 msgid ""
@@ -659,7 +670,8 @@ msgid "Step 5: Survey"
 msgstr "Passo 5: Inquérito"
 
 #: talermerchantdemos/templates/landing-index.html.j2:68
-msgid "Websites can give tips to visitors for completing tasks."
+#, fuzzy
+msgid "Websites can give rewards to visitors for completing tasks."
 msgstr "Websites podem dar gorjetas aos visitantes que completarem tarefas."
 
 #: talermerchantdemos/templates/landing-index.html.j2:69
@@ -682,20 +694,18 @@ 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:11
-msgid "Survey"
-msgstr "Inquérito"
-
 #: talermerchantdemos/templates/survey-base.html.j2:13
-msgid "This page demonstrates how to tip visitors for completing small tasks."
+#, fuzzy
+msgid "This page demonstrates how to reward 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:14
+#, fuzzy
 msgid ""
-"Tipping is a way for offer cash rewards that go directly into a user's "
-"wallet."
+"Rewarding is a way of offering cash rewards that go straight 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."
@@ -705,9 +715,10 @@ msgid "Unexpected result"
 msgstr ""
 
 #: talermerchantdemos/templates/survey-index.html.j2:6
+#, fuzzy
 msgid ""
-"Please participate in our survey about payment systems and receive a tip "
-"in return."
+"Please participate in our survey about payment systems and receive a "
+"reward in return."
 msgstr ""
 "Por favor participe no nosso inquérito sobre sistemas de pagamento e, em "
 "troca, receba uma gorjeta."
@@ -754,7 +765,7 @@ msgstr "Submeter Inquérito"
 #~ msgstr "Loja de Ensaios"
 
 #~ msgid "Tipping/Survey"
-#~ msgstr "Gorjeta/Inquérito"
+#~ msgstr ""
 
 #~ msgid ""
 #~ "You can learn more about GNU Taler"
diff --git a/talermerchantdemos/translations/ru/LC_MESSAGES/messages.po 
b/talermerchantdemos/translations/ru/LC_MESSAGES/messages.po
index e975a2a..8b6818a 100644
--- a/talermerchantdemos/translations/ru/LC_MESSAGES/messages.po
+++ b/talermerchantdemos/translations/ru/LC_MESSAGES/messages.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PROJECT VERSION\n"
 "Report-Msgid-Bugs-To: eintritt@hotmail.com\n"
-"POT-Creation-Date: 2023-02-24 14:38+0100\n"
+"POT-Creation-Date: 2023-10-04 20:41+0200\n"
 "PO-Revision-Date: 2022-12-26 18:33+0000\n"
 "Last-Translator: Stefan Kügel <skuegel@web.de>\n"
 "Language: ru\n"
@@ -20,9 +20,9 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Generated-By: Babel 2.11.0\n"
 
-#: talermerchantdemos/blog/blog.py:130 talermerchantdemos/blog/blog.py:209
-#: talermerchantdemos/blog/blog.py:448 talermerchantdemos/blog/blog.py:457
-#: talermerchantdemos/blog/blog.py:467
+#: talermerchantdemos/blog/blog.py:150 talermerchantdemos/blog/blog.py:229
+#: talermerchantdemos/blog/blog.py:389 talermerchantdemos/blog/blog.py:558
+#: talermerchantdemos/blog/blog.py:567 talermerchantdemos/blog/blog.py:577
 #: talermerchantdemos/donations/donations.py:144
 #: talermerchantdemos/donations/donations.py:313
 #: talermerchantdemos/landing/landing.py:95
@@ -37,59 +37,69 @@ msgstr ""
 msgid "GNU Taler Demo: Error"
 msgstr ""
 
-#: talermerchantdemos/blog/blog.py:131 talermerchantdemos/landing/landing.py:96
+#: talermerchantdemos/blog/blog.py:151 talermerchantdemos/landing/landing.py:96
 msgid "Internal error"
 msgstr "Внутренняя ошибка"
 
-#: talermerchantdemos/blog/blog.py:184
+#: talermerchantdemos/blog/blog.py:204
 msgid "GNU Taler Demo: Essay Shop"
 msgstr ""
 
-#: talermerchantdemos/blog/blog.py:202
+#: talermerchantdemos/blog/blog.py:222
 msgid "Cannot refund unpaid article"
 msgstr "Возврат средств за неоплаченный товар невозможен"
 
-#: talermerchantdemos/blog/blog.py:210
+#: talermerchantdemos/blog/blog.py:230
 msgid "Article is not anymore refundable"
 msgstr "Товар более не подлежит возврату"
 
-#: talermerchantdemos/blog/blog.py:214
+#: talermerchantdemos/blog/blog.py:234
 msgid "GNU Taler Demo: Confirm refund"
 msgstr ""
 
-#: talermerchantdemos/blog/blog.py:247
+#: talermerchantdemos/blog/blog.py:267
 msgid "You did not pay for this article (nice try!)"
 msgstr "Вы не оплатили этот товар (Неплохая попытка!)"
 
-#: talermerchantdemos/blog/blog.py:252
+#: talermerchantdemos/blog/blog.py:272
 msgid "Item not refundable (anymore)"
 msgstr "Товар более не подлежит возврату"
 
-#: talermerchantdemos/blog/blog.py:278
+#: talermerchantdemos/blog/blog.py:298
 msgid "Internal error: Files for article ({}) not found."
 msgstr "Внутренняя ошибка. Файлы для товара ({}) не найдены."
 
-#: talermerchantdemos/blog/blog.py:285
+#: talermerchantdemos/blog/blog.py:305
 msgid "Supplemental file ({}) for article ({}) not found."
 msgstr "Вспомогательный файл для товара не найден."
 
-#: talermerchantdemos/blog/blog.py:293
+#: talermerchantdemos/blog/blog.py:313
 msgid "GNU Taler Demo: Article"
 msgstr ""
 
-#: talermerchantdemos/blog/blog.py:365 talermerchantdemos/blog/blog.py:379
+#: talermerchantdemos/blog/blog.py:390
+msgid "Please enable cookies."
+msgstr ""
+
+#: talermerchantdemos/blog/blog.py:408 talermerchantdemos/blog/blog.py:439
 msgid "Direct access forbidden"
 msgstr "Прямой доступ запрещён"
 
-#: talermerchantdemos/blog/blog.py:397
+#: talermerchantdemos/blog/blog.py:431
+#: talermerchantdemos/httpcommon/__init__.py:52
+#: talermerchantdemos/httpcommon/__init__.py:75
+msgid "Backend returned error status"
+msgstr "Бэкэнд вернул ошибку кода"
+
+#: talermerchantdemos/blog/blog.py:490
 msgid "GNU Taler Demo: Refunded"
 msgstr ""
 
-#: talermerchantdemos/blog/blog.py:449
+#: talermerchantdemos/blog/blog.py:559
 msgid "Internal server error"
 msgstr "Внутренняя ошибка сервера"
 
-#: talermerchantdemos/blog/blog.py:458
+#: talermerchantdemos/blog/blog.py:568
 #: talermerchantdemos/donations/donations.py:314
 #: talermerchantdemos/landing/landing.py:181
 #: talermerchantdemos/survey/survey.py:183
@@ -115,7 +125,7 @@ msgid "Backend could not create the order"
 msgstr "Бэкэнд не смог создать заказ"
 
 #: talermerchantdemos/httpcommon/__init__.py:41
-#: talermerchantdemos/httpcommon/__init__.py:81
+#: talermerchantdemos/httpcommon/__init__.py:91
 msgid "Could not establish connection to backend"
 msgstr "Не удалось подключиться к бэкэнду"
 
@@ -124,12 +134,7 @@ msgstr "Не удалось подключиться к бэкэнду"
 msgid "Could not parse the response from backend"
 msgstr "Не удалось проанализировать ответ бэкэнда"
 
-#: talermerchantdemos/httpcommon/__init__.py:52
-#: talermerchantdemos/httpcommon/__init__.py:89
-msgid "Backend returned error status"
-msgstr "Бэкэнд вернул ошибку кода"
-
-#: talermerchantdemos/httpcommon/__init__.py:86
+#: talermerchantdemos/httpcommon/__init__.py:96
 msgid "Could not parse response from backend"
 msgstr "Не удалось проанализировать ответ бэкэнда"
 
@@ -181,6 +186,10 @@ msgstr ""
 "После получения средств за возврат товара, вы больше не сможете читать "
 "эту главу."
 
+#: talermerchantdemos/templates/blog-article-refunded.html.j2:18
+msgid "Click here to pay it again."
+msgstr ""
+
 #: talermerchantdemos/templates/blog-base.html.j2:10
 msgid "Essay shop"
 msgstr "Демо-магазин"
@@ -300,7 +309,8 @@ msgid "Chapters"
 msgstr "Главы"
 
 #: talermerchantdemos/templates/blog-index.html.j2:25
-msgid "Click on an individual chapter to to purchase it with GNU Taler."
+#, fuzzy
+msgid "Click on an individual chapter to purchase it with GNU Taler."
 msgstr ""
 "Для того, чтобы приобрести интересующую вас главу через GNU Taler, "
 "нажмите на неё кнопкой «мыши»."
@@ -342,8 +352,9 @@ msgid "Donations"
 msgstr "Поддержать проект"
 
 #: talermerchantdemos/templates/common-base.html.j2:70
-msgid "Tipping/Survey"
-msgstr ""
+#: talermerchantdemos/templates/survey-base.html.j2:11
+msgid "Survey"
+msgstr "Опрос"
 
 #: talermerchantdemos/templates/common-base.html.j2:109
 #, fuzzy
@@ -666,7 +677,8 @@ msgid "Step 5: Survey"
 msgstr "Шаг 5. Опрос"
 
 #: talermerchantdemos/templates/landing-index.html.j2:68
-msgid "Websites can give tips to visitors for completing tasks."
+#, fuzzy
+msgid "Websites can give rewards to visitors for completing tasks."
 msgstr "Сайты-опросники предлагают вознаграждение за участие в опросе."
 
 #: talermerchantdemos/templates/landing-index.html.j2:69
@@ -693,20 +705,18 @@ msgstr ""
 "Не стесняйтесь <a href=\"{link}\">писать</a> о том, что вы думаете о "
 "Таler."
 
-#: talermerchantdemos/templates/survey-base.html.j2:11
-msgid "Survey"
-msgstr "Опрос"
-
 #: talermerchantdemos/templates/survey-base.html.j2:13
-msgid "This page demonstrates how to tip visitors for completing small tasks."
+#, fuzzy
+msgid "This page demonstrates how to reward visitors for completing small 
tasks."
 msgstr ""
 "На этой странице показано, как вознаградить участника опроса за "
 "выполнение небольших заданий."
 
 #: talermerchantdemos/templates/survey-base.html.j2:14
+#, fuzzy
 msgid ""
-"Tipping is a way for offer cash rewards that go directly into a user's "
-"wallet."
+"Rewarding is a way of offering cash rewards that go straight into a "
+"user's wallet."
 msgstr ""
 "Такое вознаграждение - способ заработать наличные электронные деньги, "
 "которые поступают сразу на электронный кошелёк пользователя."
@@ -716,9 +726,10 @@ msgid "Unexpected result"
 msgstr ""
 
 #: talermerchantdemos/templates/survey-index.html.j2:6
+#, fuzzy
 msgid ""
-"Please participate in our survey about payment systems and receive a tip "
-"in return."
+"Please participate in our survey about payment systems and receive a "
+"reward in return."
 msgstr ""
 "Пожалуйста, примите участие в нашем опросе о платёжных системам и "
 "получите за это вознаграждение."
@@ -765,7 +776,7 @@ msgstr "Отправить"
 #~ msgstr "Демо-магазин"
 
 #~ msgid "Tipping/Survey"
-#~ msgstr "Опрос"
+#~ msgstr ""
 
 #~ msgid ""
 #~ "You can learn more about GNU Taler"
diff --git a/talermerchantdemos/translations/sv/LC_MESSAGES/messages.po 
b/talermerchantdemos/translations/sv/LC_MESSAGES/messages.po
index 6ab7f48..6939057 100644
--- a/talermerchantdemos/translations/sv/LC_MESSAGES/messages.po
+++ b/talermerchantdemos/translations/sv/LC_MESSAGES/messages.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PROJECT VERSION\n"
 "Report-Msgid-Bugs-To: eintritt@hotmail.com\n"
-"POT-Creation-Date: 2023-02-24 14:38+0100\n"
+"POT-Creation-Date: 2023-10-04 20:41+0200\n"
 "PO-Revision-Date: 2022-12-26 18:33+0000\n"
 "Last-Translator: Stefan Kügel <skuegel@web.de>\n"
 "Language: sv\n"
@@ -19,9 +19,9 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Generated-By: Babel 2.11.0\n"
 
-#: talermerchantdemos/blog/blog.py:130 talermerchantdemos/blog/blog.py:209
-#: talermerchantdemos/blog/blog.py:448 talermerchantdemos/blog/blog.py:457
-#: talermerchantdemos/blog/blog.py:467
+#: talermerchantdemos/blog/blog.py:150 talermerchantdemos/blog/blog.py:229
+#: talermerchantdemos/blog/blog.py:389 talermerchantdemos/blog/blog.py:558
+#: talermerchantdemos/blog/blog.py:567 talermerchantdemos/blog/blog.py:577
 #: talermerchantdemos/donations/donations.py:144
 #: talermerchantdemos/donations/donations.py:313
 #: talermerchantdemos/landing/landing.py:95
@@ -36,59 +36,69 @@ msgstr ""
 msgid "GNU Taler Demo: Error"
 msgstr ""
 
-#: talermerchantdemos/blog/blog.py:131 talermerchantdemos/landing/landing.py:96
+#: talermerchantdemos/blog/blog.py:151 talermerchantdemos/landing/landing.py:96
 msgid "Internal error"
 msgstr "Internt fel"
 
-#: talermerchantdemos/blog/blog.py:184
+#: talermerchantdemos/blog/blog.py:204
 msgid "GNU Taler Demo: Essay Shop"
 msgstr ""
 
-#: talermerchantdemos/blog/blog.py:202
+#: talermerchantdemos/blog/blog.py:222
 msgid "Cannot refund unpaid article"
 msgstr "Obetald artikel kan ej återbetalas"
 
-#: talermerchantdemos/blog/blog.py:210
+#: talermerchantdemos/blog/blog.py:230
 msgid "Article is not anymore refundable"
 msgstr "Återbetalning är inte längre möjlig"
 
-#: talermerchantdemos/blog/blog.py:214
+#: talermerchantdemos/blog/blog.py:234
 msgid "GNU Taler Demo: Confirm refund"
 msgstr ""
 
-#: talermerchantdemos/blog/blog.py:247
+#: talermerchantdemos/blog/blog.py:267
 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:252
+#: talermerchantdemos/blog/blog.py:272
 msgid "Item not refundable (anymore)"
 msgstr "Återbetalning kan inte (längre) göras"
 
-#: talermerchantdemos/blog/blog.py:278
+#: talermerchantdemos/blog/blog.py:298
 msgid "Internal error: Files for article ({}) not found."
 msgstr "Internt fel: Underlag för artikel ({}) hittades inte."
 
-#: talermerchantdemos/blog/blog.py:285
+#: talermerchantdemos/blog/blog.py:305
 msgid "Supplemental file ({}) for article ({}) not found."
 msgstr "Kompletterande information ({}) för artikel ({}) hittades inte."
 
-#: talermerchantdemos/blog/blog.py:293
+#: talermerchantdemos/blog/blog.py:313
 msgid "GNU Taler Demo: Article"
 msgstr ""
 
-#: talermerchantdemos/blog/blog.py:365 talermerchantdemos/blog/blog.py:379
+#: talermerchantdemos/blog/blog.py:390
+msgid "Please enable cookies."
+msgstr ""
+
+#: talermerchantdemos/blog/blog.py:408 talermerchantdemos/blog/blog.py:439
 msgid "Direct access forbidden"
 msgstr "Direkt åtkomst förbjuden"
 
-#: talermerchantdemos/blog/blog.py:397
+#: talermerchantdemos/blog/blog.py:431
+#: talermerchantdemos/httpcommon/__init__.py:52
+#: talermerchantdemos/httpcommon/__init__.py:75
+msgid "Backend returned error status"
+msgstr "Backend returnerade felstatus"
+
+#: talermerchantdemos/blog/blog.py:490
 msgid "GNU Taler Demo: Refunded"
 msgstr ""
 
-#: talermerchantdemos/blog/blog.py:449
+#: talermerchantdemos/blog/blog.py:559
 msgid "Internal server error"
 msgstr "Internt serverfel"
 
-#: talermerchantdemos/blog/blog.py:458
+#: talermerchantdemos/blog/blog.py:568
 #: talermerchantdemos/donations/donations.py:314
 #: talermerchantdemos/landing/landing.py:181
 #: talermerchantdemos/survey/survey.py:183
@@ -114,7 +124,7 @@ msgid "Backend could not create the order"
 msgstr "Backend kunde inte skapa beställningen"
 
 #: talermerchantdemos/httpcommon/__init__.py:41
-#: talermerchantdemos/httpcommon/__init__.py:81
+#: talermerchantdemos/httpcommon/__init__.py:91
 msgid "Could not establish connection to backend"
 msgstr "Det gick inte att upprätta anslutning till backend"
 
@@ -123,12 +133,7 @@ msgstr "Det gick inte att upprätta anslutning till backend"
 msgid "Could not parse the response from backend"
 msgstr "Det gick inte att tolka svaret från backend"
 
-#: talermerchantdemos/httpcommon/__init__.py:52
-#: talermerchantdemos/httpcommon/__init__.py:89
-msgid "Backend returned error status"
-msgstr "Backend returnerade felstatus"
-
-#: talermerchantdemos/httpcommon/__init__.py:86
+#: talermerchantdemos/httpcommon/__init__.py:96
 msgid "Could not parse response from backend"
 msgstr "Det gick inte att tolka svaret från backend"
 
@@ -180,6 +185,10 @@ msgstr ""
 "När du har fått en återbetalning kommer du inte att kunna läsa artikeln "
 "längre."
 
+#: talermerchantdemos/templates/blog-article-refunded.html.j2:18
+msgid "Click here to pay it again."
+msgstr ""
+
 #: talermerchantdemos/templates/blog-base.html.j2:10
 msgid "Essay shop"
 msgstr "Artiklar att köpa"
@@ -298,7 +307,8 @@ msgid "Chapters"
 msgstr "Kapitel"
 
 #: talermerchantdemos/templates/blog-index.html.j2:25
-msgid "Click on an individual chapter to to purchase it with GNU Taler."
+#, fuzzy
+msgid "Click on an individual chapter to purchase it with GNU Taler."
 msgstr "Klicka på ett enskilt kapitel för att köpa det med GNU Taler."
 
 #: talermerchantdemos/templates/blog-index.html.j2:26
@@ -338,8 +348,9 @@ msgid "Donations"
 msgstr "Donationer"
 
 #: talermerchantdemos/templates/common-base.html.j2:70
-msgid "Tipping/Survey"
-msgstr ""
+#: talermerchantdemos/templates/survey-base.html.j2:11
+msgid "Survey"
+msgstr "Enkät"
 
 #: talermerchantdemos/templates/common-base.html.j2:109
 msgid ""
@@ -648,7 +659,8 @@ msgid "Step 5: Survey"
 msgstr "Steg 5: Undersökning"
 
 #: talermerchantdemos/templates/landing-index.html.j2:68
-msgid "Websites can give tips to visitors for completing tasks."
+#, fuzzy
+msgid "Websites can give rewards to visitors for completing tasks."
 msgstr "Webbplatser kan ge en slant till besökare för att slutföra uppgifter."
 
 #: talermerchantdemos/templates/landing-index.html.j2:69
@@ -671,18 +683,16 @@ 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:11
-msgid "Survey"
-msgstr "Enkät"
-
 #: talermerchantdemos/templates/survey-base.html.j2:13
-msgid "This page demonstrates how to tip visitors for completing small tasks."
+#, fuzzy
+msgid "This page demonstrates how to reward 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:14
+#, fuzzy
 msgid ""
-"Tipping is a way for offer cash rewards that go directly into a user's "
-"wallet."
+"Rewarding is a way of offering cash rewards that go straight 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."
@@ -692,9 +702,10 @@ msgid "Unexpected result"
 msgstr ""
 
 #: talermerchantdemos/templates/survey-index.html.j2:6
+#, fuzzy
 msgid ""
-"Please participate in our survey about payment systems and receive a tip "
-"in return."
+"Please participate in our survey about payment systems and receive a "
+"reward in return."
 msgstr ""
 "Vänligen delta i vår undersökning om betalningssystem och få en slant i "
 "utbyte."
@@ -753,7 +764,7 @@ msgstr "Skicka in enkäten"
 #~ msgstr "Artiklar att köpa"
 
 #~ msgid "Tipping/Survey"
-#~ msgstr "Enkät/Belöning"
+#~ msgstr ""
 
 #~ msgid ""
 #~ "You can learn more about GNU Taler"
diff --git a/talermerchantdemos/translations/tr/LC_MESSAGES/messages.po 
b/talermerchantdemos/translations/tr/LC_MESSAGES/messages.po
index 0cb2bdf..aa7312c 100644
--- a/talermerchantdemos/translations/tr/LC_MESSAGES/messages.po
+++ b/talermerchantdemos/translations/tr/LC_MESSAGES/messages.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PROJECT VERSION\n"
 "Report-Msgid-Bugs-To: eintritt@hotmail.com\n"
-"POT-Creation-Date: 2023-02-24 14:38+0100\n"
+"POT-Creation-Date: 2023-10-04 20:41+0200\n"
 "PO-Revision-Date: 2022-12-26 18:33+0000\n"
 "Last-Translator: Stefan Kügel <skuegel@web.de>\n"
 "Language: tr\n"
@@ -19,9 +19,9 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Generated-By: Babel 2.11.0\n"
 
-#: talermerchantdemos/blog/blog.py:130 talermerchantdemos/blog/blog.py:209
-#: talermerchantdemos/blog/blog.py:448 talermerchantdemos/blog/blog.py:457
-#: talermerchantdemos/blog/blog.py:467
+#: talermerchantdemos/blog/blog.py:150 talermerchantdemos/blog/blog.py:229
+#: talermerchantdemos/blog/blog.py:389 talermerchantdemos/blog/blog.py:558
+#: talermerchantdemos/blog/blog.py:567 talermerchantdemos/blog/blog.py:577
 #: talermerchantdemos/donations/donations.py:144
 #: talermerchantdemos/donations/donations.py:313
 #: talermerchantdemos/landing/landing.py:95
@@ -36,59 +36,69 @@ msgstr ""
 msgid "GNU Taler Demo: Error"
 msgstr ""
 
-#: talermerchantdemos/blog/blog.py:131 talermerchantdemos/landing/landing.py:96
+#: talermerchantdemos/blog/blog.py:151 talermerchantdemos/landing/landing.py:96
 msgid "Internal error"
 msgstr "Iç hata"
 
-#: talermerchantdemos/blog/blog.py:184
+#: talermerchantdemos/blog/blog.py:204
 msgid "GNU Taler Demo: Essay Shop"
 msgstr ""
 
-#: talermerchantdemos/blog/blog.py:202
+#: talermerchantdemos/blog/blog.py:222
 msgid "Cannot refund unpaid article"
 msgstr "Ücreti ödenmemiş makalenin parası iade edilemez"
 
-#: talermerchantdemos/blog/blog.py:210
+#: talermerchantdemos/blog/blog.py:230
 msgid "Article is not anymore refundable"
 msgstr "Bu makalenin ücreti artık iade edilemez"
 
-#: talermerchantdemos/blog/blog.py:214
+#: talermerchantdemos/blog/blog.py:234
 msgid "GNU Taler Demo: Confirm refund"
 msgstr ""
 
-#: talermerchantdemos/blog/blog.py:247
+#: talermerchantdemos/blog/blog.py:267
 msgid "You did not pay for this article (nice try!)"
 msgstr "Bu makale için ödeme yapmadınız (iyi deneme!)"
 
-#: talermerchantdemos/blog/blog.py:252
+#: talermerchantdemos/blog/blog.py:272
 msgid "Item not refundable (anymore)"
 msgstr "Ürün iade edilemez (artık)"
 
-#: talermerchantdemos/blog/blog.py:278
+#: talermerchantdemos/blog/blog.py:298
 msgid "Internal error: Files for article ({}) not found."
 msgstr "içsel hata: ({}) makalesi için dosyalar bulunamadı."
 
-#: talermerchantdemos/blog/blog.py:285
+#: talermerchantdemos/blog/blog.py:305
 msgid "Supplemental file ({}) for article ({}) not found."
 msgstr "({}) makalesi için ek dosya ({}) bulunamadı."
 
-#: talermerchantdemos/blog/blog.py:293
+#: talermerchantdemos/blog/blog.py:313
 msgid "GNU Taler Demo: Article"
 msgstr ""
 
-#: talermerchantdemos/blog/blog.py:365 talermerchantdemos/blog/blog.py:379
+#: talermerchantdemos/blog/blog.py:390
+msgid "Please enable cookies."
+msgstr ""
+
+#: talermerchantdemos/blog/blog.py:408 talermerchantdemos/blog/blog.py:439
 msgid "Direct access forbidden"
 msgstr "Doğrudan erişim yasak"
 
-#: talermerchantdemos/blog/blog.py:397
+#: talermerchantdemos/blog/blog.py:431
+#: talermerchantdemos/httpcommon/__init__.py:52
+#: talermerchantdemos/httpcommon/__init__.py:75
+msgid "Backend returned error status"
+msgstr "Arka uç hata durumu verdi"
+
+#: talermerchantdemos/blog/blog.py:490
 msgid "GNU Taler Demo: Refunded"
 msgstr ""
 
-#: talermerchantdemos/blog/blog.py:449
+#: talermerchantdemos/blog/blog.py:559
 msgid "Internal server error"
 msgstr "İç Sunucu Hatası"
 
-#: talermerchantdemos/blog/blog.py:458
+#: talermerchantdemos/blog/blog.py:568
 #: talermerchantdemos/donations/donations.py:314
 #: talermerchantdemos/landing/landing.py:181
 #: talermerchantdemos/survey/survey.py:183
@@ -114,7 +124,7 @@ msgid "Backend could not create the order"
 msgstr "Arka uç siparişi oluşturamadı"
 
 #: talermerchantdemos/httpcommon/__init__.py:41
-#: talermerchantdemos/httpcommon/__init__.py:81
+#: talermerchantdemos/httpcommon/__init__.py:91
 msgid "Could not establish connection to backend"
 msgstr "Arka uçla bağlantı kurulamadı"
 
@@ -123,12 +133,7 @@ msgstr "Arka uçla bağlantı kurulamadı"
 msgid "Could not parse the response from backend"
 msgstr "Arka uçtan gelen yanıt ayrıştırılamadı"
 
-#: talermerchantdemos/httpcommon/__init__.py:52
-#: talermerchantdemos/httpcommon/__init__.py:89
-msgid "Backend returned error status"
-msgstr "Arka uç hata durumu verdi"
-
-#: talermerchantdemos/httpcommon/__init__.py:86
+#: talermerchantdemos/httpcommon/__init__.py:96
 msgid "Could not parse response from backend"
 msgstr "Arka uçtan gelen yanıt ayrıştırılamadı"
 
@@ -178,6 +183,10 @@ msgstr ""
 msgid "You will not be able to read the article until you pay for it again."
 msgstr "Geri ödemeyi aldıktan sonra makaleyi bir daha okuyamayacaksınız."
 
+#: talermerchantdemos/templates/blog-article-refunded.html.j2:18
+msgid "Click here to pay it again."
+msgstr ""
+
 #: talermerchantdemos/templates/blog-base.html.j2:10
 msgid "Essay shop"
 msgstr "Deneme Dükkanı"
@@ -295,7 +304,8 @@ msgid "Chapters"
 msgstr "Bölümler"
 
 #: talermerchantdemos/templates/blog-index.html.j2:25
-msgid "Click on an individual chapter to to purchase it with GNU Taler."
+#, fuzzy
+msgid "Click on an individual chapter to purchase it with GNU Taler."
 msgstr "GNU Taler ile satın almak üzere, şeçtiğiniz bir bölüm üzerine 
tıklayınız."
 
 #: talermerchantdemos/templates/blog-index.html.j2:26
@@ -335,8 +345,9 @@ msgid "Donations"
 msgstr "Bağışlar"
 
 #: talermerchantdemos/templates/common-base.html.j2:70
-msgid "Tipping/Survey"
-msgstr ""
+#: talermerchantdemos/templates/survey-base.html.j2:11
+msgid "Survey"
+msgstr "Anket"
 
 #: talermerchantdemos/templates/common-base.html.j2:109
 #, fuzzy
@@ -659,7 +670,8 @@ msgid "Step 5: Survey"
 msgstr "5. Adim: Soruşturma"
 
 #: talermerchantdemos/templates/landing-index.html.j2:68
-msgid "Websites can give tips to visitors for completing tasks."
+#, fuzzy
+msgid "Websites can give rewards to visitors for completing tasks."
 msgstr "Web siteleri, görevleri tamamlamak için ziyaretçilere ipuçları 
verebilir."
 
 #: talermerchantdemos/templates/landing-index.html.j2:69
@@ -684,20 +696,18 @@ msgstr ""
 "Hakkımızda ne düşündüğünüzü <a href=\"{link}\">bize ulaşın</a> üzerinde "
 "bize iletebilirsiniz."
 
-#: talermerchantdemos/templates/survey-base.html.j2:11
-msgid "Survey"
-msgstr "Anket"
-
 #: talermerchantdemos/templates/survey-base.html.j2:13
-msgid "This page demonstrates how to tip visitors for completing small tasks."
+#, fuzzy
+msgid "This page demonstrates how to reward visitors for completing small 
tasks."
 msgstr ""
 "Bu sayfa, ziyaretçilere küçük görevleri tamamlamaları için nasıl ödül "
 "verileceğini gösterir."
 
 #: talermerchantdemos/templates/survey-base.html.j2:14
+#, fuzzy
 msgid ""
-"Tipping is a way for offer cash rewards that go directly into a user's "
-"wallet."
+"Rewarding is a way of offering cash rewards that go straight into a "
+"user's wallet."
 msgstr ""
 "Ödül, doğrudan kullanıcının cüzdanına yatırılacak nakit ödüller sunmanın "
 "bir yoludur."
@@ -707,9 +717,10 @@ msgid "Unexpected result"
 msgstr ""
 
 #: talermerchantdemos/templates/survey-index.html.j2:6
+#, fuzzy
 msgid ""
-"Please participate in our survey about payment systems and receive a tip "
-"in return."
+"Please participate in our survey about payment systems and receive a "
+"reward in return."
 msgstr ""
 "Lütfen ödeme sistemleriyle ilgili anketimize katılın ve karşılığında bir "
 "ipucu alın."
@@ -729,7 +740,7 @@ msgstr "Anketi Gönder"
 #~ msgstr "Deneme Dükkanı"
 
 #~ msgid "Tipping/Survey"
-#~ msgstr "Ödül/Anket"
+#~ msgstr ""
 
 #~ msgid ""
 #~ "You can learn more about GNU Taler"
diff --git a/talermerchantdemos/translations/zh_Hant/LC_MESSAGES/messages.po 
b/talermerchantdemos/translations/zh_Hant/LC_MESSAGES/messages.po
index 293dfb3..b6a207a 100644
--- a/talermerchantdemos/translations/zh_Hant/LC_MESSAGES/messages.po
+++ b/talermerchantdemos/translations/zh_Hant/LC_MESSAGES/messages.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PROJECT VERSION\n"
 "Report-Msgid-Bugs-To: eintritt@hotmail.com\n"
-"POT-Creation-Date: 2023-02-24 14:38+0100\n"
+"POT-Creation-Date: 2023-10-04 20:41+0200\n"
 "PO-Revision-Date: 2022-12-26 18:33+0000\n"
 "Last-Translator: Stefan Kügel <skuegel@web.de>\n"
 "Language: zh_Hant\n"
@@ -19,9 +19,9 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Generated-By: Babel 2.11.0\n"
 
-#: talermerchantdemos/blog/blog.py:130 talermerchantdemos/blog/blog.py:209
-#: talermerchantdemos/blog/blog.py:448 talermerchantdemos/blog/blog.py:457
-#: talermerchantdemos/blog/blog.py:467
+#: talermerchantdemos/blog/blog.py:150 talermerchantdemos/blog/blog.py:229
+#: talermerchantdemos/blog/blog.py:389 talermerchantdemos/blog/blog.py:558
+#: talermerchantdemos/blog/blog.py:567 talermerchantdemos/blog/blog.py:577
 #: talermerchantdemos/donations/donations.py:144
 #: talermerchantdemos/donations/donations.py:313
 #: talermerchantdemos/landing/landing.py:95
@@ -36,59 +36,69 @@ msgstr ""
 msgid "GNU Taler Demo: Error"
 msgstr ""
 
-#: talermerchantdemos/blog/blog.py:131 talermerchantdemos/landing/landing.py:96
+#: talermerchantdemos/blog/blog.py:151 talermerchantdemos/landing/landing.py:96
 msgid "Internal error"
 msgstr "內部錯誤"
 
-#: talermerchantdemos/blog/blog.py:184
+#: talermerchantdemos/blog/blog.py:204
 msgid "GNU Taler Demo: Essay Shop"
 msgstr ""
 
-#: talermerchantdemos/blog/blog.py:202
+#: talermerchantdemos/blog/blog.py:222
 msgid "Cannot refund unpaid article"
 msgstr "無法對於未付款文章進行退款"
 
-#: talermerchantdemos/blog/blog.py:210
+#: talermerchantdemos/blog/blog.py:230
 msgid "Article is not anymore refundable"
 msgstr "已無法對此文章進行退款"
 
-#: talermerchantdemos/blog/blog.py:214
+#: talermerchantdemos/blog/blog.py:234
 msgid "GNU Taler Demo: Confirm refund"
 msgstr ""
 
-#: talermerchantdemos/blog/blog.py:247
+#: talermerchantdemos/blog/blog.py:267
 msgid "You did not pay for this article (nice try!)"
 msgstr "您並沒有為此文章付款(想得美!)"
 
-#: talermerchantdemos/blog/blog.py:252
+#: talermerchantdemos/blog/blog.py:272
 msgid "Item not refundable (anymore)"
 msgstr "此文章無法進行退款(已無法)"
 
-#: talermerchantdemos/blog/blog.py:278
+#: talermerchantdemos/blog/blog.py:298
 msgid "Internal error: Files for article ({}) not found."
 msgstr "內部錯誤:找不到此文章 ({}) 的檔案。"
 
-#: talermerchantdemos/blog/blog.py:285
+#: talermerchantdemos/blog/blog.py:305
 msgid "Supplemental file ({}) for article ({}) not found."
 msgstr "找不到文章 ({}) 的補充文件 ({}) 。"
 
-#: talermerchantdemos/blog/blog.py:293
+#: talermerchantdemos/blog/blog.py:313
 msgid "GNU Taler Demo: Article"
 msgstr ""
 
-#: talermerchantdemos/blog/blog.py:365 talermerchantdemos/blog/blog.py:379
+#: talermerchantdemos/blog/blog.py:390
+msgid "Please enable cookies."
+msgstr ""
+
+#: talermerchantdemos/blog/blog.py:408 talermerchantdemos/blog/blog.py:439
 msgid "Direct access forbidden"
 msgstr "禁止直接訪問"
 
-#: talermerchantdemos/blog/blog.py:397
+#: talermerchantdemos/blog/blog.py:431
+#: talermerchantdemos/httpcommon/__init__.py:52
+#: talermerchantdemos/httpcommon/__init__.py:75
+msgid "Backend returned error status"
+msgstr "後台回傳錯誤狀態"
+
+#: talermerchantdemos/blog/blog.py:490
 msgid "GNU Taler Demo: Refunded"
 msgstr ""
 
-#: talermerchantdemos/blog/blog.py:449
+#: talermerchantdemos/blog/blog.py:559
 msgid "Internal server error"
 msgstr "內部伺服器錯誤"
 
-#: talermerchantdemos/blog/blog.py:458
+#: talermerchantdemos/blog/blog.py:568
 #: talermerchantdemos/donations/donations.py:314
 #: talermerchantdemos/landing/landing.py:181
 #: talermerchantdemos/survey/survey.py:183
@@ -114,7 +124,7 @@ msgid "Backend could not create the order"
 msgstr "後端無法創建訂單"
 
 #: talermerchantdemos/httpcommon/__init__.py:41
-#: talermerchantdemos/httpcommon/__init__.py:81
+#: talermerchantdemos/httpcommon/__init__.py:91
 msgid "Could not establish connection to backend"
 msgstr "無法建立後台連線"
 
@@ -123,12 +133,7 @@ msgstr "無法建立後台連線"
 msgid "Could not parse the response from backend"
 msgstr "無法解析後台回覆"
 
-#: talermerchantdemos/httpcommon/__init__.py:52
-#: talermerchantdemos/httpcommon/__init__.py:89
-msgid "Backend returned error status"
-msgstr "後台回傳錯誤狀態"
-
-#: talermerchantdemos/httpcommon/__init__.py:86
+#: talermerchantdemos/httpcommon/__init__.py:96
 msgid "Could not parse response from backend"
 msgstr "無法解析後台回覆"
 
@@ -176,6 +181,10 @@ msgstr ""
 msgid "You will not be able to read the article until you pay for it again."
 msgstr "在獲得退款之後,您將無法再次閱讀此文章。"
 
+#: talermerchantdemos/templates/blog-article-refunded.html.j2:18
+msgid "Click here to pay it again."
+msgstr ""
+
 #: talermerchantdemos/templates/blog-base.html.j2:10
 msgid "Essay shop"
 msgstr "文章商店"
@@ -279,7 +288,8 @@ msgid "Chapters"
 msgstr "章節"
 
 #: talermerchantdemos/templates/blog-index.html.j2:25
-msgid "Click on an individual chapter to to purchase it with GNU Taler."
+#, fuzzy
+msgid "Click on an individual chapter to purchase it with GNU Taler."
 msgstr "點選並使用 GNU Taler 來購買特定章節。"
 
 #: talermerchantdemos/templates/blog-index.html.j2:26
@@ -318,8 +328,9 @@ msgid "Donations"
 msgstr "捐款"
 
 #: talermerchantdemos/templates/common-base.html.j2:70
-msgid "Tipping/Survey"
-msgstr ""
+#: talermerchantdemos/templates/survey-base.html.j2:11
+msgid "Survey"
+msgstr "問卷調查"
 
 #: talermerchantdemos/templates/common-base.html.j2:109
 msgid ""
@@ -585,7 +596,8 @@ msgid "Step 5: Survey"
 msgstr "步驟五:問卷調查"
 
 #: talermerchantdemos/templates/landing-index.html.j2:68
-msgid "Websites can give tips to visitors for completing tasks."
+#, fuzzy
+msgid "Websites can give rewards to visitors for completing tasks."
 msgstr "這些網站可以提供指點予訪客以完成任務。"
 
 #: talermerchantdemos/templates/landing-index.html.j2:69
@@ -606,18 +618,16 @@ 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:11
-msgid "Survey"
-msgstr "問卷調查"
-
 #: talermerchantdemos/templates/survey-base.html.j2:13
-msgid "This page demonstrates how to tip visitors for completing small tasks."
+#, fuzzy
+msgid "This page demonstrates how to reward visitors for completing small 
tasks."
 msgstr "此頁面演示了如何提示參觀者完成小型任務。"
 
 #: talermerchantdemos/templates/survey-base.html.j2:14
+#, fuzzy
 msgid ""
-"Tipping is a way for offer cash rewards that go directly into a user's "
-"wallet."
+"Rewarding is a way of offering cash rewards that go straight into a "
+"user's wallet."
 msgstr "給予小費是一種直接提供現金回饋至使用者錢包的方式。"
 
 #: talermerchantdemos/templates/survey-error-graceful.html.j2:3
@@ -625,9 +635,10 @@ msgid "Unexpected result"
 msgstr ""
 
 #: talermerchantdemos/templates/survey-index.html.j2:6
+#, fuzzy
 msgid ""
-"Please participate in our survey about payment systems and receive a tip "
-"in return."
+"Please participate in our survey about payment systems and receive a "
+"reward in return."
 msgstr "請參與我們關於支付系統的問卷調查以獲得小費。"
 
 #: talermerchantdemos/templates/survey-index.html.j2:13
@@ -672,7 +683,7 @@ msgstr "提交問卷"
 #~ msgstr "論文商店"
 
 #~ msgid "Tipping/Survey"
-#~ msgstr "小費/調查"
+#~ msgstr ""
 
 #~ msgid ""
 #~ "You can learn more about GNU Taler"

-- 
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]