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: add landing subpage,


From: gnunet
Subject: [taler-taler-merchant-demos] branch master updated: add landing subpage, simplify deployment
Date: Sun, 11 Oct 2020 17:03:14 +0200

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

grothoff 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 d69934f  add landing subpage, simplify deployment
d69934f is described below

commit d69934f816c7e48d758452dd443eca0f02dd14ce
Author: Christian Grothoff <christian@grothoff.org>
AuthorDate: Sun Oct 11 17:03:12 2020 +0200

    add landing subpage, simplify deployment
---
 bin/taler-merchant-demos                           |  20 +--
 setup.py                                           |   3 +
 talermerchantdemos/landing/__init__.py             |   3 +
 talermerchantdemos/landing/landing.py              | 164 +++++++++++++++++++++
 talermerchantdemos/landing/static                  |   1 +
 talermerchantdemos/landing/templates/base.html.j2  | 114 ++++++++++++++
 talermerchantdemos/landing/templates/error.html.j2 |  13 ++
 talermerchantdemos/landing/templates/index.html.j2 |  73 +++++++++
 talermerchantdemos/landing/translations            |   1 +
 translations/de/LC_MESSAGES/messages.po            |  34 ++++-
 translations/messages.pot                          |  34 ++++-
 11 files changed, 440 insertions(+), 20 deletions(-)

diff --git a/bin/taler-merchant-demos b/bin/taler-merchant-demos
index e4286a2..ade40cf 100755
--- a/bin/taler-merchant-demos
+++ b/bin/taler-merchant-demos
@@ -40,22 +40,22 @@ UWSGI_LOGFMT = "%(ltime) %(proto) %(method) %(uri) %(proto) 
=> %(status)"
 # is accessed via a reverse proxy (like Nginx, for example).
 #
 # @param command line options.
-def handle_serve_uwsgi(config, whichShop):
-    serve_uwsgi = 
config[whichShop]["uwsgi_serve"].value_string(required=True).lower()
+def handle_serve_uwsgi(config, which_shop):
+    serve_uwsgi = 
config[which_shop]["uwsgi_serve"].value_string(required=True).lower()
     params = ["uwsgi", "uwsgi",
               "--master",
               "--die-on-term",
               "--log-format", UWSGI_LOGFMT,
-              "--module", "talermerchantdemos.{}:app".format(whichShop),
+              "--module", "talermerchantdemos.{}:app".format(which_shop),
               "--need-app",
               "--cache2", "name=paid_articles,items=500"]
     if serve_uwsgi == "tcp":
-        port = config[whichShop]["uwsgi_port"].value_int(required=True)
+        port = config[which_shop]["uwsgi_port"].value_int(required=True)
         spec = ":%d" % (port,)
         params.extend(["--socket", spec])
     elif serve_uwsgi == "unix":
-        spec = 
config[whichShop]["uwsgi_unixpath"].value_filename(required=True)
-        mode = 
config[whichShop]["uwsgi_unixpath_mode"].value_filename(required=True)
+        spec = 
config[which_shop]["uwsgi_unixpath"].value_filename(required=True)
+        mode = 
config[which_shop]["uwsgi_unixpath_mode"].value_filename(required=True)
         params.extend(["--socket", spec])
         params.extend(["--chmod-socket="+mode])
         os.makedirs(os.path.dirname(spec), exist_ok=True)
@@ -71,9 +71,9 @@ def handle_serve_uwsgi(config, whichShop):
 # The effect it to launch the blog HTTP service.
 #
 # @param args command line options.
-def handle_serve_http(config, whichShop, port=None):
+def handle_serve_http(config, which_shop, port=None):
     if port is None:
-        port = config[whichShop]["http_port"].value_int(required=True)
+        port = config[which_shop]["http_port"].value_int(required=True)
     if port is None:
         print("'http_port' configuration option is missing")
         exit(1)
@@ -84,7 +84,7 @@ def handle_serve_http(config, whichShop, port=None):
                   "--die-on-term",
                   "--log-format", UWSGI_LOGFMT,
                   "--http", spec,
-                  "--module", "talermerchantdemos.{}:app".format(whichShop))
+                  "--module", "talermerchantdemos.{}:app".format(which_shop))
     except:
         sys.stderr.write("Failed to start uwsgi. Please make sure to install 
uwsgi for Python3.")
         sys.exit(1)
@@ -105,7 +105,7 @@ def handle_serve_from_config(config_obj, which_shop):
 @click.argument("which-shop")
 def demos(config, http_port, which_shop):
     """
-    WHICH_SHOP is one of: blog, donations, or survey.
+    WHICH_SHOP is one of: blog, donations, survey or landing.
     """
     if config:
         os.environ["TALER_CONFIG_FILE"] = config
diff --git a/setup.py b/setup.py
index 1a031e3..5e8db52 100755
--- a/setup.py
+++ b/setup.py
@@ -18,6 +18,9 @@ setup(name='talermerchantdemos',
               # Common
               "static/*.css",
               "static/*.svg",
+              # Landing files
+              "landing/templates/*.j2",
+              "landing/translations/*/LC_MESSAGES/*.mo",
               # Blog files
               "blog/templates/*.html",
               "blog/templates/*.j2",
diff --git a/talermerchantdemos/landing/__init__.py 
b/talermerchantdemos/landing/__init__.py
new file mode 100644
index 0000000..b5d856c
--- /dev/null
+++ b/talermerchantdemos/landing/__init__.py
@@ -0,0 +1,3 @@
+from talermerchantdemos.landing.landing import app
+
+__all__ = ["app"]
diff --git a/talermerchantdemos/landing/landing.py 
b/talermerchantdemos/landing/landing.py
new file mode 100644
index 0000000..6bc4249
--- /dev/null
+++ b/talermerchantdemos/landing/landing.py
@@ -0,0 +1,164 @@
+##
+# This file is part of GNU TALER.
+# Copyright (C) 2017, 2020 Taler Systems SA
+#
+# TALER is free software; you can redistribute it and/or modify it under the
+# terms of the GNU Lesser General Public License as published by the Free 
Software
+# Foundation; either version 2.1, or (at your option) any later version.
+#
+# TALER 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 Lesser General Public License for more 
details.
+#
+# You should have received a copy of the GNU Lesser General Public License 
along with
+# GNU TALER; see the file COPYING.  If not, see <http://www.gnu.org/licenses/>
+#
+# @author Christian Grothoff
+# @brief Minimal Website for the landing page.
+
+import os
+import re
+import datetime
+import base64
+import logging
+from urllib.parse import urljoin
+import flask
+from flask import request
+from flask_babel import Babel
+from flask_babel import refresh
+from flask_babel import force_locale
+from flask_babel import gettext
+import traceback
+from taler.util.talerconfig import TalerConfig, ConfigurationError
+from ..httpcommon import backend_get, backend_post, self_localized
+import sys
+
+if not sys.version_info.major == 3 and sys.version_info.minor >= 6:
+    print("Python 3.6 or higher is required.")
+    print("You are using Python {}.{}.".format(sys.version_info.major, 
sys.version_info.minor))
+    sys.exit(1)
+
+BASE_DIR = os.path.dirname(os.path.abspath(__file__))
+app = flask.Flask(__name__, template_folder=BASE_DIR)
+app.debug = True
+app.secret_key = base64.b64encode(os.urandom(64)).decode('utf-8')
+
+LOGGER = logging.getLogger(__name__)
+TC = TalerConfig.from_env()
+try:
+    BACKEND_URL = TC["frontends"]["backend"].value_string(required=True)
+    CURRENCY = TC["taler"]["currency"].value_string(required=True)
+    APIKEY = TC["frontends"]["backend_apikey"].value_string(required=True)
+except ConfigurationError as ce:
+    print(ce)
+    exit(1)
+
+app.config.from_object(__name__)
+babel = Babel(app)
+
+LOGGER.info("Using translations from:" + 
':'.join(list(babel.translation_directories)))
+translations = [str(translation) for translation in babel.list_translations()]
+if not 'en' in translations:
+    translations.append('en')
+LOGGER.info("Operating with the following translations available: " + ' 
'.join(translations))
+
+app.jinja_env.globals.update(self_localized=self_localized)
+
+@babel.localeselector
+def get_locale():
+    parts = request.path.split('/', 2)
+    if (2 >= len(parts)):
+        # Totally unexpected path format, do not localize
+        return "en"
+    lang = parts[1]
+    if lang in translations:
+        return lang
+    return "en"
+
+##
+# Make the environment available into templates.
+#
+# @return the environment-reading function.
+@app.context_processor
+def utility_processor():
+    def env(name, default=None):
+        return os.environ.get(name, default)
+
+    def prettydate(talerdate):
+        parsed_time = re.search(r"/Date\(([0-9]+)\)/", talerdate)
+        if not parsed_time:
+            return "malformed date given"
+        parsed_time = int(parsed_time.group(1))
+        timestamp = datetime.datetime.fromtimestamp(parsed_time)
+        # returns the YYYY-MM-DD date format.
+        return timestamp.strftime("%Y-%b-%d")
+
+    return dict(env=env, prettydate=prettydate)
+
+
+##
+# Exception handler to capture all the unmanaged errors.
+#
+# @param e the Exception object, currently unused.
+# @return flask-native response object carrying the error message
+#         (and execution stack!).
+@app.errorhandler(Exception)
+def internal_error(e):
+    return flask.render_template(
+        "templates/error.html.j2",
+        message=gettext("Internal error"),
+        stack=traceback.format_exc(),
+        lang=get_locale()
+    )
+
+##
+# Serve the /favicon.ico requests.
+#
+# @return the favicon.ico file.
+@app.route("/favicon.ico")
+def favicon():
+    LOGGER.info("will look into: " + os.path.join(app.root_path, 'static'))
+    return flask.send_from_directory(
+        os.path.join(app.root_path, 'static'),
+        "favicon.ico",
+        mimetype="image/vnd.microsoft.ico"
+    )
+
+
+##
+# Serve the main index page, redirecting to /<lang>/
+#
+# @return response object of the index page.
+@app.route("/")
+def index():
+    default = 'en'
+    target = flask.request.accept_languages.best_match(translations, default)
+    return flask.redirect("/" + target + "/", code=302)
+
+##
+# Serve the internationalized main index page.
+#
+# @return response object of the index page.
+@app.route("/<lang>/", methods=["GET"])
+def start(lang):
+    return flask.render_template(
+        "templates/index.html.j2",
+        merchant_currency=CURRENCY,
+        lang=lang
+    )
+
+@app.errorhandler(404)
+def handler(e):
+    return flask.render_template(
+        "templates/error.html.j2",
+        message=gettext("Page not found"),
+        lang=get_locale()
+    )
+
+@app.errorhandler(405)
+def handler(e):
+    return flask.render_template(
+        "templates/error.html.j2",
+        message=gettext("HTTP method not allowed for this page"),
+        lang=get_locale()
+    )
diff --git a/talermerchantdemos/landing/static 
b/talermerchantdemos/landing/static
new file mode 120000
index 0000000..d9bc54d
--- /dev/null
+++ b/talermerchantdemos/landing/static
@@ -0,0 +1 @@
+../static/
\ No newline at end of file
diff --git a/talermerchantdemos/landing/templates/base.html.j2 
b/talermerchantdemos/landing/templates/base.html.j2
new file mode 100644
index 0000000..7cf16f1
--- /dev/null
+++ b/talermerchantdemos/landing/templates/base.html.j2
@@ -0,0 +1,114 @@
+<!DOCTYPE html>
+<!--
+  This file is part of GNU TALER.
+  Copyright (C) 2014, 2015, 2016, 2020 Taler Systems SA
+
+  TALER is free software; you can redistribute it and/or modify it under the
+  terms of the GNU Lesser General Public License as published by the Free 
Software
+  Foundation; either version 2.1, or (at your option) any later version.
+
+  TALER 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 Lesser General Public License for more 
details.
+
+  You should have received a copy of the GNU Lesser General Public License 
along with
+  TALER; see the file COPYING.  If not, see <http://www.gnu.org/licenses/>
+-->
+
+<html data-taler-nojs="true">
+<head>
+  <title>{{ gettext("Taler Demo") }}</title>
+  <link rel="stylesheet" type="text/css" href="{{ url_for('static', 
filename='pure.css') }}" />
+  <link rel="stylesheet" type="text/css" href="{{ url_for('static', 
filename='demo.css') }}" />
+  <link rel="stylesheet" type="text/css" href="{{ url_for('static', 
filename='navbar.css') }}" />
+  <style>
+    .warn {
+      background-color: #aa393977;
+      padding: 1em;
+    }
+    @keyframes hoveranim {
+      from {left:0;}
+      to {left:1vw;}
+    }
+    @keyframes hoveranimrevert {
+      from {left:1vw;}
+      to {left:0;}
+    }
+    .notice {
+      border-radius: 1em;
+      background: #0333;
+      border-left: 0.3em solid #033;
+      padding-left: 1em;
+      padding-top: 0.5em;
+      padding-bottom: 0.5em;
+      margin-top: 2em;
+      margin-bottom: 2em;
+    }
+    .notice {
+      position: relative;
+      left: 0;
+      animation-name: hoveranimrevert;
+      animation-duration: 1s;
+    }
+    .notice:hover {
+      left: 1vw;
+      animation-name: hoveranim;
+      animation-duration: 1s;
+    }
+    #main a:link, #main a:visited, #main a:hover, #main a:active {
+        color: black;
+    }
+  </style>
+
+  {% block styles %}{% endblock %}
+  {% block scripts %}{% endblock %}
+</head>
+
+<body>
+  <header class="demobar" style="display: flex; flex-direction: column;">
+    <h1><span class="tt adorn-brackets">{{ gettext("Taler Demo") }}</span></h1>
+    <h1><span class="it"><a href="{{ env('TALER_ENV_URL_MERCHANT_SURVEY') 
}}">{{ gettext("Survey") }}</a></span></h1>
+    <p>{{
+      gettext("This is the Taler demo.") + "<br>" +
+      gettext("Here you can try out the Taler payment system using a toy 
currency.")
+      }}
+    </p>
+  </header>
+  <div style="display:flex; flex-direction: column;" class="navcontainer">
+    <nav class="demolist">
+      <a href="{{ env('TALER_ENV_URL_INTRO', '#') }}" 
class="active">{{gettext("Introduction")}}</a>
+      <a href="{{ env('TALER_ENV_URL_BANK', '#') }}">{{gettext("Bank")}}</a>
+      <a href="{{ env('TALER_ENV_URL_MERCHANT_BLOG', '#') }}">{{gettext("Essay 
Shop")}}</a>
+      <a href="{{ env('TALER_ENV_URL_MERCHANT_DONATIONS', '#') 
}}">{{gettext("Donations")}}</a>
+      <a href="{{ env('TALER_ENV_URL_MERCHANT_SURVEY', '#') 
}}">{{gettext("Tipping/Survey")}}</a>
+      <!-- a href="{{ env('TALER_ENV_URL_BACKOFFICE', '#') 
}}">{{gettext("Back-office")}}</a -->
+      <span class="right">
+        {{ gettext("English [en]") }}
+        <!-- <input type="checkbox"> -->
+        <div class="nav">
+          <br>
+          <!--<hr style="width: 100%;">-->
+          {% if lang != 'en' %}
+          <a href="/en/" class="navbtn">English [en]</a><br>
+          {% endif %}
+          {% if lang != 'de' %}
+          <a href="/de/" class="navbtn">Deutsch [de]</a><br>
+          {% endif %}
+        </div>
+      </span>
+    </nav>
+  </div>
+
+  <section id="main" class="content">
+    {% block main %}
+      This is the main content of the page.
+    {% endblock %}
+    <hr />
+    <div>
+      <p>{{ gettext('You can learn more about Taler on our main <a 
href="{site}">website</a>.').format(site="https://taler.net/";) }}</p>
+      <div style="flex-grow:1"></div>
+      <p>Copyright &copy; 2014&mdash;2020 Taler Systems SA</p>
+    </div>
+  </section>
+</body>
+</html>
diff --git a/talermerchantdemos/landing/templates/error.html.j2 
b/talermerchantdemos/landing/templates/error.html.j2
new file mode 100644
index 0000000..009947c
--- /dev/null
+++ b/talermerchantdemos/landing/templates/error.html.j2
@@ -0,0 +1,13 @@
+{% extends "templates/base.html.j2" %}
+{% block main %}
+  <h1>{{ gettext("Error encountered") }}</h1>
+
+  <p>{{ message }}</p>
+
+  {% if stack %}
+  <p>{{gettext("Stack trace:")}}</p>
+  <pre>
+    {{ stack }}
+  </pre>
+  {% endif %}
+{% endblock main %}
diff --git a/talermerchantdemos/landing/templates/index.html.j2 
b/talermerchantdemos/landing/templates/index.html.j2
new file mode 100644
index 0000000..cc6b874
--- /dev/null
+++ b/talermerchantdemos/landing/templates/index.html.j2
@@ -0,0 +1,73 @@
+{% extends "templates/base.html.j2" %}
+{% block main %}
+    <article>
+      <h2>Step 1: Install the Taler wallet</h2>
+        Install the wallet from the <a 
href="https://wallet.taler.net/";>installation page</a>.
+        It only takes one click.
+      <p class="bluebox taler-installed-hide">
+        You don't have a wallet installed yet.
+      </p>
+      <p class="greenbox taler-installed-show">
+        Congratulations, you have installed the Taler wallet correctly.
+        You can now proceed with the next steps.
+      </p>
+    </article>
+
+    <article>
+      <h2>Step 2: Withdraw coins</h2>
+      <p>
+
+        Now you can withdraw coins into your wallet by going to our <a 
href="{{ bank_url }}">bank</a>.
+
+        In this demo you are paying with KUDOS, an imaginary currency.  When 
you
+        create an account at our bank, you'll get 100 KUDOS for free.
+      </p>
+      <p class="graybox">
+        We cannnot check if you were able to complete this step, since websites
+        cannot see the balance in your wallet.  Please click on the Taler icon
+        in your browser to check your balance.
+      </p>
+    </article>
+
+    <article>
+      <h2>Step 3: Pay</h2>
+        We have two demo merchants where you can spend your coins:
+        <ul>
+          <li>
+            The <a href="{{ merchant_blog_url }}">essay store</a>, where you 
can pay KUDOS for
+            individual chapters of Richard Stallman's book "Free Software, Free
+            Society", which is also available for free at <a 
href="http://www.fsf.org/";>the FSF</a>.
+          </li>
+          <li>
+            The <a href="{{ merchant_donations_url }}">project donation 
website</a>, where
+            you can show respect to a software project of your choice
+            by giving them KUDOS.
+          </li>
+        </ul>
+    </article>
+    <article>
+      <h2>Step 4: Check money flow</h2>
+        <ul>
+          <li>
+            Check if people who received your Taler payment got eventually
+            paid by the exchange via a wire transfer; visit the:
+            <a href="{{ bank_url }}/public-accounts">public accounts page</a> 
at the bank.
+            Note that only those account whose owners gave permission are 
showed
+            on that page.
+          </li>
+        </ul>
+    </article>
+    <!-- article>
+      <h2>Step 5: Merchant?  Consult back-office</h2>
+        <ul>
+          <li>
+            If you are a merchant, you can check the <a href="{{ 
backoffice_url }}">back-office</a>
+            website to see how your Taler transactions got payed back by bank 
wire transfers.
+          </li>
+        </ul>
+    </article -->
+    <article>
+      <h2>Step 5: Reach out to us</h2>
+      Let us know what you think by <a 
href="mailto:demo-feedback@taler.net";>contacting us</a>.
+    </article>
+{% endblock %}
diff --git a/talermerchantdemos/landing/translations 
b/talermerchantdemos/landing/translations
new file mode 120000
index 0000000..0a951f7
--- /dev/null
+++ b/talermerchantdemos/landing/translations
@@ -0,0 +1 @@
+../../translations/
\ No newline at end of file
diff --git a/translations/de/LC_MESSAGES/messages.po 
b/translations/de/LC_MESSAGES/messages.po
index 2b4ebe4..e78b5b5 100644
--- a/translations/de/LC_MESSAGES/messages.po
+++ b/translations/de/LC_MESSAGES/messages.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version:  taler-merchant-demos\n"
 "Report-Msgid-Bugs-To: taler@gnu.org\n"
-"POT-Creation-Date: 2020-10-11 16:14+0200\n"
+"POT-Creation-Date: 2020-10-11 16:57+0200\n"
 "PO-Revision-Date: 2020-10-09 21:25+0200\n"
 "Last-Translator: Christian Grothoff <cg@taler.net>\n"
 "Language: de\n"
@@ -20,6 +20,7 @@ msgstr ""
 
 #: talermerchantdemos/blog/blog.py:114
 #: talermerchantdemos/donations/donations.py:157
+#: talermerchantdemos/landing/landing.py:109
 #: talermerchantdemos/survey/survey.py:110
 msgid "Internal error"
 msgstr "Interner Fehler"
@@ -58,6 +59,7 @@ msgstr ""
 
 #: talermerchantdemos/blog/blog.py:412
 #: talermerchantdemos/donations/donations.py:323
+#: talermerchantdemos/landing/landing.py:154
 #: talermerchantdemos/survey/survey.py:171
 msgid "Page not found"
 msgstr ""
@@ -78,6 +80,8 @@ msgstr ""
 
 #: talermerchantdemos/blog/templates/base.html.j2:72
 #: talermerchantdemos/donations/templates/base.html.j2:69
+#: talermerchantdemos/landing/templates/base.html.j2:20
+#: talermerchantdemos/landing/templates/base.html.j2:69
 #: talermerchantdemos/survey/templates/base.html.j2:69
 msgid "Taler Demo"
 msgstr "Taler Demonstrator"
@@ -104,18 +108,21 @@ msgstr ""
 
 #: talermerchantdemos/blog/templates/base.html.j2:83
 #: talermerchantdemos/donations/templates/base.html.j2:80
+#: talermerchantdemos/landing/templates/base.html.j2:79
 #: talermerchantdemos/survey/templates/base.html.j2:80
 msgid "Introduction"
 msgstr "Einführung"
 
 #: talermerchantdemos/blog/templates/base.html.j2:84
 #: talermerchantdemos/donations/templates/base.html.j2:81
+#: talermerchantdemos/landing/templates/base.html.j2:80
 #: talermerchantdemos/survey/templates/base.html.j2:81
 msgid "Bank"
 msgstr "Bank"
 
 #: talermerchantdemos/blog/templates/base.html.j2:85
 #: talermerchantdemos/donations/templates/base.html.j2:82
+#: talermerchantdemos/landing/templates/base.html.j2:81
 #: talermerchantdemos/survey/templates/base.html.j2:82
 msgid "Essay Shop"
 msgstr ""
@@ -123,36 +130,42 @@ msgstr ""
 #: talermerchantdemos/blog/templates/base.html.j2:86
 #: talermerchantdemos/donations/templates/base.html.j2:70
 #: talermerchantdemos/donations/templates/base.html.j2:83
+#: talermerchantdemos/landing/templates/base.html.j2:82
 #: talermerchantdemos/survey/templates/base.html.j2:83
 msgid "Donations"
 msgstr "Spenden"
 
 #: talermerchantdemos/blog/templates/base.html.j2:87
 #: talermerchantdemos/donations/templates/base.html.j2:84
+#: talermerchantdemos/landing/templates/base.html.j2:83
 #: talermerchantdemos/survey/templates/base.html.j2:84
 msgid "Tipping/Survey"
 msgstr "Umfrage"
 
 #: talermerchantdemos/blog/templates/base.html.j2:88
 #: talermerchantdemos/donations/templates/base.html.j2:85
+#: talermerchantdemos/landing/templates/base.html.j2:84
 #: talermerchantdemos/survey/templates/base.html.j2:85
 msgid "Back-office"
 msgstr ""
 
 #: talermerchantdemos/blog/templates/base.html.j2:90
 #: talermerchantdemos/donations/templates/base.html.j2:87
+#: talermerchantdemos/landing/templates/base.html.j2:86
 #: talermerchantdemos/survey/templates/base.html.j2:87
 msgid "English [en]"
 msgstr "Deutsch [de]"
 
 #: talermerchantdemos/blog/templates/base.html.j2:112
 #: talermerchantdemos/donations/templates/base.html.j2:109
+#: talermerchantdemos/landing/templates/base.html.j2:108
 #: talermerchantdemos/survey/templates/base.html.j2:109
 msgid "You can learn more about Taler on our main <a 
href=\"{site}\">website</a>."
 msgstr ""
 
 #: talermerchantdemos/blog/templates/error.html.j2:3
 #: talermerchantdemos/donations/templates/error.html.j2:3
+#: talermerchantdemos/landing/templates/error.html.j2:3
 #: talermerchantdemos/survey/templates/error.html.j2:3
 msgid "Error encountered"
 msgstr ""
@@ -171,6 +184,7 @@ msgstr ""
 
 #: talermerchantdemos/blog/templates/error.html.j2:19
 #: talermerchantdemos/donations/templates/error.html.j2:19
+#: talermerchantdemos/landing/templates/error.html.j2:8
 #: talermerchantdemos/survey/templates/error.html.j2:19
 msgid "Stack trace:"
 msgstr ""
@@ -338,18 +352,28 @@ msgstr ""
 msgid "Backend returned error status"
 msgstr ""
 
+#: talermerchantdemos/landing/landing.py:162
 #: talermerchantdemos/survey/survey.py:179
 msgid "HTTP method not allowed for this page"
 msgstr ""
 
-#: talermerchantdemos/survey/templates/base.html.j2:20
-msgid "Taler Survey Demo"
-msgstr ""
-
+#: talermerchantdemos/landing/templates/base.html.j2:70
 #: talermerchantdemos/survey/templates/base.html.j2:70
 msgid "Survey"
 msgstr "Umfrage"
 
+#: talermerchantdemos/landing/templates/base.html.j2:72
+msgid "This is the Taler demo."
+msgstr ""
+
+#: talermerchantdemos/landing/templates/base.html.j2:73
+msgid "Here you can try out the Taler payment system using a toy currency."
+msgstr ""
+
+#: talermerchantdemos/survey/templates/base.html.j2:20
+msgid "Taler Survey Demo"
+msgstr ""
+
 #: talermerchantdemos/survey/templates/base.html.j2:72
 msgid "This is the Taler survey demonstration."
 msgstr ""
diff --git a/translations/messages.pot b/translations/messages.pot
index 05549ae..5e626cf 100644
--- a/translations/messages.pot
+++ b/translations/messages.pot
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PROJECT VERSION\n"
 "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2020-10-11 16:14+0200\n"
+"POT-Creation-Date: 2020-10-11 16:57+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"
@@ -19,6 +19,7 @@ msgstr ""
 
 #: talermerchantdemos/blog/blog.py:114
 #: talermerchantdemos/donations/donations.py:157
+#: talermerchantdemos/landing/landing.py:109
 #: talermerchantdemos/survey/survey.py:110
 msgid "Internal error"
 msgstr ""
@@ -57,6 +58,7 @@ msgstr ""
 
 #: talermerchantdemos/blog/blog.py:412
 #: talermerchantdemos/donations/donations.py:323
+#: talermerchantdemos/landing/landing.py:154
 #: talermerchantdemos/survey/survey.py:171
 msgid "Page not found"
 msgstr ""
@@ -77,6 +79,8 @@ msgstr ""
 
 #: talermerchantdemos/blog/templates/base.html.j2:72
 #: talermerchantdemos/donations/templates/base.html.j2:69
+#: talermerchantdemos/landing/templates/base.html.j2:20
+#: talermerchantdemos/landing/templates/base.html.j2:69
 #: talermerchantdemos/survey/templates/base.html.j2:69
 msgid "Taler Demo"
 msgstr ""
@@ -103,18 +107,21 @@ msgstr ""
 
 #: talermerchantdemos/blog/templates/base.html.j2:83
 #: talermerchantdemos/donations/templates/base.html.j2:80
+#: talermerchantdemos/landing/templates/base.html.j2:79
 #: talermerchantdemos/survey/templates/base.html.j2:80
 msgid "Introduction"
 msgstr ""
 
 #: talermerchantdemos/blog/templates/base.html.j2:84
 #: talermerchantdemos/donations/templates/base.html.j2:81
+#: talermerchantdemos/landing/templates/base.html.j2:80
 #: talermerchantdemos/survey/templates/base.html.j2:81
 msgid "Bank"
 msgstr ""
 
 #: talermerchantdemos/blog/templates/base.html.j2:85
 #: talermerchantdemos/donations/templates/base.html.j2:82
+#: talermerchantdemos/landing/templates/base.html.j2:81
 #: talermerchantdemos/survey/templates/base.html.j2:82
 msgid "Essay Shop"
 msgstr ""
@@ -122,36 +129,42 @@ msgstr ""
 #: talermerchantdemos/blog/templates/base.html.j2:86
 #: talermerchantdemos/donations/templates/base.html.j2:70
 #: talermerchantdemos/donations/templates/base.html.j2:83
+#: talermerchantdemos/landing/templates/base.html.j2:82
 #: talermerchantdemos/survey/templates/base.html.j2:83
 msgid "Donations"
 msgstr ""
 
 #: talermerchantdemos/blog/templates/base.html.j2:87
 #: talermerchantdemos/donations/templates/base.html.j2:84
+#: talermerchantdemos/landing/templates/base.html.j2:83
 #: talermerchantdemos/survey/templates/base.html.j2:84
 msgid "Tipping/Survey"
 msgstr ""
 
 #: talermerchantdemos/blog/templates/base.html.j2:88
 #: talermerchantdemos/donations/templates/base.html.j2:85
+#: talermerchantdemos/landing/templates/base.html.j2:84
 #: talermerchantdemos/survey/templates/base.html.j2:85
 msgid "Back-office"
 msgstr ""
 
 #: talermerchantdemos/blog/templates/base.html.j2:90
 #: talermerchantdemos/donations/templates/base.html.j2:87
+#: talermerchantdemos/landing/templates/base.html.j2:86
 #: talermerchantdemos/survey/templates/base.html.j2:87
 msgid "English [en]"
 msgstr ""
 
 #: talermerchantdemos/blog/templates/base.html.j2:112
 #: talermerchantdemos/donations/templates/base.html.j2:109
+#: talermerchantdemos/landing/templates/base.html.j2:108
 #: talermerchantdemos/survey/templates/base.html.j2:109
 msgid "You can learn more about Taler on our main <a 
href=\"{site}\">website</a>."
 msgstr ""
 
 #: talermerchantdemos/blog/templates/error.html.j2:3
 #: talermerchantdemos/donations/templates/error.html.j2:3
+#: talermerchantdemos/landing/templates/error.html.j2:3
 #: talermerchantdemos/survey/templates/error.html.j2:3
 msgid "Error encountered"
 msgstr ""
@@ -170,6 +183,7 @@ msgstr ""
 
 #: talermerchantdemos/blog/templates/error.html.j2:19
 #: talermerchantdemos/donations/templates/error.html.j2:19
+#: talermerchantdemos/landing/templates/error.html.j2:8
 #: talermerchantdemos/survey/templates/error.html.j2:19
 msgid "Stack trace:"
 msgstr ""
@@ -337,18 +351,28 @@ msgstr ""
 msgid "Backend returned error status"
 msgstr ""
 
+#: talermerchantdemos/landing/landing.py:162
 #: talermerchantdemos/survey/survey.py:179
 msgid "HTTP method not allowed for this page"
 msgstr ""
 
-#: talermerchantdemos/survey/templates/base.html.j2:20
-msgid "Taler Survey Demo"
-msgstr ""
-
+#: talermerchantdemos/landing/templates/base.html.j2:70
 #: talermerchantdemos/survey/templates/base.html.j2:70
 msgid "Survey"
 msgstr ""
 
+#: talermerchantdemos/landing/templates/base.html.j2:72
+msgid "This is the Taler demo."
+msgstr ""
+
+#: talermerchantdemos/landing/templates/base.html.j2:73
+msgid "Here you can try out the Taler payment system using a toy currency."
+msgstr ""
+
+#: talermerchantdemos/survey/templates/base.html.j2:20
+msgid "Taler Survey Demo"
+msgstr ""
+
 #: talermerchantdemos/survey/templates/base.html.j2:72
 msgid "This is the Taler survey demonstration."
 msgstr ""

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