프레임워크 없이 다국어 정적 페이지를 만드는 방법
10902 단어 jsonhtmljavascriptmultilingual
제 경우에는 몇 년 전에 personal website을 만들기 시작했습니다. 그 당시에는 Angular를 몰랐고 필요한 모든 것을 지원하기에는 약간 지저분했습니다. 저는 스스로를 프론트엔드 개발자라고 생각하지 않았습니다. 내 취미와 비슷했습니다.
제 경우에는 영어와 스페인어를 유창하게 구사하기 때문에 다국어 지원을 추가하는 것이 중요했습니다. 좋은 라이브러리나 솔루션을 찾을 수 없었기 때문에 이것은 약간 지저분했습니다. 몇 번의 시도 끝에 나는 당신의 삶을 단순화할 수 있는 다음과 같은 코드를 생각해 냈습니다.
하나는 영어용이고 다른 하나는 스페인어용으로 두 개의 파일이 있는데 여기서 변환을 JSON에 상수로 저장합니다. JSON만 저장하지 않는 이유가 궁금하시다면 나중에 파일을 사용하는 데 몇 가지 문제가 있었습니다. 몇 가지 오류가 발생했으며 대부분의 솔루션은 Node.js 전용이었습니다.
lang-en.js
const translations = {
"telephone": "Telephone",
"email": "Email",
"contactMe": "Contact me"
};
lang-es.js
const translations = {
"telephone": "Teléfono",
"email": "Email",
"contactMe": "Contáctame"
};
다음 스크립트는 스크립트를 읽기 위한 것입니다.
get-script.js
const getScript = url => new Promise((resolve, reject) => {
const script = document.createElement('script');
script.src = url;
script.async = true;
script.onerror = reject;
script.onload = script.onreadystatechange = function() {
const loadState = this.readyState;
if (loadState && loadState !== 'loaded' && loadState !== 'complete') return;
script.onload = script.onreadystatechange = null;
resolve();
}
document.head.appendChild(script);
});
그리고 마지막 스크립트는 HTML에서 값을 설정하기 위한 것입니다.
translations.js
let lang = 'en';
let nLang = (navigator.languages
? navigator.languages[0]
: (navigator.language || navigator.userLanguage)).split('-')[0];
let supportedLang = ['en', 'es'];
lang = supportedLang.includes(nLang) ? nLang : lang;
getScript(`lang-${lang}.js`)
.then(() => {
document.querySelectorAll('[data-translation]').forEach(item => {
item.innerHTML = translations[`${item.dataset.translation}`];
});
})
.catch((e) => {
console.error(e);
});
그렇다면 HTML에서 구성을 어떻게 사용합니까? 다음과 같이 "JSON"에서 기대하는 값으로 data-translation이라는 data-* 속성을 정의합니다.
<script src="get-script.js"></script>
<script src="translations.js"></script>
<p data-translation="contactMe"></p>
<p data-translation="telephone"></p>
<p data-translation="email"></p>
그리고 그게 다야. 이제 프레임워크 없이 정적 다국어 페이지를 만들 수 있습니다.
나를 팔로우하세요:
링크드인
유튜브
인스 타 그램
사이버 예언자
당신의 이야기를 공유
Reference
이 문제에 관하여(프레임워크 없이 다국어 정적 페이지를 만드는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/fanmixco/how-to-create-multilingual-static-pages-2ei4텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)