---
title: "Claude Code용 언어 학습 모드"
url: "https://claudemods.dev/ko/builds/language-learning-mod-for-claude-code-76bd23"
source: "https://github.com/janzd/claude-translate-output"
source_type: "github"
repo: "https://github.com/janzd/claude-translate-output"
author: "kurapan"
author_handle: "kurapan"
stars: 0
category: "도구 및 연동"
categories: ["tools"]
tags: ["haiku", "hooks", "language-learning", "sidepanel", "translation"]
permission_level: 3
scan_complete: true
install: "claude plugin marketplace add janzd/claude-translate-output\nclaude plugin install translate-output@claude-translate-output"
added: "2026-10-16T16:50:20.221Z"
updated: "2026-10-16T16:50:20.222Z"
locale: "ko"
content_locale: "ko"
---

# Claude Code용 언어 학습 모드

대화의 최종 출력을 선택한 언어로 번역하고 사이드 패널에 표시하는 Claude Code 모드로, 기본적으로 낮은 노력도의 Haiku를 사용합니다.

## Description

친구와 대화한 후, Claude Code에서 작업하면서 공부하는 언어를 연습하는 데 도움이 되는 Claude Code 모드에 대한 아이디어를 얻었습니다. 기본적으로 대화의 최종 출력을 번역하고, 모드를 켤 때 설정한 언어로 번역하여 사이드 패널에 표시합니다. 번역에는 기본적으로 낮은 노력도의 Haiku가 사용되지만, 원하는 모델과 노력도를 설정할 수 있습니다. https://github.com/janzd/claude-translate-output

## Install

```
claude plugin marketplace add janzd/claude-translate-output
claude plugin install translate-output@claude-translate-output
```

## Original README

# Claude Code Translate Output

A Claude Code mod that translates the agent's **final answer** of each turn into a
language you choose and shows the translation in a side pane. Intermediate output
(tool calls, progress messages, subagent reports) is not translated, and the
original answer is left untouched: the translation is display-only and never
enters the conversation context.

![An answer in the Claude Code desktop app with its Japanese translation in the Translation pane](docs/screenshot.webp)

## Install

In a Claude Code terminal session:

```
/plugin install translate-output --marketplace janzd/claude-translate-output
```

Answer `y` to add the marketplace, then pick a scope (user scope makes it
available in every session, including the desktop app's Code tab).

## Usage

```
/translate <language>   turn on, translating final answers into <language>
/translate              show the current language and reopen the pane
/translate off          turn off
/translate model <name> translate with <name> (haiku, sonnet, opus or a model id)
/translate model        show the model in use
/translate effort <level> set effort: low, medium, high, xhigh or max
/translate effort       show the effort in use
```

The language is free text and is passed to the model as written, so real
languages (`Japanese`, `Spanish`, `Esperanto`), constructed ones (`Quenya`) and
styles (`pirate English`, `Shakespearean English`) all work. The chosen language
is remembered across sessions until you run `/translate off`.

After each turn the pane titled **Translation (<language>)** shows the
translation; the status line reads `Translating to <language>…` while it runs.

## How it works

- Hooks `turn.complete` and takes the turn's final visible answer, skipping
  subagent turns, interrupted turns and errors.
- Sends it to the translation model (`haiku` by default) via `$.model.complete`
  (a separate, history-free call on the session's own credentials), asking it to
  keep Markdown, code blocks, file paths, commands and identifiers unchanged.
- Draws the result in a pane through a `ui.render` hook.

To trade speed for quality (useful for less common languages), run
`/translate model sonnet`. The model, like the language, is remembered across
sessions. If the model name isn't recognized, the pane shows the error.
`/translate effort <level>` sets how hard the model thinks (`low` by default);
higher levels may help with literary styles or long technical answers, at the
cost of speed.

## Development

```
claude plugin validate .
claude plugin test .
```

To run it from a local checkout instead of installing it:

```
claude --plugin-dir /path/to/claude-translate-output
```

## Files

| Path | Purpose |
| --- | --- |
| `.claude-plugin/plugin.json` | Plugin manifest |
| `.claude-plugin/marketplace.json` | Makes this repository a plugin marketplace |
| `hooks/hooks.json` | Points at the hooks module |
| `hooks/register.tsx` | The mod: `/translate` command, `turn.complete` hook, pane |
| `hooks/register.test.tsx` | Tests run by `claude plugin test` |
| `types/index.d.ts` | Type contract for the mod's session state |

## License

[MIT](LICENSE)
