Fixes l10n in case it is disabled.

This commit is contained in:
Lars Jung 2012-09-18 02:14:21 +02:00
parent 4e6c446ce4
commit 421d5c2e24

View file

@ -8,6 +8,7 @@ modulejs.define('ext/l10n', ['_', '$', 'core/settings', 'core/langs', 'core/form
}, allsettings.l10n), }, allsettings.l10n),
defaultTranslations = { defaultTranslations = {
isoCode: 'en',
lang: 'english', lang: 'english',
details: 'details', details: 'details',
list: "list", list: "list",
@ -37,73 +38,79 @@ modulejs.define('ext/l10n', ['_', '$', 'core/settings', 'core/langs', 'core/form
loaded = { loaded = {
en: _.extend({}, defaultTranslations) en: _.extend({}, defaultTranslations)
}, },
currentLang = null, currentLang = loaded.en,
loadLanguage = function (lang, callback) { update = function (lang) {
if (loaded[lang]) { if (lang) {
currentLang = lang;
}
callback(loaded[lang]); $.each(currentLang, function (key, value) {
$('.l10n-' + key).text(value);
});
$('.lang').text(currentLang.isoCode);
$('.langOption').removeClass('current');
$('.langOption.' + currentLang.isoCode).addClass('current');
format.setDefaultDateFormat(currentLang.dateFormat);
$('#extended .entry .date').each(function () {
var $this = $(this);
$this.text(format.formatDate($this.data('time')));
});
$('#filter input').attr('placeholder', currentLang.filter);
},
loadLanguage = function (isoCode, callback) {
if (loaded[isoCode]) {
callback(loaded[isoCode]);
} else { } else {
$.ajax({ $.ajax({
url: allsettings.h5aiAbsHref + 'l10n/' + lang + '.json', url: allsettings.h5aiAbsHref + 'l10n/' + isoCode + '.json',
dataType: 'json', dataType: 'json',
success: function (json) { success: function (json) {
loaded[lang] = _.extend({}, defaultTranslations, json); loaded[isoCode] = _.extend({}, defaultTranslations, json, {isoCode: isoCode});
callback(loaded[lang]); callback(loaded[isoCode]);
}, },
error: function () { error: function () {
loaded[lang] = _.extend({}, defaultTranslations); loaded[isoCode] = _.extend({}, defaultTranslations, {isoCode: isoCode});
callback(loaded[lang]); callback(loaded[isoCode]);
} }
}); });
} }
}, },
localize = function (langs, lang, useBrowserLang) { localize = function (langs, isoCode, useBrowserLang) {
var storedLang = store.get(storekey); var storedIsoCode = store.get(storekey);
if (langs[storedLang]) { if (langs[storedIsoCode]) {
lang = storedLang; isoCode = storedIsoCode;
} else if (useBrowserLang) { } else if (useBrowserLang) {
var browserLang = navigator.language || navigator.browserLanguage; var browserLang = navigator.language || navigator.browserLanguage;
if (browserLang) { if (browserLang) {
if (langs[browserLang]) { if (langs[browserLang]) {
lang = browserLang; isoCode = browserLang;
} else if (browserLang.length > 2 && langs[browserLang.substr(0, 2)]) { } else if (browserLang.length > 2 && langs[browserLang.substr(0, 2)]) {
lang = browserLang.substr(0, 2); isoCode = browserLang.substr(0, 2);
} }
} }
} }
if (!langs[lang]) { if (!langs[isoCode]) {
lang = 'en'; isoCode = 'en';
} }
loadLanguage(lang, function (currentLang) { loadLanguage(isoCode, update);
$.each(currentLang, function (key, value) {
$('.l10n-' + key).text(value);
});
$('.lang').text(lang);
$('.langOption').removeClass('current');
$('.langOption.' + lang).addClass('current');
format.setDefaultDateFormat(currentLang.dateFormat);
$('#extended .entry .date').each(function () {
var $this = $(this);
$this.text(format.formatDate($this.data('time')));
});
$('#filter input').attr('placeholder', currentLang.filter);
});
}, },
initLangSelector = function (langs) { initLangSelector = function (langs) {
@ -111,21 +118,21 @@ modulejs.define('ext/l10n', ['_', '$', 'core/settings', 'core/langs', 'core/form
var $langSelector = $(template).appendTo('#bottombar .right'), var $langSelector = $(template).appendTo('#bottombar .right'),
$langOptions = $langSelector.find('.langOptions'), $langOptions = $langSelector.find('.langOptions'),
$ul = $langOptions.find('ul'), $ul = $langOptions.find('ul'),
sortedLangsKeys = []; isoCodes = [];
$.each(langs, function (lang) { $.each(langs, function (isoCode) {
sortedLangsKeys.push(lang); isoCodes.push(isoCode);
}); });
sortedLangsKeys.sort(); isoCodes.sort();
$.each(sortedLangsKeys, function (idx, lang) { $.each(isoCodes, function (idx, isoCode) {
$(langOptionTemplate) $(langOptionTemplate)
.addClass(lang) .addClass(isoCode)
.text(lang + ' - ' + (_.isString(langs[lang]) ? langs[lang] : langs[lang].lang)) .text(isoCode + ' - ' + (_.isString(langs[isoCode]) ? langs[isoCode] : langs[isoCode].lang))
.appendTo($ul) .appendTo($ul)
.click(function () { .click(function () {
store.put(storekey, lang); store.put(storekey, isoCode);
localize(langs, lang, false); localize(langs, isoCode, false);
}); });
}); });
$langOptions $langOptions
@ -153,6 +160,7 @@ modulejs.define('ext/l10n', ['_', '$', 'core/settings', 'core/langs', 'core/form
init = function () { init = function () {
if (!settings.enabled) { if (!settings.enabled) {
event.sub('ready', function () { update(); });
return; return;
} }