Files
minecraft_launcher/views/partials/navbar.ejs
claude-bot c2fcc2fbbf i18n: 서버 측 모든 UI 문구를 locales/server/ko-kr.json 으로 분리
- src/shared/i18n.ts: 공용 i18n 로더 (dotted-key + {{placeholder}} 보간)
- locales/server/ko-kr.json: 사이트 + 라우터 + 데이터팩 출력 사전
- EJS 뷰는 res.locals.t 미들웨어로 일괄 적용
- listEditor.js 등 클라이언트 JS 는 사전을 inline <script> 로 주입받아 tt() 헬퍼 사용
2026-05-13 03:43:04 +09:00

31 lines
1.0 KiB
Plaintext

<header class="topNav">
<a class="navBrand" href="/op/dashboard">
<span class="navLogo">🎵</span>
<span class="navTitle"><%= t('nav.brand') %></span>
</a>
<div class="navUser">
<button type="button" class="navUserButton" id="userMenuToggle"><%= userId %></button>
<div class="navUserMenu" id="userMenu" hidden>
<form method="post" action="/op/logout">
<button type="submit" class="dangerLink"><%= t('nav.logout') %></button>
</form>
</div>
</div>
</header>
<script>
(function () {
var toggle = document.getElementById('userMenuToggle')
var menu = document.getElementById('userMenu')
if (!toggle || !menu) return
toggle.addEventListener('click', function () {
var hidden = menu.hasAttribute('hidden')
if (hidden) menu.removeAttribute('hidden')
else menu.setAttribute('hidden', '')
})
document.addEventListener('click', function (event) {
if (event.target === toggle || menu.contains(event.target)) return
menu.setAttribute('hidden', '')
})
})()
</script>