# Locale ## Overview A Locale represents a language or regional variation for content in Apiera. Locales enable multi-language product information, allowing you to maintain translated content for different markets. ## Basics ### Core fields **name** — Human-readable label for the locale (e.g., "Norwegian Bokmål", "English (US)"). **code** — Standard locale code, typically BCP 47 format (e.g., `nb-NO`, `en-US`). **isDefault** — Marks this locale as the organization's default language. ### Default locale One locale must be marked as default. The default locale has special behavior: - When you create or update an entity with localizable fields (e.g., name, description), those values are stored as content for the default locale. - If no default locale is configured, content operations will fail. Changing the default to a different locale doesn't migrate content—existing content entries remain tied to their original locales. ## Lifecycle Locales use activation rather than publishing. ### Status values | Status | Description | | --- | --- | | `draft` | Initial state, not available for content | | `active` | Available for creating localized content | | `inactive` | Temporarily disabled, existing content preserved | | `removed` | Soft-deleted, excluded from all operations | ### Transitions | Transition | Valid from | Results in | | --- | --- | --- | | `draft` | active, inactive, removed | draft | | `activate` | draft, inactive | active | | `deactivate` | active | inactive | | `remove` | draft, active, inactive | removed | | `restore` | removed | inactive | ## Error codes | Code | Description | | --- | --- | | `LOCALE_NOT_FOUND` | Locale does not exist | | `LOCALE_INVALID_TRANSITION` | Lifecycle transition not allowed | | `LOCALE_REMOVED` | Cannot modify a removed locale | | `LOCALE_NAME_REQUIRED` | Name field is required | | `LOCALE_NAME_EMPTY` | Name cannot be empty | | `LOCALE_CODE_REQUIRED` | Code field is required | | `LOCALE_CODE_EMPTY` | Code cannot be empty |