'use strict';
var EXPORTED_SYMBOLS = ['PdfStreamConverter'];
+var DEFAULT_LOCALE = 'en-US';
+
+var IS_MOZCENTRAL = false; // PDFJS_SUPPORTED_LOCALES
+var SUPPORTED_LOCALES = [DEFAULT_LOCALE]; // PDFJS_SUPPORTED_LOCALES
const Cc = Components.classes;
const Ci = Components.interfaces;
return win;
}
+function getLocalizedStrings(path) {
+ var stringBundle = Cc["@mozilla.org/intl/stringbundle;1"].
+ getService(Ci.nsIStringBundleService).
+ createBundle("chrome://pdfviewer/locale/" + path);
+
+ var map = {};
+ var enumerator = stringBundle.getSimpleEnumeration();
+ while (enumerator.hasMoreElements()) {
+ var string = enumerator.getNext().QueryInterface(Ci.nsIPropertyElement);
+ var key = string.key, property = 'textContent';
+ var i = key.lastIndexOf('.');
+ if (i >= 0) {
+ property = key.substring(i + 1);
+ key = key.substring(0, i);
+ }
+ if (!(key in map))
+ map[key] = {};
+ map[key][property] = string.value;
+ }
+ return map;
+}
+
// All the priviledged actions.
function ChromeActions() {
this.inPrivateBrowswing = privateBrowsing.privateBrowsingEnabled;
getLocale: function() {
return getStringPref('general.useragent.locale', 'en-US');
},
+ getStrings: function(data) {
+ try {
+ // Lazy initialization of localizedStrings
+ if (!('localizedStrings' in this))
+ this.localizedStrings = getLocalizedStrings('viewer.properties');
+
+ var result = this.localizedStrings[data];
+ return JSON.stringify(result || null)
+ } catch (e) {
+ log('Unable to retrive localized strings: ' + e);
+ return 'null';
+ }
+ },
pdfBugEnabled: function() {
return getBoolPref(EXT_PREFIX + '.pdfBugEnabled', false);
}
BUILD_TARGET = BUILD_DIR + 'pdf.js',
FIREFOX_BUILD_DIR = BUILD_DIR + '/firefox/',
EXTENSION_SRC_DIR = 'extensions/',
+ LOCALE_SRC_DIR = 'l10n/',
GH_PAGES_DIR = BUILD_DIR + 'gh-pages/',
REPO = 'git@github.com:mozilla/pdf.js.git',
PYTHON_BIN = 'python2.7';
// Creates localized resources for the viewer and extension.
//
target.locale = function() {
- var L10N_PATH = 'l10n';
var METADATA_OUTPUT = 'extensions/firefox/metadata.inc';
+ var CHROME_MANIFEST_OUTPUT = 'extensions/firefox/chrome.manifest.inc';
+ var EXTENSION_LOCALE_OUTPUT = 'extensions/firefox/locale';
var VIEWER_OUTPUT = 'web/locale.properties';
var DEFAULT_LOCALE = 'en-US';
echo();
echo('### Building localization files');
- var subfolders = ls(L10N_PATH);
+ rm('-rf', EXTENSION_LOCALE_OUTPUT);
+ mkdir('-p', EXTENSION_LOCALE_OUTPUT);
+
+ var subfolders = ls(LOCALE_SRC_DIR);
subfolders.sort();
var metadataContent = '';
+ var chromeManifestContent = '';
var viewerOutput = '';
for (var i = 0; i < subfolders.length; i++) {
var locale = subfolders[i];
- var path = L10N_PATH + '/' + locale;
+ var path = LOCALE_SRC_DIR + locale;
if (!test('-d', path))
continue;
continue;
}
+ mkdir('-p', EXTENSION_LOCALE_OUTPUT + '/' + locale);
+ chromeManifestContent += 'locale pdfviewer ' + locale + ' locale/' + locale + '/\n';
+
if (test('-f', path + '/viewer.properties')) {
var properties = cat(path + '/viewer.properties');
- if (locale == DEFAULT_LOCALE)
- viewerOutput = '[*]\n' + properties + '\n' + viewerOutput;
- else
- viewerOutput = viewerOutput + '[' + locale + ']\n' + properties + '\n';
+ viewerOutput += '[' + locale + ']\n' + properties + '\n';
+ cp(path + '/viewer.properties', EXTENSION_LOCALE_OUTPUT + '/' + locale);
}
if (test('-f', path + '/metadata.inc')) {
}
viewerOutput.to(VIEWER_OUTPUT);
metadataContent.to(METADATA_OUTPUT);
+ chromeManifestContent.to(CHROME_MANIFEST_OUTPUT);
};
//
'web/viewer.css',
'web/viewer.js',
'web/viewer.html',
- 'external/webL10n/l10n.js',
+ 'extensions/firefox/tools/l10n.js',
'web/viewer-production.html'],
EXTENSION_BASE_VERSION = 'f0f0418a9c6637981fe1182b9212c2d592774c7d',
EXTENSION_VERSION_PREFIX = '0.3.',
'*.rdf',
'*.svg',
'*.png',
+ '*.manifest',
'components',
+ 'locale',
'../../LICENSE'],
FIREFOX_EXTENSION_FILES =
['bootstrap.js',
'install.rdf',
+ 'chrome.manifest',
'icon.png',
'icon64.png',
'components',
'content',
+ 'locale',
'LICENSE'],
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);
// Copy a standalone version of pdf.js inside the content directory
cp(BUILD_TARGET, FIREFOX_BUILD_CONTENT_DIR + BUILD_DIR);
cp('-R', EXTENSION_WEB_FILES, FIREFOX_BUILD_CONTENT_DIR + '/web');
- cp('web/locale.properties', FIREFOX_BUILD_CONTENT_DIR + '/web');
rm(FIREFOX_BUILD_CONTENT_DIR + '/web/viewer-production.html');
// Copy over the firefox extension snippet so we can inline pdf.js in it
// 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.*\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');
// We don't need pdf.js anymore since its inlined
rm('-Rf', FIREFOX_BUILD_CONTENT_DIR + BUILD_DIR);
rm(FIREFOX_BUILD_CONTENT_DIR + '/web/viewer-snippet-firefox-extension.html');
- rm(FIREFOX_BUILD_CONTENT_DIR + '/web/locale.properties');
// Remove '.DS_Store' and other hidden files
find(FIREFOX_BUILD_DIR).forEach(function(file) {
if (file.match(/^\./))
// Update localized metadata
var localizedMetadata = cat(EXTENSION_SRC_DIR + '/firefox/metadata.inc');
sed('-i', /.*PDFJS_LOCALIZED_METADATA.*\n/, localizedMetadata, FIREFOX_BUILD_DIR + '/install.rdf');
+ var chromeManifest = cat(EXTENSION_SRC_DIR + '/firefox/chrome.manifest.inc');
+ sed('-i', /.*PDFJS_SUPPORTED_LOCALES.*\n/, chromeManifest, FIREFOX_BUILD_DIR + '/chrome.manifest');
// Create the xpi
cd(FIREFOX_BUILD_DIR);
echo();
echo('### Building mozilla-central extension');
- var MOZCENTRAL_DIR = BUILD_DIR + '/mozcentral',
- MOZCENTRAL_CONTENT_DIR = MOZCENTRAL_DIR + '/content/',
- MOZCENTRAL_L10N_DIR = MOZCENTRAL_DIR + '/l10n/',
+ var MOZCENTRAL_DIR = BUILD_DIR + 'mozcentral/',
+ MOZCENTRAL_EXTENSION_DIR = MOZCENTRAL_DIR + 'browser/app/profile/extensions/uriloader@pdf.js/',
+ MOZCENTRAL_CONTENT_DIR = MOZCENTRAL_EXTENSION_DIR + 'content/',
+ MOZCENTRAL_L10N_DIR = MOZCENTRAL_DIR + 'browser/locales/en-US/pdfviewer/',
FIREFOX_CONTENT_DIR = EXTENSION_SRC_DIR + '/firefox/content/',
FIREFOX_EXTENSION_FILES_TO_COPY =
['*.js',
'*.svg',
'*.png',
+ '*.manifest',
'install.rdf.in',
'README.mozilla',
'components',
'../../LICENSE'],
DEFAULT_LOCALE_FILES =
- ['l10n/en-US/viewer.properties',
- 'l10n/en-US/metadata.inc'],
+ [LOCALE_SRC_DIR + 'en-US/viewer.properties'],
FIREFOX_MC_EXTENSION_FILES =
['bootstrap.js',
'icon.png',
'icon64.png',
+ 'chrome.manifest',
'components',
'content',
'LICENSE'];
// Copy extension files
cd('extensions/firefox');
- cp('-R', FIREFOX_EXTENSION_FILES_TO_COPY, ROOT_DIR + MOZCENTRAL_DIR);
+ cp('-R', FIREFOX_EXTENSION_FILES_TO_COPY, ROOT_DIR + MOZCENTRAL_EXTENSION_DIR);
cd(ROOT_DIR);
// Copy a standalone version of pdf.js inside the content directory
cp(DEFAULT_LOCALE_FILES, MOZCENTRAL_L10N_DIR);
// Update the build version number
- sed('-i', /PDFJSSCRIPT_VERSION/, EXTENSION_VERSION, MOZCENTRAL_DIR + '/install.rdf.in');
- sed('-i', /PDFJSSCRIPT_VERSION/, EXTENSION_VERSION, MOZCENTRAL_DIR + '/README.mozilla');
+ sed('-i', /PDFJSSCRIPT_VERSION/, EXTENSION_VERSION, MOZCENTRAL_EXTENSION_DIR + 'install.rdf.in');
+ sed('-i', /PDFJSSCRIPT_VERSION/, EXTENSION_VERSION, MOZCENTRAL_EXTENSION_DIR + 'README.mozilla');
// List all files for mozilla-central
- cd(MOZCENTRAL_DIR);
+ cd(MOZCENTRAL_EXTENSION_DIR);
var extensionFiles = '';
find(FIREFOX_MC_EXTENSION_FILES).forEach(function(file){
if (test('-f', file))