diff --git a/i18n/en.toml b/i18n/en.toml
@@ -12,6 +12,10 @@ search_hint = "Type to search"
search_empty = "Nothing matches that."
search_results = "Results"
+nav_posts = "Posts"
+nav_projects = "Projects"
+nav_about = "About"
+
all_posts = "All posts"
all_projects = "All projects"
writing = "Writing"
diff --git a/i18n/ko.toml b/i18n/ko.toml
@@ -1,48 +1,59 @@
# 템플릿이 공급하는 문자열. 본문은 content/ 에 있다.
# 한쪽 언어에 키가 없으면 빌드 에러다 — 기본 언어로 떨어뜨리면 한국어 페이지에
# 영어 라벨이 섞여 나가고, 그건 읽는 사람에게만 보이고 고치는 사람에게는 안 보인다.
-
-skip_to_content = "본문으로 건너뛰기"
-menu = "메뉴"
-close = "닫기"
-theme = "테마"
-search = "검색"
-search_the_site = "사이트 검색"
-search_hint = "검색어를 입력하세요"
-search_empty = "일치하는 것이 없습니다."
-search_results = "검색 결과"
-
-all_posts = "글 전체"
-all_projects = "프로젝트 전체"
-writing = "글"
-recent = "최근"
-selected = "골라 둔 것"
-
-previous = "이전"
-next = "다음"
-back = "돌아가기"
-published = "발행"
-updated = "갱신"
-on_this_page = "이 페이지"
-breadcrumb = "현재 위치"
-home = "홈"
-
-website = "웹사이트"
-source = "소스"
-docs = "문서"
-repository = "저장소"
-status = "상태"
-language = "언어"
-archived = "보관됨"
-active = "유지 중"
-
-copy = "복사"
-copied = "복사됨"
-
-elsewhere = "다른 곳"
-
-feed = "피드"
-sitemap = "사이트맵"
-
+#
+# **크롬은 두 언어가 같다.** 내비, 푸터, 컨트롤 라벨은 한국어 페이지에서도 영어로
+# 둔다. 번역되는 것은 읽으러 온 것 — 제목, 설명, 본문 — 뿐이다. 여기 영어가
+# 반복되는 것은 빠뜨린 게 아니라 그 결정이다.
+#
+# 예외는 404 다. 그건 라벨이 아니라 읽는 사람에게 건네는 문장이라 번역한다.
+
+skip_to_content = "Skip to content"
+menu = "Menu"
+close = "Close"
+theme = "Theme"
+search = "Search"
+search_the_site = "Search the site"
+search_hint = "Type to search"
+search_empty = "Nothing matches that."
+search_results = "Results"
+
+nav_posts = "Posts"
+nav_projects = "Projects"
+nav_about = "About"
+
+all_posts = "All posts"
+all_projects = "All projects"
+writing = "Writing"
+recent = "Recent"
+selected = "Selected"
+
+previous = "Previous"
+next = "Next"
+back = "Back"
+published = "Published"
+updated = "Updated"
+on_this_page = "On this page"
+breadcrumb = "You are here"
+home = "Home"
+
+website = "Website"
+source = "Source"
+docs = "Documentation"
+repository = "Repository"
+status = "Status"
+language = "Language"
+archived = "Archived"
+active = "Active"
+
+copy = "Copy"
+copied = "Copied"
+
+elsewhere = "Elsewhere"
+
+feed = "Feed"
+sitemap = "Sitemap"
+
+# 404 는 라벨이 아니라 문장이다. 길을 잃은 사람에게 건네는 말이라 번역한다.
not_found_title = "이 페이지는 없습니다"
not_found_body = "주소가 틀렸거나, 페이지가 옮겨 가면서 안내를 남기지 않았습니다. 이 사이트에 있는 것은 전부 검색 한 번 거리에 있습니다."
diff --git a/static/css/main.css b/static/css/main.css
@@ -83,6 +83,10 @@
가져오는 것과 같은 규칙이고, 차가운 바닥과는 보색이라 손이 닿는 자리가
확실히 뜬다. 니어블랙 대비 9.07:1. */
--accent: #e4a242;
+ /* 액센트 위에 얹히는 잉크. 액센트가 밝은 주황이라 두 테마 모두 어둡다 —
+ ::selection 처럼 액센트가 배경이 되는 자리에서 --bg 를 쓰면 라이트에서
+ 흰 글자가 주황 위에 놓여 읽히지 않는다. */
+ --on-accent: #14140f;
/* 선화 마크는 순수 흑 아니면 순수 백이다. 중간 회색은 비활성으로 읽힌다. */
--mark-ink: #ffffff;
@@ -132,9 +136,11 @@
--rule-3: #bac0be;
--ink-rgb: 14, 18, 17;
- /* 같은 색상(36°)에서 명도만 내린다. 니어블랙에서 9:1 인 주황이 니어화이트
- 에서는 1.9:1 로 무너진다. 이 값은 5.2:1. */
- --accent: #935f10;
+ /* 액센트는 두 테마가 같다. 밝은 바닥에서 대비가 낮아지지만, 이 색은
+ 평상시에 나오지 않고 hover·focus·현재 위치에만 쓰이며 그 자리에는 늘
+ 상태 변화가 함께 있다(밑줄, 테두리, 눈금). 색 하나로만 뜻을 전하는
+ 자리는 없다. */
+ --accent: #e4a242;
--mark-ink: #000000;
}
@@ -167,7 +173,7 @@ img { max-width: 100%; height: auto; }
a { color: inherit; text-decoration: none; }
:focus-visible { outline: 2px solid var(--accent); outline-offset: 3px; border-radius: 2px; }
-::selection { background: var(--accent); color: var(--bg); }
+::selection { background: var(--accent); color: var(--on-accent); }
* { scrollbar-width: thin; scrollbar-color: var(--rule-2) transparent; }
::-webkit-scrollbar { width: 8px; height: 8px; }
@@ -1074,25 +1080,18 @@ html[lang="ko"] [data-tooltip]::after { letter-spacing: 0; text-transform: none;
/* 한국어는 라틴 타이포 장치 셋을 깨뜨린다. letter-spacing 은 음절 블록을 벌리고,
text-transform 은 아무 일도 하지 않으며, monospace 는 한글이 프로포셔널로
폴백하는데 공백만 mono 폭이라 어절 사이가 두 배로 벌어진다.
- 구조는 크기·굵기·색으로도 읽히고 그쪽은 도움이 필요 없다. */
+
+ 여기 걸리는 것은 **한국어가 들어가는 자리만**이다. 크롬(내비·푸터·컨트롤·
+ 문 링크)은 두 언어에서 영어로 고정이므로 대문자와 자간을 그대로 둔다 —
+ 되돌리면 한국어 페이지에서만 라벨이 소문자로 나와 두 언어가 달라 보인다. */
html[lang="ko"] .eyebrow,
html[lang="ko"] .fact-label,
-html[lang="ko"] .toc-label,
-html[lang="ko"] .pager-dir,
html[lang="ko"] .prose th,
html[lang="ko"] .crumbs,
html[lang="ko"] .palette-crumb,
-html[lang="ko"] .colophon-nav a,
-html[lang="ko"] .colophon-note,
-html[lang="ko"] .nav a,
-html[lang="ko"] .chip,
html[lang="ko"] .btn,
-html[lang="ko"] .door,
-html[lang="ko"] .room-door,
html[lang="ko"] .back,
-html[lang="ko"] .badges li,
-html[lang="ko"] .lang,
-html[lang="ko"] .tile-meta {
+html[lang="ko"] .badges li {
font-family: var(--sans);
letter-spacing: 0;
text-transform: none;
diff --git a/static/fonts/display-kr.woff2 b/static/fonts/display-kr.woff2
Binary files differ.
diff --git a/templates/base.html b/templates/base.html
@@ -9,11 +9,12 @@
{#- 서브경로에 올라갈 수도 있으므로 손으로 쓰는 링크에는 base_path를 붙인다.
페이지 URL들은 이미 이 접두사를 품고 있어서 손댈 필요가 없다. #}
{%- set home = site.base_path ~ ("/ko/" if ko else "/") %}
+{% from "partials/nav.html" import nav_label %}
<!doctype html>
{#- 기본값을 여기 적는다. prefers-color-scheme 에 맡기지 않는 이유는 생성된
하이라이트 스타일시트가 같은 [data-theme] 을 보기 때문이다. 둘이 서로 다른
- 근거로 결정하면 라이트 OS 를 쓰는 사람이 어두운 페이지에 밝은 코드를 본다. #}
-<html lang="{{ page.language }}" data-theme="dark">
+ 근거로 결정하면 한쪽이 어두운 페이지에 밝은 코드를 낸다. #}
+<html lang="{{ page.language }}" data-theme="light">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
@@ -82,7 +83,7 @@
<nav class="nav" aria-label="{{ t("menu") }}">
{%- for s in site.sections %}
- <a href="{{ s.url }}"{% if page.url == s.url or (page.section and page.section.url == s.url) %} aria-current="true"{% endif %}>{{ s.title }}</a>
+ <a href="{{ s.url }}"{% if page.url == s.url or (page.section and page.section.url == s.url) %} aria-current="true"{% endif %}>{{ nav_label(s, home) }}</a>
{%- endfor %}
</nav>
diff --git a/templates/partials/footer.html b/templates/partials/footer.html
@@ -9,11 +9,12 @@
{%- set ko = page.language == "ko" %}
{%- set home = site.base_path ~ ("/ko/" if ko else "/") %}
{% from "partials/icons.html" import i_github, i_instagram %}
+{% from "partials/nav.html" import nav_label %}
<footer class="colophon">
<div class="colophon-in">
<nav class="colophon-nav" aria-label="{{ t("menu") }}">
{%- for s in site.sections %}
- <a href="{{ s.url }}">{{ s.title }}</a>
+ <a href="{{ s.url }}">{{ nav_label(s, home) }}</a>
{%- endfor %}
{%- if site.feed %}
<a href="{{ site.feed }}">{{ t("feed") }}</a>
diff --git a/templates/partials/nav.html b/templates/partials/nav.html
@@ -0,0 +1,9 @@
+{#- 갈래 라벨. site.sections 의 제목은 콘텐츠(각 언어의 _index.md)라 한국어
+ 페이지에서 한국어가 된다. 크롬은 두 언어가 같아야 하므로 URL 로 골라 i18n 에서
+ 가져온다 — 알려진 세 갈래 밖은 섹션 제목으로 떨어진다. #}
+{% macro nav_label(s, home) -%}
+{%- if s.url == home ~ "posts/" %}{{ t("nav_posts") }}
+{%- elif s.url == home ~ "projects/" %}{{ t("nav_projects") }}
+{%- elif s.url == home ~ "about/" %}{{ t("nav_about") }}
+{%- else %}{{ s.title }}{% endif %}
+{%- endmacro %}
|