gnunet-svn
[Top][All Lists]
Advanced

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

[GNUnet-SVN] [taler-landing] 02/03: templating and i18n


From: gnunet
Subject: [GNUnet-SVN] [taler-landing] 02/03: templating and i18n
Date: Wed, 15 Mar 2017 13:00:35 +0100

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

dold pushed a commit to branch master
in repository landing.

commit 520c115b3a787b6509b003f28dd45d3b1894fad9
Author: Florian Dold <address@hidden>
AuthorDate: Wed Mar 15 12:59:41 2017 +0100

    templating and i18n
---
 index.html => common/base.j2 | 39 +++++++++++----------
 index.html => index.html.j2  | 16 ++++-----
 template.py                  | 80 ++++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 107 insertions(+), 28 deletions(-)

diff --git a/index.html b/common/base.j2
similarity index 77%
copy from index.html
copy to common/base.j2
index 2d4470d..9a54048 100644
--- a/index.html
+++ b/common/base.j2
@@ -2,8 +2,8 @@
 <html lang="en" data-taler-nojs="true">
 <head profile="http://www.w3.org/2005/10/profile";>
   <meta charset="utf-8"/>
-  <title>Taler Demo</title>
-  <link rel="stylesheet" type="text/css" href="static/web-common/demo.css" />
+  <title>Taler Demonstration Framework</title>
+  <link rel="stylesheet" type="text/css" href="static/web-common/style.css" />
   <link rel="stylesheet" type="text/css" 
href="static/web-common/taler-fallback.css" id="taler-presence-stylesheet" />
   <link rel="icon" type="image/png" href="static/web-common/favicon-taler.ico" 
/>
 
@@ -35,19 +35,19 @@
 </head>
 
 <body>
-  <div class="demobar">
-    <h1><span class="tt adorn-brackets">Taler Demo</span></h1>
-    <h1><span class="it"><a href="#">Introduction</a></span></h1>
-    <p>This is the entry point of the Taler demo.  Follow the instructions and 
try Taler with the other pages linked below!</p>
-    <ul>
-      <li><a href="{{ env('TALER_ENV_URL_INTRO', '#') }}">Introduction</a></li>
-      <li><a href="{{ env('TALER_ENV_URL_BANK', '#') }}">Bank</a></li>
-      <li><a href="{{ env('TALER_ENV_URL_MERCHANT_BLOG', '#') }}">Blog 
Shop</a></li>
-      <li><a href="{{ env('TALER_ENV_URL_MERCHANT_DONATIONS', '#') 
}}">Donations</a></li>
-    </ul>
-    <p>You can learn more about Taler on our main <a 
href="https://taler.net";>website</a>.</p>
-  </div>
-  <section id="main" class="content">
+
+  <header>
+    <a href="." id="logo">
+      <img src="static/web-common/logo-2015-medium.png" width="100" 
height="100" alt="Logo">
+    </a>
+    <!--#include virtual="static/web-common/dropdown-navbar.html"-->
+    <h1 class="nav">Taler Demo</h1>
+  </header>
+
+  <aside class="sidebar" id="left">
+  </aside>
+
+  <section id="main">
     <article>
       <h2>Step 1: Install the Taler wallet</h2>
         Install the wallet from the <a 
href="https://taler.net/wallet-installation.html";>installation page</a>.
@@ -113,11 +113,10 @@
       <h2>Step 5: Reach out to us</sup></h2>
       Let us know what you think by <a href="mailto:address@hidden";>contacting 
us</a>.
     </article>
-    <hr />
-    <div class="copyright">
-      <p>Copyright &copy; 2014&mdash;2017 INRIA</p>
-      <a href="/javascript" data-jslicense="1" 
class="jslicenseinfo">JavaScript license information</a>
-    </div>
   </section>
+  <div class="copyright">
+    <p>Copyright &copy; 2014&mdash;2016 INRIA</p>
+    <a href="/javascript" data-jslicense="1" class="jslicenseinfo">JavaScript 
license information</a>
+  </div>
 </body>
 </html>
diff --git a/index.html b/index.html.j2
similarity index 86%
rename from index.html
rename to index.html.j2
index 2d4470d..60a1da3 100644
--- a/index.html
+++ b/index.html.j2
@@ -40,10 +40,10 @@
     <h1><span class="it"><a href="#">Introduction</a></span></h1>
     <p>This is the entry point of the Taler demo.  Follow the instructions and 
try Taler with the other pages linked below!</p>
     <ul>
-      <li><a href="{{ env('TALER_ENV_URL_INTRO', '#') }}">Introduction</a></li>
-      <li><a href="{{ env('TALER_ENV_URL_BANK', '#') }}">Bank</a></li>
-      <li><a href="{{ env('TALER_ENV_URL_MERCHANT_BLOG', '#') }}">Blog 
Shop</a></li>
-      <li><a href="{{ env('TALER_ENV_URL_MERCHANT_DONATIONS', '#') 
}}">Donations</a></li>
+      <li><a href="{{ intro_url }}">Introduction</a></li>
+      <li><a href="{{ bank_url }}">Bank</a></li>
+      <li><a href="{{ merchant_blog_url }}">Blog Shop</a></li>
+      <li><a href="{{ merchant_donations_url }}">Donations</a></li>
     </ul>
     <p>You can learn more about Taler on our main <a 
href="https://taler.net";>website</a>.</p>
   </div>
@@ -65,7 +65,7 @@
       <h2>Step 2: Withdraw coins</h2>
       <p>
 
-        Now you can withdraw coins into your wallet by going to our <a 
href="bank">bank</a>.
+        Now you can withdraw coins into your wallet by going to our <a 
href="{{ bank_url }}">bank</a>.
 
         In this demo you're paying with KUDOS, an imaginary currency.  When you
         create an account at our bank, you'll get 100 KUDOS for free.
@@ -82,12 +82,12 @@
         We have two demo merchants where you can spend your coins:
         <ul>
           <li>
-            The <a href="shop">essay store</a>, where you can pay KUDOS for
+            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="donations">project donation Web site</a>, where
+            The <a href="{{ merchant_donations_url }}">project donation Web 
site</a>, where
             you can show respect to a software project of your choice
             by giving them KUDOS.
           </li>
@@ -116,7 +116,7 @@
     <hr />
     <div class="copyright">
       <p>Copyright &copy; 2014&mdash;2017 INRIA</p>
-      <a href="/javascript" data-jslicense="1" 
class="jslicenseinfo">JavaScript license information</a>
+      <a href="{{ url('javascript.html') }}" data-jslicense="1" 
class="jslicenseinfo">JavaScript license information</a>
     </div>
   </section>
 </body>
diff --git a/template.py b/template.py
new file mode 100755
index 0000000..0bb4092
--- /dev/null
+++ b/template.py
@@ -0,0 +1,80 @@
+#!/usr/bin/env python3
+# This file is in the public domain.
+#
+# This script runs the jinga2 templating engine on an input template-file
+# using the specified locale for gettext translations, and outputs
+# the resulting (HTML) ouptut-file.
+#
+# Note that the gettext files need to be prepared first. This script
+# is thus to be invoked via the Makefile.
+import os
+import os.path
+import sys
+import re
+import gettext
+import jinja2
+import glob
+import codecs
+import os
+import os.path
+
+env = 
jinja2.Environment(loader=jinja2.FileSystemLoader(os.path.dirname(__file__)),
+        extensions=["jinja2.ext.i18n"],
+        lstrip_blocks=True,
+        trim_blocks=True,
+
+        undefined=jinja2.StrictUndefined,
+                         autoescape=False)
+
+default_ctx = {}
+default_ctx["merchant_blog_url"] = 
os.environ.get("TALER_ENV_URL_MERCHANT_BLOG", "#")
+default_ctx["merchant_donations_url"] = 
os.environ.get("TALER_ENV_URL_MERCHANT_DONATIONS", "#")
+default_ctx["intro_url"] = os.environ.get("TALER_ENV_URL_INTRO", "#")
+default_ctx["bank_url"] = os.environ.get("TALER_ENV_URL_BANK", "#")
+default_ctx["auditor_url"] = os.environ.get("TALER_ENV_URL_AUDITOR", "#")
+
+
+for in_file in glob.glob("*.j2"):
+    name, ext = re.match(r"(.*)\.([^.]+)$", in_file.rstrip(".j2")).groups()
+    tmpl = env.get_template(in_file)
+
+    def self_localized(other_locale):
+        """
+        Return URL for the current page in another locale.
+        """
+        return "../" + other_locale + "/" + in_file.rstrip(".j2")
+
+    def url_localized(filename):
+        return "../" + locale + "/" + filename
+
+    def url(x):
+        # TODO: look at the app root environment variable
+        # TODO: check if file exists
+        return "../" + x
+
+    for l in ("en", "de", "it", "es"):
+        locale = os.path.basename(l)
+
+        if os.path.isdir(os.path.join("./locale/", locale)):
+            tr = gettext.translation("messages",
+                                     localedir="locale",
+                                     languages=[locale])
+
+            env.install_gettext_translations(tr, newstyle=True)
+        else:
+            print("warning: locale {} not found".format(locale))
+        
+        ctx = dict(
+                lang=locale,
+                url=url,
+                self_localized=self_localized,
+                url_localized=url_localized,
+                filename=name + "." + ext)
+        ctx.update(default_ctx)
+
+        content = tmpl.render(**ctx)
+        out_name = "./" + locale + "/" + in_file.rstrip(".j2")
+        os.makedirs("./" + locale, exist_ok=True)
+
+        with codecs.open(out_name, "w", "utf-8") as f:
+            f.write(content)

-- 
To stop receiving notification emails like this one, please contact
address@hidden



reply via email to

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