# План: Локалізація та I18n (Gettext)

## Огляд
Впровадження системи локалізації на основі **Gettext** для підтримки декількох мов. Базовою мовою інтерфейсу буде англійська, а українська буде надаватися через файли перекладу (`.po`/`.mo`). Це дозволить професійно керувати текстовими ресурсами та спростить додавання нових мов у майбутньому.

## Зміни в архітектурі
1. **Залежності**: Додавання крейту `tr` (або аналогічного, що підтримує кросплатформний gettext) до `Cargo.toml`.
2. **Ініціалізація**: Додавання коду ініціалізації локалізації при запуску програми (`main.rs`).
3. **Макроси**: Використання макросу `tr!` для кожної текстової мітки в UI.
4. **Ресурси**: Створення структури каталогів `locales/` для зберігання файлів перекладу.

## Етапи реалізації

### 1. Підготовка інфраструктури
- [x] Додати `tr = "0.1"` до `Cargo.toml`.
- [x] Встановити утиліти розробника: `xtr` (використано ручну підготовку для MVP), `gettext` (msgfmt).
- [x] Створити структуру каталогів: `locales/uk/LC_MESSAGES/`.

### 2. Рефакторинг коду (Етап "Англійська як база")
- [x] Замінити всі українські хардкод-рядки в `src/main.rs` на їх англійські відповідники.
- [x] Огорнути всі англійські рядки в макрос `tr!`.
- [x] Додати ініціалізацію локалей в `fn main()`:
  ```rust
  tr_init!("./locales");
  ```

### 3. Екстракція та переклад
- [x] Використати `xtr` для генерації файлу шаблону `locales/messages.pot` (підготовлено вручну).
- [x] Створити україномовний файл перекладу: `locales/uk.po`.
- [x] Виконати переклад рядків у `locales/uk.po`.

### 4. Компіляція та впровадження
- [x] Скомпілювати `.po` файли у бінарні `.mo`: `msgfmt locales/uk.po -o locales/uk/LC_MESSAGES/egui_pinger.mo`.
- [x] Налаштувати Cargo-скрипт або `include_bytes!` для вбудовування перекладів у бінарний файл.
- [x] Перевірити автоматичне визначення мови системи.

### 5. Тестування
- [x] Перевірити відображення інтерфейсу при `LANG=en_US.UTF-8`.
- [x] Перевірити відображення інтерфейсу при `LANG=uk_UA.UTF-8`.

## Критерії успіху
- Програма запускається і відображає англійський інтерфейс за замовчуванням.
- При запуску в україномовному середовищі всі мітки автоматично стають українськими.
- Відсутність хардкоджених рядків у файлі `src/main.rs`.
- Наявність валідної структури `.po` та `.mo` файлів.
