# DigiDala — Alpha 50.9 Changeset

## Scope

Alpha.50.9 introduces the first localization foundation for the DigiDala Mini App.

### Mini App localization

- Added dedicated i18n modules for English and Russian.
- Added automatic locale selection from Telegram `language_code`.
- Added persisted manual locale selection with manual preference taking priority.
- English is the fallback locale.
- Moved approved user-facing Russian/English copy out of the primary renderer where localization keys are now used.
- Added localization coverage for the approved Mini App interface, states, errors, Archive, completion and ritual UI.
- Added localized accessibility labels and dynamic UI strings.
- Added regression coverage for locale selection and localized UI bindings.

### Campaign localization

- Added campaign localization storage.
- Campaign titles, descriptions and goal text can be stored independently for RU and EN.
- Active campaign presentation resolves localized content with English fallback.
- Archive presentation resolves historical localized campaign content where localized archive data exists.
- Campaign localization data is stored separately from Mandala mechanics and cell state.

### Bot-managed campaign content

- Competitive campaign creation/editing supports localized campaign content.
- Backend campaign updates no longer accept a standalone legacy `description` without localization data.

### Existing campaign safety

No changes were made to:

- Mandala cell ownership;
- Mandala cycles;
- Pix balances or cell prices;
- payment verification;
- destruction lifecycle;
- campaign activation and queue mechanics;
- archive mechanics;
- Mandala routing or share-link mechanics.

The existing Special/Daughter campaign remains the same campaign object; the localization layer only adds localized presentation data.

### Verification / status

```text
Structure: OK
JavaScript syntax: OK
Unit: 35/35
Integration: 47/47
API: 17/17
Total: 99/99
```

This document records the Alpha.50.9 localization foundation checkpoint. It was superseded by the subsequent Alpha.50.9.1 and Alpha.50.9.2 release chain, which completed the Telegram bot localization and its follow-up QA. No separate final release/Telegram-QA claim is made for Alpha.50.9 itself.
