Skip to content

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.