From 5cafba4b74c217f91b9e12212acd66b6d1cfb987 Mon Sep 17 00:00:00 2001
From: Austin King <shout@ozten.com>
Date: Fri, 20 Jan 2012 13:46:19 -0800
Subject: [PATCH] Wrapping public websites layout in gettext so 100% of the
 dialog flows are i18n

---
 resources/static/i18n/db_LB/client.json   | 59 ++++++++++----------
 resources/static/i18n/db_LB/messages.json | 67 ++++++++++++++++++-----
 resources/static/i18n/en_US/client.json   | 19 +++----
 resources/static/i18n/en_US/messages.json | 43 ++++++++++++++-
 resources/static/i18n/eo/client.json      | 11 ++--
 resources/static/i18n/eo/messages.json    | 43 ++++++++++++++-
 resources/views/layout.ejs                | 23 ++++----
 7 files changed, 190 insertions(+), 75 deletions(-)

diff --git a/resources/static/i18n/db_LB/client.json b/resources/static/i18n/db_LB/client.json
index d89c69da8..b4007ea8f 100644
--- a/resources/static/i18n/db_LB/client.json
+++ b/resources/static/i18n/db_LB/client.json
@@ -6,8 +6,7 @@ var json_locale_data = {
       ],
       "" : {
          "MIME-Version" : " 1.0",
-         "POT-Creation-Date" : " 2012-01-20 21:33+0000",
-         "Language" : " ",
+         "POT-Creation-Date" : " 2012-01-20 13:45-0800",
          "Last-Translator" : " FULL NAME <EMAIL@ADDRESS>",
          "Content-Type" : " text/plain; charset=UTF-8",
          "PO-Revision-Date" : " YEAR-MO-DA HO:MI+ZONE",
@@ -50,7 +49,7 @@ var json_locale_data = {
       ],
       "To finish signing in just click the verify link we sent to your email address." : [
          null,
-         "‮⊥o ɟıuısɥ sıƃuıuƃ ıu ɾnsʇ ɔʅıɔʞ ʇɥǝ ʌǝɹıɟʎ ʅıuʞ ʍǝ sǝuʇ ʇo ʎonɹ ǝɯɐıʅ ɐppɹǝss˙"
+         "‮⊥o ɟıuısɥ sıƃuıuƃ ıu ɾnsʇ ɔʅıɔʞ ʇɥǝ ʌǝɹıɟʎ ʅıuʞ ʍǝ sǝuʇ ʇo ʎonɹ ǝɯɐıʅ ɐppɹǝss·"
       ],
       "Cancel" : [
          null,
@@ -58,7 +57,7 @@ var json_locale_data = {
       ],
       "To verify that you own <strong id='primary_email'>%s</strong>, you must sign in with your provider.  This window will be redirected to" : [
          null,
-         "‮⊥o ʌǝɹıɟʎ ʇɥɐʇ ʎon oʍu <strong id='primary_email'>%s</strong>‮´ ʎon ɯnsʇ sıƃu ıu ʍıʇɥ ʎonɹ dɹoʌıpǝɹ˙  ⊥ɥıs ʍıupoʍ ʍıʅʅ qǝ ɹǝpıɹǝɔʇǝp ʇo"
+         "‮⊥o ʌǝɹıɟʎ ʇɥɐʇ ʎon oʍu <sʇɹouƃ ıp=,dɹıɯɐɹʎ_ǝɯɐıʅ,>%s</strong>‮´ ʎon ɯnsʇ sıƃu ıu ʍıʇɥ ʎonɹ dɹoʌıpǝɹ·  ⊥ɥıs ʍıupoʍ ʍıʅʅ qǝ ɹǝpıɹǝɔʇǝp ʇo"
       ],
       "Authenticating with Assertion" : [
          null,
@@ -82,20 +81,20 @@ var json_locale_data = {
       ],
       "To verify that you own this address, you must sign in with your provider.  This window will be redirected to" : [
          null,
-         "‮⊥o ʌǝɹıɟʎ ʇɥɐʇ ʎon oʍu ʇɥıs ɐppɹǝss´ ʎon ɯnsʇ sıƃu ıu ʍıʇɥ ʎonɹ dɹoʌıpǝɹ˙  ⊥ɥıs ʍıupoʍ ʍıʅʅ qǝ ɹǝpıɹǝɔʇǝp ʇo"
+         "‮⊥o ʌǝɹıɟʎ ʇɥɐʇ ʎon oʍu ʇɥıs ɐppɹǝss´ ʎon ɯnsʇ sıƃu ıu ʍıʇɥ ʎonɹ dɹoʌıpǝɹ·  ⊥ɥıs ʍıupoʍ ʍıʅʅ qǝ ɹǝpıɹǝɔʇǝp ʇo"
       ],
       "This is not me..." : [
          null,
-         "‮⊥ɥıs ıs uoʇ ɯǝ˙˙˙"
-      ],
-      "In just a moment you'll be signed into BrowserID." : [
-         null,
-         "‮Iu ɾnsʇ ɐ ɯoɯǝuʇ ʎon,ʅʅ qǝ sıƃuǝp ıuʇo ԐɹoʍsǝɹIᗡ˙"
+         "‮⊥ɥıs ıs uoʇ ɯǝ···"
       ],
       "We are sorry, BrowserID requires cookies" : [
          null,
          "‮Mǝ ɐɹǝ soɹɹʎ´ ԐɹoʍsǝɹIᗡ ɹǝbnıɹǝs ɔooʞıǝs"
       ],
+      "In just a moment you'll be signed into BrowserID." : [
+         null,
+         "‮Iu ɾnsʇ ɐ ɯoɯǝuʇ ʎon,ʅʅ qǝ sıƃuǝp ıuʇo ԐɹoʍsǝɹIᗡ·"
+      ],
       "Getting Assertion" : [
          null,
          "‮⅁ǝʇʇıuƃ ∀ssǝɹʇıou"
@@ -110,7 +109,7 @@ var json_locale_data = {
       ],
       "This message will go away when the request completes (hopefully soon).  If you wait too long, close this window and try again." : [
          null,
-         "‮⊥ɥıs ɯǝssɐƃǝ ʍıʅʅ ƃo ɐʍɐʎ ʍɥǝu ʇɥǝ ɹǝbnǝsʇ ɔoɯdʅǝʇǝs (ɥodǝɟnʅʅʎ soou)˙  Iɟ ʎon ʍɐıʇ ʇoo ʅouƃ´ ɔʅosǝ ʇɥıs ʍıupoʍ ɐup ʇɹʎ ɐƃɐıu˙"
+         "‮⊥ɥıs ɯǝssɐƃǝ ʍıʅʅ ƃo ɐʍɐʎ ʍɥǝu ʇɥǝ ɹǝbnǝsʇ ɔoɯdʅǝʇǝs (ɥodǝɟnʅʅʎ soou)·  Iɟ ʎon ʍɐıʇ ʇoo ʅouƃ´ ɔʅosǝ ʇɥıs ʍıupoʍ ɐup ʇɹʎ ɐƃɐıu·"
       ],
       "translated text" : [
          null,
@@ -118,16 +117,16 @@ var json_locale_data = {
       ],
       "The email field is required." : [
          null,
-         "‮⊥ɥǝ ǝɯɐıʅ ɟıǝʅp ıs ɹǝbnıɹǝp˙"
-      ],
-      "verify email" : [
-         null,
-         "‮ʌǝɹıɟʎ ǝɯɐıʅ"
+         "‮⊥ɥǝ ǝɯɐıʅ ɟıǝʅp ıs ɹǝbnıɹǝp·"
       ],
       "New email address" : [
          null,
          "‮Nǝʍ ǝɯɐıʅ ɐppɹǝss"
       ],
+      "verify email" : [
+         null,
+         "‮ʌǝɹıɟʎ ǝɯɐıʅ"
+      ],
       "Checking if Cookies are Enabled" : [
          null,
          "‮Ↄɥǝɔʞıuƃ ıɟ Ↄooʞıǝs ɐɹǝ Ǝuɐqʅǝp"
@@ -190,7 +189,7 @@ var json_locale_data = {
       ],
       "This email looks new, so let&apos;s get you set up." : [
          null,
-         "‮⊥ɥıs ǝɯɐıʅ ʅooʞs uǝʍ´ so ʅǝʇ&apos;‮s ƃǝʇ ʎon sǝʇ nd˙"
+         "‮⊥ɥıs ǝɯɐıʅ ʅooʞs uǝʍ´ so ʅǝʇ&apos;‮s ƃǝʇ ʎon sǝʇ nd·"
       ],
       "Checking Script Version" : [
          null,
@@ -214,15 +213,15 @@ var json_locale_data = {
       ],
       "forgot your password?" : [
          null,
-         "‮ɟoɹƃoʇ ʎonɹ dɐssʍoɹp¿"
+         "‮ɟoɹƃoʇ ʎonɹ dɐssʍoɹp?"
       ],
       "This field must be an email address." : [
          null,
-         "‮⊥ɥıs ɟıǝʅp ɯnsʇ qǝ ɐu ǝɯɐıʅ ɐppɹǝss˙"
+         "‮⊥ɥıs ɟıǝʅp ɯnsʇ qǝ ɐu ǝɯɐıʅ ɐppɹǝss·"
       ],
       "We are sorry, but we cannot communicate with BrowserID while you are offline." : [
          null,
-         "‮Mǝ ɐɹǝ soɹɹʎ´ qnʇ ʍǝ ɔɐuuoʇ ɔoɯɯnuıɔɐʇǝ ʍıʇɥ ԐɹoʍsǝɹIᗡ ʍɥıʅǝ ʎon ɐɹǝ oɟɟʅıuǝ˙"
+         "‮Mǝ ɐɹǝ soɹɹʎ´ qnʇ ʍǝ ɔɐuuoʇ ɔoɯɯnuıɔɐʇǝ ʍıʇɥ ԐɹoʍsǝɹIᗡ ʍɥıʅǝ ʎon ɐɹǝ oɟɟʅıuǝ·"
       ],
       "Authenticating User" : [
          null,
@@ -238,7 +237,7 @@ var json_locale_data = {
       ],
       "Finishing Sign In..." : [
          null,
-         "‮Ⅎıuısɥıuƃ Sıƃu Iu˙˙˙"
+         "‮Ⅎıuısɥıuƃ Sıƃu Iu···"
       ],
       "select email" : [
          null,
@@ -266,11 +265,11 @@ var json_locale_data = {
       ],
       "We just sent an email to that address!  If you really want to send another, wait a minute or two and try again." : [
          null,
-         "‮Mǝ ɾnsʇ sǝuʇ ɐu ǝɯɐıʅ ʇo ʇɥɐʇ ɐppɹǝss¡  Iɟ ʎon ɹǝɐʅʅʎ ʍɐuʇ ʇo sǝup ɐuoʇɥǝɹ´ ʍɐıʇ ɐ ɯıunʇǝ oɹ ʇʍo ɐup ʇɹʎ ɐƃɐıu˙"
+         "‮Mǝ ɾnsʇ sǝuʇ ɐu ǝɯɐıʅ ʇo ʇɥɐʇ ɐppɹǝss¡  Iɟ ʎon ɹǝɐʅʅʎ ʍɐuʇ ʇo sǝup ɐuoʇɥǝɹ´ ʍɐıʇ ɐ ɯıunʇǝ oɹ ʇʍo ɐup ʇɹʎ ɐƃɐıu·"
       ],
       "The password field is required." : [
          null,
-         "‮⊥ɥǝ dɐssʍoɹp ɟıǝʅp ıs ɹǝbnıɹǝp˙"
+         "‮⊥ɥǝ dɐssʍoɹp ɟıǝʅp ıs ɹǝbnıɹǝp·"
       ],
       "cancel" : [
          null,
@@ -286,15 +285,15 @@ var json_locale_data = {
       ],
       "We are sorry, this request is taking a LOOONG time." : [
          null,
-         "‮Mǝ ɐɹǝ soɹɹʎ´ ʇɥıs ɹǝbnǝsʇ ıs ʇɐʞıuƃ ɐ ⅂OOON⅁ ʇıɯǝ˙"
+         "‮Mǝ ɐɹǝ soɹɹʎ´ ʇɥıs ɹǝbnǝsʇ ıs ʇɐʞıuƃ ɐ ⅂OOON⅁ ʇıɯǝ·"
       ],
       "We just sent an email to that address! If you really want to send another, wait a minute or two and try again." : [
          null,
-         "‮Mǝ ɾnsʇ sǝuʇ ɐu ǝɯɐıʅ ʇo ʇɥɐʇ ɐppɹǝss¡ Iɟ ʎon ɹǝɐʅʅʎ ʍɐuʇ ʇo sǝup ɐuoʇɥǝɹ´ ʍɐıʇ ɐ ɯıunʇǝ oɹ ʇʍo ɐup ʇɹʎ ɐƃɐıu˙"
+         "‮Mǝ ɾnsʇ sǝuʇ ɐu ǝɯɐıʅ ʇo ʇɥɐʇ ɐppɹǝss¡ Iɟ ʎon ɹǝɐʅʅʎ ʍɐuʇ ʇo sǝup ɐuoʇɥǝɹ´ ʍɐıʇ ɐ ɯıunʇǝ oɹ ʇʍo ɐup ʇɹʎ ɐƃɐıu·"
       ],
       "BrowserID requires your browser's cookies to be enabled to operate.  Please enable your browser's cookies and try again" : [
          null,
-         "‮ԐɹoʍsǝɹIᗡ ɹǝbnıɹǝs ʎonɹ qɹoʍsǝɹ,s ɔooʞıǝs ʇo qǝ ǝuɐqʅǝp ʇo odǝɹɐʇǝ˙  Ԁʅǝɐsǝ ǝuɐqʅǝ ʎonɹ qɹoʍsǝɹ,s ɔooʞıǝs ɐup ʇɹʎ ɐƃɐıu"
+         "‮ԐɹoʍsǝɹIᗡ ɹǝbnıɹǝs ʎonɹ qɹoʍsǝɹ,s ɔooʞıǝs ʇo qǝ ǝuɐqʅǝp ʇo odǝɹɐʇǝ·  Ԁʅǝɐsǝ ǝuɐqʅǝ ʎonɹ qɹoʍsǝɹ,s ɔooʞıǝs ɐup ʇɹʎ ɐƃɐıu"
       ],
       "Checking Registration Token" : [
          null,
@@ -306,7 +305,7 @@ var json_locale_data = {
       ],
       "To continue, please close the window and enter a valid address." : [
          null,
-         "‮⊥o ɔouʇıunǝ´ dʅǝɐsǝ ɔʅosǝ ʇɥǝ ʍıupoʍ ɐup ǝuʇǝɹ ɐ ʌɐʅıp ɐppɹǝss˙"
+         "‮⊥o ɔouʇıunǝ´ dʅǝɐsǝ ɔʅosǝ ʇɥǝ ʍıupoʍ ɐup ǝuʇǝɹ ɐ ʌɐʅıp ɐppɹǝss·"
       ],
       "Enter your email address to sign in to <strong>%s</strong>" : [
          null,
@@ -330,7 +329,7 @@ var json_locale_data = {
       ],
       "The account cannot be logged in with this username and password." : [
          null,
-         "‮⊥ɥǝ ɐɔɔonuʇ ɔɐuuoʇ qǝ ʅoƃƃǝp ıu ʍıʇɥ ʇɥıs nsǝɹuɐɯǝ ɐup dɐssʍoɹp˙"
+         "‮⊥ɥǝ ɐɔɔonuʇ ɔɐuuoʇ qǝ ʅoƃƃǝp ıu ʍıʇɥ ʇɥıs nsǝɹuɐɯǝ ɐup dɐssʍoɹp·"
       ],
       "Welcome to BrowserID!" : [
          null,
@@ -338,7 +337,7 @@ var json_locale_data = {
       ],
       "If this is a mistake, just ignore the sent email and <a href=\"#\" class=\"cancelVerify\" id=\"back\">use another email address</a>." : [
          null,
-         "‮Iɟ ʇɥıs ıs ɐ ɯısʇɐʞǝ´ ɾnsʇ ıƃuoɹǝ ʇɥǝ sǝuʇ ǝɯɐıʅ ɐup <a href=\"#\" class=\"cancelVerify\" id=\"back\">‮nsǝ ɐuoʇɥǝɹ ǝɯɐıʅ ɐppɹǝss</a>‮˙"
+         "‮Iɟ ʇɥıs ıs ɐ ɯısʇɐʞǝ´ ɾnsʇ ıƃuoɹǝ ʇɥǝ sǝuʇ ǝɯɐıʅ ɐup <a href=\"#\" class=\"cancelVerify\" id=\"back\">‮nsǝ ɐuoʇɥǝɹ ǝɯɐıʅ ɐppɹǝss</a>‮·"
       ],
       "*%s* is not a valid email address!" : [
          null,
@@ -346,7 +345,7 @@ var json_locale_data = {
       ],
       "Please wait a few seconds while we sign you into the site." : [
          null,
-         "‮Ԁʅǝɐsǝ ʍɐıʇ ɐ ɟǝʍ sǝɔoups ʍɥıʅǝ ʍǝ sıƃu ʎon ıuʇo ʇɥǝ sıʇǝ˙"
+         "‮Ԁʅǝɐsǝ ʍɐıʇ ɐ ɟǝʍ sǝɔoups ʍɥıʅǝ ʍǝ sıƃu ʎon ıuʇo ʇɥǝ sıʇǝ·"
       ]
    }
 }
diff --git a/resources/static/i18n/db_LB/messages.json b/resources/static/i18n/db_LB/messages.json
index 6db75f644..7fa438a7c 100644
--- a/resources/static/i18n/db_LB/messages.json
+++ b/resources/static/i18n/db_LB/messages.json
@@ -2,12 +2,11 @@ var json_locale_data = {
    "messages" : {
       "Error encountered trying to complete registration." : [
          null,
-         "‮Ǝɹɹoɹ ǝuɔonuʇǝɹǝp ʇɹʎıuƃ ʇo ɔoɯdʅǝʇǝ ɹǝƃısʇɹɐʇıou˙"
+         "‮Ǝɹɹoɹ ǝuɔonuʇǝɹǝp ʇɹʎıuƃ ʇo ɔoɯdʅǝʇǝ ɹǝƃısʇɹɐʇıou·"
       ],
       "" : {
          "MIME-Version" : " 1.0",
-         "POT-Creation-Date" : " 2012-01-20 21:33+0000",
-         "Language" : " ",
+         "POT-Creation-Date" : " 2012-01-20 13:45-0800",
          "Last-Translator" : " FULL NAME <EMAIL@ADDRESS>",
          "Content-Type" : " text/plain; charset=UTF-8",
          "PO-Revision-Date" : " YEAR-MO-DA HO:MI+ZONE",
@@ -22,7 +21,7 @@ var json_locale_data = {
       ],
       "Verification password is required." : [
          null,
-         "‮Ʌǝɹıɟıɔɐʇıou dɐssʍoɹp ıs ɹǝbnıɹǝp˙"
+         "‮Ʌǝɹıɟıɔɐʇıou dɐssʍoɹp ıs ɹǝbnıɹǝp·"
       ],
       "Finish signing into: " : [
          null,
@@ -32,9 +31,21 @@ var json_locale_data = {
          null,
          "‮⅄onɹ Ǝɯɐıʅ"
       ],
+      "TOS" : [
+         null,
+         "‮⊥OS"
+      ],
+      "Need Help?" : [
+         null,
+         "‮Nǝǝp Hǝʅd?"
+      ],
+      "BrowserID: %s" : [
+         null,
+         "‮ԐɹoʍsǝɹIᗡ: %s"
+      ],
       "Error comunicating with server." : [
          null,
-         "‮Ǝɹɹoɹ ɔoɯnuıɔɐʇıuƃ ʍıʇɥ sǝɹʌǝɹ˙"
+         "‮Ǝɹɹoɹ ɔoɯnuıɔɐʇıuƃ ʍıʇɥ sǝɹʌǝɹ·"
       ],
       "Last step!" : [
          null,
@@ -46,15 +57,19 @@ var json_locale_data = {
       ],
       "Your new address is set up and you should now be signed in. You may now close this window and go back to" : [
          null,
-         "‮⅄onɹ uǝʍ ɐppɹǝss ıs sǝʇ nd ɐup ʎon sɥonʅp uoʍ qǝ sıƃuǝp ıu˙ ⅄on ɯɐʎ uoʍ ɔʅosǝ ʇɥıs ʍıupoʍ ɐup ƃo qɐɔʞ ʇo"
+         "‮⅄onɹ uǝʍ ɐppɹǝss ıs sǝʇ nd ɐup ʎon sɥonʅp uoʍ qǝ sıƃuǝp ıu· ⅄on ɯɐʎ uoʍ ɔʅosǝ ʇɥıs ʍıupoʍ ɐup ƃo qɐɔʞ ʇo"
       ],
       "Verify Password" : [
          null,
          "‮Ʌǝɹıɟʎ Ԁɐssʍoɹp"
       ],
+      "BrowserID Home" : [
+         null,
+         "‮ԐɹoʍsǝɹIᗡ Hoɯǝ"
+      ],
       "Password must be between 8 and 80 characters long." : [
          null,
-         "‮Ԁɐssʍoɹp ɯnsʇ qǝ qǝʇʍǝǝu 8‮ ɐup 80‮ ɔɥɐɹɐɔʇǝɹs ʅouƃ˙"
+         "‮Ԁɐssʍoɹp ɯnsʇ qǝ qǝʇʍǝǝu 8‮ ɐup 80‮ ɔɥɐɹɐɔʇǝɹs ʅouƃ·"
       ],
       "(A better way to sign in)" : [
          null,
@@ -68,6 +83,10 @@ var json_locale_data = {
          null,
          "‮⊥ɥɐuʞs´"
       ],
+      "Developers" : [
+         null,
+         "‮ᗡǝʌǝʅodǝɹs"
+      ],
       "Communicating with server" : [
          null,
          "‮Ↄoɯɯnuıɔɐʇıuƃ ʍıʇɥ sǝɹʌǝɹ"
@@ -78,11 +97,11 @@ var json_locale_data = {
       ],
       "Error encountered while attempting to confirm your address. Have you previously verified this address?" : [
          null,
-         "‮Ǝɹɹoɹ ǝuɔonuʇǝɹǝp ʍɥıʅǝ ɐʇʇǝɯdʇıuƃ ʇo ɔouɟıɹɯ ʎonɹ ɐppɹǝss˙ Hɐʌǝ ʎon dɹǝʌıonsʅʎ ʌǝɹıɟıǝp ʇɥıs ɐppɹǝss¿"
+         "‮Ǝɹɹoɹ ǝuɔonuʇǝɹǝp ʍɥıʅǝ ɐʇʇǝɯdʇıuƃ ʇo ɔouɟıɹɯ ʎonɹ ɐppɹǝss· Hɐʌǝ ʎon dɹǝʌıonsʅʎ ʌǝɹıɟıǝp ʇɥıs ɐppɹǝss?"
       ],
       "Thank you for signing up with <strong>BrowserID</strong>. You can now use your <strong>BrowserID</strong> account to <em>Sign In</em> or <em>Sign Up</em> to websites all across the web!" : [
          null,
-         "‮⊥ɥɐuʞ ʎon ɟoɹ sıƃuıuƃ nd ʍıʇɥ <strong>‮ԐɹoʍsǝɹIᗡ</strong>‮˙ ⅄on ɔɐu uoʍ nsǝ ʎonɹ <strong>‮ԐɹoʍsǝɹIᗡ</strong>‮ ɐɔɔonuʇ ʇo <em>‮Sıƃu Iu</em>‮ oɹ <em>‮Sıƃu ∩d</em>‮ ʇo ʍǝqsıʇǝs ɐʅʅ ɐɔɹoss ʇɥǝ ʍǝq¡"
+         "‮⊥ɥɐuʞ ʎon ɟoɹ sıƃuıuƃ nd ʍıʇɥ <strong>‮ԐɹoʍsǝɹIᗡ</strong>‮· ⅄on ɔɐu uoʍ nsǝ ʎonɹ <strong>‮ԐɹoʍsǝɹIᗡ</strong>‮ ɐɔɔonuʇ ʇo <em>‮Sıƃu Iu</em>‮ oɹ <em>‮Sıƃu ∩d</em>‮ ʇo ʍǝqsıʇǝs ɐʅʅ ɐɔɹoss ʇɥǝ ʍǝq¡"
       ],
       "Email Verification" : [
          null,
@@ -92,6 +111,10 @@ var json_locale_data = {
          null,
          "<strong class=\"email\">‮⅄onɹ ɐppɹǝss</strong>‮ ɥɐs qǝǝu ʌǝɹıɟıǝp¡"
       ],
+      "Sign In" : [
+         null,
+         "‮Sıƃu Iu"
+      ],
       "Finish" : [
          null,
          "‮Ⅎıuısɥ"
@@ -102,15 +125,19 @@ var json_locale_data = {
       ],
       "There was a problem with your signup link.  Has this address already been registered?" : [
          null,
-         "‮⊥ɥǝɹǝ ʍɐs ɐ dɹoqʅǝɯ ʍıʇɥ ʎonɹ sıƃund ʅıuʞ˙  Hɐs ʇɥıs ɐppɹǝss ɐʅɹǝɐpʎ qǝǝu ɹǝƃısʇǝɹǝp¿"
+         "‮⊥ɥǝɹǝ ʍɐs ɐ dɹoqʅǝɯ ʍıʇɥ ʎonɹ sıƃund ʅıuʞ·  Hɐs ʇɥıs ɐppɹǝss ɐʅɹǝɐpʎ qǝǝu ɹǝƃısʇǝɹǝp?"
       ],
       "Passwords do not match." : [
          null,
-         "‮Ԁɐssʍoɹps po uoʇ ɯɐʇɔɥ˙"
+         "‮Ԁɐssʍoɹps po uoʇ ɯɐʇɔɥ·"
       ],
       "Password is required." : [
          null,
-         "‮Ԁɐssʍoɹp ıs ɹǝbnıɹǝp˙"
+         "‮Ԁɐssʍoɹp ıs ɹǝbnıɹǝp·"
+      ],
+      "By the <a href=\"%s\" target=\"_blank\">Identity Team</a> @ <a href=\"%s\" target=\"_blank\">Mozilla Labs</a>" : [
+         null,
+         "‮Ԑʎ ʇɥǝ <a href=\"%s\" target=\"_blank\">‮Ipǝuʇıʇʎ ⊥ǝɐɯ</a>‮ @ <a href=\"%s\" target=\"_blank\">‮Wozıʅʅɐ ⅂ɐqs</a>"
       ],
       "New Password" : [
          null,
@@ -120,21 +147,33 @@ var json_locale_data = {
          null,
          "‮Ↄoɯdʅǝʇǝ ⅂oƃıu ʇo %s‮ nsıuƃ ԐɹoʍsǝɹIᗡ"
       ],
+      "How it works" : [
+         null,
+         "‮Hoʍ ıʇ ʍoɹʞs"
+      ],
+      "Privacy" : [
+         null,
+         "‮Ԁɹıʌɐɔʎ"
+      ],
       "Repeat Password" : [
          null,
          "‮ᴚǝdǝɐʇ Ԁɐssʍoɹp"
       ],
       "Just a moment while we talk with the server." : [
          null,
-         "‮ſnsʇ ɐ ɯoɯǝuʇ ʍɥıʅǝ ʍǝ ʇɐʅʞ ʍıʇɥ ʇɥǝ sǝɹʌǝɹ˙"
+         "‮ſnsʇ ɐ ɯoɯǝuʇ ʍɥıʅǝ ʍǝ ʇɐʅʞ ʍıʇɥ ʇɥǝ sǝɹʌǝɹ·"
       ],
       "Email Address" : [
          null,
          "‮Ǝɯɐıʅ ∀ppɹǝss"
       ],
+      "Sign Out" : [
+         null,
+         "‮Sıƃu Onʇ"
+      ],
       "If you are NOT trying to sign into this site, just ignore this email." : [
          null,
-         "‮Iɟ ʎon ɐɹǝ NO⊥ ʇɹʎıuƃ ʇo sıƃu ıuʇo ʇɥıs sıʇǝ´ ɾnsʇ ıƃuoɹǝ ʇɥıs ǝɯɐıʅ˙"
+         "‮Iɟ ʎon ɐɹǝ NO⊥ ʇɹʎıuƃ ʇo sıƃu ıuʇo ʇɥıs sıʇǝ´ ɾnsʇ ıƃuoɹǝ ʇɥıs ǝɯɐıʅ·"
       ]
    }
 }
diff --git a/resources/static/i18n/en_US/client.json b/resources/static/i18n/en_US/client.json
index 819122d58..b4b64662e 100644
--- a/resources/static/i18n/en_US/client.json
+++ b/resources/static/i18n/en_US/client.json
@@ -7,15 +7,14 @@ var json_locale_data = {
       "" : {
          "Plural-Forms" : " nplurals=2; plural=(n != 1);",
          "MIME-Version" : " 1.0",
-         "POT-Creation-Date" : " 2012-01-20 21:33+0000",
-         "Language" : " ",
+         "POT-Creation-Date" : " 2012-01-20 13:45-0800",
          "Last-Translator" : " Austin King <ozten@mozilla.com>",
          "Content-Type" : " text/plain; charset=UTF-8",
          "PO-Revision-Date" : " 2012-01-10 17:32-0800",
          "Language-Team" : " English",
          "Content-Transfer-Encoding" : " 8bit",
-         "Report-Msgid-Bugs-To" : " ",
-         "Project-Id-Version" : " PACKAGE VERSION"
+         "Project-Id-Version" : " PACKAGE VERSION",
+         "Report-Msgid-Bugs-To" : " "
       },
       "Always sign in using this email" : [
          null,
@@ -89,11 +88,11 @@ var json_locale_data = {
          null,
          ""
       ],
-      "In just a moment you'll be signed into BrowserID." : [
+      "We are sorry, BrowserID requires cookies" : [
          null,
          ""
       ],
-      "We are sorry, BrowserID requires cookies" : [
+      "In just a moment you'll be signed into BrowserID." : [
          null,
          ""
       ],
@@ -121,14 +120,14 @@ var json_locale_data = {
          null,
          "The email field is required."
       ],
-      "verify email" : [
-         null,
-         "verify email"
-      ],
       "New email address" : [
          null,
          ""
       ],
+      "verify email" : [
+         null,
+         "verify email"
+      ],
       "Checking if Cookies are Enabled" : [
          null,
          ""
diff --git a/resources/static/i18n/en_US/messages.json b/resources/static/i18n/en_US/messages.json
index 5b3a6c06e..98a5f6963 100644
--- a/resources/static/i18n/en_US/messages.json
+++ b/resources/static/i18n/en_US/messages.json
@@ -6,8 +6,7 @@ var json_locale_data = {
       ],
       "" : {
          "MIME-Version" : " 1.0",
-         "POT-Creation-Date" : " 2012-01-20 21:33+0000",
-         "Language" : " ",
+         "POT-Creation-Date" : " 2012-01-20 13:45-0800",
          "Last-Translator" : " FULL NAME <EMAIL@ADDRESS>",
          "Content-Type" : " text/plain; charset=UTF-8",
          "PO-Revision-Date" : " YEAR-MO-DA HO:MI+ZONE",
@@ -32,6 +31,18 @@ var json_locale_data = {
          null,
          ""
       ],
+      "TOS" : [
+         null,
+         ""
+      ],
+      "Need Help?" : [
+         null,
+         ""
+      ],
+      "BrowserID: %s" : [
+         null,
+         ""
+      ],
       "Error comunicating with server." : [
          null,
          ""
@@ -52,6 +63,10 @@ var json_locale_data = {
          null,
          ""
       ],
+      "BrowserID Home" : [
+         null,
+         ""
+      ],
       "Password must be between 8 and 80 characters long." : [
          null,
          ""
@@ -68,6 +83,10 @@ var json_locale_data = {
          null,
          ""
       ],
+      "Developers" : [
+         null,
+         ""
+      ],
       "Communicating with server" : [
          null,
          ""
@@ -92,6 +111,10 @@ var json_locale_data = {
          null,
          ""
       ],
+      "Sign In" : [
+         null,
+         ""
+      ],
       "Finish" : [
          null,
          ""
@@ -112,6 +135,10 @@ var json_locale_data = {
          null,
          ""
       ],
+      "By the <a href=\"%s\" target=\"_blank\">Identity Team</a> @ <a href=\"%s\" target=\"_blank\">Mozilla Labs</a>" : [
+         null,
+         ""
+      ],
       "New Password" : [
          null,
          ""
@@ -120,6 +147,14 @@ var json_locale_data = {
          null,
          ""
       ],
+      "How it works" : [
+         null,
+         ""
+      ],
+      "Privacy" : [
+         null,
+         ""
+      ],
       "Repeat Password" : [
          null,
          ""
@@ -132,6 +167,10 @@ var json_locale_data = {
          null,
          ""
       ],
+      "Sign Out" : [
+         null,
+         ""
+      ],
       "If you are NOT trying to sign into this site, just ignore this email." : [
          null,
          ""
diff --git a/resources/static/i18n/eo/client.json b/resources/static/i18n/eo/client.json
index 55b023fb9..44b0a6942 100644
--- a/resources/static/i18n/eo/client.json
+++ b/resources/static/i18n/eo/client.json
@@ -6,8 +6,7 @@ var json_locale_data = {
       ],
       "" : {
          "MIME-Version" : " 1.0",
-         "POT-Creation-Date" : " 2012-01-20 21:33+0000",
-         "Language" : " ",
+         "POT-Creation-Date" : " 2012-01-20 13:45-0800",
          "Last-Translator" : " FULL NAME <EMAIL@ADDRESS>",
          "Content-Type" : " text/plain; charset=UTF-8",
          "PO-Revision-Date" : " YEAR-MO-DA HO:MI+ZONE",
@@ -88,11 +87,11 @@ var json_locale_data = {
          null,
          ""
       ],
-      "In just a moment you'll be signed into BrowserID." : [
+      "We are sorry, BrowserID requires cookies" : [
          null,
          ""
       ],
-      "We are sorry, BrowserID requires cookies" : [
+      "In just a moment you'll be signed into BrowserID." : [
          null,
          ""
       ],
@@ -120,11 +119,11 @@ var json_locale_data = {
          null,
          ""
       ],
-      "verify email" : [
+      "New email address" : [
          null,
          ""
       ],
-      "New email address" : [
+      "verify email" : [
          null,
          ""
       ],
diff --git a/resources/static/i18n/eo/messages.json b/resources/static/i18n/eo/messages.json
index 5b3a6c06e..98a5f6963 100644
--- a/resources/static/i18n/eo/messages.json
+++ b/resources/static/i18n/eo/messages.json
@@ -6,8 +6,7 @@ var json_locale_data = {
       ],
       "" : {
          "MIME-Version" : " 1.0",
-         "POT-Creation-Date" : " 2012-01-20 21:33+0000",
-         "Language" : " ",
+         "POT-Creation-Date" : " 2012-01-20 13:45-0800",
          "Last-Translator" : " FULL NAME <EMAIL@ADDRESS>",
          "Content-Type" : " text/plain; charset=UTF-8",
          "PO-Revision-Date" : " YEAR-MO-DA HO:MI+ZONE",
@@ -32,6 +31,18 @@ var json_locale_data = {
          null,
          ""
       ],
+      "TOS" : [
+         null,
+         ""
+      ],
+      "Need Help?" : [
+         null,
+         ""
+      ],
+      "BrowserID: %s" : [
+         null,
+         ""
+      ],
       "Error comunicating with server." : [
          null,
          ""
@@ -52,6 +63,10 @@ var json_locale_data = {
          null,
          ""
       ],
+      "BrowserID Home" : [
+         null,
+         ""
+      ],
       "Password must be between 8 and 80 characters long." : [
          null,
          ""
@@ -68,6 +83,10 @@ var json_locale_data = {
          null,
          ""
       ],
+      "Developers" : [
+         null,
+         ""
+      ],
       "Communicating with server" : [
          null,
          ""
@@ -92,6 +111,10 @@ var json_locale_data = {
          null,
          ""
       ],
+      "Sign In" : [
+         null,
+         ""
+      ],
       "Finish" : [
          null,
          ""
@@ -112,6 +135,10 @@ var json_locale_data = {
          null,
          ""
       ],
+      "By the <a href=\"%s\" target=\"_blank\">Identity Team</a> @ <a href=\"%s\" target=\"_blank\">Mozilla Labs</a>" : [
+         null,
+         ""
+      ],
       "New Password" : [
          null,
          ""
@@ -120,6 +147,14 @@ var json_locale_data = {
          null,
          ""
       ],
+      "How it works" : [
+         null,
+         ""
+      ],
+      "Privacy" : [
+         null,
+         ""
+      ],
       "Repeat Password" : [
          null,
          ""
@@ -132,6 +167,10 @@ var json_locale_data = {
          null,
          ""
       ],
+      "Sign Out" : [
+         null,
+         ""
+      ],
       "If you are NOT trying to sign into this site, just ignore this email." : [
          null,
          ""
diff --git a/resources/views/layout.ejs b/resources/views/layout.ejs
index 1971d4199..c6d9ce48f 100644
--- a/resources/views/layout.ejs
+++ b/resources/views/layout.ejs
@@ -23,7 +23,7 @@
     <script src="/lib/jquery-1.7.1.min.js"></script>
     <script src="/lib/underscore-min.js"></script>
     <script src="/lib/ejs.js"></script>
-    <script src="/i18n/en_US/client.json"></script>
+    <script src="/i18n/<%= locale %>/client.json"></script>
     <script src="/shared/gettext.js"></script>
     <script src="/shared/javascript-extensions.js"></script>
     <script src="/shared/browserid.js"></script>
@@ -67,7 +67,7 @@
     <script src="/pages/signin.js"></script>
     <script src="/pages/signup.js"></script>
   <% } %>
-  <title>BrowserID: <%- title %></title>
+  <title><%= format(gettext("BrowserID: %s"), [title]) %></title>
 </head>
 <body>
 
@@ -77,15 +77,15 @@
 
     <header id="header" class="cf">
         <ul class="cf">
-            <li><a class="home" href="/">BrowserID Home</a></li>
+            <li><a class="home" href="/"><%= gettext("BrowserID Home") %></a></li>
         </ul>
 
         <ul class="nav cf">
-            <li><a href="/about">How it works</a></li>
-            <li><a href="https://github.com/mozilla/browserid/wiki/How-to-Use-BrowserID-on-Your-Site" target="_blank">Developers</a></li>
+            <li><a href="/about"><%= gettext("How it works") %></a></li>
+            <li><a href="https://github.com/mozilla/browserid/wiki/How-to-Use-BrowserID-on-Your-Site" target="_blank"><%= gettext("Developers") %></a></li>
 
-            <li class="signIn"><a class="signIn" href="/signin">Sign In</a></li>
-            <li class="signOut"><a class="signOut" href="/">Sign Out</a></li>
+            <li class="signIn"><a class="signIn" href="/signin"><%= gettext("Sign In") %></a></li>
+            <li class="signOut"><a class="signOut" href="/"><%= gettext("Sign Out") %></a></li>
         </ul>
     </header>
 
@@ -97,11 +97,12 @@
 
     <footer id="footer">
         <ul class="cf">
-            <li>By the <a href="http://identity.mozilla.com" target="_blank">Identity Team</a> @ <a href="http://mozillalabs.com" target="_blank">Mozilla Labs</a></li>
+            <li><%- format(gettext('By the <a href="%s" target="_blank">Identity Team</a> @ <a href="%s" target="_blank">Mozilla Labs</a>'),
+                           ['http://identity.mozilla.com', 'http://mozillalabs.com']) %></li>
             <li>&mdash;</li>
-            <li><a href="/privacy">Privacy</a></li>
-            <li><a href="/tos">TOS</a></li>
-            <li class="help"><a href="https://support.mozilla.com/en-US/kb/what-browserid-and-how-does-it-work" target="_blank">Need Help?</a></li>
+            <li><a href="/privacy"><%= gettext('Privacy') %></a></li>
+            <li><a href="/tos"><%= gettext('TOS') %></a></li>
+            <li class="help"><a href="https://support.mozilla.com/en-US/kb/what-browserid-and-how-does-it-work" target="_blank"><%= gettext('Need Help?') %></a></li>
         </ul>
     </footer>
 
-- 
GitLab