Typed i18n. Real SSR. Clean Angular APIs.
Etyma gives Angular, AnalogJS and Astro teams typed JSON catalogs, MessageFormat 2 with typed params, localized URLs, translated SSR HTML and hydration-safe lazy locale loading.
pnpm add @etyma/core- Angular
- 21 and 22
- AnalogJS
- 2.6 and 2.7
- Astro
- 6 and 7
- Locales
- EN / ES / UK
const i18n = defineRemoteI18n({
locales: ['en', 'es', 'uk'],
sourceLocale: 'en',
contract,
loaders: {
en: createHttpMessageLoader(localeUrl),
es: createHttpMessageLoader(localeUrl),
uk: createHttpMessageLoader(localeUrl)
}
});The i18n layer Angular apps should have by default.
Typed internationalization for Angular and AnalogJS
A promise you can build a product on.
Every documented export, generated format, diagnostic code and CLI exit code keeps its meaning for every 1.x release. New capabilities arrive as minors, never as surprises.
Mistakes fail in TypeScript, not in production.
Keys, parameter names and parameter types come from your catalog. A typo, a missing variable or a string where a number belongs is a compile error — in code and in Angular templates.
const { t } = injectI18n(i18n);
t('home.title'); // ok
t('home.titel'); // unknown key
t('footer.rights'); // year required
t('footer.rights', { year: 'x' }); // not a number
t('footer.rights', { year: 2026 });Define once. Route by URL. Hydrate without flicker.
Etyma keeps the source catalog typed, secondary catalogs lazy, and the visible page aligned with the address bar.
Catalogs and contracts checked in CI, not in production.
@etyma/cli validates every locale against the source and generates the typed contract for a JSON source. --check verifies the committed contract without writing anything, so a stale type never reaches main. etyma analyze finds unknown keys in JS/TS, Angular templates and Astro files.
# CI: validate Glossa, then build
etyma validate --remote "https://glossa.andersseen.dev/i18n/etyma-www/{locale}.json" \
--locales en,es,uk --source en
pnpm typecheck && pnpm buildOne portable core, adapters for three frameworks, tooling for CI.
@etyma/core owns catalogs, MessageFormat 2 and types. @etyma/angular, @etyma/analog and @etyma/astro bring them to each framework. @etyma/tooling and @etyma/cli keep catalogs and contracts honest.
Ship typed, translated, server-rendered.
Start with the docs, or read the source. Etyma is MIT licensed and developed in the open.