Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
76 changes: 71 additions & 5 deletions i18n/ko/glossary.json
Original file line number Diff line number Diff line change
Expand Up @@ -89,13 +89,14 @@
},
{
"source": "elicitation",
"target": "엘리시테이션",
"note": "Transliteration; write 엘리시테이션(elicitation) at the first occurrence on a page, 엘리시테이션 alone afterwards. The verb \"elicit\" in prose is 사용자에게 입력을 요청하다; `ctx.elicit(...)` stays code. Provisional pending native review — the least settled term in this file; 유도 is the candidate alternative to confirm against, so it is noted here rather than banned; 도출 is not a candidate."
"target": "사용자 입력 요청",
"note": "The server asking the user for input through the client. Write 사용자 입력 요청(elicitation) at the first occurrence on a page, 사용자 입력 요청 alone afterwards. Compounds: form elicitation → 폼 입력 요청, URL-mode elicitation → URL 모드 입력 요청, push elicitation → 푸시 입력 요청. An \"elicitation request\" is just 사용자 입력 요청, never 사용자 입력 요청 요청. The verb \"elicit\" in prose is 사용자에게 입력을 요청하다; `ctx.elicit(...)` and `elicitation/create` stay code. Not the transliteration 엘리시테이션, which carries no meaning for Korean readers, and not 유도, which reads as nudging the user. Native review (#3732).",
"avoid": ["엘리시테이션", "요청 요청"]
},
{
"source": "capability",
"target": "기능",
"note": "A negotiated protocol feature (\"capability negotiation\" → 기능 협상), not 역량 or 능력; the `capabilities` wire field and `client.server_capabilities` stay Latin in code. Provisional pending native review — 기능 doubles as \"feature\"; native review should confirm the collision is acceptable."
"target": "지원 기능",
"note": "What a client or server declares that it supports, negotiated when the connection starts (\"capability negotiation\" → 지원 기능 협상). Plain 기능 stays reserved for \"feature\", so the two remain distinct even in adjacent sentences: \"A callback is a capability\" → 콜백 등록이 곧 지원 기능 선언. Not 역량 or 능력; the `capabilities` wire field and `client.server_capabilities` stay Latin in code. Native review (#3732)."
},
{
"source": "transport",
Expand Down Expand Up @@ -169,7 +170,8 @@
{
"source": "deprecated",
"target": "지원 중단 예정",
"note": "Advisory status: still works but discouraged. First occurrence on a page may add the original: 지원 중단 예정(deprecated). \"Removed\" is a different word (제거됨); the corpus contrasts the two, so never render deprecated as 폐기됨 or 제거됨. Provisional pending native review."
"note": "Advisory status: still works but discouraged. First occurrence on a page may add the original: 지원 중단 예정(deprecated). Never shorten it to 지원 중단, which reads as already unsupported: \"deprecation warning\" → 지원 중단 예정 경고. When a protocol revision marks the point of deprecation, write 사양부터: \"deprecated at `2026-07-28`\" → `2026-07-28` 사양부터 지원 중단 예정, never `2026-07-28`에서, which reads as a calendar date. \"Removed\" is a different word (제거됨); the corpus contrasts the two, so never render deprecated as 폐기됨 or 제거됨. Native review (#3732).",
"avoid": ["지원 중단 경고"]
},
{
"source": "round-trip",
Expand All @@ -181,6 +183,70 @@
"target": "lifespan",
"note": "Keep the English word in Korean prose (lifespan 함수, 호스트 앱의 lifespan), matching the `lifespan=` parameter it names. Provisional pending native review — 수명 주기 was rejected because it collides with \"lifecycle\" (생명 주기)."
},
{
"source": "era (2025-era, 2026-era, handshake era, modern era)",
"target": "프로토콜 버전",
"note": "An era is a group of protocol revisions, not a period of time, so it gets no Korean noun of its own: name the versions instead. 2025-era and handshake-era → `2025-11-25` 이하 버전; 2026-era and modern era → `2026-07-28`; pre-2026 → `2026-07-28` 이전 버전; a generic \"era\" (\"any era of server\", \"MCP has two eras\") → 프로토콜 버전. Never a time word: not -년대 (a decade, so 2025년대 is not Korean), 시대, 시절 or 세대. Native review (#3732).",
"avoid": ["년대"]
},
{
"source": "wire (on the wire, wire name, wire format)",
"target": "실제로 주고받는 메시지",
"note": "No single noun; render by context. On or across the wire → 실제로 주고받는 메시지에서; a wire name, key or format → 프로토콜상 이름 / 키 / 형식; the wire as the channel (stdout under stdio) → 통신 채널; the verb \"wire\" (to connect) → 연결하다. Never the transliteration 와이어. Native review (#3732).",
"avoid": ["와이어"]
},
{
"source": "server-initiated request",
"target": "서버가 시작하는 요청",
"note": "A request the server sends to the client (sampling, elicitation, roots). Not 서버 시작 요청, which reads as a request to start the server, and not 서버 주도. Native review (#3732).",
"avoid": ["서버 시작 요청"]
},
{
"source": "Completions (the MCP primitive)",
"target": "자동 완성",
"note": "The argument-completion primitive and the title of its page; the same rendering in link text pointing to that page. `completion/complete` stays code. Native review (#3732)."
},
{
"source": "completion (what a model generates)",
"target": "completion",
"note": "The text an LLM produces (\"sampling asks the client's model for a completion\"). Keep the English word in Korean prose, as with lifespan. Not 완성, 완성 결과 or 컴플리션; the Completions primitive is the separate entry above (자동 완성). Native review (#3732).",
"avoid": ["컴플리션", "완성 결과"]
},
{
"source": "provider",
"target": "provider",
"note": "OAuth and identity providers: keep the English word in Korean prose (OAuth provider, identity provider), as with lifespan. Not 프로바이더 or 공급자. Native review (#3732).",
"avoid": ["프로바이더", "공급자"]
},
{
"source": "argument",
"target": "인자",
"note": "A function, tool or prompt argument; matches the Korean glossary of the Python documentation (docs.python.org/ko/3/glossary.html). Not 인수. Native review (#3732).",
"avoid": ["인수"]
},
{
"source": "parameter",
"target": "매개변수",
"note": "A function or tool parameter; matches the Korean glossary of the Python documentation. Not 파라미터. Native review (#3732).",
"avoid": ["파라미터"]
},
{
"source": "annotation",
"target": "어노테이션",
"note": "Type annotations and tool annotations; matches the Korean glossary of the Python documentation. Not 애너테이션. Native review (#3732).",
"avoid": ["애너테이션"]
},
{
"source": "docstring",
"target": "독스트링",
"note": "Matches the Korean glossary of the Python documentation; not left in Latin script in prose. Native review (#3732)."
},
{
"source": "spec (specification)",
"target": "사양",
"note": "The MCP specification; one rendering everywhere, not 명세 on some pages. Native review (#3732).",
"avoid": ["명세"]
},
{
"source": "Get started",
"target": "시작하기",
Expand Down
35 changes: 26 additions & 9 deletions i18n/ko/instructions.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,17 +15,27 @@ register for the whole page.
-ㅂ니다: "The SDK does the rest." → SDK가 나머지를 처리합니다.
- Short imperatives (steps, instructions, calls to action) use -세요:
"Create a file `server.py`" → `server.py` 파일을 만드세요. Never -십시오, never
the bare 해요체 (-어요 / -예요 / -해요), and never plain-style -다 endings.
-ㅂ시다 ("Let's change it" → 바꿔 보세요, not 바꿔 봅시다), never the bare
해요체 (-어요 / -예요 / -해요), and never plain-style -다 endings.
- Headings are noun phrases where the English heading is a noun phrase
("Installation" → 설치). An English heading phrased as a sentence or a
question becomes a noun phrase too: "What's new in v2" → v2에서 달라진 점.
Do not write -나요? or -습니까? headings.
A heading never ends in a verb ending of any kind: not -나요? or -습니까?,
not -ㄹ까 or -는가, and not a -습니다 sentence. "It costs nothing until you
want it" → 필요할 때까지 비용 없음; "Which one to raise" → 발생시킬 예외 고르기.
- Never address the reader with 당신, 여러분 or 우리. Korean drops the
subject: "you can pass a URL" → URL을 전달할 수 있습니다. Where a subject is
unavoidable, name the role — 클라이언트, 서버, 사용자 — never a pronoun.
"Your server" is 서버 or, when the contrast matters, 작성한 서버.
- One page, one register. Mixing -습니다 with -어요, or -세요 with -십시오, is
wrong even when each sentence is correct on its own.
- The shared rules keep the strength of a requirement; in Korean each level
has a fixed ending: must → -해야 합니다, must not → -해서는 안 됩니다,
should → -하는 것이 좋습니다, should not → -하지 않는 것이 좋습니다,
may → -할 수 있습니다. "Should not" is advice: "New code should not be
built on these" → 새 코드는 이 기능을 기반으로 하지 않는 것이 좋습니다,
never -해서는 안 됩니다, -면 안 됩니다 or -지 않아야 합니다, which read as
must not.

## 2. Voice

Expand Down Expand Up @@ -105,9 +115,12 @@ Translate the information, not the joke.
3개, 30초, 8000번 포트, 5MB. Version numbers and the protocol's date-shaped
revision strings are identifiers and are copied byte-for-byte (they are in
the glossary's keep list). A calendar date written out in prose, if any,
becomes 2026년 7월 28일.
becomes 2026년 7월 28일. When a revision string marks the point at which
something changes, add 사양부터: "deprecated at `2026-07-28`" →
`2026-07-28` 사양부터 지원 중단 예정입니다. Never `2026-07-28`에서, which reads
as a calendar date.
- Parenthetical originals use ASCII parentheses with no space before them:
엘리시테이션(elicitation).
사용자 입력 요청(elicitation).

## 5. Terminology pointer

Expand All @@ -130,14 +143,18 @@ glossary does not pin:
line, a log message, a UI label) stays exactly as the code emits it,
usually English.
- 한글(English) 병기: the glossary marks a few MCP-specific nouns for a
parenthetical original on first mention only — 엘리시테이션(elicitation) once,
then 엘리시테이션. Class names never get a Hangul gloss.
parenthetical original on first mention only — 사용자 입력 요청(elicitation)
once, then 사용자 입력 요청. Class names never get a Hangul gloss.
- One term, one rendering, throughout the page. Do not alternate between
객체 and 오브젝트, or between 컨텍스트 and 맥락, for the same source term.
- Abbreviations stay Latin and lose the English plural "s": "the APIs" → API.

## 6. Provisional note

Every decision in this file is provisional pending review by native Korean
speakers. To propose a change, edit this file (or `glossary.json`) in a pull
request — never edit the generated pages under `pages/`.
A native Korean speaker compared 45 of the 52 generated pages with the
English (#3732; `advanced/` was not covered). That review added the
requirement-strength, heading and -ㅂ시다 rules in §1 and the 사양부터 rule in
§4, and the glossary entries it changed or added are marked "Native review
(#3732)". Every other decision is still provisional pending native review.
To propose a change, edit this file (or `glossary.json`) in a pull request
— never edit the generated pages under `pages/`.
Loading