🌐 Aegis Localizer
AI Localization for Any Codebase
Point it at a codebase and a language. It finds the hardcoded UI strings, translates them with Claude, and rewrites your source to use resource files.
🎯 What Aegis Localizer Is
Every application starts with strings written straight into the code. Making that application speak a second language usually means a developer reading every file by hand, deciding which strings a user actually sees, moving them into resource files, and then rewriting the call sites. It is slow, mechanical work that nobody wants to do twice.
Aegis Localizer does that pass for you. It parses your source, separates user-facing text from machine strings such as URLs, SQL and identifiers, asks Claude to classify the ambiguous cases, translates what remains into the languages you asked for, writes the resource files in the format your stack expects, and, when you tell it to, rewrites the source so the code reads from those resources.
It is built to be run repeatedly. Verdicts and translations are cached, so a second run costs nothing where nothing changed; a reworded English string goes stale and is redone, while a new language reuses the classification work already paid for.
🏢 Who It Is For
- Product teams going multilingual: an existing single-language application that now needs to ship in five, ten or twenty markets.
- .NET teams: C# is parsed with Roslyn, so verbatim, raw and interpolated strings are decoded correctly with exact source spans.
- Web, mobile and cross-platform teams: React, Vue, Svelte, Android, iOS and Flutter projects are handled with the same pipeline.
- Platform and build engineers: scan-only mode with JSON output turns the tool into a CI gate that catches new hardcoded strings at review time.
- Agencies and consultancies: localize a client codebase in an afternoon instead of quoting a multi-week manual project.
⚙️ How It Works
Six stages, each one designed to spend as little of your API budget as possible and to refuse rather than guess when it is not certain.
🔍 Accurate Scanning
C# goes through Roslyn for exact source spans across verbatim, raw and interpolated strings. Other stacks use tolerant lexers that mask comments and existing lookups while preserving byte offsets, so edits land in the right place.
🧹 Offline Noise Filter
URLs, file paths, GUIDs, MIME types, SQL, date patterns, SCREAMING_SNAKE constants and structural context such as nameof, switch patterns, route attributes and Android ids are discarded locally. Nothing filtered here is ever sent to the API, so you never pay for it.
🤖 Claude Classification
Whatever survives the filter is classified by Claude through a forced tool call, so the answer comes back as schema-validated JSON with a user-facing verdict, a reason and a resource key. The pass is language-independent and cached.
🗂️ Resource Bundles
Translations are written into the format your stack expects and merged into what is already there. Existing hand-edited translations are preserved, never overwritten.
✍️ Source Rewriting
With the apply flag, call sites are rewritten to resource lookups. Every touched file is backed up byte-for-byte first, and any file changed since the scan is skipped rather than corrupted.
♻️ Incremental Runs
The tool remembers which English text each translation was made from. Reword a string and it goes stale and is retranslated; change nothing and the run costs nothing at all.
🧩 Supported Stacks
Five platforms, each with its own reader, resource format and rewrite style. Automatic platform detection inspects the project tree, and a working sample project ships for every stack.
Point the tool at a repository with automatic detection and it works out which of these applies before it reads a single string.
🛡️ Safety and Correctness
A missed string costs you a minute. A broken build costs you an afternoon. The tool is deliberately built to report rather than guess whenever a rewrite is not provably correct.
- Byte-for-byte backups: every file the tool rewrites is copied first, so any run can be undone completely.
- Span verification: a file edited between the scan and the rewrite is skipped, not patched at stale offsets.
- Placeholder validation: a translation that loses or invents a placeholder such as {0}, %s or {{count}} is rejected before it reaches a resource file.
- Absent beats wrong: a failed translation leaves the key missing so the application falls back to English, and the next run retries it.
- Merge, not overwrite: resource stores merge into existing bundles, so translations a human corrected by hand stay corrected.
- Schema-validated model output: classification goes through a forced tool call, so the pipeline consumes structured data rather than parsing prose.
🔧 Problems It Solves
- The manual extraction pass: no more reading every file to decide which strings a user actually sees.
- Cost of AI translation: an offline filter and a cached, language-independent classification pass mean the API is only asked about strings that might matter.
- Adding the tenth language: classification is paid for once; each new language only pays for the translation itself.
- Drift after a copy change: translations are tracked against the English they came from, so reworded text is detected and redone.
- Regression on new code: scan-only mode with JSON output can fail a build when someone adds a fresh hardcoded string.
- Broken formatting in translations: placeholder validation catches the class of bug that only shows up at runtime in a language nobody on the team reads.
🚀 Ways to Run It
⌨️ Command Line Tool
Installs as a .NET global tool and runs as a single command against a project directory, with scan-only and apply modes.
🖥️ Local Web GUI
A ui command starts a local web interface on a free port and opens the browser, for people who would rather not think about flags.
📦 Self-Contained Binaries
Standalone builds for Windows x64, macOS on Apple silicon and Intel, and Linux x64, with no runtime to install first.
🔄 CI Integration
JSON output plus scan-only mode makes a build gate that reports every new hardcoded string without touching the working tree.
🔑 Bring Your Own Key
The tool talks to the Anthropic API with your own key, so translation spend is visible and controlled on your own account.
☁️ Hosted Mode
The same web application can run as a hosted service: it accepts an uploaded archive into a per-request sandbox, refuses server paths, and never spends the operator's credit.
🚧 What It Does Not Do
Being explicit about the boundaries is part of the design. The tool is meant to remove the mechanical work, not to take responsibility for your release.
- It does not replace a human reviewer on customer-facing copy, brand voice or legal text.
- It does not restructure your application's localization architecture; it fits the resource conventions your stack already uses.
- It does not touch strings it cannot rewrite safely; those are reported for you to handle.
- It does not run your build or your tests, so review the diff and run them as usual.
- It does not do layout work: text length changes between languages are still yours to design for.
🛠️ Technology Stack
Core
C# on .NET 9, built as a cross-platform console application with a shared core library.
Parsing
Roslyn (Microsoft.CodeAnalysis.CSharp) for C#, plus purpose-built tolerant lexers for TypeScript, JavaScript, Vue, Svelte, Kotlin, Java, Swift, Objective-C, Dart, XML and HTML.
AI
Anthropic Claude over the Messages API, with forced tool calls for schema-validated classification, batched requests and bounded concurrency.
GUI
ASP.NET Core minimal APIs serving a dependency-free HTML, CSS and JavaScript front end with no build step.
Resource Formats
RESX, i18next JSON, Android strings.xml, Apple .strings and Flutter ARB, each with its own merging store.
Testing
xUnit suite that runs fully offline against a fake model, so the pipeline can be verified without spending a token.
Runs On
Windows, macOS and Linux, as a .NET global tool or a self-contained binary.
Data Handling
Only candidate strings are sent to the model; filtered machine strings and the rest of your source never leave the machine.
Localize Your Application
Whether it is one product that needs to ship in a new market or a portfolio of applications stuck in a single language, we can run the first pass with you and show you the diff before anything is applied.
Aegis Localizer is proprietary software. The source is published so that it can be read and reviewed; it is not open source, and commercial use requires a licence from Aegis AO Soft LLC.
