How Roo Code Used Roo Code to Internationalize Roo Code
Scaling to 15 languages without slowing down, thanks to AI orchestration.
Back in February, we got a pull request from the community that caught my eye. It started internationalizing parts of Roo Code and included a Simplified Chinese translation for some of the UI.
At first, I was a little skeptical:
"Thanks for the PR! I’ll take a look at this soon. In general I haven’t thought a ton about the internationalization strategy—curious what people have seen work in the past. Just using internationalized strings when developing and letting the community translate as follow-ups?"
The contributor responded with a thoughtful note:
"Thanks for the response! I’m currently promoting the Roo Code plugin to my colleagues, and in order to help everyone better understand the meaning of the menu settings, I’ve implemented internationalization. I personally believe that using internationalized strings during development helps developers from different countries better understand the meaning of the menu settings."
And honestly? They were right.
In the old world (a.k.a. 2024), it would have been unthinkable for a fast-moving project like Roo Code to pause and set up a full internationalization pipeline. That kind of thing was the domain of big, slow-moving companies with dedicated teams. But things have changed. LLMs are here, and Roo Code has... Roo Code.
We also started to notice something else: a large portion of our community contributions were coming from non-native English speakers. Roo Code is deeply community-driven, and if our users are global, our interface should be too.
So, we decided to go all-in on internationalization.
Step 1: Internationalize Everything
At first, we thought we’d slowly internationalize the app, one screen at a time. But again, this is 2025. Why not just... do it all?
So we spun up a custom mode called "Internationalization Engineer" inside Roo. This agent specialized in extracting all the user-facing English strings from our codebase and organizing them into clean, well-named JSON files. If you’ve ever done this job manually, you know it’s a nightmare. But Roo didn’t complain - and it crushed it for single files.
The next challenge: scale.
You can’t just tell an LLM, “Internationalize the whole thing,” and expect it to get through the the entire application. That’s where our orchestration features came in.
We used Roo’s “Boomerang Mode”, a high-level workflow that breaks down large tasks into subtasks and delegates them out without clogging up the context window. We pointed the orchestrator at the whole extension, and it got to work:
It created a list of every file that needed internationalizing
It handed each one off to the Internationalization Engineer
It stitched everything back together, clean and fast
I’d love to say I watched it work, but honestly, I went and played with my kids while Roo handled it. When I came back, it was done.
Step 2: Translate
Next came translation.
LLMs have been good at translation for a while, but consistency is tricky. So I created a custom “Translate” mode filled with detailed instructions: voice, tone, how to handle pluralization, how to treat interpolated variables, etc.
We ran a few test translations and sent them to our original contributors for review. The feedback was great! A few small tweaks (like keeping “tokens” in English instead of translating) and we updated our instructions and re-ran everything. Total fix time: a few minutes.
We ended up translating Roo Code into 14 new languages in a little over a week of one developer’s time, plus a heavy assist from Roo (and a decent number of tokens). The results weren’t perfect, but they were a huge head start.
Step 3: Learn and Improve — Automatically
As we expected, some native speakers from the community sent in pull requests with fixes and improvements to the initial translations. In the old world, this would be a constant tax: humans doing slow reviews, keeping documentation up to date, and hoping translators got the memo next time.
But this is Roo Code in 2025.
Instead of just merging the PRs and moving on, we pointed Roo Code at the feedback itself. Roo reviewed the pull requests, summarized the changes, and then updated its own custom instructions - adding examples and new heuristics to handle similar edge cases in the future.
In other words: Roo learned.
This created a positive feedback loop. The more feedback the community gave, the better Roo got at translating the next thing. Suddenly our translation strategy wasn’t just “generate and fix,” it was “generate, fix, and get better automatically.”
2024 internationalization couldn’t do that.
The Takeaway
This whole project has been one of the clearest examples of how Roo Code helps build Roo Code, and why we’re so excited about the future of AI-assisted software development.
Internationalization used to be a multi-quarter initiative. Now it’s just... a thing we did in a week.
We’re shipping faster than ever, with a more inclusive product, thanks to the power of LLMs and the amazing Roo community that pushes us to keep leveling up.
The world’s not waiting, and neither are we.
Roo Code is an open-source AI coding assistant that lives in your editor and helps you build faster with agent-based workflows. It’s available now as a VS Code extension and on GitHub.
Cool story bro nice