68893236+KINDNICK@users.noreply.github.com c2c2376fc5 Add: 다국어(i18n) 시스템 구축 (ko/en/zh/ja)
- i18n 엔진 구현 (js/i18n.js): 언어 감지, JSON 로드, DOM 번역, 한국어 복원 지원
- 번역 JSON 파일 생성 (i18n/ko.json, en.json, zh.json, ja.json) - 517키 동기화
- 전체 HTML 페이지 data-i18n 태깅 (8개 페이지 + header/footer 컴포넌트)
- 언어 스위처 UI 및 CSS 추가 (header + common.css)
- JS 동적 문자열 번역 적용 (common/contact/gallery/main/portfolio.js)
- 한국어 복원 버그 수정: 원본 텍스트를 data-i18n-ko 속성에 저장하여 복원
- 일본어 브랜드명 통일: ミングルスタジオ → Mingle Studio

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 12:35:24 +09:00

59 lines
3.6 KiB
HTML

<!-- 공통 헤더 컴포넌트 -->
<nav class="navbar" aria-label="메인 내비게이션">
<div class="nav-container">
<div class="nav-logo">
<a href="/">
<img src="/images/logo/mingle-logo.webp" alt="밍글 스튜디오 로고">
<span data-i18n="header.studioName">밍글 스튜디오</span>
</a>
</div>
<ul id="nav-menu" class="nav-menu">
<li><a href="/about" class="nav-link" data-i18n="header.nav.about">About</a></li>
<li><a href="/services" class="nav-link" data-i18n="header.nav.services">Services</a></li>
<li><a href="/portfolio" class="nav-link" data-i18n="header.nav.portfolio">Portfolio</a></li>
<li><a href="/gallery" class="nav-link" data-i18n="header.nav.gallery">Gallery</a></li>
<li><a href="/contact" class="nav-link" data-i18n="header.nav.contact">Contact</a></li>
<li><a href="/qna" class="nav-link" data-i18n="header.nav.qna">Q&A</a></li>
</ul>
<div class="nav-actions">
<div class="lang-switcher">
<button class="lang-btn" aria-label="언어 선택" data-i18n-aria="header.langSelect">
<span class="lang-current">KO</span>
<svg class="lang-chevron" viewBox="0 0 10 6" width="10" height="6" aria-hidden="true">
<path d="M1 1l4 4 4-4" stroke="currentColor" stroke-width="1.5" fill="none" stroke-linecap="round" stroke-linejoin="round"/>
</svg>
</button>
<ul class="lang-dropdown">
<li><button data-lang="ko">🇰🇷 한국어</button></li>
<li><button data-lang="en">🇺🇸 English</button></li>
<li><button data-lang="zh">🇨🇳 中文</button></li>
<li><button data-lang="ja">🇯🇵 日本語</button></li>
</ul>
</div>
<button class="theme-toggle" id="themeToggle" aria-label="다크 모드 전환" title="다크/라이트 모드 전환">
<div class="theme-toggle-thumb">
<svg class="theme-toggle-icon theme-toggle-icon--sun" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">
<circle cx="12" cy="12" r="5"></circle>
<line x1="12" y1="1" x2="12" y2="3"></line>
<line x1="12" y1="21" x2="12" y2="23"></line>
<line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line>
<line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line>
<line x1="1" y1="12" x2="3" y2="12"></line>
<line x1="21" y1="12" x2="23" y2="12"></line>
<line x1="4.22" y1="19.78" x2="5.64" y2="18.36"></line>
<line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line>
</svg>
<svg class="theme-toggle-icon theme-toggle-icon--moon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">
<path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"></path>
</svg>
</div>
</button>
</div>
<button class="hamburger" aria-label="메뉴 열기" aria-expanded="false" aria-controls="nav-menu">
<span></span>
<span></span>
<span></span>
</button>
</div>
</nav>