Files
minecraft_launcher/views/index.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

37 lines
1.3 KiB
Plaintext

<!doctype html>
<html lang="ko">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title><%= t('site.indexTitle') %></title>
<link rel="stylesheet" href="/static/styles.css" />
</head>
<body class="siteBody">
<main class="pageWrap">
<section class="hero">
<h1><%= t('site.heroTitle') %></h1>
<p><%= t('site.heroSubtitle') %></p>
</section>
<section class="cardRow horizontalScroll">
<% if (packs.length === 0) { %>
<p class="muted"><%= t('site.empty') %></p>
<% } %>
<% packs.forEach(function (entry) { %>
<article class="packCard">
<h2><%= entry.name %></h2>
<p class="muted"><%= t('site.fileLabel', { file: entry.file }) %></p>
<% if (entry.definition) { %>
<ul class="metaList">
<li><%= t('site.mcVersion') %> <strong><%= entry.definition.mcVersion %></strong></li>
<li><%= t('site.platform') %> <strong><%= entry.definition.platform.type %></strong></li>
<li><%= t('site.modsFolder') %> <%= entry.definition.modsFolder || t('site.noneFallback') %> / <%= t('site.resourcepack') %> <%= entry.definition.resourcepackPath || t('site.noneFallback') %></li>
</ul>
<% } %>
</article>
<% }) %>
</section>
</main>
</body>
</html>