На основе эта документация jquery-lang-js поддерживает заполнители для переводов. Моя реализация javascript и html выглядит так:
function changeLangOnClick(lang) {
console.info('clicked language change');
window.lang.change(lang);
console.info(lang);
Cookies.set('site_lang', lang, { expires: 7 });
return false;
}
var lang = new Lang();
var shownLang = Cookies.get('site_lang');
console.info(lang);
console.info('gets here');
lang.dynamic('de', 'i18n/de.json');
lang.dynamic('it', 'i18n/it.json');
lang.dynamic('en', 'i18n/en.json');
if (typeof shownLang === 'undefined') {
shownLang = window.navigator.language;
}
if (shownLang = = "en-US" && (shownLang! = "de" || shownLang! = "it")){
shownLang = "en";
}
lang.init({
defaultLang: 'de',
currentLang: shownLang
});
<select class = "form-control" id = "language-select" onchange = "changeLangOnClick(value);">
<option value = "de">Deutsch</option>
<option value = "it">Italiano</option>
<option value = "en">English</option>
</select>
<h2 lang = "de" placeholder = "placeholder1"></h2>
И у меня есть этот i18n/de.json вот так:
{
"placeholder1": "WILLKOMMEN"
}
Но когда я перейду на деланг, я получу:
jquery-lang.js:545 Uncaught TypeError: Cannot read property 'placeholder1' of undefined at Lang.translate (http://localhost/curtiforti2/js/lang/jquery-lang.js:545:40) at Lang._translateAttribs (http://localhost/curtiforti2/js/lang/jquery-lang.js:362:26) at Lang._translateElement (http://localhost/curtiforti2/js/lang/jquery-lang.js:520:8) at Lang.change (http://localhost/curtiforti2/js/lang/jquery-lang.js:494:11) at http://localhost/curtiforti2/js/lang/jquery-lang.js:460:20 at Object.success (http://localhost/curtiforti2/js/lang/jquery-lang.js:175:22) at i (https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js:2:27603) at Object.fireWith [as resolveWith] (https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js:2:28369) at A (https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js:4:13858) at XMLHttpRequest. (https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js:4:16146)
Я должен добавить, что в моем console.infos для тестирования я выбираю правильный язык: console.info(lang); , а также проверка файлов cookie, похоже, сохраняет правильный язык. Моя проблема только в том, что 'placeholder1' неопределенного.
Пожалуйста, опубликуйте рабочий пример, воспроизводящий вашу проблему, вот начало jsfiddle.net/m30u25ry
Можете ли вы отредактировать свой код, чтобы он действительно исполнялся? знак равно