Translation management
without the bottlenecks

Keys live in your code. Translations live in Comvi.
Updates go live without a deploy. No release cycles.

01 · hover 02 · click 03 · translate
Acme Store
← → ↻
acmestore.com
ACME
ShopAboutContact
hero.title
Welcome back, Anna.
Pick up where you left off — your cart is still waiting.
Continue shopping
press & hold option
saved · published to production

The mechanics behind “no redeploys.”

An in-context editor for translators. A CDN for delivery. Type-safe keys for developers. Translation memory and glossary that keep AI drafts grounded in your terminology. All connected, all out of the release path.

in-context editing
Hover any string on your live app. Click to edit. Translate across locales without leaving the page.
⌥ + click · anywhere in your app
edge delivery
Translations live on a global CDN, not on your API. Every save propagates to the edge — no build, no cache invalidation.
cloudflare cdn · 300+ regions worldwide
ai translation
AI drafts, you review. Your glossary and past translations are always in the prompt, so drafts match your terminology instead of guessing.
openai · anthropic · deepl · google
type-safe keys
Autocomplete every key in your IDE. Wrong params, missing handlers, typos in keys — all caught at build time.
typescript · react · vue · svelte · solid · next · nuxt

ICU plurals, rich text, and tags.
Fully type-checked.

The library behind our platform, available standalone. Write ICU messages with tags and parameters — TypeScript catches missing handlers at build time. Bindings for React, Vue, Solid, Svelte, Next, and Nuxt. MIT-licensed.

auto-types
vite plugin regenerates ts types on save
rich text
icu plurals + interpolation + tags in one expression
zero deps
no runtime dependencies
6 frameworks
react, vue, solid, svelte, next, nuxt
open source
MIT-licensed, no copyleft, no vendor lock-in
app/Cart.tsx
            
1 // messages/en.json
2 // "cart.summary": "{count, plural,
3 // one {<b>#</b> item from <link>store</link>}
4 // other {<b>#</b> items from <link>store</link>}}"
5
6 import { T } from '@comvi/react'
7
8 <T id="cart.summary" values={{ count: 3 }}
9 components={{
10 b: ({ children }) => <strong>{children}</strong>,
11 link: ({ children }) => <a href="/store">{children}</a>,
12 }}
13 />

Free to start. Lock your price for life.

Keys-based pricing. Team seats included. Scale with add-ons when you need more.

free
$0
forever · all features included
  • 500 keys
  • 2 members
  • 2 projects
  • 3 languages

Questions before you ship?

Yes. Comvi i18n is MIT-licensed and works as a standalone i18n library — install it from npm, point it at your JSON files, and you're done. The platform adds a team workflow, translation memory, and edge delivery when you need them.

Yes. Comvi exports translations as JSON, so you can plug the output into i18next, react-intl, Lingui, or any other i18n library that reads JSON. You'll miss some conveniences (auto-types, strict tag handlers), but the core translation workflow works the same way.

Comvi i18n ships native bindings for React, Vue, Solid, Svelte, Next.js, and Nuxt. The framework-agnostic core works with anything else. Angular bindings are on the roadmap.

For the initial integration, yes. After that, translators and managers work in Comvi without touching code.

EU-hosted, GDPR compliant. We don't sell your data and we don't train AI on your content. Your translations stay yours.

Ready to get translations off your release path?

Start free. No credit card.

Questions? hello@comvi.io