From 00543a1c89cfb1a5bfadea64271d23ff3e42fa37 Mon Sep 17 00:00:00 2001
From: Yury Delendik <ydelendik@mozilla.com>
Date: Mon, 30 Apr 2012 21:55:21 -0500
Subject: [PATCH] Embed locale.properties in the viewer.html for extension

---
 external/webL10n/l10n.js                  | 12 ++++++++++--
 make.js                                   |  4 ++++
 web/viewer-snippet-firefox-extension.html | 14 +++++++++++++-
 web/viewer-snippet.html                   |  1 +
 web/viewer.html                           |  3 ++-
 5 files changed, 30 insertions(+), 4 deletions(-)

diff --git a/external/webL10n/l10n.js b/external/webL10n/l10n.js
index fedf70cde..bb847ee10 100644
--- a/external/webL10n/l10n.js
+++ b/external/webL10n/l10n.js
@@ -131,7 +131,10 @@
     // check all <link type="application/l10n" href="..." /> nodes
     // and load the resource files
     var langLinks = document.querySelectorAll('link[type="application/l10n"]');
-    var langCount = langLinks.length;
+    var langLinksCount = langLinks.length;
+    var langScripts = document.querySelectorAll('script[type="application/l10n"]');
+    var langScriptCount = langScripts.length;
+    var langCount = langLinksCount + langScriptCount;
 
     // start the callback when all resources are loaded
     var onResourceLoaded = null;
@@ -165,12 +168,17 @@
     }
 
     gLanguage = lang;
-    for (var i = 0; i < langCount; i++) {
+    for (var i = 0; i < langLinksCount; i++) {
       var resource = new l10nResourceLink(langLinks[i]);
       var rv = resource.load(lang, onResourceLoaded);
       if (rv != lang) // lang not found, used default resource instead
         gLanguage = '';
     }
+    for (var i = 0; i < langScriptCount; i++) {
+      var scriptText = langScripts[i].text;
+      parse(scriptText, lang);
+      onResourceLoaded();
+    }
   }
 
   // fetch an l10n object, warn if not found
diff --git a/make.js b/make.js
index c8cd49610..36f4ef073 100755
--- a/make.js
+++ b/make.js
@@ -252,6 +252,8 @@ target.firefox = function() {
       FIREFOX_EXTENSION_NAME = 'pdf.js.xpi',
       FIREFOX_AMO_EXTENSION_NAME = 'pdf.js.amo.xpi';
 
+  var LOCALE_CONTENT = cat('web/locale.properties');
+
   target.production();
   target.buildnumber();
   cd(ROOT_DIR);
@@ -278,6 +280,8 @@ target.firefox = function() {
   // Modify the viewer so it does all the extension-only stuff.
   cd(FIREFOX_BUILD_CONTENT_DIR + '/web');
   sed('-i', /.*PDFJSSCRIPT_INCLUDE_BUNDLE.*\n/, cat(ROOT_DIR + BUILD_TARGET), 'viewer-snippet-firefox-extension.html');
+  sed('-i', /.*PDFJSSCRIPT_OTHER_SCRIPTS.*\n/, cat(ROOT_DIR + 'external/webL10n/l10n.js'), 'viewer-snippet-firefox-extension.html');
+  sed('-i', /PDFJSSCRIPT_LOCALE_DATA/, JSON.stringify({text: LOCALE_CONTENT}), 'viewer-snippet-firefox-extension.html');
   sed('-i', /.*PDFJSSCRIPT_REMOVE_CORE.*\n/g, '', 'viewer.html');
   sed('-i', /.*PDFJSSCRIPT_REMOVE_FIREFOX_EXTENSION.*\n/g, '', 'viewer.html');
   sed('-i', /.*PDFJSSCRIPT_INCLUDE_FIREFOX_EXTENSION.*\n/, cat('viewer-snippet-firefox-extension.html'), 'viewer.html');
diff --git a/web/viewer-snippet-firefox-extension.html b/web/viewer-snippet-firefox-extension.html
index 72cf3f095..d3faaae51 100644
--- a/web/viewer-snippet-firefox-extension.html
+++ b/web/viewer-snippet-firefox-extension.html
@@ -1,6 +1,18 @@
 <!-- This snippet is used in firefox extension, see Makefile -->
 <base href="resource://pdf.js/web/" />
-<script type="text/javascript" src="l10n.js"></script>
+<script type="text/javascript">
+(function() {
+   // doning script creation here since resource:// urls won't work
+   // for content loading.
+   var localeData = PDFJSSCRIPT_LOCALE_DATA;
+   var script = document.createElement('script');
+   script.type = 'application/l10n';
+   script.text = localeData.text;
+   document.getElementsByTagName('head')[0].appendChild(script);
+})();
+
+/* PDFJSSCRIPT_OTHER_SCRIPTS */
+</script>
 <script type="text/javascript" id="PDFJS_SCRIPT_TAG">
 <!--
 // pdf.js is inlined here because resource:// urls won't work
diff --git a/web/viewer-snippet.html b/web/viewer-snippet.html
index 293920da7..3d535169e 100644
--- a/web/viewer-snippet.html
+++ b/web/viewer-snippet.html
@@ -1,4 +1,5 @@
 <!-- This snippet is used in production, see Makefile -->
+<link rel="resource" type="application/l10n" href="locale.properties"/>
 <script type="text/javascript" src="l10n.js"></script>
 <script type="text/javascript" src="../build/pdf.js"></script>
 <script type="text/javascript">
diff --git a/web/viewer.html b/web/viewer.html
index b90464c48..b464b09c2 100644
--- a/web/viewer.html
+++ b/web/viewer.html
@@ -1,11 +1,12 @@
 <!DOCTYPE html>
 <html>
   <head>
+    <meta charset="utf-8">
     <title>PDF.js viewer</title>
     <!-- PDFJSSCRIPT_INCLUDE_FIREFOX_EXTENSION -->
 
     <link rel="stylesheet" href="viewer.css"/>
-    <link rel="resource" type="application/l10n" href="locale.properties"/>
+    <link rel="resource" type="application/l10n" href="locale.properties"/><!-- PDFJSSCRIPT_REMOVE_CORE -->
 
     <script type="text/javascript" src="compatibility.js"></script> <!-- PDFJSSCRIPT_REMOVE_FIREFOX_EXTENSION -->
     <script type="text/javascript" src="../external/webL10n/l10n.js"></script><!-- PDFJSSCRIPT_REMOVE_CORE -->