mirror of
https://github.com/lrsjng/h5ai.git
synced 2025-05-25 12:34:47 -04:00
Fixes l10n in case it is disabled.
This commit is contained in:
parent
4e6c446ce4
commit
421d5c2e24
1 changed files with 54 additions and 46 deletions
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue