examples: Basic sample
This commit is contained in:
committed by
Michael Fabian Dirks
parent
f92f52bafa
commit
4aac5d2267
@@ -0,0 +1,94 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<meta charset='utf-8'>
|
||||||
|
<title>i18n-js - Sample</title>
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<header class="header">
|
||||||
|
<select id="language">
|
||||||
|
</select>
|
||||||
|
</header>
|
||||||
|
<div class="content">
|
||||||
|
<h1 class="title" data-i18n="title"></h1>
|
||||||
|
<p data-i18n="p1"></p>
|
||||||
|
<p data-i18n="p2"></p>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
|
||||||
|
<script src='../i18n.js'></script>
|
||||||
|
<script>
|
||||||
|
let languages = {
|
||||||
|
enUS: 'English (American)',
|
||||||
|
enGB: 'English (British)',
|
||||||
|
deDE: 'Deutsch',
|
||||||
|
};
|
||||||
|
let translations = {
|
||||||
|
enUS: {
|
||||||
|
title: 'Hello World',
|
||||||
|
p1: 'This is a sample of the capabilities of i18n.js by Xaymar. It can translate any kind of data in real time, as long as some kind of key value system is enough.',
|
||||||
|
p2: 'In case you were wondering, you can change the language with the dropdown.',
|
||||||
|
language: 'Language',
|
||||||
|
},
|
||||||
|
enGB: {
|
||||||
|
_base: 'enUS',
|
||||||
|
},
|
||||||
|
deDE: {
|
||||||
|
_base: 'enGB',
|
||||||
|
title: 'Hallo Welt',
|
||||||
|
p1: 'Dies ist ein Beispiel der Fähigkeiten von i18n.js, geschrieben von Xaymar. Es kann alle möglichen Daten in Echtzeitübersetzen, sofern ein Schlüssel-Wert-System genug ist.',
|
||||||
|
p2: 'Du kannst die Sprache mit dem Drop-Down ändern, falls du dich gewundert hattest.',
|
||||||
|
language: 'Sprache',
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
let defaultLang = 'enUS';
|
||||||
|
let i18n = {
|
||||||
|
language: new I18n('default'),
|
||||||
|
content: new I18n(defaultLang)
|
||||||
|
};
|
||||||
|
|
||||||
|
async function contentSwitchLanguage(language) {
|
||||||
|
if (!i18n.content.hasLanguage(language)) {
|
||||||
|
await i18n.content.loadLanguage(language, translations[language]);
|
||||||
|
console.log('loaded language %s', language);
|
||||||
|
}
|
||||||
|
await i18n.content.domTranslate(language);
|
||||||
|
console.log('translated page to language %s', language);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Load default language
|
||||||
|
let contentPromise = i18n.content.loadLanguage(defaultLang, translations[defaultLang]);
|
||||||
|
let languagePromise = i18n.language.loadLanguage('default', languages);
|
||||||
|
|
||||||
|
// Fill Language Input with values, and hook it up to change the site language
|
||||||
|
let languageInput = document.getElementById('language');
|
||||||
|
for (let language in languages) {
|
||||||
|
let el = document.createElement('option');
|
||||||
|
el.dataset['language'] = language;
|
||||||
|
if (language == defaultLang) {
|
||||||
|
el.defaultSelected = true;
|
||||||
|
}
|
||||||
|
languageInput.appendChild(el);
|
||||||
|
}
|
||||||
|
languageInput.onchange = async (ev) => {
|
||||||
|
languageInput.disabled = true;
|
||||||
|
await contentSwitchLanguage(ev.target.selectedOptions[0].dataset['language']);
|
||||||
|
languageInput.disabled = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
// Log language promise completion.
|
||||||
|
languagePromise.then(async (result) => {
|
||||||
|
console.log('I18n for Language field loaded.');
|
||||||
|
await i18n.language.domTranslate('default', 'data-language');
|
||||||
|
console.log('I18n for Language field ready.');
|
||||||
|
});
|
||||||
|
contentPromise.then(async (result) => {
|
||||||
|
await i18n.content.domTranslate(defaultLang);
|
||||||
|
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
|
</html>
|
||||||
Reference in New Issue
Block a user