# gettext_ts v0.2.0 - Table of Contents

> Gettext catalogs generated to TypeScript — backend-derived i18n for split Elixir/TS apps

## Pages

- [GettextTs](readme.md)
- [Changelog](changelog.md)

## Modules

- [GettextTs](GettextTs.md): Gettext catalogs, generated to TypeScript.
- [GettextTs.AshExtension](GettextTs.AshExtension.md): Registers `mix gettext_ts.codegen` with `mix ash.codegen` via Ash's
generic codegen callback. Add to any domain
- [GettextTs.Catalog](GettextTs.Catalog.md): Reads the Gettext tree into a nested `locale → domain → msgid → msgstr`
structure. Nesting is the collision fix: the same msgid may legitimately
carry different translations in different domains.

- [GettextTs.Config](GettextTs.Config.md): Configuration access with defaults. All keys under `:gettext_ts`.
- [GettextTs.T](GettextTs.T.md): The extractable translation macro, with a runtime override hook.

## Mix Tasks

- [mix gettext_ts.codegen](Mix.Tasks.GettextTs.Codegen.md): Generates typed TypeScript catalogs from the Gettext PO tree.
- [mix gettext_ts.extract](Mix.Tasks.GettextTs.Extract.md): Extracts `t("...")` msgids from frontend TypeScript/TSX files into the
default domain's POT, then runs `mix gettext.merge` so every locale's PO
picks them up.

