Cześć. Wczoraj akurat napisałem dokładnie taki skrypt, do tłumaczenia może Ci się przyda. Ogólnie nie jest zbytnio skomplikowany działa na takiej zasadzie:
- Musisz mieć 1 plik w formacie .json w którym będą teksty do wrzucenia do paragrafów na stronie
- Każdy paragraf musi mieć odpowiednie ID
- Do każdego paragrafu wrzucasz tekst z jsona
- Przy pierwszym wczytaniu strony jej język zależy od języka ustawionego dla przeglądarki (później oczywiście można go zmienić)
JSON zawierający teksty na stronę:
{
"PL": {
"aboutHeading": "Kilka słów o mnie"
},
"ENG": {
"aboutHeading": "Few words about me"
}
}
translator.js
(() => {
const translator = {
currentLanguage: '',
getText() {
return fetch('js/text.json').then(res => res.json());
},
checkLanguage() {
switch (window.navigator.language) {
case 'pl':
case 'pl-PL': {
this.currentLanguage = 'pl';
break;
}
case 'en': {
this.currentLanguage = 'eng';
break;
}
default: {
this.currentLanguage = 'eng';
break;
}
}
},
fillText(lang) {
this.getText()
.then((res) => {
console.log('in fill text: ');
console.log(res);
if(lang === 'pl') {
document.getElementById('few-words-about-me-header').innerHTML = res.PL.aboutHeading;
// tutaj złap kolejne elementy i wrzuć im tekst przez innerHTML
}
if(lang === 'eng') {
document.getElementById('few-words-about-me-header').innerHTML = res.ENG.aboutHeading;
// tutaj złap kolejne elementy i wrzuć im tekst przez innerHTML
}
});
},
};
translator.checkLanguage();
translator.fillText(translator.currentLanguage);
document.getElementById('polish-flag').addEventListener('click', () => {
translator.fillText('pl');
});
document.getElementById('english-flag').addEventListener('click', () => {
translator.fillText('eng');
});
})();
Swoją drogą jak jakiś bardziej doświadczony dev ma ochotę to chętnie poczytam opinie o tym skrypcie, czy można by coś zrobić lepiej.
I trochę podłączając się pod twoje pytanie zastanawiam się jaką wartość dla lang w stronie dwujęzycznej powinienem przypisać?
<html lang="pl/en">
Czy może
<html lang="mul">
I jeszcze jedno pytanie - jak w takiej sytuacji rozwiązać problem z id w języku polskim/angielskim? Ogólnie czytałem sporo wypowiedzi Comandeera, w których zalecał na polskich stronach id po polsku ze względu na przyjemny dla usera link jednakże co powinienem zrobić w takiej sytuacji, podmieniać id?