Skip to content

Open-source i18n for TypeScript

Source to runtime · MIT

A foundation you can keep

Clear.Complete.Fast.Pick three.

Build i18n on one coherent TypeScript foundation: source-local messages, first-party framework integrations, four proven locale architectures, repository-owned catalogs, and a native toolchain that stays fast as the codebase grows.

01 — Start from your question

Choose a path

The right evidence depends on the decision in front of you.

Begin with the question your team actually needs to answer. Every route returns to the same source-to-runtime model and its checked boundaries.

First-party integrations

Frontend and full-stack adapters are verified as applications. Backend integrations use the same request-local runtime in Hono and Express.

Brand-asset status →

Frontend and full-stack adapters

Backend integrations

02 — Clear

Developer experience

Write the message where the interface happens.

Messages stay readable in TypeScript and JSX. Palamedes transforms them for extraction and runtime use without making developers manage parallel identifiers, generated wrappers, or a second authoring language.

import { t, plural } from "@palamedes/core/macro"
import { Trans } from "@palamedes/react"
export function Booking({ seats }: { seats: number }) {
return (
<>
<h1>{t`Your trip to Lisbon`}</h1>
<p>{plural(seats, { one: "# seat left", other: "# seats left" })}</p>
<Trans>Free cancellation until <b>24 hours</b> before departure.</Trans>
</>
)
}

Messages live where the UI happens.

Rendered

The same component in every loaded locale, with the same model across supported hosts.

en-US

Your trip to Lisbon

3 seats left€1,234.00

Jul 12, 2026

de-DE

Deine Reise nach Lissabon

3 Plätze frei1.234,00 €

12. Juli 2026

es-ES

Tu viaje a Lisboa

Quedan 3 asientos1234,00 €

12 jul 2026

one component · copy, plurals, currency & dates change together

03 — Complete

Already wired

Framework integrations and locale architectures are two different promises.

The adapter layer supplies tested glue code for each supported host. Separately, the example matrix proves four application shapes for locale selection and URLs. You do not have to turn generic compatibility into an architecture yourself.

Integration breadth

Frameworks

6
  • Next.js
  • TanStack Start
  • Solid
  • Waku
  • React Router
  • Remix v3

First-party adapter code and verified host wiring — not a compatibility logo wall.

Deployment breadth

Locale architectures

4
  • Cookie
  • Route
  • Subdomain
  • TLD

Cookie, route, subdomain, and TLD are implemented application shapes, not documentation-only recipes.

The local workflow

A single hand-off: write in the component, extract to a catalog, translate that catalog, then render through the same runtime contract.

Inspect the verified matrix →

04 — Fast

Checked performance

Fast enough to stay out of the way.

The realistic workflow measures extraction and catalog updates across 1,500 files. The exact command, fixtures, machine details, and semantic checks remain available for reproduction.

Reproducible command2026-08-14
$ pnpm benchmark:e2e-workflow

realistic corpus  1,500 files (750 with i18n), ~400k lines, 6,000 messages
Palamedes        73 ms  extract + catalog update
fbtee            7.3 s  same scope

exact report, fixtures, and semantic checks: checked in

Checked result ledger

Realistic corpus — 1,500 files across ~400k lines, 6,000 messages (median of 7 runs)

Methodology →
Rounded workflow times and relative factors for 1,500 files (750 with i18n), ~400k lines, 6,000 messages. Exact values are available in the checked benchmark report.
WorkflowResultRelative time
Palamedesextract + catalog update47–73 ms*
React Intlextraction only · narrower scope424 ms
Linguiextract + catalog update2.2 s30×
fbteecollect + two-catalog update · two CLI commands7.3 s100×
General Translationextract + catalog update5.1 s70×
i18next-cliextract + catalog update5.8 s80×

* 47 ms is Palamedes on a cached re-run after 5 changed source files; 73 ms is the cold workflow result. No speedup factor is calculated for the non-comparable cached run. Cache details →

Times are rounded to display precision and relative factors are rounded down. Exact medians remain in the checked report. Machine-local run: darwin/arm64, Node v24.19.0, 2026-08-14, median of 7 runs.

Inspect benchmarks and verification

05 — Architecture

A native core handles extraction, catalogs, validation, merging, and compilation. Each framework adapter handles only its own routing, rendering, and locale conventions.

Inspect the architecture →

06 — Verification

Executable evidence

The matrix is made of applications, not logos.

Every cell represents implemented source. All 25 examples are smoke-checked on relevant changes, while 21 browser-capable examples exercise SSR output, locale switching, and localized server actions on a schedule.

FrameworkCookieRouteSubdomainTLD
Next.js
✓ verified
✓ verified
✓ verified
✓ verified
TanStack Start
✓ verified
✓ verified
✓ verified
✓ verified
Solid
✓ verified
✓ verified
✓ verified
✓ verified
Waku
✓ verified
✓ verified
✓ verified
✓ verified
React Router
✓ verified
✓ verified
✓ verified
✓ verified
Remix v3
✓ verified · host pending
public host pending
✓ verified · host pending
public host pending
✓ verified · host pending
public host pending
✓ verified · host pending
public host pending

public demo · ◌ public host pending · ✓ verified in CI — Remix v3 is currently a local/CI proof surface.

07 — Trust

Built for the long run

The tradeoffs are documented before you depend on them.

Palamedes is maintained by Sebastian Software GmbH. It is the third generation of source-string-first i18n tooling from the same author, shaped by framework changes and enterprise migration work.

The public boundary is as important as the capability: MIT-licensed source, repository-owned catalogs, and no hosted TMS, machine translation, or account requirement. Architecture, release behavior, security policy, and rejected alternatives are documented before you depend on them.

08 — FAQ

Boundaries, stated plainly

What Palamedes does—and what it does not claim to do.

These answers are part of the page, the product boundary, and the structured data. They stay deliberately specific so a useful answer does not become a broader promise.

01Is Palamedes ready for production use?

Palamedes publishes its source, tests, examples, benchmark fixtures, and decision records so teams can inspect the supported surface. Production suitability remains a team decision: verify the framework, locale architecture, and workflow you intend to use against the current documentation and release notes.

02Which frameworks does Palamedes support?

Palamedes has first-party integrations for Next.js, TanStack Start, Solid, Waku, React Router, Remix v3, and Vite. The framework matrix shows the example and verification status for each supported host; Remix v3 remains explicitly qualified as preview work.

03Does Palamedes replace a translation management system or write translations with AI?

No. Palamedes provides a complete local workflow for source messages and repository-owned catalogs. It does not provide a hosted TMS, machine translation, or an AI translation service.

04Where do translation catalogs live?

Catalogs are repository-owned artifacts. The toolchain extracts messages, updates catalogs, audits and merges them semantically, and compiles runtime artifacts as part of the application workflow.

05How do translators work with Palamedes?

Palamedes keeps source-string-first PO catalogs readable in version control. Translators can work with those catalogs directly or through the import and export path of a chosen TMS; the exact external workflow and fidelity depend on that product and its project configuration.

06Can a team migrate from an existing i18n library?

Yes, but migration depends on the source model, catalog format, runtime usage, and framework host. Palamedes provides a Lingui migration guide and comparison pages for selected tools; use them to establish the exact boundary before planning a migration.

Put a durable i18n model in your repository.