Why koto?
The traditional approach
Most teams handle i18n one of two ways:
Manual translation: Copy locale files, send to translators, wait days, merge back, fix broken placeholders. Scales poorly beyond 2-3 languages.
SaaS platforms: Upload to a web dashboard, pay per-word, manage access controls, sync files back. Works well with dedicated translators but adds cost and workflow overhead for dev teams.
Generic AI translation: Run strings through an LLM. Fast and cheap, but every string gets the same treatment — legal disclaimers sound casual, marketing copy sounds robotic.
koto’s approach
koto is built for developer teams that own their translations and want automation without losing control.
Context-aware translation
The core idea: different parts of your app need different translation styles. A Terms of Service page should sound formal and precise. A marketing landing page should sound energetic. An error message should be clear and concise.
koto lets you define context profiles — tone, instructions, and glossary per file pattern. One command handles everything, each file gets the right treatment.
contexts: { default: { tone: 'concise', instructions: 'UI strings.' }, legal: { tone: 'formal', glossary: './glossaries/legal.json', files: ['locales/legal/[locale].json'] }, marketing: { tone: 'creative', files: ['locales/marketing/[locale].json'] },}Bring your own LLM
Use whatever model works for you — OpenAI, Anthropic, Google Gemini, or run Ollama locally for free. Switch providers by changing one config line. No vendor lock-in, no per-word pricing.
Respects existing work
When you point koto at a project with existing translations, it detects them automatically and only translates what’s actually missing. No risk of overwriting human-curated translations. Tested on a production app with 3,100 keys — correctly identified 2,950 existing translations and flagged only 164 as needing work.
Developer-first workflow
- Files live in your repo (git-native)
- Lockfile tracks what’s translated (commit it, incremental runs take seconds)
- TypeScript types generated from locale keys (
koto types) - Quality scoring gates your CI pipeline (
--fail-on-error) - One command to contribute translations to any OSS repo (
koto contribute)
What koto does NOT do
- Runtime translation — koto is a build/dev-time tool. It generates static locale files.
- Web editor — there’s no dashboard. You work in your editor and terminal.
- Professional translator workflow — if you have a team of human translators, a localization platform with review workflows is a better fit.
koto is for teams where developers manage translations and want a fast, automated, context-aware tool that fits into their existing workflow.