Скрипт не видит элементы в JSON файле на многостраничном сайте
Уже второй локализатор на JS/JQuery ставлю и в обоих похожие проблемы. В первом, если на странице нет хотя бы одного элемента из конфигов с переводами, то скрипт выдавал ошибку (скрипт ставлю на многостраничный сайт).
В этом же, если вызван элемент не по списку, то скрипт так же не работает, т.е.:
{
"en": {
"#first_el": "first element",
"#second_el": "second element",
"#third": "third element"
}
}
Если я в шаблоне, запрошу сразу второй или третий элемент, пропустив первый, скрипт работать не будет, если же все по порядку, то работает. Как это исправить?
JS:
(function() {
$.MultiLanguage = function(a, c) {
var b = this;
if (c == null) {
c = null
}
return $.getJSON(a, function(g) {
var f, d, h, e;
if (c !== null) {
localStorage.MultiLanguage = c
} else {
if (typeof localStorage.MultiLanguage === "undefined") {
c = localStorage.MultiLanguage = g.config["default"]
} else {
c = localStorage.MultiLanguage
}
}
d = g.language[c];
e = [];
for (f in d) {
h = d[f];
if ($(f).get(0).tagName.toLowerCase() === "title") {
document.title = h;
continue
}
if (f.length > 0) {
e.push($(f).html(d[f]))
} else {
e.push(void 0)
}
}
return e
})
}
}
).call(this);
Подключается скрипт с переводами:
$(document).ready(function(){
$.MultiLanguage('language/language.json');
});
Переключатель работает через onlick
onclick="$.MultiLanguage('language/language.json', 'en')"
Немного измененный JSON из примера:
{
"config": {
"default": "en"
},
"language": {
"en": {
"#demo": "Hello",
"#demo2": "Hello2",
"#demo3": "Hello3"
},
"ru": {
"#demo": "Привет",
"#demo2": "Привет2",
"#demo3": "Привет3"
},
"de": {
"#demo": "Hallo",
"#demo2": "Hallo2",
"#demo3": "Hallo3"
}
}
}
P.S. В этом скрипте, как и в первом, если в на странице нет хотя бы одного элемента из списка, то опять таки, все ломается.