[Fázis 3/7] Backend i18n helper megírása (app/core/i18n.py) #342

Closed
opened 2026-06-30 00:38:26 +02:00 by kincses · 3 comments
Owner

Mérföldkő: Gamification i18n Migráció\nCél: Backend i18n segédosztály létrehozása a backend/static/locales/*.json fájlok betöltésére és kulcs alapú szöveg lekérésre\n\n### 🔗 Függőségek (Dependencies)\n- Bemenet (Mikre támaszkodik): backend/static/locales/en.json, backend/static/locales/hu.json\n- Kimenet (Mik támaszkodnak rá): Fázis 5 (Backend API endpointok átalakítása)\n\n### 📝 Elemzés\nLétre kell hozni a backend/app/core/i18n.py fájlt, amely:\n1. JSON fájlokból cache-elt szótárat épít\n2. get_locale(lang) függvény a nyelvi fájl betöltéséhez\n3. t(key, lang, **kwargs) függvény pont-notation kulcsok feloldásához\n4. Fallback: ha a kulcs nem található, visszaadja a kulcs nevét\n5. A felhasználó nyelvi preferenciájának figyelembevétele (Accept-Language header)

**Mérföldkő:** Gamification i18n Migráció\n**Cél:** Backend i18n segédosztály létrehozása a backend/static/locales/*.json fájlok betöltésére és kulcs alapú szöveg lekérésre\n\n### 🔗 Függőségek (Dependencies)\n- **Bemenet (Mikre támaszkodik):** backend/static/locales/en.json, backend/static/locales/hu.json\n- **Kimenet (Mik támaszkodnak rá):** Fázis 5 (Backend API endpointok átalakítása)\n\n### 📝 Elemzés\nLétre kell hozni a backend/app/core/i18n.py fájlt, amely:\n1. JSON fájlokból cache-elt szótárat épít\n2. get_locale(lang) függvény a nyelvi fájl betöltéséhez\n3. t(key, lang, **kwargs) függvény pont-notation kulcsok feloldásához\n4. Fallback: ha a kulcs nem található, visszaadja a kulcs nevét\n5. A felhasználó nyelvi preferenciájának figyelembevétele (Accept-Language header)
kincses added the Status: To DoType: Feature labels 2026-06-30 00:38:26 +02:00
kincses added Status: In Progress and removed Status: To Do labels 2026-06-30 01:28:43 +02:00
kincses started working 2026-06-30 01:28:43 +02:00
Author
Owner

▶️ Munka megkezdve: 2026-06-30 01:28:43

▶️ **Munka megkezdve:** 2026-06-30 01:28:43
kincses added Status: Done and removed Status: In Progress labels 2026-06-30 01:32:11 +02:00
kincses worked for 3 minutes 2026-06-30 01:32:11 +02:00
Author
Owner

Munka befejezve: 2026-06-30 01:32:11

Technikai Összefoglaló:
Backend i18n helper (app/core/i18n.py) teljes átírása: JSON locale cache, dot-notation kulcsfeloldás, {{variable}} interpoláció, context locale integráció (I18nMiddleware), EN fallback, reload_locales() támogatás. 10/10 teszt sikeres.

⏱️ Az idő rögzítve.

✅ **Munka befejezve:** 2026-06-30 01:32:11 **Technikai Összefoglaló:** Backend i18n helper (app/core/i18n.py) teljes átírása: JSON locale cache, dot-notation kulcsfeloldás, {{variable}} interpoláció, context locale integráció (I18nMiddleware), EN fallback, reload_locales() támogatás. 10/10 teszt sikeres. ⏱️ *Az idő rögzítve.*
Author
Owner

Gitea #342 - Backend i18n helper - KÉSZ

Elvégzett munka

A backend/app/core/i18n.py fájl teljes átírása a következő funkciókkal:

Funkció Leírás
t(key, lang, **kwargs) Dot-notation kulcsfeloldás (pl. "AUTH.LOGIN.SUCCESS") {{variable}} interpolációval
get_locale(lang) Teljes nyelvi szótár visszaadása
reload_locales() Cache újratöltés futásidőben (pl. translation update után)

Locale detekciós prioritás

  1. Explicit lang paraméter
  2. Request context locale (I18nMiddleware által beállítva Accept-Language headerből vagy ?lang= query paraméterből)
  3. Default "hu"

Fallback lánc

  1. Kért nyelv → 2. Angol (EN) → 3. Bármely elérhető nyelv → 4. Kulcsnév visszaadása

Többcímű locale path keresés

  • /app/backend/static/locales (Docker konténer)
  • /opt/docker/dev/service_finder/backend/static/locales (Host)
  • backend/static/locales (relatív)
  • static/locales (relatív)

Tesztek

10/10 teszt sikeres: EN, HU, változó interpoláció, fallback, context locale, reload

## ✅ Gitea #342 - Backend i18n helper - KÉSZ ### Elvégzett munka A [`backend/app/core/i18n.py`](backend/app/core/i18n.py) fájl teljes átírása a következő funkciókkal: | Funkció | Leírás | |---------|--------| | `t(key, lang, **kwargs)` | Dot-notation kulcsfeloldás (pl. `"AUTH.LOGIN.SUCCESS"`) `{{variable}}` interpolációval | | `get_locale(lang)` | Teljes nyelvi szótár visszaadása | | `reload_locales()` | Cache újratöltés futásidőben (pl. translation update után) | ### Locale detekciós prioritás 1. Explicit `lang` paraméter 2. Request context locale (I18nMiddleware által beállítva Accept-Language headerből vagy `?lang=` query paraméterből) 3. Default `"hu"` ### Fallback lánc 1. Kért nyelv → 2. Angol (EN) → 3. Bármely elérhető nyelv → 4. Kulcsnév visszaadása ### Többcímű locale path keresés - `/app/backend/static/locales` (Docker konténer) - `/opt/docker/dev/service_finder/backend/static/locales` (Host) - `backend/static/locales` (relatív) - `static/locales` (relatív) ### Tesztek ✅ 10/10 teszt sikeres: EN, HU, változó interpoláció, fallback, context locale, reload
Sign in to join this conversation.