- 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>
59 lines
3.6 KiB
HTML
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> |