Jekyll 블로그에서 다국어 지원 구현 방법
Jekyll 블로그에서 다국어 지원 구현 방법
GitHub 블로그(Jekyll)에서 방문자가 언어를 선택하면 자동 번역된 콘텐츠를 제공하는 기능을 구현하는 방법은 여러 가지가 있습니다. 이 글에서는 다음과 같은 접근 방식을 다룹니다:
Jekyll 플러그인을 활용한 다국어 지원
Jekyll에서 다국어를 지원하려면 jekyll-multiple-languages-plugin
과 같은 플러그인을 사용할 수 있습니다. 이 플러그인은 언어별로 콘텐츠를 작성하고 URL을 다르게 설정할 수 있도록 도와줍니다.
설정 방법
- Gemfile에 플러그인 추가
gem "jekyll-multiple-languages-plugin"
_config.yml
파일 설정 ```yaml languages:- en
- ko
- ja default_lang: ko ```
- 언어별 게시물 생성
_posts/ko/
폴더에 한국어 게시물 저장_posts/ja/
폴더에 일본어 게시물 저장_posts/en/
폴더에 영어 게시물 저장
- 언어 전환 메뉴 추가
<a href="/ja/">日本語</a> | <a href="/ko/">한국어</a> | <a href="/en/">English</a>
이 방법은 직접 번역된 콘텐츠를 제공해야 하지만, 정확한 번역을 보장할 수 있습니다.
JavaScript와 JSON 파일을 이용한 번역
JavaScript와 JSON 파일을 이용하면 번역 데이터를 관리하고 자동으로 번역된 콘텐츠를 표시할 수 있습니다.
구현 방법
- JSON 파일 생성
locales/ko.json
(한국어)locales/ja.json
(일본어){ "title": "안녕하세요!", "content": "이것은 테스트입니다." }
- JavaScript 코드 작성
<script> async function changeLanguage(lang) { const response = await fetch(`/locales/${lang}.json`); const translations = await response.json(); document.querySelectorAll("[data-translate]").forEach(el => { const key = el.getAttribute("data-translate"); el.textContent = translations[key]; }); } document.addEventListener("DOMContentLoaded", () => { const userLang = navigator.language.slice(0, 2); changeLanguage(userLang === 'ko' ? 'ko' : 'ja'); }); </script>
- HTML 요소에 번역 키 추가
<h1 data-translate="title"></h1> <p data-translate="content"></p> <button onclick="changeLanguage('ko')">한국어</button> <button onclick="changeLanguage('ja')">日本語</button>
Headless CMS와 통합
Netlify CMS, Contentful 등과 같은 Headless CMS를 활용하면 다국어 콘텐츠 관리를 쉽게 할 수 있습니다. Headless CMS에서 각 언어별 콘텐츠를 생성하고 Jekyll과 연동하면, 블로그 포스트를 효율적으로 관리할 수 있습니다.
AI 번역 API를 활용한 동적 번역
Google Cloud Translation API나 DeepL API를 사용하여 실시간으로 콘텐츠를 번역할 수도 있습니다.
구현 방법
- 번역 API 호출
async function translateContent(text, targetLang) { const response = await fetch(`https://api.example.com/translate?text=${encodeURIComponent(text)}&target=${targetLang}`); const data = await response.json(); return data.translatedText; } async function applyTranslation(targetLang) { document.querySelectorAll("[data-translate]").forEach(async el => { const originalText = el.textContent; const translatedText = await translateContent(originalText, targetLang); el.textContent = translatedText; }); }
- 번역 전환 버튼 추가
<button onclick="applyTranslation('ko')">한국어</button> <button onclick="applyTranslation('ja')">日本語</button>
최종 선택
- 정확성이 중요하다면 Jekyll 플러그인을 사용해 직접 번역된 콘텐츠를 제공하세요.
- 자동 번역이 필요하다면 JavaScript와 번역 API를 활용하는 방식을 고려하세요.
필요한 구현 방식이나 추가적인 예제가 있다면 언제든 댓글로 질문해주세요! 😊
Leave a comment