Skip to content

Open-source i18n for TypeScript

Source to runtime · MIT OR Apache-2.0

A foundation you can keep

Clear.Complete.Fast.Pick three.

Write readable messages with ready-made components. Connect your framework with a first-party adapter. Compile translations ahead of time and keep catalog work fast with a native toolchain. One i18n foundation, from your first component to a growing application.

2.0 preview. Try the upcoming release through the repository examples. Registry latest still supplies 1.x. Read the release notes.

01 — Clear

Developer experience

Write the message where the interface happens.

Use t for text and ready-made Trans and Plural macros for rich copy and choices. Messages stay readable beside your components; the build turns them into compiled lookups. Your translators work with the source messages in repository-owned catalogs.

import { t, plural } from "@palamedes/core/macro"
import { Trans } from "@palamedes/react/macro"
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

02 — Complete

Already wired

The integration is already built for your framework.

First-party adapters connect message authoring, server rendering, browser delivery, and localized server functions. Start from a checked application, choose its locale policy, and keep catalog loading inside the adapter.

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 →

First-party integrations

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

Integration stability →

Frontend and full-stack adapters

Backend integrations

03 — Fast

Checked performance

Less work in the browser, on the server, and in your toolchain.

Macros become compiled message lookups. Browser adapters deliver active-locale fragments along the module graph, and server requests reuse immutable catalogs. The native CLI keeps extraction and catalog updates fast as the source tree grows.

Compiled messages, no runtime ICU parser

ICU stays in your source and catalogs. Compilation checks it and emits executable messages for development and production, so application runtimes do not parse it during rendering.

More →

Translation fragments follow your code

Browser adapters select the active document locale and load a module's message dependencies before it runs. Lazy application modules bring their additional translation fragments with them.

More →

Shared catalogs, isolated requests

Servers load a complete active-locale catalog on demand and share its immutable messages. Each request keeps its own locale and formatter state without rebuilding the full message map.

More →
Watch translation fragments load
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*1×
React Intlextraction only · narrower scope424 ms5×
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

04 — Your next step

Choose a path

Try it in your stack, then inspect what matters to your team.

Set up a first translation yourself or with the repository's agent skill. Explore locale policy, architecture, and reproducible evidence as your application needs them.

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 22 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 has a focused browser proof; public hosting is pending.

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 OR Apache-2.0 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 to know before you adopt it.

Check integration stability, catalog ownership, and how Palamedes fits your translation workflow.

01Is Palamedes ready for production use?

Check the package version and host you intend to adopt. The 2.0 implementation is available in the repository and publication remains held. Stable APIs follow SemVer; Waku, Remix v3, and React Router RSC retain Preview contracts. The stability guide, checked examples, and release notes describe the supported paths.

02Which frameworks does Palamedes support?

Palamedes has first-party integrations for Next.js, TanStack Start, Solid, Waku, React Router, Remix v3, and Vite. Waku, Remix v3, and the separate React Router RSC adapter are Preview surfaces. The framework matrix shows application verification; the stability guide describes API guarantees.

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?

The repository includes a Lingui migration guide and an agent skill for Next.js and Vite/React. Migration depends on the source model and IDs; the skill inventories them and preserves existing PO translations before changing catalogs. Other stacks require their own migration assessment.

Put a durable i18n model in your repository.