From 1acced367ac3aaea3dea0cbb8161aaa53c3be3d3 Mon Sep 17 00:00:00 2001
From: Guillaume Rousse <guillaume.rousse@renater.fr>
Date: Tue, 1 Feb 2022 10:44:52 +0100
Subject: [PATCH] adapt to Mojolicious switch

---
 templates/Makefile.am                         | 36 ++++----
 .../complete_challenge.html.tt2}              | 28 +++----
 .../web/edugain/create_accounts.html.tt2      | 83 +++++++++++++++++++
 .../web/edugain/create_accounts.tt2.html      | 83 -------------------
 templates/web/edugain/errors.html.tt2         | 43 ++++++++++
 templates/web/edugain/errors.tt2.html         | 45 ----------
 templates/web/edugain/home.html.tt2           | 14 ++++
 templates/web/edugain/home.tt2.html           | 14 ----
 .../{index.tt2.html => index.html.tt2}        | 22 ++---
 templates/web/edugain/select_email.html.tt2   | 48 +++++++++++
 templates/web/edugain/select_email.tt2.html   | 48 -----------
 ...{select_sp.tt2.html => select_sp.html.tt2} | 28 +++----
 .../complete_challenge.html.tt2}              | 28 +++----
 ...unts.tt2.html => create_accounts.html.tt2} | 34 ++++----
 templates/web/renater/errors.html.tt2         | 39 +++++++++
 templates/web/renater/errors.tt2.html         | 41 ---------
 templates/web/renater/home.html.tt2           | 14 ++++
 templates/web/renater/home.tt2.html           | 14 ----
 .../{index.tt2.html => index.html.tt2}        | 40 ++++-----
 templates/web/renater/select_email.html.tt2   | 48 +++++++++++
 templates/web/renater/select_email.tt2.html   | 48 -----------
 ...{select_sp.tt2.html => select_sp.html.tt2} | 34 ++++----
 22 files changed, 403 insertions(+), 429 deletions(-)
 rename templates/web/{renater/complete_challenge.tt2.html => edugain/complete_challenge.html.tt2} (51%)
 create mode 100644 templates/web/edugain/create_accounts.html.tt2
 delete mode 100644 templates/web/edugain/create_accounts.tt2.html
 create mode 100644 templates/web/edugain/errors.html.tt2
 delete mode 100644 templates/web/edugain/errors.tt2.html
 create mode 100644 templates/web/edugain/home.html.tt2
 delete mode 100644 templates/web/edugain/home.tt2.html
 rename templates/web/edugain/{index.tt2.html => index.html.tt2} (84%)
 create mode 100644 templates/web/edugain/select_email.html.tt2
 delete mode 100644 templates/web/edugain/select_email.tt2.html
 rename templates/web/edugain/{select_sp.tt2.html => select_sp.html.tt2} (82%)
 rename templates/web/{edugain/complete_challenge.tt2.html => renater/complete_challenge.html.tt2} (56%)
 rename templates/web/renater/{create_accounts.tt2.html => create_accounts.html.tt2} (50%)
 create mode 100644 templates/web/renater/errors.html.tt2
 delete mode 100644 templates/web/renater/errors.tt2.html
 create mode 100644 templates/web/renater/home.html.tt2
 delete mode 100644 templates/web/renater/home.tt2.html
 rename templates/web/renater/{index.tt2.html => index.html.tt2} (77%)
 create mode 100644 templates/web/renater/select_email.html.tt2
 delete mode 100644 templates/web/renater/select_email.tt2.html
 rename templates/web/renater/{select_sp.tt2.html => select_sp.html.tt2} (82%)

diff --git a/templates/Makefile.am b/templates/Makefile.am
index 26b98f4..13e0196 100644
--- a/templates/Makefile.am
+++ b/templates/Makefile.am
@@ -1,4 +1,6 @@
-nobase_templates_DATA = \
+apptemplatesdir = $(pkgdatadir)/templates
+
+nobase_apptemplates_DATA = \
 	accounts/alumni1.tt2 \
 	accounts/employee1.tt2 \
 	accounts/fullset1.tt2 \
@@ -14,23 +16,23 @@ nobase_templates_DATA = \
 	mail/send_authentication_token.tt2.html \
 	other/accounts.csv.tt2 \
 	other/accounts.php.tt2 \
-	web/edugain/errors.tt2.html \
-	web/edugain/home.tt2.html \
-	web/edugain/index.tt2.html \
-	web/edugain/select_sp.tt2.html \
-	web/edugain/select_email.tt2.html \
-	web/edugain/complete_challenge.tt2.html \
-	web/edugain/create_accounts.tt2.html \
-	web/renater/errors.tt2.html \
-	web/renater/home.tt2.html \
-	web/renater/index.tt2.html \
-	web/renater/select_sp.tt2.html \
-	web/renater/select_email.tt2.html \
-	web/renater/complete_challenge.tt2.html \
-	web/renater/create_accounts.tt2.html
+	web/edugain/errors.html.tt2 \
+	web/edugain/home.html.tt2 \
+	web/edugain/index.html.tt2 \
+	web/edugain/select_sp.html.tt2 \
+	web/edugain/select_email.html.tt2 \
+	web/edugain/complete_challenge.html.tt2 \
+	web/edugain/create_accounts.html.tt2 \
+	web/renater/errors.html.tt2 \
+	web/renater/home.html.tt2 \
+	web/renater/index.html.tt2 \
+	web/renater/select_sp.html.tt2 \
+	web/renater/select_email.html.tt2 \
+	web/renater/complete_challenge.html.tt2 \
+	web/renater/create_accounts.html.tt2
 
-EXTRA_DIST = $(nobase_templates_DATA)
+EXTRA_DIST = $(nobase_apptemplates_DATA)
 
 install-data-hook:
-	cd $(DESTDIR)$(templatesdir)/web && \
+	cd $(DESTDIR)$(apptemplatesdir)/web && \
 	$(LN_S) -f edugain default
diff --git a/templates/web/renater/complete_challenge.tt2.html b/templates/web/edugain/complete_challenge.html.tt2
similarity index 51%
rename from templates/web/renater/complete_challenge.tt2.html
rename to templates/web/edugain/complete_challenge.html.tt2
index b2116b6..a99367c 100644
--- a/templates/web/renater/complete_challenge.tt2.html
+++ b/templates/web/edugain/complete_challenge.html.tt2
@@ -1,29 +1,29 @@
-[% WRAPPER index.tt2.html %]
-<form class="wizard clearfix" action="[% app.url %]" method="get">
+[% WRAPPER index.html.tt2 %]
+<form class="wizard clearfix" action="[% c.url_for('step4') %]" method="get">
     <div class="steps clearfix">
         <ol>
-            <li class="done">[% lh.maketext("Select your service provider") %]</li>
-            <li class="done">[% lh.maketext("Select your email address") %]</li>
-            <li class="current">[% lh.maketext("Complete email challenge") %]</li>
+            <li class="done">[% c.loc("Select your service provider") %]</li>
+            <li class="done">[% c.loc("Select your email address") %]</li>
+            <li class="current">[% c.loc("Complete email challenge") %]</li>
         </ol>
     </div>
 
     <div class="content clearfix">
-        <h2>[% lh.maketext("Complete email challenge") %]</h2>
+        <h2>[% c.loc("Complete email challenge") %]</h2>
         <p>
-            [% lh.maketext("An email challenge including a validation token has been emailed to you at [_1].", email) %] 
-            [% lh.maketext("Please copy and paste the validation token in the form below to proof that you are administrator of this service.") %]
+            [% c.loc("An email challenge including a validation token has been emailed to you at [_1].", email) %] 
+            [% c.loc("Please copy and paste the validation token in the form below to proof that you are administrator of this service.") %]
         </p>
         <fieldset>
-            <legend>[% lh.maketext("Please provide the validation token here:") %]</legend>
+            <legend>[% c.loc("Please provide the validation token here:") %]</legend>
             <input name="token" value="" id="token" type="text" class="required"/>
         </fieldset>
         <fieldset>
-            <legend>[% lh.maketext("Accounts validity period, in days:") %]</legend>
+            <legend>[% c.loc("Accounts validity period, in days:") %]</legend>
             <input name="validity" value="[% validity %]" id="validity" type="number" class="required" min="1"/>
         </fieldset>
         <fieldset>
-            <legend>[% lh.maketext("Account profiles:") %]</legend>
+            <legend>[% c.loc("Account profiles:") %]</legend>
             <ul class="columns4">
 [% FOREACH profile IN profiles %]
     [% template = profile _ '.tt2' %]
@@ -42,14 +42,14 @@
     </div>
 
     <div class="actions clearfix">
-        <button type="submit" class="button" name="action" value="select_email" formnovalidate>[% lh.maketext("Previous") %]</button>
-        <button type="submit" class="button" name="action" value="create_accounts">[% lh.maketext("Next") %]</button>
+        <button type="submit" class="button" formaction="[% c.url_for('step2') %]" formnovalidate>[% c.loc("Previous") %]</button>
+        <button type="submit" class="button">[% c.loc("Next") %]</button>
     </div>
 </form>
 
 <script type="text/javascript">
 $( document ).ready(function() {
-    $.validator.messages.required = "[% lh.maketext("This information is required") %]";
+    $.validator.messages.required = "[% c.loc("This information is required") %]";
     $("form").validate();
 });
 </script>
diff --git a/templates/web/edugain/create_accounts.html.tt2 b/templates/web/edugain/create_accounts.html.tt2
new file mode 100644
index 0000000..d7d8877
--- /dev/null
+++ b/templates/web/edugain/create_accounts.html.tt2
@@ -0,0 +1,83 @@
+[% WRAPPER index.html.tt2 %]
+<div class="row">
+    <div class="callout success">
+        [% c.loc("<strong>Success:</strong> your identity as administrator of the Service Provider <strong>[_1]</strong> has been validated!", sp.entityid) %]
+    </div>
+</div>
+
+<h2>[% c.loc("Test accounts created") %]</h2>
+<p>
+    [% c.loc("You can now use these test accounts to access your <a href=\"[_1]\">service provider</a>, using <strong>[_2]</strong> as identity provider.", sp.url, idp.name) %] 
+    [% c.loc("If you need a customized test account with additional user attributes, you should contact <a href=\"mailto:[_1]\">[_1]</a>.", app.support_email) %]
+</p>
+
+<p class="callout warning">
+    [% c.loc("This page won't be accessible again, you should either keep it open in your web browser, or <a href=\"[_1]\">download accounts in CSV format</a>.", download_url) %]
+</p>
+
+<div class="accounts row">
+    [% FOREACH account IN accounts %]
+        [% template = account.profile() _ '.tt2' %]
+        [% PROCESS $template scope=account.scope() id=account.id() | trim %]
+    <div class="account small-12 medium-6 large-4 columns">
+        <h3>[% c.loc("Account profile: [_1]", account.profile()) %]</h3>
+
+        <div class="description">[% description.${lh.language_tag()} %].</div>
+
+        <table>
+            <tr>
+                <td><strong>[% c.loc("user name") %]</strong></td>
+                <td>user[% account.id() %]</td>
+            </tr>
+            <tr>
+                <td><strong>[% c.loc("password") %]</strong></td>
+                <td>[% account.password() %]</td>
+            </tr>
+        </table>
+
+        <div class="text-center" >
+            <button data-open="account_details_[% account.id() %]" id="show_account_details_[% account.id() %]">[% c.loc("show details") %]</button>
+        </div>
+    </div>
+    <div class="account reveal" data-reveal id="account_details_[% account.id() %]">
+        <h3>[% c.loc("User attributes list") %]</h3>
+
+        <div class="callout warning">
+            [% c.loc(
+                "eduPersonAffiliation and eduPersonScopedAffiliation attributes are assigned <a href=\"[_1]\">quite differently from federation to federation</a>, therefore their values should be handled with great care."
+                "http://tnc2010.terena.org/files/ePSA%20comparison%20v0%2006.ppt"
+            ) %]
+        </div>
+
+        <table>
+    [% FOREACH pair IN attributes.pairs %]
+            <tr>
+                <th>[% pair.key %]</th><td>[% pair.value.join(', ') %]</td>
+            </tr>
+    [% END %]
+            <tr>
+                <th>eduPersonTargetedID</th><td><i>[% c.loc("value dynamically generated for each SP") %]</i></td>
+            </tr>
+        </table>
+
+        <div class="text-center" >
+            <button data-close>[% c.loc("close") %]</button>
+        </div>
+    </div>
+    [% END %]
+</div>
+
+<div class="row">
+    <div class="callout warning">
+        <p>[% c.loc("Note that these test accounts will automatically expire in [_1] days and that they can only be used to test federated login to your service provider <strong>[_2]</strong>.", days, sp.entityid) %]</p>
+    </div>
+</div>
+
+<div class="row">
+    <div class="callout primary">
+        <strong>[% c.loc("Thank you for using the [_1] service", app.name) %]</strong>
+    </div>
+</div>
+
+<p class="text-center"><a href="[% c.url_for('step1') %]" class="button">[% c.loc("Test another service") %]</a></p>
+[% END %]
diff --git a/templates/web/edugain/create_accounts.tt2.html b/templates/web/edugain/create_accounts.tt2.html
deleted file mode 100644
index f80e516..0000000
--- a/templates/web/edugain/create_accounts.tt2.html
+++ /dev/null
@@ -1,83 +0,0 @@
-[% WRAPPER index.tt2.html %]
-<div class="row">
-    <div class="callout success">
-        [% lh.maketext("<strong>Success:</strong> your identity as administrator of the Service Provider <strong>[_1]</strong> has been validated!", sp.entityid) %]
-    </div>
-</div>
-
-<h2>[% lh.maketext("Test accounts created") %]</h2>
-<p>
-    [% lh.maketext("You can now use these test accounts to access your <a href=\"[_1]\">service provider</a>, using <strong>[_2]</strong> as identity provider.", sp.url, idp.name) %] 
-    [% lh.maketext("If you need a customized test account with additional user attributes, you should contact <a href=\"mailto:[_1]\">[_1]</a>.", app.support_email) %]
-</p>
-
-<p class="callout warning">
-    [% lh.maketext("This page won't be accessible again, you should either keep it open in your web browser, or <a href=\"[_1]\">download accounts in CSV format</a>.", download_url) %]
-</p>
-
-<div class="accounts row">
-    [% FOREACH account IN accounts %]
-        [% template = account.profile() _ '.tt2' %]
-        [% PROCESS $template scope=account.scope() id=account.id() | trim %]
-    <div class="account small-12 medium-6 large-4 columns">
-        <h3>[% lh.maketext("Account profile: [_1]", account.profile()) %]</h3>
-
-        <div class="description">[% description.${lh.language_tag()} %].</div>
-
-        <table>
-            <tr>
-                <td><strong>[% lh.maketext("user name") %]</strong></td>
-                <td>user[% account.id() %]</td>
-            </tr>
-            <tr>
-                <td><strong>[% lh.maketext("password") %]</strong></td>
-                <td>[% account.password() %]</td>
-            </tr>
-        </table>
-
-        <div class="text-center" >
-            <button data-open="account_details_[% account.id() %]" id="show_account_details_[% account.id() %]">[% lh.maketext("show details") %]</button>
-        </div>
-    </div>
-    <div class="account reveal" data-reveal id="account_details_[% account.id() %]">
-        <h3>[% lh.maketext("User attributes list") %]</h3>
-
-        <div class="callout warning">
-            [% lh.maketext(
-                "eduPersonAffiliation and eduPersonScopedAffiliation attributes are assigned <a href=\"[_1]\">quite differently from federation to federation</a>, therefore their values should be handled with great care."
-                "http://tnc2010.terena.org/files/ePSA%20comparison%20v0%2006.ppt"
-            ) %]
-        </div>
-
-        <table>
-    [% FOREACH pair IN attributes.pairs %]
-            <tr>
-                <th>[% pair.key %]</th><td>[% pair.value.join(', ') %]</td>
-            </tr>
-    [% END %]
-            <tr>
-                <th>eduPersonTargetedID</th><td><i>[% lh.maketext("value dynamically generated for each SP") %]</i></td>
-            </tr>
-        </table>
-
-        <div class="text-center" >
-            <button data-close>[% lh.maketext("close") %]</button>
-        </div>
-    </div>
-    [% END %]
-</div>
-
-<div class="row">
-    <div class="callout warning">
-        <p>[% lh.maketext("Note that these test accounts will automatically expire in [_1] days and that they can only be used to test federated login to your service provider <strong>[_2]</strong>.", days, sp.entityid) %]</p>
-    </div>
-</div>
-
-<div class="row">
-    <div class="callout primary">
-        <strong>[% lh.maketext("Thank you for using the [_1] service", app.name) %]</strong>
-    </div>
-</div>
-
-<p class="text-center"><a href="[% app.url %]?action=select_sp" class="button">[% lh.maketext("Test another service") %]</a></p>
-[% END %]
diff --git a/templates/web/edugain/errors.html.tt2 b/templates/web/edugain/errors.html.tt2
new file mode 100644
index 0000000..9fc9c76
--- /dev/null
+++ b/templates/web/edugain/errors.html.tt2
@@ -0,0 +1,43 @@
+[% WRAPPER index.html.tt2 %]
+<div class="small-12 medium-8 medium-centered columns">
+
+    <p class="callout alert text-center">
+        [% c.loc("Error:") %]
+
+        [% IF error == 'unknown_action' %]
+        [% c.loc("unknown action") %]
+
+        [% ELSIF error == 'internal' %]
+        [% c.loc("internal error") %]
+
+        [% ELSIF error == 'mail_notification_failure' %]
+        [% c.loc("mail notification failure") %]
+
+        [% ELSIF error == 'accounts_creation_failure' %]
+        [% c.loc("test accounts creation failure") %]
+
+        [% ELSIF error == 'wrong_token' %]
+        [% c.loc("the validation token you provided is incorrect or it has already been used") %]
+
+        [% ELSIF error == 'wrong_token_for_sp' %]
+        [% c.loc("the validation token you provided cannot be used for this service provider ([_1])", entityid) %]
+
+        [% ELSIF error == 'unauthenticated' %]
+        [% c.loc("you need to authenticate to access this page") %]
+
+        [% ELSIF error == 'no_displayname_attribute' %]
+        [% c.loc("your identity provider doesn't provide displayName attribute, required for this application") %]
+
+        [% ELSIF (matches = err.match('missing_(\w+)')) %]
+        [% c.loc("missing parameter '[_1]'", matches.0) %]
+
+        [% ELSE %]
+        [% err %]
+
+        [% END %]
+    </p>
+    <br/>
+
+    [% c.loc("You can report the issue to the administrators") %] (<a href="mailto:[% app.support_email %]">[% app.support_email %]</a>).
+</div>
+[% END %]
diff --git a/templates/web/edugain/errors.tt2.html b/templates/web/edugain/errors.tt2.html
deleted file mode 100644
index 5b9030d..0000000
--- a/templates/web/edugain/errors.tt2.html
+++ /dev/null
@@ -1,45 +0,0 @@
-[% WRAPPER index.tt2.html %]
-<div class="small-12 medium-8 medium-centered columns">
-    [% FOREACH err IN errors %]
-
-    <p class="callout alert text-center">
-        [% lh.maketext("Error:") %]
-
-        [% IF err == 'unknown_action' %]
-        [% lh.maketext("unknown action") %]
-
-        [% ELSIF err == 'internal' %]
-        [% lh.maketext("internal error") %]
-
-        [% ELSIF err == 'mail_notification_failure' %]
-        [% lh.maketext("mail notification failure") %]
-
-        [% ELSIF err == 'accounts_creation_failure' %]
-        [% lh.maketext("test accounts creation failure") %]
-
-        [% ELSIF err == 'wrong_token' %]
-        [% lh.maketext("the validation token you provided is incorrect or it has already been used") %]
-
-        [% ELSIF err == 'wrong_token_for_sp' %]
-        [% lh.maketext("the validation token you provided cannot be used for this service provider ([_1])", entityid) %]
-
-        [% ELSIF err == 'unauthenticated' %]
-        [% lh.maketext("you need to authenticate to access this page") %]
-
-        [% ELSIF err == 'no_displayname_attribute' %]
-        [% lh.maketext("your identity provider doesn't provide displayName attribute, required for this application") %]
-
-        [% ELSIF (matches = err.match('missing_(\w+)')) %]
-        [% lh.maketext("missing parameter '[_1]'", matches.0) %]
-
-        [% ELSE %]
-        [% err %]
-
-        [% END %]
-    </p>
-    <br/>
-    [% END %]
-
-    [% lh.maketext("You can report the issue to the administrators") %] (<a href="mailto:[% app.support_email %]">[% app.support_email %]</a>).
-</div>
-[% END %]
diff --git a/templates/web/edugain/home.html.tt2 b/templates/web/edugain/home.html.tt2
new file mode 100644
index 0000000..fc64d08
--- /dev/null
+++ b/templates/web/edugain/home.html.tt2
@@ -0,0 +1,14 @@
+[% WRAPPER index.html.tt2 %]
+
+<h2>[% c.loc("Objective") %]</h2>
+<p>[% c.loc("eduGAIN Access Check is a service based on the same named software, allowing administrators of service providers registered in eduGAIN interfederation to safely test their service behavior.") %]</p>
+<p><a href="https://wiki.geant.org/display/eduGAIN/eduGAIN+Access+Check">[% c.loc("More information") %]</a></p>
+
+<h2>[% c.loc("Functionning") %]</h2>
+<img class="float-center" alt="eduGAIN Access Check" src="images/edugain_test_idp_basics.png" height="50%" width="50%"/>
+
+<h2>[% c.loc("Get started") %]</h2>
+<p>[% c.loc("To start testing your own services, start by selecting one your are administrator for.") %]</p>
+<p class="text-center"><a href="[% IF app.login_url %][% app.login_url %]?target=[% c.url_for('step1') %][% ELSE %][% c.url_for('step1') %][% END %]" class="button">[% c.loc("Get started") %]</a></p>
+
+[% END %]
diff --git a/templates/web/edugain/home.tt2.html b/templates/web/edugain/home.tt2.html
deleted file mode 100644
index bc28cb4..0000000
--- a/templates/web/edugain/home.tt2.html
+++ /dev/null
@@ -1,14 +0,0 @@
-[% WRAPPER index.tt2.html %]
-
-<h2>[% lh.maketext("Objective") %]</h2>
-<p>[% lh.maketext("eduGAIN Access Check is a service based on the same named software, allowing administrators of service providers registered in eduGAIN interfederation to safely test their service behavior.") %]</p>
-<p><a href="https://wiki.geant.org/display/eduGAIN/eduGAIN+Access+Check">[% lh.maketext("More information") %]</a></p>
-
-<h2>[% lh.maketext("Functionning") %]</h2>
-<img class="float-center" alt="eduGAIN Access Check" src="images/edugain_test_idp_basics.png" height="50%" width="50%"/>
-
-<h2>[% lh.maketext("Get started") %]</h2>
-<p>[% lh.maketext("To start testing your own services, start by selecting one your are administrator for.") %]</p>
-<p class="text-center"><a href="[% IF app.login_url %][% app.login_url %]?target=[% app.url %]%3Faction%3Dselect_sp[% ELSE %][% app.url %]?action=select_sp[% END %]" class="button">[% lh.maketext("Get started") %]</a></p>
-
-[% END %]
diff --git a/templates/web/edugain/index.tt2.html b/templates/web/edugain/index.html.tt2
similarity index 84%
rename from templates/web/edugain/index.tt2.html
rename to templates/web/edugain/index.html.tt2
index ab0a6f1..4c3c0da 100644
--- a/templates/web/edugain/index.tt2.html
+++ b/templates/web/edugain/index.html.tt2
@@ -40,31 +40,19 @@
 
                 <div id="core_nav_section" class="et-menu-holder">
                     <ul id="core_nav" class="et-menu et-left">
-                        <li class="et-first-option no-children"><a href="[% app.url %]" title="Home"><img style="width: 16px; height: 15px; position: relative; top: 3px" src="images/home_logo.png" alt="Home icon" /></a></li>
+                        <li class="et-first-option no-children"><a href="[% c.url_for('home') %]" title="Home"><img style="width: 16px; height: 15px; position: relative; top: 3px" src="images/home_logo.png" alt="Home icon" /></a></li>
                         <li class="et-option et-has-children">
                             <span>Language</span>
                             <ul class="et-submenu">
                                 <li class="et-submenu-option">
-                                    <a
-[% IF lh.language_tag() == "en" %]
-                                        class="nocursor"
-[% ELSE %]
-                                        href="[% app.url %]?action=[% action %]&federation=[% federation %]&entityid=[% entityid %]&email=[% email %]&token=[% token %]&lang=en"
-[% END %]
-                                        data-lang="en" title="English">
+                                    <a [% IF lh.language_tag() == "en" %]class="nocursor"[% ELSE %]href="[% c.url_with().query(lang => 'en') %]"[% END %] data-lang="en" title="English">
                                         <img src="images/en.png" />
                                         <label>English</label>
                                         [% IF lh.language_tag() == "en" %]<span class="fa fa-check"></span>[% END %]
                                     </a>
                                 </li>
                                 <li class="et-submenu-option">
-                                    <a
-[% IF lh.language_tag() == "fr" %]
-                                        class="nocursor"
-[% ELSE %]
-                                        href="[% app.url %]?action=[% action %]&federation=[% federation %]&entityid=[% entityid %]&email=[% email %]&token=[% token %]&lang=fr"
-[% END %]
-                                        data-lang="fr" title="Français">
+                                    <a [% IF lh.language_tag() == "fr" %]class="nocursor"[% ELSE %]href="[% c.url_with().query(lang => 'fr') %]"[% END %] data-lang="fr" title="Français">
                                         <img src="images/fr.png" />
                                         <label>Français</label>
                                         [% IF lh.language_tag() == "fr" %]<span class="fa fa-check"></span>[% END %]
@@ -89,7 +77,7 @@
         </main>
 
         <footer style="visibility: hidden;">
-            <p class="text-center">[% app.name %] [% app.version %] - <a href="mailto:[% app.support_email %]">[% lh.maketext("contact us") %]</a></p>
+            <p class="text-center">[% app.name %] [% app.version %] - <a href="mailto:[% app.support_email %]">[% c.loc("contact us") %]</a></p>
             <div class="central-section">
                 <div class="col-1-1">
                     <img src="images/footer_logo_padded.jpg" style="width: 111px; height:26px;" />
@@ -102,7 +90,7 @@
             </div>
 
             <div class="central-section" style="text-align: center; padding-bottom: 0.2em;">
-                [% lh.maketext("As part of the GÉANT 2020 Framework Partnership Agreement (FPA), this project receives funding from the European Union’s Horizon 2020 research and innovation programme under Grant Agreement No. 731122 (GN4-2).") %]
+                [% c.loc("As part of the GÉANT 2020 Framework Partnership Agreement (FPA), this project receives funding from the European Union’s Horizon 2020 research and innovation programme under Grant Agreement No. 731122 (GN4-2).") %]
             </div>
         </footer>
 
diff --git a/templates/web/edugain/select_email.html.tt2 b/templates/web/edugain/select_email.html.tt2
new file mode 100644
index 0000000..b8479b3
--- /dev/null
+++ b/templates/web/edugain/select_email.html.tt2
@@ -0,0 +1,48 @@
+[% WRAPPER index.html.tt2 %]
+<form class="wizard clearfix" action="[% c.url_for('step3') %]" method="get">
+    <div class="steps clearfix">
+        <ol>
+            <li class="done">[% c.loc("Select your service provider") %]</li>
+            <li class="current">[% c.loc("Select your email address") %]</li>
+            <li class="disabled">[% c.loc("Complete email challenge") %]</li>
+        </ol>
+    </div>
+
+    <div class="content clearfix">
+        <h2>[% c.loc("Select your email address") %]</h2>
+        <p>[% c.loc("Before you can create test accounts at this Identity Provider, we need to ensure you are a legitimate administrator of the Service Provider <strong>[_1]</strong>.", entityid) %]</p>
+
+    [% IF sp.contacts.defined %]
+        <fieldset>
+            <legend>[% c.loc("Select the email address where an email challenge can be sent to validate your identity:") %]</legend>
+        [% FOREACH email IN sp.contacts.sort %]
+            <input id="[% email %]" name="email" value="[% email %]" type="radio" class="required"/>
+            <label for="[% email %]">[% email %]</label>
+            <br/>
+        [% END %]
+            <label for="email" class="error"></label>
+            <input type="hidden" name="federation" value="[% federation %]"/>
+            <input type="hidden" name="entityid" value="[% sp.entityid %]"/>
+        </fieldset>
+        <div class="callout primary">[% c.loc("Those email addresses have been extracted from your service metadata.") %]</div>
+    [% ELSE %]
+        <p>
+        [% c.loc("No ContactPerson element could be found in your service metadata, therefore we are unable to provide test accounts for this service.") %]
+        [% c.loc("Please contact your federation administrators to add needed information to the metadata.") %]
+        </p>
+[% END %]
+    </div>
+
+    <div class="actions clearfix">
+	<button type="submit" class="button" formaction="[% c.url_for('step1') %]" formnovalidate>[% c.loc("Previous") %]</button>
+        <button type="submit" class="button">[% c.loc("Next") %]</button>
+    </div>
+</form>
+
+<script type="text/javascript">
+$( document ).ready(function() {
+    $.validator.messages.required = "[% c.loc("This information is required") %]";
+    $("form").validate();
+});
+</script>
+[% END %]
diff --git a/templates/web/edugain/select_email.tt2.html b/templates/web/edugain/select_email.tt2.html
deleted file mode 100644
index 0ba39f1..0000000
--- a/templates/web/edugain/select_email.tt2.html
+++ /dev/null
@@ -1,48 +0,0 @@
-[% WRAPPER index.tt2.html %]
-<form class="wizard clearfix" action="[% app.url %]" method="get">
-    <div class="steps clearfix">
-        <ol>
-            <li class="done">[% lh.maketext("Select your service provider") %]</li>
-            <li class="current">[% lh.maketext("Select your email address") %]</li>
-            <li class="disabled">[% lh.maketext("Complete email challenge") %]</li>
-        </ol>
-    </div>
-
-    <div class="content clearfix">
-        <h2>[% lh.maketext("Select your email address") %]</h2>
-        <p>[% lh.maketext("Before you can create test accounts at this Identity Provider, we need to ensure you are a legitimate administrator of the Service Provider <strong>[_1]</strong>.", entityid) %]</p>
-
-    [% IF sp.contacts.defined %]
-        <fieldset>
-            <legend>[% lh.maketext("Select the email address where an email challenge can be sent to validate your identity:") %]</legend>
-        [% FOREACH email IN sp.contacts.sort %]
-            <input id="[% email %]" name="email" value="[% email %]" type="radio" class="required"/>
-            <label for="[% email %]">[% email %]</label>
-            <br/>
-        [% END %]
-            <label for="email" class="error"></label>
-            <input type="hidden" name="federation" value="[% federation %]"/>
-            <input type="hidden" name="entityid" value="[% sp.entityid %]"/>
-        </fieldset>
-        <div class="callout primary">[% lh.maketext("Those email addresses have been extracted from your service metadata.") %]</div>
-    [% ELSE %]
-        <p>
-        [% lh.maketext("No ContactPerson element could be found in your service metadata, therefore we are unable to provide test accounts for this service.") %]
-        [% lh.maketext("Please contact your federation administrators to add needed information to the metadata.") %]
-        </p>
-[% END %]
-    </div>
-
-    <div class="actions clearfix">
-        <button type="submit" class="button" name="action" value="select_sp" formnovalidate>[% lh.maketext("Previous") %]</button>
-        <button type="submit" class="button" name="action" value="complete_challenge">[% lh.maketext("Next") %]</button>
-    </div>
-</form>
-
-<script type="text/javascript">
-$( document ).ready(function() {
-    $.validator.messages.required = "[% lh.maketext("This information is required") %]";
-    $("form").validate();
-});
-</script>
-[% END %]
diff --git a/templates/web/edugain/select_sp.tt2.html b/templates/web/edugain/select_sp.html.tt2
similarity index 82%
rename from templates/web/edugain/select_sp.tt2.html
rename to templates/web/edugain/select_sp.html.tt2
index 8cea3b2..c4dbece 100644
--- a/templates/web/edugain/select_sp.tt2.html
+++ b/templates/web/edugain/select_sp.html.tt2
@@ -1,23 +1,23 @@
-[% WRAPPER index.tt2.html %]
-<form class="wizard clearfix" action="[% app.url %]" method="get">
+[% WRAPPER index.html.tt2 %]
+<form class="wizard clearfix" action="[% c.url_for('step2') %]" method="get">
     <div class="steps clearfix">
         <ol>
-            <li class="current">[% lh.maketext("Select your service provider") %]</li>
-            <li class="disabled">[% lh.maketext("Select your email address") %]</li>
-            <li class="disabled">[% lh.maketext("Complete email challenge") %]</li>
+            <li class="current">[% c.loc("Select your service provider") %]</li>
+            <li class="disabled">[% c.loc("Select your email address") %]</li>
+            <li class="disabled">[% c.loc("Complete email challenge") %]</li>
         </ol>
     </div>
 
     <div class="content clearfix">
-        <h2>[% lh.maketext("Select your service provider") %]</h2>
+        <h2>[% c.loc("Select your service provider") %]</h2>
         <p>
-            [% lh.maketext("Please select the service provider you want to test in one of the lists below.") %]&nbsp;
-            [% lh.maketext("You must be an administrator of that service to continue afterwards.") %]
+            [% c.loc("Please select the service provider you want to test in one of the lists below.") %]&nbsp;
+            [% c.loc("You must be an administrator of that service to continue afterwards.") %]
         </p>
 
     [% IF idp %]
         <fieldset>
-            <legend>[% lh.maketext("Service providers from my own organization") %]</legend>
+            <legend>[% c.loc("Service providers from my own organization") %]</legend>
             <select id="self" name="self">
                 <option value=""></option>
         [% organization_url = idp.organization_url() %]
@@ -30,7 +30,7 @@
     [% END %]
 
         <fieldset>
-            <legend>[% lh.maketext("All service providers") %]</legend>
+            <legend>[% c.loc("All service providers") %]</legend>
             <select id="all" name="all">
                 <option value=""></option>
     [% FOREACH sp IN sps %]
@@ -40,12 +40,12 @@
         </fieldset>
         <input type="hidden" id="entityid" name="entityid"/>
 
-        <div class="callout primary">[% lh.maketext("Those service providers have been extracted from federation metadata.") %]</div>
+        <div class="callout primary">[% c.loc("Those service providers have been extracted from federation metadata.") %]</div>
     </div>
 
     <div class="actions clearfix">
-        <button type="submit" class="button" name="action" value="" formnovalidate>[% lh.maketext("Previous") %]</button>
-        <button type="submit" class="button" name="action" value="select_email">[% lh.maketext("Next") %]</button>
+        <a class="button" href="[% c.url_for('home') %]">[% c.loc("Previous") %]</a>
+        <button type="submit" class="button">[% c.loc("Next") %]</button>
     </div>
 </form>
 
@@ -196,7 +196,7 @@ $( document ).ready(function() {
     [% END %]
     $( "#all" ).combobox();
 
-    $.validator.messages.required = "[% lh.maketext("This information is required") %]";
+    $.validator.messages.required = "[% c.loc("This information is required") %]";
     $("form").validate();
 });
 </script>
diff --git a/templates/web/edugain/complete_challenge.tt2.html b/templates/web/renater/complete_challenge.html.tt2
similarity index 56%
rename from templates/web/edugain/complete_challenge.tt2.html
rename to templates/web/renater/complete_challenge.html.tt2
index b2116b6..9d598e9 100644
--- a/templates/web/edugain/complete_challenge.tt2.html
+++ b/templates/web/renater/complete_challenge.html.tt2
@@ -1,29 +1,29 @@
-[% WRAPPER index.tt2.html %]
-<form class="wizard clearfix" action="[% app.url %]" method="get">
+[% WRAPPER index.html.tt2 %]
+<form class="wizard clearfix" action="[% c.url_for('step4') %]" method="get">
     <div class="steps clearfix">
         <ol>
-            <li class="done">[% lh.maketext("Select your service provider") %]</li>
-            <li class="done">[% lh.maketext("Select your email address") %]</li>
-            <li class="current">[% lh.maketext("Complete email challenge") %]</li>
+            <li class="done">[% c.loc("Select your service provider") %]</li>
+            <li class="done">[% c.loc("Select your email address") %]</li>
+            <li class="current">[% c.loc("Complete email challenge") %]</li>
         </ol>
     </div>
 
     <div class="content clearfix">
-        <h2>[% lh.maketext("Complete email challenge") %]</h2>
+        <h2>[% c.loc("Complete email challenge") %]</h2>
         <p>
-            [% lh.maketext("An email challenge including a validation token has been emailed to you at [_1].", email) %] 
-            [% lh.maketext("Please copy and paste the validation token in the form below to proof that you are administrator of this service.") %]
+            [% c.loc("An email challenge including a validation token has been emailed to you at [_1].", email) %] 
+            [% c.loc("Please copy and paste the validation token in the form below to proof that you are administrator of this service.") %]
         </p>
         <fieldset>
-            <legend>[% lh.maketext("Please provide the validation token here:") %]</legend>
+            <legend>[% c.loc("Please provide the validation token here:") %]</legend>
             <input name="token" value="" id="token" type="text" class="required"/>
         </fieldset>
         <fieldset>
-            <legend>[% lh.maketext("Accounts validity period, in days:") %]</legend>
+            <legend>[% c.loc("Accounts validity period, in days:") %]</legend>
             <input name="validity" value="[% validity %]" id="validity" type="number" class="required" min="1"/>
         </fieldset>
         <fieldset>
-            <legend>[% lh.maketext("Account profiles:") %]</legend>
+            <legend>[% c.loc("Account profiles:") %]</legend>
             <ul class="columns4">
 [% FOREACH profile IN profiles %]
     [% template = profile _ '.tt2' %]
@@ -42,14 +42,14 @@
     </div>
 
     <div class="actions clearfix">
-        <button type="submit" class="button" name="action" value="select_email" formnovalidate>[% lh.maketext("Previous") %]</button>
-        <button type="submit" class="button" name="action" value="create_accounts">[% lh.maketext("Next") %]</button>
+        <button type="submit" class="button" name="action" value="select_email" formnovalidate>[% c.loc("Previous") %]</button>
+        <button type="submit" class="button" name="action" value="create_accounts">[% c.loc("Next") %]</button>
     </div>
 </form>
 
 <script type="text/javascript">
 $( document ).ready(function() {
-    $.validator.messages.required = "[% lh.maketext("This information is required") %]";
+    $.validator.messages.required = "[% c.loc("This information is required") %]";
     $("form").validate();
 });
 </script>
diff --git a/templates/web/renater/create_accounts.tt2.html b/templates/web/renater/create_accounts.html.tt2
similarity index 50%
rename from templates/web/renater/create_accounts.tt2.html
rename to templates/web/renater/create_accounts.html.tt2
index 8841e20..4bb6301 100644
--- a/templates/web/renater/create_accounts.tt2.html
+++ b/templates/web/renater/create_accounts.html.tt2
@@ -1,20 +1,20 @@
-[% WRAPPER index.tt2.html %]
+[% WRAPPER index.html.tt2 %]
 <div class="row">
     <div class="small-12 columns">
         <p class="callout alert-callout-border success text-center">
-        [% lh.maketext("<strong>Success:</strong> your identity as administrator of the Service Provider <strong>[_1]</strong> has been validated!", sp.entityid) %]
+        [% c.loc("<strong>Success:</strong> your identity as administrator of the Service Provider <strong>[_1]</strong> has been validated!", sp.entityid) %]
         </p>
     </div>
 </div>
 
-<h2>[% lh.maketext("Test accounts created") %]</h2>
+<h2>[% c.loc("Test accounts created") %]</h2>
 <p>
-    [% lh.maketext("You can now use these test accounts to access your <a href=\"[_1]\">service provider</a>, using <strong>[_2]</strong> as identity provider.", sp.url, idp.name) %] 
-    [% lh.maketext("If you need a customized test account with additional user attributes, you should contact <a href=\"mailto:[_1]\">[_1]</a>.", app.support_email) %]
+    [% c.loc("You can now use these test accounts to access your <a href=\"[_1]\">service provider</a>, using <strong>[_2]</strong> as identity provider.", sp.url, idp.name) %] 
+    [% c.loc("If you need a customized test account with additional user attributes, you should contact <a href=\"mailto:[_1]\">[_1]</a>.", app.support_email) %]
 </p>
 
 <p class="callout alert-callout-border warning">
-    [% lh.maketext("This page won't be accessible again, you should either keep it open in your web browser, or <a href=\"[_1]\">download accounts in CSV format</a>.", download_url) %]
+    [% c.loc("This page won't be accessible again, you should either keep it open in your web browser, or <a href=\"[_1]\">download accounts in CSV format</a>.", download_url) %]
 </p>
 
 <div class="accounts row">
@@ -22,30 +22,30 @@
         [% template = account.profile() _ '.tt2' %]
         [% PROCESS $template scope=account.scope() id=account.id() | trim %]
     <div class="account small-12 medium-6 large-4 columns">
-        <h3>[% lh.maketext("Account profile: [_1]", account.profile()) %]</h3>
+        <h3>[% c.loc("Account profile: [_1]", account.profile()) %]</h3>
 
         <div class="description">[% description.${lh.language_tag()} %].</div>
 
         <table>
             <tr>
-                <td><strong>[% lh.maketext("user name") %]</strong></td>
+                <td><strong>[% c.loc("user name") %]</strong></td>
                 <td>user[% account.id() %]</td>
             </tr>
             <tr>
-                <td><strong>[% lh.maketext("password") %]</strong></td>
+                <td><strong>[% c.loc("password") %]</strong></td>
                 <td>[% account.password() %]</td>
             </tr>
         </table>
 
         <div class="text-center">
-            <button data-open="account_details_[% account.id() %]" id="show_account_details_[% account.id() %]">[% lh.maketext("show details") %]</button>
+            <button data-open="account_details_[% account.id() %]" id="show_account_details_[% account.id() %]">[% c.loc("show details") %]</button>
         </div>
     </div>
     <div class="account reveal" data-reveal id="account_details_[% account.id() %]">
-        <h3>[% lh.maketext("User attributes list") %]</h3>
+        <h3>[% c.loc("User attributes list") %]</h3>
 
         <div class="callout alert-callout-border warning">
-            [% lh.maketext(
+            [% c.loc(
                 "eduPersonAffiliation and eduPersonScopedAffiliation attributes are assigned <a href=\"[_1]\">quite differently from federation to federation</a>, therefore their values should be handled with great care.",
                 "http://tnc2010.terena.org/files/ePSA%20comparison%20v0%2006.ppt")
             %]
@@ -58,12 +58,12 @@
             </tr>
     [% END %]
             <tr>
-                <th>eduPersonTargetedID</th><td><i>[% lh.maketext("value dynamically generated for each SP") %]</i></td>
+                <th>eduPersonTargetedID</th><td><i>[% c.loc("value dynamically generated for each SP") %]</i></td>
             </tr>
         </table>
 
         <div class="text-center">
-            <button data-close>[% lh.maketext("close") %]</button>
+            <button data-close>[% c.loc("close") %]</button>
         </div>
     </div>
     [% END %]
@@ -71,15 +71,15 @@
 
 <div class="row">
     <div class="callout alert-callout-border warning">
-        <p>[% lh.maketext("Note that these test accounts will automatically expire in [_1] days and that they can only be used to test federated login to your service provider <strong>[_2]</strong>.", days, sp.entityid) %]</p>
+        <p>[% c.loc("Note that these test accounts will automatically expire in [_1] days and that they can only be used to test federated login to your service provider <strong>[_2]</strong>.", days, sp.entityid) %]</p>
     </div>
 </div>
 
 <div class="row">
     <div class="callout alert-callout-border primary text-center">
-        <strong>[% lh.maketext("Thank you for using the [_1] service", app.name) %]</strong>
+        <strong>[% c.loc("Thank you for using the [_1] service", app.name) %]</strong>
     </div>
 </div>
 
-<p class="text-center"><a href="[% app.url %]?action=select_sp" class="button">[% lh.maketext("Test another service") %]</a></p>
+<p class="text-center"><a href="[% c.url_for('step1') %]" class="button">[% c.loc("Test another service") %]</a></p>
 [% END %]
diff --git a/templates/web/renater/errors.html.tt2 b/templates/web/renater/errors.html.tt2
new file mode 100644
index 0000000..2071ec7
--- /dev/null
+++ b/templates/web/renater/errors.html.tt2
@@ -0,0 +1,39 @@
+[% WRAPPER index.html.tt2 %]
+<div class="small-12 medium-8 medium-centered columns">
+
+    <p class="callout  alert-callout-border alert text-center">
+        <strong>[% c.loc("Error:") %]</strong>
+
+        [% IF error == 'unknown_action' %]
+        [% c.loc("unknown action") %]
+
+        [% ELSIF error == 'internal' %]
+        [% c.loc("internal error") %]
+
+        [% ELSIF error == 'mail_notification_failure' %]
+        [% c.loc("mail notification failure") %]
+
+        [% ELSIF error == 'accounts_creation_failure' %]
+        [% c.loc("test accounts creation failure") %]
+
+        [% ELSIF error == 'wrong_token' %]
+        [% c.loc("the validation token you provided is incorrect or it has already been used") %]
+
+        [% ELSIF error == 'wrong_token_for_sp' %]
+        [% c.loc("the validation token you provided cannot be used for this service provider ([_1])", entityid) %]
+
+        [% ELSIF error == 'unauthenticated' %]
+        [% c.loc("you need to authenticate to access this page") %]
+
+        [% ELSIF (matches = err.match('missing_(\w+)')) %]
+        [% c.loc("missing parameter '[_1]'", matches.0) %]
+
+        [% ELSE %]
+        [% err %]
+
+        [% END %]
+    </p>
+
+    [% c.loc("You can report the issue to the administrators") %] (<a href="mailto:[% app.support_email %]">[% app.support_email %]</a>).
+</div>
+[% END %]
diff --git a/templates/web/renater/errors.tt2.html b/templates/web/renater/errors.tt2.html
deleted file mode 100644
index 34143af..0000000
--- a/templates/web/renater/errors.tt2.html
+++ /dev/null
@@ -1,41 +0,0 @@
-[% WRAPPER index.tt2.html %]
-<div class="small-12 medium-8 medium-centered columns">
-    [% FOREACH err IN errors %]
-
-    <p class="callout  alert-callout-border alert text-center">
-        <strong>[% lh.maketext("Error:") %]</strong>
-
-        [% IF err == 'unknown_action' %]
-        [% lh.maketext("unknown action") %]
-
-        [% ELSIF err == 'internal' %]
-        [% lh.maketext("internal error") %]
-
-        [% ELSIF err == 'mail_notification_failure' %]
-        [% lh.maketext("mail notification failure") %]
-
-        [% ELSIF err == 'accounts_creation_failure' %]
-        [% lh.maketext("test accounts creation failure") %]
-
-        [% ELSIF err == 'wrong_token' %]
-        [% lh.maketext("the validation token you provided is incorrect or it has already been used") %]
-
-        [% ELSIF err == 'wrong_token_for_sp' %]
-        [% lh.maketext("the validation token you provided cannot be used for this service provider ([_1])", entityid) %]
-
-        [% ELSIF err == 'unauthenticated' %]
-        [% lh.maketext("you need to authenticate to access this page") %]
-
-        [% ELSIF (matches = err.match('missing_(\w+)')) %]
-        [% lh.maketext("missing parameter '[_1]'", matches.0) %]
-
-        [% ELSE %]
-        [% err %]
-
-        [% END %]
-    </p>
-    [% END %]
-
-    [% lh.maketext("You can report the issue to the administrators") %] (<a href="mailto:[% app.support_email %]">[% app.support_email %]</a>).
-</div>
-[% END %]
diff --git a/templates/web/renater/home.html.tt2 b/templates/web/renater/home.html.tt2
new file mode 100644
index 0000000..819da9c
--- /dev/null
+++ b/templates/web/renater/home.html.tt2
@@ -0,0 +1,14 @@
+[% WRAPPER index.html.tt2 %]
+
+<h2>[% c.loc("Objective") %]</h2>
+<p>[% c.loc("RENATER Access Check is a service based on eduGAIN Access Check software, allowing administrators of service providers registered in Education-Research Federation to safely test their service behavior.") %]</p>
+<p><a href="https://wiki.geant.org/display/eduGAIN/eduGAIN+Access+Check">[% c.loc("More information") %]</a></p>
+
+<h2>[% c.loc("Functionning") %]</h2>
+<img class="float-center" alt="RENATER Access Check" src="images/edugain_test_idp_basics.png" height="50%" width="50%"/>
+
+<h2>[% c.loc("Get started") %]</h2>
+<p>[% c.loc("To start testing your own services, start by selecting one your are administrator for.") %]</p>
+<p class="text-center"><a href="[% IF app.login_url %][% app.login_url %]?target=[% c.url_for('step1') %][% ELSE %][% c.url_for('step1') %][% END %]" class="button">[% c.loc("Get started") %]</a></p>
+
+[% END %]
diff --git a/templates/web/renater/home.tt2.html b/templates/web/renater/home.tt2.html
deleted file mode 100644
index 18b8919..0000000
--- a/templates/web/renater/home.tt2.html
+++ /dev/null
@@ -1,14 +0,0 @@
-[% WRAPPER index.tt2.html %]
-
-<h2>[% lh.maketext("Objective") %]</h2>
-<p>[% lh.maketext("RENATER Access Check is a service based on eduGAIN Access Check software, allowing administrators of service providers registered in Education-Research Federation to safely test their service behavior.") %]</p>
-<p><a href="https://wiki.geant.org/display/eduGAIN/eduGAIN+Access+Check">[% lh.maketext("More information") %]</a></p>
-
-<h2>[% lh.maketext("Functionning") %]</h2>
-<img class="float-center" alt="RENATER Access Check" src="images/edugain_test_idp_basics.png" height="50%" width="50%"/>
-
-<h2>[% lh.maketext("Get started") %]</h2>
-<p>[% lh.maketext("To start testing your own services, start by selecting one your are administrator for.") %]</p>
-<p class="text-center"><a href="[% IF app.login_url %][% app.login_url %]?target=[% app.url %]%3Faction%3Dselect_sp[% ELSE %][% app.url %]?action=select_sp[% END %]" class="button">[% lh.maketext("Get started") %]</a></p>
-
-[% END %]
diff --git a/templates/web/renater/index.tt2.html b/templates/web/renater/index.html.tt2
similarity index 77%
rename from templates/web/renater/index.tt2.html
rename to templates/web/renater/index.html.tt2
index 9e76b96..d592527 100644
--- a/templates/web/renater/index.tt2.html
+++ b/templates/web/renater/index.html.tt2
@@ -32,7 +32,7 @@
                 <button class="menu-icon top-bar-right" type="button" data-toggle></button>
                 <div class="title-bar-title top-bar-right"></div>
                 <div class="top-bar-left">
-                    <a href="[% app.url %]" title="Accueil">
+                    <a href="[% c.url_for('home') %]" title="Accueil">
                         <img src="images/logo-federation.svg" alt="Logo Fédération" data-options="disable_for_touch:true">
                     </a>
                 </div>
@@ -41,7 +41,7 @@
                 <menu class="top-bar-left">
                     <ul class="menu" data-dropdown-menu>
                         <li class="menu-text hide-for-small-only">
-                            <a href="[% app.url %]" title="Accueil">
+                            <a href="[% c.url_for('home') %]" title="Accueil">
                                 <img src="images/logo-federation.svg" alt="Logo Fédération" data-options="disable_for_touch:true">
                             </a>
                         </li>
@@ -50,38 +50,26 @@
                 <menu class="top-bar-right">
                     <ul class="menu icon-top" data-back-button="<li class='js-drilldown-back'><a tabindex='0'>Back</a></li>" data-responsive-menu="drilldown medium-dropdown">
                         <li>
-                            <a href="[% app.url %]" title="Accueil" data-tooltip class="left">
+                            <a href="[% c.url_for('home') %]" title="Accueil" data-tooltip class="left">
                             <img class="hide-for-small-only home_img" src="images/home.svg" alt="Accueil" data-options="disable_for_touch:true"/>
                             <label class="show-for-small-only">Accueil</label>
                             </a>
                         </li>
                         <li class="has-submenu" data-action="select_language">
-                            <a href="#" title="[% lh.maketext("Language") %]">
-                                <img class="lang_img" src="images/lang.svg" alt="[% lh.maketext("Language") %]" data-options="disable_for_touch:true"/>
-                                <label class="show-for-small-only">[% lh.maketext("Language") %]</label>
+                            <a href="#" title="[% c.loc("Language") %]">
+                                <img class="lang_img" src="images/lang.svg" alt="[% c.loc("Language") %]" data-options="disable_for_touch:true"/>
+                                <label class="show-for-small-only">[% c.loc("Language") %]</label>
                             </a>
                             <ul class="submenu vertical" data-submenu>
                                 <li>
-                                    <a
-[% IF lh.language_tag() == "en" %]
-                                        class="nocursor"
-[% ELSE %]
-                                        href="[% app.url %]?action=[% action %]&federation=[% federation %]&entityid=[% entityid %]&email=[% email %]&token=[% token %]&lang=en"
-[% END %]
-                                        data-lang="en" title="English">
+                                    <a [% IF lh.language_tag() == "en" %]class="nocursor"[% ELSE %]href="[% c.url_with().query(lang => 'en') %]"[% END %] data-lang="en" title="English">
                                         <img src="images/en.png" />
                                         <label>English</label>
                                         [% IF lh.language_tag() == "en" %]<span class="fa fa-check"></span>[% END %]
                                     </a>
                                 </li>
                                 <li>
-                                    <a
-[% IF lh.language_tag() == "fr" %]
-                                        class="nocursor"
-[% ELSE %]
-                                        href="[% app.url %]?action=[% action %]&federation=[% federation %]&entityid=[% entityid %]&email=[% email %]&token=[% token %]&lang=fr"
-[% END %]
-                                        data-lang="fr" title="Français">
+                                    <a [% IF lh.language_tag() == "fr" %]class="nocursor"[% ELSE %]href="[% c.url_with().query(lang => 'fr') %]"[% END %] data-lang="fr" title="Français">
                                         <img src="images/fr.png" />
                                         <label>Français</label>
                                         [% IF lh.language_tag() == "fr" %]<span class="fa fa-check"></span>[% END %]
@@ -123,23 +111,23 @@
             </article>
             <aside>
                 <p class="row small-collapse medium-uncollapse">
-                    <span class="small-12 medium-5 columns text-left">&copy; RENATER 2018 - [% lh.maketext("All rights reserved") %]</span>
+                    <span class="small-12 medium-5 columns text-left">&copy; RENATER 2018 - [% c.loc("All rights reserved") %]</span>
                     <span class="small-12 medium-7 columns">
-                        <a href="#" data-open="legal_reveal" title="[% lh.maketext("Legal mentions") %]">[% lh.maketext("Legal mentions") %]</a> |
-                        <a href="#" data-open="about_reveal" title="[% lh.maketext("About") %]">[% lh.maketext("About") %]</a> |
+                        <a href="#" data-open="legal_reveal" title="[% c.loc("Legal mentions") %]">[% c.loc("Legal mentions") %]</a> |
+                        <a href="#" data-open="about_reveal" title="[% c.loc("About") %]">[% c.loc("About") %]</a> |
                         <a id="feedback" class="tip-top" data-tooltip="" data-options="disable_for_touch:true" data-trigger-class="none"
                            aria-haspopup="true" target="_blank" href="https://feedback.renater.fr/?service=federation"
-                           title="[% lh.maketext("Users feedback") %]">[% lh.maketext("Users feedback") %]</a> |
+                           title="[% c.loc("Users feedback") %]">[% c.loc("Users feedback") %]</a> |
                         <a href="https://www.renater.fr/" target="_blank">www.renater.fr</a>
                     </span>
                 </p>
             </aside>
         </footer>
         <div class="reveal" id="about_reveal" data-reveal>
-            <p class="text-center">[% app.name %] [% app.version %] - <a href="mailto:[% app.support_email %]">[% lh.maketext("contact us") %]</a></p>
+            <p class="text-center">[% app.name %] [% app.version %] - <a href="mailto:[% app.support_email %]">[% c.loc("contact us") %]</a></p>
         </div>
         <div class="reveal" id="legal_reveal" data-reveal>
-            <p class="text-center">[% lh.maketext("As part of the GÉANT 2020 Framework Partnership Agreement (FPA), this project receives funding from the European Union’s Horizon 2020 research and innovation programme under Grant Agreement No. 731122 (GN4-2)." ) %]</p>
+            <p class="text-center">[% c.loc("As part of the GÉANT 2020 Framework Partnership Agreement (FPA), this project receives funding from the European Union’s Horizon 2020 research and innovation programme under Grant Agreement No. 731122 (GN4-2)." ) %]</p>
         </div>
     </body>
 </html>
diff --git a/templates/web/renater/select_email.html.tt2 b/templates/web/renater/select_email.html.tt2
new file mode 100644
index 0000000..25e10ad
--- /dev/null
+++ b/templates/web/renater/select_email.html.tt2
@@ -0,0 +1,48 @@
+[% WRAPPER index.html.tt2 %]
+<form class="wizard clearfix" action="[% c.url_for('step3') %]" method="get">
+    <div class="steps clearfix">
+        <ol>
+            <li class="done">[% c.loc("Select your service provider") %]</li>
+            <li class="current">[% c.loc("Select your email address") %]</li>
+            <li class="disabled">[% c.loc("Complete email challenge") %]</li>
+        </ol>
+    </div>
+
+    <div class="content clearfix">
+        <h2>[% c.loc("Select your email address") %]</h2>
+        <p>[% c.loc("Before you can create test accounts at this Identity Provider, we need to ensure you are a legitimate administrator of the Service Provider <strong>[_1]</strong>.", entityid) %]</p>
+
+    [% IF sp.contacts.defined %]
+        <fieldset>
+            <legend>[% c.loc("Select the email address where an email challenge can be sent to validate your identity:") %]</legend>
+        [% FOREACH email IN sp.contacts.sort %]
+            <input id="[% email %]" name="email" value="[% email %]" type="radio" class="required"/>
+            <label for="[% email %]">[% email %]</label>
+            <br/>
+        [% END %]
+            <label for="email" class="error"></label>
+            <input type="hidden" name="federation" value="[% federation %]"/>
+            <input type="hidden" name="entityid" value="[% sp.entityid %]"/>
+        </fieldset>
+        <div class="callout alert-callout-border primary">[% c.loc("Those email addresses have been extracted from your service metadata.") %]</div>
+    [% ELSE %]
+        <p>
+        [% c.loc("No ContactPerson element could be found in your service metadata, therefore we are unable to provide test accounts for this service.") %]
+        [% c.loc("Please contact your federation administrators to add needed information to the metadata.") %]
+        </p>
+[% END %]
+    </div>
+
+    <div class="actions clearfix">
+        <button type="submit" class="button" name="action" value="select_sp" formnovalidate>[% c.loc("Previous") %]</button>
+        <button type="submit" class="button" name="action" value="complete_challenge">[% c.loc("Next") %]</button>
+    </div>
+</form>
+
+<script type="text/javascript">
+$( document ).ready(function() {
+    $.validator.messages.required = "[% c.loc("This information is required") %]";
+    $("form").validate();
+});
+</script>
+[% END %]
diff --git a/templates/web/renater/select_email.tt2.html b/templates/web/renater/select_email.tt2.html
deleted file mode 100644
index 47b3178..0000000
--- a/templates/web/renater/select_email.tt2.html
+++ /dev/null
@@ -1,48 +0,0 @@
-[% WRAPPER index.tt2.html %]
-<form class="wizard clearfix" action="[% app.url %]" method="get">
-    <div class="steps clearfix">
-        <ol>
-            <li class="done">[% lh.maketext("Select your service provider") %]</li>
-            <li class="current">[% lh.maketext("Select your email address") %]</li>
-            <li class="disabled">[% lh.maketext("Complete email challenge") %]</li>
-        </ol>
-    </div>
-
-    <div class="content clearfix">
-        <h2>[% lh.maketext("Select your email address") %]</h2>
-        <p>[% lh.maketext("Before you can create test accounts at this Identity Provider, we need to ensure you are a legitimate administrator of the Service Provider <strong>[_1]</strong>.", entityid) %]</p>
-
-    [% IF sp.contacts.defined %]
-        <fieldset>
-            <legend>[% lh.maketext("Select the email address where an email challenge can be sent to validate your identity:") %]</legend>
-        [% FOREACH email IN sp.contacts.sort %]
-            <input id="[% email %]" name="email" value="[% email %]" type="radio" class="required"/>
-            <label for="[% email %]">[% email %]</label>
-            <br/>
-        [% END %]
-            <label for="email" class="error"></label>
-            <input type="hidden" name="federation" value="[% federation %]"/>
-            <input type="hidden" name="entityid" value="[% sp.entityid %]"/>
-        </fieldset>
-        <div class="callout alert-callout-border primary">[% lh.maketext("Those email addresses have been extracted from your service metadata.") %]</div>
-    [% ELSE %]
-        <p>
-        [% lh.maketext("No ContactPerson element could be found in your service metadata, therefore we are unable to provide test accounts for this service.") %]
-        [% lh.maketext("Please contact your federation administrators to add needed information to the metadata.") %]
-        </p>
-[% END %]
-    </div>
-
-    <div class="actions clearfix">
-        <button type="submit" class="button" name="action" value="select_sp" formnovalidate>[% lh.maketext("Previous") %]</button>
-        <button type="submit" class="button" name="action" value="complete_challenge">[% lh.maketext("Next") %]</button>
-    </div>
-</form>
-
-<script type="text/javascript">
-$( document ).ready(function() {
-    $.validator.messages.required = "[% lh.maketext("This information is required") %]";
-    $("form").validate();
-});
-</script>
-[% END %]
diff --git a/templates/web/renater/select_sp.tt2.html b/templates/web/renater/select_sp.html.tt2
similarity index 82%
rename from templates/web/renater/select_sp.tt2.html
rename to templates/web/renater/select_sp.html.tt2
index df2aed8..fa2873f 100644
--- a/templates/web/renater/select_sp.tt2.html
+++ b/templates/web/renater/select_sp.html.tt2
@@ -1,23 +1,23 @@
-[% WRAPPER index.tt2.html %]
-<form class="wizard clearfix" action="[% app.url %]" method="get">
+[% WRAPPER index.html.tt2 %]
+<form class="wizard clearfix" action="[% c.url_for('step2') %]" method="get">
     <div class="steps clearfix">
         <ol>
-            <li class="current">[% lh.maketext("Select your service provider") %]</li>
-            <li class="disabled">[% lh.maketext("Select your email address") %]</li>
-            <li class="disabled">[% lh.maketext("Complete email challenge") %]</li>
+            <li class="current">[% c.loc("Select your service provider") %]</li>
+            <li class="disabled">[% c.loc("Select your email address") %]</li>
+            <li class="disabled">[% c.loc("Complete email challenge") %]</li>
         </ol>
     </div>
 
     <div class="content clearfix">
-        <h2>[% lh.maketext("Select your service provider") %]</h2>
+        <h2>[% c.loc("Select your service provider") %]</h2>
         <p>
-            [% lh.maketext("Please select the service provider you want to test in one of the lists below.") %]&nbsp;
-            [% lh.maketext("You must be an administrator of that service to continue afterwards.") %]
+            [% c.loc("Please select the service provider you want to test in one of the lists below.") %]&nbsp;
+            [% c.loc("You must be an administrator of that service to continue afterwards.") %]
         </p>
 
     [% IF idp %]
         <fieldset>
-            <legend>[% lh.maketext("Service providers from my own organization") %]</legend>
+            <legend>[% c.loc("Service providers from my own organization") %]</legend>
             <select id="self" name="self">
                 <option value=""></option>
         [% organization_url = idp.organization_url() %]
@@ -30,7 +30,7 @@
     [% END %]
 
         <fieldset>
-            <legend>[% lh.maketext("All service providers registered in Education-Research federation") %]</legend>
+            <legend>[% c.loc("All service providers registered in Education-Research federation") %]</legend>
             <select id="renater" name="renater">
                 <option value=""></option>
     [% FOREACH sp IN sps %]
@@ -41,7 +41,7 @@
         </fieldset>
 
         <fieldset>
-            <legend>[% lh.maketext("All service providers registered in test federation") %]</legend>
+            <legend>[% c.loc("All service providers registered in test federation") %]</legend>
             <select id="test" name="test">
                 <option value=""></option>
     [% FOREACH sp IN sps %]
@@ -52,18 +52,18 @@
         </fieldset>
 
         <fieldset>
-            <legend>[% lh.maketext("All service providers registered in eduGAIN federation") %]</legend>
-            <a class="button" href="https://access-check.edugain.org">[% lh.maketext("eduGAIN Access Check") %]</a>
+            <legend>[% c.loc("All service providers registered in eduGAIN federation") %]</legend>
+            <a class="button" href="https://access-check.edugain.org">[% c.loc("eduGAIN Access Check") %]</a>
         </fieldset>
 
         <input type="hidden" id="entityid" name="entityid"/>
 
-        <div class="callout alert-callout-border primary">[% lh.maketext("Those service providers have been extracted from federation metadata.") %]</div>
+        <div class="callout alert-callout-border primary">[% c.loc("Those service providers have been extracted from federation metadata.") %]</div>
     </div>
 
     <div class="actions clearfix">
-        <button type="submit" class="button" name="action" value="" formnovalidate>[% lh.maketext("Previous") %]</button>
-        <button type="submit" class="button" name="action" value="select_email">[% lh.maketext("Next") %]</button>
+        <button type="submit" class="button" name="action" value="" formnovalidate>[% c.loc("Previous") %]</button>
+        <button type="submit" class="button" name="action" value="select_email">[% c.loc("Next") %]</button>
     </div>
 </form>
 
@@ -216,7 +216,7 @@ $( document ).ready(function() {
     $("#renater").combobox();
     $("#test").combobox();
 
-    $.validator.messages.required = "[% lh.maketext("This information is required") %]";
+    $.validator.messages.required = "[% c.loc("This information is required") %]";
     $("form").validate();
 });
 </script>
-- 
GitLab