tyndale
$ cat hero.tsx

Write your app in one language.

Get every language.

AI-powered i18n for React & Next.js. No key files. No manual translations.

Everything you need for i18n

From extraction to deployment, Tyndale handles the entire translation workflow.

Zero-key workflow

Translate JSX and strings without maintaining key files.

Welcome.tsx
import { T, useTranslation } from 'tyndale-react';

export function Welcome() {
  const t = useTranslation();
  return (
    <div>
      <T>Welcome to our app!</T>
      <p>{t('You have 3 new messages')}</p>
    </div>
  );
}

AI-powered

Uses your own AI provider for high-quality translations.

Incremental

Only translates what changed since the last run.

unchanged line
- old translation
+ new translation

Rich content

Variables, plurals, numbers, currency, and dates.

{count, plural, one{# item} other{# items}}

Next.js first-class

Middleware, providers, RTL, static generation.

  • Middleware
  • Server Components
  • Static Generation

CI-friendly

tyndale validate checks translations without writing files.

$ npx tyndale validate
es.json 42/42 keys
fr.json 42/42 keys
All translations valid

Three steps to global

Write your component. Run the CLI. Ship translated.

1 Write your component
import { T } from 'tyndale-react';

<T>Welcome!</T>
2 Run the CLI
$ npx tyndale translate
  Translating to es, fr, de...
  Done.
3 See the result
// es.json
{
  "Welcome!":
    "Bienvenido!"
}

Ready to go global?

Start translating your React app today. Open source, free forever.