From 89156cec89673b5d97cb4ebeb404509c41b47932 Mon Sep 17 00:00:00 2001 From: Yury Delendik <ydelendik@mozilla.com> Date: Fri, 4 May 2012 08:37:08 -0500 Subject: [PATCH] Fallback locale string for JS code; simplify locale embedding for the extension --- external/webL10n/l10n.js | 7 +++-- make.js | 2 +- web/viewer-snippet-firefox-extension.html | 12 ++----- web/viewer.js | 38 +++++++++++++++-------- 4 files changed, 33 insertions(+), 26 deletions(-) diff --git a/external/webL10n/l10n.js b/external/webL10n/l10n.js index adb0f4108..f6c11c178 100644 --- a/external/webL10n/l10n.js +++ b/external/webL10n/l10n.js @@ -21,7 +21,8 @@ /* Additional modifications for PDF.js project: - Loading resources from <script type='application/l10n'>; - - Disabling language assignment on page loading. + - Disabling language initialization on page loading; + - Add fallback argument to the translateString. */ 'use strict'; @@ -221,8 +222,10 @@ } // translate a string - function translateString(key, args) { + function translateString(key, args, fallback) { var data = getL10nData(key); + if (!data && fallback) + data = {textContent: fallback}; if (!data) return '{{' + key + '}}'; return substArguments(data.textContent, args); diff --git a/make.js b/make.js index d6caa53c1..3bb70dc91 100755 --- a/make.js +++ b/make.js @@ -327,7 +327,7 @@ 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_LOCALE_DATA/, JSON.stringify({text: LOCALE_CONTENT}), 'viewer-snippet-firefox-extension.html'); + sed('-i', /.*PDFJSSCRIPT_LOCALE_DATA.*\n/, 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 a5c0da0a5..57d7875eb 100644 --- a/web/viewer-snippet-firefox-extension.html +++ b/web/viewer-snippet-firefox-extension.html @@ -1,15 +1,7 @@ <!-- This snippet is used in firefox extension, see Makefile --> <base href="resource://pdf.js/web/" /> -<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); -})(); +<script type="application/l10n"> +<!-- PDFJSSCRIPT_LOCALE_DATA --> </script> <script type="text/javascript" src="l10n.js"></script> <script type="text/javascript" id="PDFJS_SCRIPT_TAG"> diff --git a/web/viewer.js b/web/viewer.js index 849ef8301..e8eb9ad3b 100644 --- a/web/viewer.js +++ b/web/viewer.js @@ -349,11 +349,13 @@ var PDFView = { }, function getDocumentError(message, exception) { var loadingIndicator = document.getElementById('loading'); - loadingIndicator.textContent = mozL10n.get('loading_error_indicator'); + loadingIndicator.textContent = mozL10n.get('loading_error_indicator', + null, 'Error'); var moreInfo = { message: message }; - self.error(mozL10n.get('loading_error'), moreInfo); + self.error(mozL10n.get('loading_error', null, + 'An error occurred while loading the PDF.'), moreInfo); self.loading = false; }, function getDocumentProgress(progressData) { @@ -461,22 +463,27 @@ var PDFView = { moreInfoButton.removeAttribute('hidden'); lessInfoButton.setAttribute('hidden', 'true'); errorMoreInfo.value = - mozL10n.get('error_build', {build: PDFJS.build}) + '\n'; + mozL10n.get('error_build', {build: PDFJS.build}, + 'PDF.JS Build: {{build}}') + '\n'; if (moreInfo) { errorMoreInfo.value += - mozL10n.get('error_message', {message: moreInfo.message}); + mozL10n.get('error_message', {message: moreInfo.message}, + 'Message: {{message}}'); if (moreInfo.stack) { errorMoreInfo.value += '\n' + - mozL10n.get('error_stack', {stack: moreInfo.stack}); + mozL10n.get('error_stack', {stack: moreInfo.stack}, + 'Stack: {{stack}}'); } else { if (moreInfo.filename) { errorMoreInfo.value += '\n' + - mozL10n.get('error_file', {file: moreInfo.filename}); + mozL10n.get('error_file', {file: moreInfo.filename}, + 'File: {{file}}'); } if (moreInfo.lineNumber) { errorMoreInfo.value += '\n' + - mozL10n.get('error_line', {line: moreInfo.lineNumber}); + mozL10n.get('error_line', {line: moreInfo.lineNumber}, + 'Line: {{line}}'); } } } @@ -486,7 +493,8 @@ var PDFView = { progress: function pdfViewProgress(level) { var percent = Math.round(level * 100); var loadingIndicator = document.getElementById('loading'); - loadingIndicator.textContent = mozL10n.get('loading', {percent: percent}); + loadingIndicator.textContent = mozL10n.get('loading', {percent: percent}, + 'Loading... {{percent}}%'); PDFView.loadingBar.percent = percent; }, @@ -523,7 +531,7 @@ var PDFView = { var id = pdfDocument.fingerprint; var storedHash = null; document.getElementById('numPages').textContent = - mozL10n.get('page_of', {pageCount: pagesCount}); + mozL10n.get('page_of', {pageCount: pagesCount}, 'of {{pageCount}}'); document.getElementById('pageNumber').max = pagesCount; PDFView.documentFingerprint = id; var store = PDFView.store = new Settings(id); @@ -837,7 +845,8 @@ var PageView = function pageView(container, pdfPage, id, scale, var rect = viewport.convertToViewportRectangle(item.rect); rect = PDFJS.Util.normalizeRect(rect); image.src = kImageDirectory + 'annotation-' + type.toLowerCase() + '.svg'; - image.alt = mozL10n.get('text_annotation_type', {type: type}); + image.alt = mozL10n.get('text_annotation_type', {type: type}, + '[{{type}} Annotation]'); var content = document.createElement('div'); content.setAttribute('hidden', true); var title = document.createElement('h1'); @@ -1018,8 +1027,10 @@ var PageView = function pageView(container, pdfPage, id, scale, delete self.loadingIconDiv; } - if (error) - PDFView.error(mozL10n.get('rendering_error'), error); + if (error) { + PDFView.error(mozL10n.get('rendering_error', null, + 'An error occurred while rendering the page.'), error); + } self.stats = pdfPage.stats; self.updateStats(); @@ -1163,7 +1174,8 @@ var DocumentOutlineView = function documentOutlineView(outline) { if (!outline) { var noOutline = document.createElement('div'); noOutline.classList.add('noOutline'); - noOutline.textContent = mozL10n.get('no_outline'); + noOutline.textContent = mozL10n.get('no_outline', null, + 'No Outline Available'); outlineView.appendChild(noOutline); return; }