Merge branch 'CB-7515_fixl10n_read_event'
diff --git a/src/firefoxos/GlobalizationProxy.js b/src/firefoxos/GlobalizationProxy.js
index dd8944e..910ef6b 100644
--- a/src/firefoxos/GlobalizationProxy.js
+++ b/src/firefoxos/GlobalizationProxy.js
@@ -24,12 +24,25 @@
var l10n_loaded = new Event('l10n_loaded');
var l10n_ready = new Event('l10n_ready');
+var is_l10n_ready = false;
+
document.addEventListener('l10n_loaded', function() {
+ console.log('DEBUG: L10n loaded');
navigator.mozL10n.ready(function() {
+ console.log('DEBUG: L10n ready');
+ is_l10n_ready = true;
document.dispatchEvent(l10n_ready);
});
});
+function callIfL10nReady(callback) {
+ if (is_l10n_ready) {
+ return callback();
+ }
+ document.addEventListener('l10n_ready', callback);
+}
+
+
function loadFile(elementName, attributes, callback) {
var e = document.createElement(elementName);
for (var attrName in attributes) {
@@ -73,13 +86,13 @@
function getPreferredLanguage(successCB, errorCB) {
// WARNING: this isn't perfect - there is a difference between UI language
// and preferred language, however it doesn't happen too often.
- document.addEventListener('l10n_ready', function() {
+ callIfL10nReady(function() {
successCB({value: navigator.mozL10n.language.code});
});
}
function getLocaleName(successCB, errorCB) {
- document.addEventListener('l10n_ready', function() {
+ callIfL10nReady(function() {
successCB(navigator.mozL10n.language.code);
});
}
@@ -88,7 +101,7 @@
var date = new Date(params[0].date);
var options = params[0].options;
- document.addEventListener('l10n_ready', function() {
+ callIfL10nReady(function() {
var f = new navigator.mozL10n.DateTimeFormat();
successCB({'value': _getStringFromDate(f, date, options)});
});
@@ -165,7 +178,7 @@
}
function getDateNames(successCB, failureCB, params) {
- document.addEventListener('l10n_ready', function() {
+ callIfL10nReady(function() {
var version = 'long';
var item = 'month';
var first = 0;
@@ -208,7 +221,7 @@
}
function getFirstDayOfWeek(successCB, failureCB) {
- document.addEventListener('l10n_ready', function() {
+ callIfL10nReady(function() {
var firstDay = navigator.mozL10n.get('weekStartsOnMonday');
successCB({'value': parseInt(firstDay)});
});