# AshGettext v0.1.0 - API Reference

## Modules

- [AshGettext.Calculations.EnumLabel](AshGettext.Calculations.EnumLabel.md): The translated label of an enum attribute, in the language of the query's
actor. With no actor, Gettext's current locale.
- [AshGettext.Resource.Transformers.AddEnumLabels](AshGettext.Resource.Transformers.AddEnumLabels.md): Adds a public `<attribute>_label` calculation for every attribute whose
type is an `AshGettext.Enum` (or a list of one). A resource that already has
a field with that name keeps it.

- [AshGettext.Resource.Verifiers.ValidateLabels](AshGettext.Resource.Verifiers.ValidateLabels.md): Fails compilation when a `label` in the resource's `gettext` block names an
attribute the resource does not have.

- Public API
  - [AshGettext](AshGettext.md): Translate the text an Ash app shows: strings, plurals, enum labels and attribute labels.
  - [AshGettext.Domain](AshGettext.Domain.md): Declares, once per Ash domain, how its action errors are translated.
  - [AshGettext.Enum](AshGettext.Enum.md): An `Ash.Type.Enum` whose `label/1` and `description/1` come back translated.
  - [AshGettext.Error](AshGettext.Error.md): A user-visible failure with a stable `code` and a translatable `message`.
  - [AshGettext.Resource](AshGettext.Resource.md): Opts a resource into translated action errors, enum labels and attribute names.

- Locales
  - [AshGettext.Locale.Normalizer](AshGettext.Locale.Normalizer.md): Reduce a locale as it arrives in the wild to one the catalogs actually have.
  - [AshGettext.Locale.Resolver](AshGettext.Locale.Resolver.md): Reads a user's language from the actor.

- How it works
  - [AshGettext.AshMessages](AshGettext.AshMessages.md): The sentences shown for Ash's own errors, which carry no message of their own.
  - [AshGettext.AshMessages.Translated](AshGettext.AshMessages.Translated.md): An Ash error whose text is now the translated sentence.
  - [AshGettext.Domain.Transformers.MarkTexts](AshGettext.Domain.Transformers.MarkTexts.md): Shows `mix gettext.extract` every text this domain's resources translate:
written attribute labels, literal `message`s in their DSL and in the app's
own validation, change and preparation modules they use, and the sentences
for Ash's own errors (`AshGettext.AshMessages`). See `AshGettext.Extractor`.
  - [AshGettext.Domain.Verifiers.ValidateResourceExtensions](AshGettext.Domain.Verifiers.ValidateResourceExtensions.md): Reports, at compile time, every resource of a domain that asked for it which
never added `AshGettext.Resource`.
  - [AshGettext.ErrorTranslation](AshGettext.ErrorTranslation.md): Turn an Ash error's message into the reader's language.
  - [AshGettext.ErrorTranslation.ErrorHandler](AshGettext.ErrorTranslation.ErrorHandler.md): The `error_handler` that `AshGettext.Resource` installs on write actions.
  - [AshGettext.Extractor](AshGettext.Extractor.md): Shows every text AshGettext translates to `mix gettext.extract`.
  - [AshGettext.Info](AshGettext.Info.md): Read a domain's `gettext do ... end` configuration.
  - [AshGettext.Installer](AshGettext.Installer.md): The source rewrites `mix ash_gettext.install` performs, as pure functions.
  - [AshGettext.Resource.Transformers.AttachErrorHandler](AshGettext.Resource.Transformers.AttachErrorHandler.md): Point every write action's `error_handler` at `AshGettext.ErrorTranslation.ErrorHandler`.

## Mix Tasks

- Mix tasks
  - [mix ash_gettext.install](Mix.Tasks.AshGettext.Install.md): Wire this application into `ash_gettext`.

