---
title: "Claude Code 语言学习模组"
url: "https://claudemods.dev/zh-cn/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: "zh-cn"
content_locale: "zh-cn"
---

# 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)
