// 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;
     }
 
     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
 
       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);
   // 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');
 
 <!-- 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
 
 <!-- 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">
 
 <!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 -->