Claude Code in Russian: replies, comments and commit messages

Claude Code understands Russian but answers in whatever language your instructions set. Where to put the language rule, what not to translate and what it costs in tokens.

6 min · · агенты · development

If you are looking for a way to get Claude Code working in Russian, first separate two things. The agent's interface (command names, system messages) stays in English. But the language in which the model replies, writes comments and phrases commits is yours to set: with one setting in settings.json and a short instruction file. Below: what to put where, what not to translate and how many extra tokens Russian text adds.

About "Claude Desktop in Russian": it is a separate Anthropic application, its interface language is set in the app itself, and we do not cover it here. The rest is about Claude Code running with a Zukko key through the Anthropic-compatible address.

Claude Code and the Russian language: what you can configure

The model understands Russian requests with no setup at all. The problem is elsewhere: if the project has English code, English comments and an English README, the agent often keeps answering in English because the context pulls it that way. So it is better to fix the language explicitly.

What you can actually control:

  • the language of explanations, plans and final reports in the chat;
  • the language of comments and docstrings in new code;
  • the language of commit messages, when you ask the agent to write them;
  • the language of the questions the agent asks you along the way.

What not to translate: names of variables, functions and files, terminal commands, error names and quotes from logs. If you translate compiler output, you will not be able to search for it or check it against documentation.

The shortest path: the language setting

The Claude Code settings reference has a language parameter. Claude Code passes its value to the model as an instruction to always reply in that language; the value is not validated, so any language name works, for example "russian". Per the documentation, the same parameter also sets the language of automatic session titles and voice dictation.

bash
{
  "language": "russian"
}

Add it to ~/.claude/settings.json without overwriting the rest of the file, and the rule applies to all your projects. The setting covers only the reply language. Details such as the language of comments and commits, and what must not be translated, are easier to describe in CLAUDE.md.

Detailed rules: CLAUDE.md

Claude Code reads CLAUDE.md files at the start of every session. According to the Claude Code documentation there are several locations: a user file ~/.claude/CLAUDE.md (for all your projects) and a project file ./CLAUDE.md or ./.claude/CLAUDE.md (shared with the team through the repository). For personal language rules the user file fits best: it is your preference and is not imposed on colleagues.

Example content:

bash
## Language and style

- Reply to me in Russian: explanations, plans, questions and final reports.
- Write comments and docstrings in new code in Russian.
- Names of variables, functions, classes and files: Latin letters only, in English.
- Do not translate commands, terminal output, error names or quotes from logs.
- Do not rewrite existing English comments in the project.
- Commit messages in Russian, first line up to 72 characters, imperative mood.

Check that the file was picked up: start claude, run /context and look at the list of memory files. If your file is missing, check the path and the exact name CLAUDE.md.

Two caveats from the documentation. First, CLAUDE.md is context for the model rather than hard configuration, so wording should be concrete, not "write nicely". Second, keep the file short: the recommendation is under 200 lines, otherwise it takes up context and the instructions are followed less reliably. Writing the whole file is covered in how to write CLAUDE.md. If you have no file yet, the /init command creates a starting version that you can extend with a language block.

There are other options too. You can write "reply in Russian" in the first message of a session: it works, but you have to repeat it in every new session. Claude Code also has an --append-system-prompt flag; check its exact behavior in claude --help and the tool's documentation.

Commits in Russian: when it makes sense

The agent writes commits when you ask, for example "commit the changes". If CLAUDE.md says to write them in Russian, it will follow the rule. But first look at the repository history: git log --oneline | head. If the team keeps it in English, Russian commits will stand out and can also break automation such as changelog generators. In that case keep the rule only in your user file and add the line "commit messages in English" to the project CLAUDE.md to avoid a conflict.

The documentation names contradictory instructions as a common cause of unstable behavior: the model may pick either one. Review both files once a month.

Connecting to Zukko

If Claude Code is not set up yet, add an env block to ~/.claude/settings.json (without overwriting the rest of the file):

bash
{
  "env": {
    "ANTHROPIC_BASE_URL": "https://api.zukko.pro",
    "ANTHROPIC_AUTH_TOKEN": "fetch_your_key",
    "ANTHROPIC_DEFAULT_OPUS_MODEL": "claude-opus-5-5",
    "ANTHROPIC_DEFAULT_SONNET_MODEL": "claude-sonnet-5-5"
  },
  "language": "russian"
}

The address has no /v1: Claude Code appends the path itself. Use the ANTHROPIC_AUTH_TOKEN variable specifically: with it Claude Code does not ask you to log in to Anthropic. A detailed walkthrough and fixes for common errors are in the Claude Code documentation.

Why Russian text costs more tokens

The model counts tokens, not characters or words. Russian words usually split into more pieces than English ones, so the same meaning in Russian takes more tokens. The exact ratio depends on the model and the text, and we do not quote a fixed number: it is easier to measure on your own sample. The count_tokens method does this: it only counts tokens and does not generate a reply:

bash
import anthropic

client = anthropic.Anthropic(
    base_url="https://api.zukko.pro",
    api_key="fetch_your_key",
)

def count(text: str) -> int:
    r = client.messages.count_tokens(
        model="claude-sonnet-5-5",
        messages=[{"role": "user", "content": text}],
    )
    return r.input_tokens

ru = "Добавь проверку на пустой список и напиши тест для этого случая."
en = "Add a check for an empty list and write a test for that case."
print("ru:", count(ru), "en:", count(en))

Each result includes a small fixed overhead, so compare the difference rather than absolute values. More on the mechanics in why Russian text is counted differently.

What the instruction file itself costs

Suppose your Russian CLAUDE.md is 1,500 tokens (an assumption, measure yours). It goes into every request of the session. claude-sonnet-5-5 prices as of October 18, 2026: input $0.4 per 1M, cache read $0.05, cache write $0.5.

  • No cache: 1,500 × $0.4 / 1,000,000 = $0.0006 per request; for 200 requests a day that is $0.12.
  • With cache: one write 1,500 × $0.5 / 1,000,000 = $0.00075, then reads at 1,500 × $0.05 / 1,000,000 = $0.000075 per request; for 200 requests $0.015 plus the write.

Claude Code works in the Anthropic format, where the gateway sees cache reads and writes, so a constant prefix like CLAUDE.md is cheap. The main spend still comes from conversation history and files, not from it. Check the cost of Russian replies in the "Usage" section of the dashboard: if you mostly ask for code the difference is small, with long explanations it is more noticeable. Other ways to save are collected in how to cut token usage in Claude Code. Current prices: GET https://api.zukko.pro/v1/models or the "Models" page in the dashboard.

If the agent still answers in English

  1. Check that language is set in settings.json, and confirm with /context that CLAUDE.md is loaded.
  2. Make the rule more concrete: "explanations and reports in the chat are always in Russian, even if the request or code is in English".
  3. Remove contradictions between the user file and the project file.
  4. Start a new session: in a long session an instruction from the start of the context may be followed less well than in a fresh one.
  5. Try another model from the catalogue on your task: models behave differently and we do not generalize.

Create the key for Claude Code on the API keys page. The dollar balance can be topped up from $1: SBP (the payment page adds 8.5% on top), cryptocurrency or a MasterCard card.

FAQ

Does Claude Code have an interface language switch?

We found no separate interface language setting in the documentation. For model replies there is the language parameter in settings.json, and detailed rules go into CLAUDE.md. The set of settings changes between versions, so check the official documentation.

Should CLAUDE.md itself be written in Russian?

Not necessarily. An English instruction with the phrase "reply in Russian" works as well. Writing in Russian is more convenient for you, but it costs more tokens, and with caching the difference is small.

Will Russian comments get in the way in the project?

The agent does not change existing text if you forbid it. Agree in the team on the comment language and record the decision in the project CLAUDE.md.

Are Russian answers lower in quality?

We have not compared and draw no conclusions about quality. Try your typical task with a Russian and an English prompt on the chosen model and compare the result and token usage.

zukko

Pay 25×
less

for Claude Code & ChatGPT

One fetch_* key and base URL api.zukko.pro — for Cursor, Claude Code, Codex, and any SDK.

Get API keyDocumentation

api.zukko.pro · fetch_*

Claude Code in Russian: replies and commits · Zukko