ANTIGRAVITY LABJP
Articles/Editor View
Editor View/2026-07-16Advanced

Your UI Is in Japanese. Your Commit Log Isn't.

Setting your editor's display language does nothing for the language your agents write into the repository. Here is what six weeks of unattended runs actually produced, how to pin output language per audience, and a gate that catches the drift mechanically.

Antigravity333localization6AGENTS.md11unattended runs3quality gates

Premium Article

I finished the Japanese UI setup in early June. Language pack installed, AI response language set, the whole interface translated. I was pleased with myself for about two weeks.

Then I ran git log --oneline -30 to review what my unattended agents had been up to, and the screen filled with a striped mess of two languages. A Japanese commit message, then three lines down, fix: resolve race condition in the scheduler. Same agent. Same settings. Same week.

Nothing was misconfigured. The UI was Japanese. Responses came back in Japanese. Only the things left behind in the repository were drifting.

The UI language and the artifact language are decided in different places

It took me a while to see why. There are three layers, and they are independent of one another.

LayerWhat decides itWho reads itSelf-correcting?
UI languageLanguage pack, editor settingsYou, at the screenFixed once configured
Response languageResponse language setting, the prompt at handYou, in the conversationYes — you notice and correct it
Artifact languageWhatever context the model is in at that instantFuture you, collaborators, usersNo — nobody is watching

The first two are settings. There is an established procedure for them, and I followed the one in setting up Antigravity 2.0 with a Japanese UI. When the conversation itself drifts, a single correction in the chat pulls it back.

The third layer is not a setting at all. When an agent writes a commit message, its input is the diff and the recent conversation — nothing else. If the diff is full of English tokens (function, return, variable names), the model concludes it is operating in an English context. If the diff touched Japanese prose, it writes Japanese. The artifact language follows the diff, not your configuration.

With a human at the keyboard, that drift gets fixed the moment it appears on screen. Unattended, it doesn't. The next run starts, nobody reads the output, and the mixture accumulates. That is exactly why I went two weeks without noticing.

Six weeks of measurements, before changing anything

Once I noticed, I resisted the urge to fix it and measured first. I scanned everything the scheduled runs had left behind over six weeks, bucketed by artifact type, and counted what contained Japanese characters and what didn't.

Artifact typeTotalJapaneseEnglishMixed within oneNon-conforming
Commit messages312198114736.5%
Code comments (added lines)1,04640264438.4%
Generated docs (.md)44392311.4%
Log output strings1885113727.1%

A few things clicked into place.

Generated docs drift least because "this is Japanese prose" is obvious from the diff itself. Code comments drift most because every identifier around them is English. The mixing rate tracked almost linearly with how many English tokens surrounded the artifact.

The seven "mixed within one" cases were the nastiest. Things like Fix: スケジューラの競合状態を解消 and update tests — the language switches mid-line. Bucket counts can't see those. Only the gate below caught them.

And the number of times I manually corrected an artifact's language during those six weeks: zero. Obvious, since I didn't know it was happening — but it captures the nature of unattended work rather precisely.

Thank you for reading this far.

Continue Reading

What follows includes implementation code, benchmarks, and practical content we hope you'll find useful. This site runs without ads — server and development costs are supported entirely by members like you. If it's been helpful, we'd be truly grateful for your support.

WHAT YOU'LL LEARN
UI language, response language, and artifact language are three independent layers. In unattended runs, only the third one goes unread and unfixed
How to pin commit messages, code comments, log strings, and generated docs by audience rather than by preference, and how to encode that in AGENTS.md
A 120-line lang_gate.py that catches violations mechanically, plus six weeks of measurements: violation rates, false-positive rate, and three things it still misses
Secure payment via Stripe · Cancel anytime

Unlock This Article

Get full access to the rest of this article. Buy once, read anytime. This site is ad-free — your support goes directly toward keeping it running.

or
Unlock all articles with Membership →
Share

Thank You for Reading

Antigravity Lab is ad-free, supported entirely by members like you. We publish practical guides daily with implementation code, benchmarks, and production-ready patterns. If you've found it useful, we'd love to have you on board.

  • Copy-paste ready implementation code
  • New advanced guides published daily
  • $5/mo or $10 for lifetime access
View Membership →

Related Articles

Editor View2026-07-11
I Only Want to See the Lines the Agent Added: A Changed-Lines Convention Linter
I asked an agent for a small fix, it touched an old file, and the linter threw 13 warnings with no way to tell which were the agent's. Scoping the linter to only the added lines dropped 13 to 3 — about 77% less noise. Here is how to pull added lines out of a diff and check only those, with working code.
Editor View2026-06-22
Precedence for Nested AGENTS.md: A Merge Design for Many Projects in One Workspace
Put several projects in one workspace, each with its own AGENTS.md, and which instruction the agent follows turns ambiguous. Root and per-project rules quietly collide; one wins, or both blend. Taking 'closer is stronger' as the base rule, this designs a merge that distinguishes overriding from appending, with working Python and field notes.
Editor View2026-07-12
Widening one panel made my agent reviews faster
A field note on turning two quiet additions in Antigravity v2.2.1 — Conversation Width and broader syntax highlighting — into a faster way to read the diffs your agents produce. Small display tweaks, but they changed how quickly I could review.
📚RECOMMENDED BOOKS
Build a Large Language Model (From Scratch)
Sebastian Raschka
LLM Dev
Prompt Engineering for LLMs
Berryman & Ziegler
Prompting
AI Engineering
Chip Huyen
AI Eng
* Contains affiliate links
See all →