Files
service-finder/docs/i18n_duplicate_key_analysis.md
2026-06-19 09:09:24 +00:00

243 lines
13 KiB
Markdown

# 🌐 i18n Duplikált Kulcsok Összehasonlító Elemzése
**Dátum:** 2026-06-19
**Készítette:** Rendszer-Architect
**Cél:** Nyelvi modulok (i18n) kulcsainak felmérése, duplikációk azonosítása, optimalizálási javaslat
---
## 1. Feltárt Fájlok Áttekintése
Összesen **8 i18n fájl** található a projektben, két elkülönült rendszerben:
### 1.1 Frontend (vue-i18n, TypeScript) — `frontend/src/i18n/`
| Fájl | Sorok | Hatókör | Státusz |
|------|-------|---------|---------|
| en.ts | ~1603 | Teljes (25 szekció) | ✅ Teljes |
| hu.ts | ~1600 | Teljes (25 szekció) | ✅ Teljes |
| de.ts | ~83 | Részleges: menu, header, dashboard, zen, auth | ⚠️ Hiányos |
| ro.ts | ~83 | Részleges: menu, header, dashboard, zen, auth | ⚠️ Hiányos |
| cz.ts | ~83 | Részleges: menu, header, dashboard, zen, auth | ⚠️ Hiányos |
| sk.ts | ~83 | Részleges: menu, header, dashboard, zen, auth | ⚠️ Hiányos |
### 1.2 Backend (statikus JSON) — `backend/static/locales/`
| Fájl | Sorok | Hatókör | Státusz |
|------|-------|---------|---------|
| en.json | ~76 | AUTH, SENTINEL, EMAIL, ORGANIZATION | ✅ Teljes |
| hu.json | ~83 | AUTH, SENTINEL, EMAIL, ORGANIZATION | ⚠️ Aszimmetrikus |
> **⚠️ Fontos:** A frontend és backend rendszerek **teljesen elkülönülnek**. Más kulcs-sémát használnak (dot-notation vs UPPER_SNAKE_CASE), így közöttük NINCS duplikáció.
---
## 2. Frontend Kulcsok Hierarchikus Szerkezete
A frontend i18n rendszer 25 gyökér-szekcióra tagolódik:
```
common (9 kulcs) — Általános (cancel, save, select, year, mileage, stb.)
subscription (11) — Előfizetések
landing (20+) — Nyitóoldal
menu (8) — Navigációs menü
garage (18) — Garázs felület
vehicleDetail (20+) — Jármű részletek
header (35+) — Fejléc
dashboard (40+) — Irányítópult
finance (25+) — Pénzügyi motor
zen (2) — Zen mód
auth (50+) — Bejelentkezés, regisztráció
profile (60+) — Felhasználói profil
kyc (20+) — KYC
verifyEmail (15+) — E-mail megerősítés
company (70+) — Cég műveletek
organization (2) — Szervezeti név
address (7) — Cím komponensek
servicebook (15+) — Szervizkönyv
vehicle (200+) — Jármű adatok
serviceFinder (30+) — Szervizkereső
provider (60+) — Szolgáltató adatok
categories (4) — Kategóriák
gamification (2) — Gamifikáció
admin.services (20+) — Admin: szolgáltatások
admin.packages (30+) — Admin: csomagok
admin.users (30+) — Admin: felhasználók
```
---
## 3. Duplikált Kulcsok Kategorizált Listája
### 3.1 ✅ Pontos Egyezések (Biztonságosan Összevonható)
Ezek a kulcsok **angolban és magyarban is azonos értéket** adnak vissza. Egyetlen közös kulccsá vonhatók össze.
| # | Érintett Kulcsok | EN érték | HU érték | Előfordulás |
|---|-----------------|----------|----------|-------------|
| 1 | common.cancel / profile.cancel / servicebook.cancel | "Cancel" | "Mégse" | **3 helyen** |
| 2 | common.save / profile.save | "Save" | "Mentés" | **2 helyen** |
| 3 | common.saving / servicebook.saving / vehicle.saving / admin.services.saving / admin.packages.saving | "Saving..." | "Mentés..." | **5 helyen** |
| 4 | common.back / kyc.back / company.back | "Back" | "Vissza" | **3 helyen** |
| 5 | common.mileage / garage.mileage / vehicleDetail.mileage | "Mileage" | "Futásteljesítmény" | **3 helyen** |
| 6 | common.year / garage.year | "Year" | "Évjárat" | **2 helyen** |
| 7 | common.retry / dashboard.errorRetry | "Retry" | "Újrapróbálkozás" | **2 helyen** |
| 8 | garage.noPlate / vehicleDetail.noPlate | "No Plate" | "Nincs rendszám" | **2 helyen** |
| 9 | garage.nextService / vehicleDetail.nextService / vehicle.nextService | "Next Service" | "Következő Szerviz" | **3 helyen** |
| 10 | vehicleDetail.noData / vehicle.noData | "No data" | "Nincs adat" | **2 helyen** |
| 11 | header.subtitle / dashboard.subtitle | "Your dashboard and vehicle overview" | "Irányítópultod és járműveid áttekintése" | **2 helyen ⭐** |
| 12 | garage.backToGarage / profile.backToGarage | "Back to Garage" | "Vissza a Garázsba" | **2 helyen** |
| 13 | header.profile / profile.title | "Profile Settings" | "Profil beállítások" | **2 helyen** |
| 14 | dashboard.statusActive / company.fleetActive / admin.users.status_active | "Active" | "Aktív" | **3 helyen** |
| 15 | vehicleDetail.vin / vehicle.label_vin | "VIN (Chassis Number)" | "Alvázszám (VIN)" | **2 helyen** |
| 16 | kyc.country / company.country / profile.country | "Country" | "Ország" | **3 helyen** |
| 17 | kyc.zipCode / company.zipCode / profile.zipCode | "ZIP Code" | "Irányítószám" | **3 helyen** |
| 18 | kyc.city / company.city / profile.city | "City" | "Város" | **3 helyen** |
| 19 | kyc.houseNumber / company.houseNumber / profile.houseNumber | "House Number" | "Házszám" | **3 helyen** |
| 20 | profile.stairwell / company.stairwell | "Stairwell" | "Lépcsőház" | **2 helyen** |
| 21 | profile.floor / company.floor | "Floor" | "Emelet" | **2 helyen** |
| 22 | profile.door / company.door | "Door" | "Ajtó" | **2 helyen** |
| 23 | profile.parcelId / company.parcelId | "Parcel ID" | "Helyrajzi szám" | **2 helyen** |
| 24 | kyc.streetName / company.streetName / provider.streetNameLabel | "Street Name" | "Utca neve" | **3 helyen** |
| 25 | kyc.streetType / company.streetType | "Type" | "Típus" | **2 helyen** |
> ⭐ A **#11** (header.subtitle = dashboard.subtitle) a legszembetűnőbb: **teljesen azonos mondat**, mindkét nyelven. Egyértelműen összevonandó.
### 3.2 ⚠️ Kis Eltéréssel (Egyedi Kontextus, Megfontolandó)
| # | Érintett Kulcsok | EN érték | HU érték(ek) | Megjegyzés |
|---|-----------------|----------|-------------|------------|
| 26 | common.cancel vs company.cancel vs admin.services.cancel | "Cancel" | "Mégse" / "Mégsem" | "Mégsem" elütés? |
| 27 | finance.retry vs common.retry vs dashboard.errorRetry | "Retry" | "Újra" / "Újrapróbálkozás" | finance.retry rövidebb |
| 28 | vehicleDetail.vin vs vehicle.label_vin | "VIN" / "VIN (Chassis Number)" | "Alvázszám (VIN)" | EN nem azonos |
| 29 | company.streetType vs profile.streetType | "Type" / "Street Type" | "Típus" / "Közterület jellege" | Profile formalisabb |
| 30 | company.email vs provider.emailLabel | "Email" / "Email" | "E-mail" / "E-mail cím" | Provider explicitabb |
| 31 | company.phone vs provider.phoneLabel | "Phone" / "Phone" | "Telefonszám" / "Telefon" | Különböző hossz |
| 32 | dashboard.addVehicle vs menu.addVehicle | "+ Add Vehicle" / "+ Add New Vehicle" | "+ Jármű Hozzáadása" / "+ Új Jármű Hozzáadása" | Menü-ben "New" |
### 3.3 🔄 Jármű Funkciók Átfedései
A vehicle.features (~130), vehicle.motorcycleFeatures (~70), vehicle.lcvFeatures (~40) és vehicle.hgvFeatures (~90) között jelentős átfedés.
#### Pontos egyezések (összevonható):
| Kulcs | EN | HU | Érintett szekciók |
|-------|----|----|------------------|
| cruise_control | "Cruise Control" | "Tempomat" | features, motorcycleFeatures, lcvFeatures |
| alloy_wheels | "Alloy Wheels" | "Könnyűfém felni" | features, lcvFeatures |
| garage_kept | "Garage Kept" | "Garázsban tartott" | features, motorcycleFeatures |
| xenon_headlights | "Xenon Headlights" | "Xenon fényszóró" | features, lcvFeatures |
| fog_lights | "Fog Lights" | "Ködlámpa" | features, lcvFeatures |
| sunroof | "Sunroof" | "Napfénytető" | features, lcvFeatures |
| heated_seat | "Heated Seat" | "Fűthető ülés" | motorcycleFeatures, lcvFeatures |
| navigation | "Navigation (GPS)" | "Navigáció (GPS)" | features, hgvFeatures |
| apple_carplay | "Apple CarPlay" | "Apple CarPlay" | features, hgvFeatures |
| android_auto | "Android Auto" | "Android Auto" | features, hgvFeatures |
| bluetooth | "Bluetooth" | "Bluetooth" | features, hgvFeatures |
| wireless_charging | "Wireless Charging" | "Vezeték nélküli töltő" | features, hgvFeatures |
| dab_radio | "DAB+ Digital Radio" | "DAB+ digitális rádió" | features, hgvFeatures |
| premium_sound | "Premium Sound System" | "Prémium hangrendszer" | features, hgvFeatures |
| wifi_hotspot | "WiFi Hotspot" | "WiFi Hotspot" | features, hgvFeatures |
| adaptive_cruise | "Adaptive Cruise Control (ACC)" | "Adaptív tempomat (ACC)" | features, hgvFeatures |
| 360_camera | "360° Camera" | "360°-os kamera" | features, hgvFeatures |
| parking_sensors_rear | "Rear Parking Sensors" | "Hátsó parkolóérzékelők" | features, lcvFeatures |
#### Eltérő magyar fordítás (manuális átgondolást igényel):
| Kulcs | EN (features) | EN (másik) | HU (features) | HU (másik) | Forrás |
|-------|--------------|------------|---------------|------------|--------|
| abs | "ABS" | "ABS" | "ABS" | "ABS (blokkolásgátló)" | motorcycleFeatures |
| gps_tracker | "GPS Tracker" | "GPS Tracker" | "GPS követő" | "GPS nyomkövető" | lcvFeatures, hgvFeatures |
| alarm | "Alarm System" | "Alarm" | "Riasztórendszer" | "Riasztó" | motorcycleFeatures, lcvFeatures |
| first_owner | "First Owner" | "First Owner" | "Első tulajdonos" | "Első tulajdonostól" | motorcycleFeatures |
| service_book | "Service Book" | "Service Book" | "Szervizkönyvvel" | "Szervizkönyv" | motorcycleFeatures |
| isofix | "ISOFIX" | "ISOFIX Child Seat Anchors" | "Isofix" | "Isofix gyerekülés rögzítés" | lcvFeatures |
| tow_bar | "Tow Bar" | "Tow Bar" | "Vontatóhorog (vonóhorog)" | "Vontatóhorog" | lcvFeatures |
| usb_charging | "USB Charging" | "USB Charging" | "USB töltőcsatlakozó" | "USB töltő" | hgvFeatures |
| subwoofer | "Subwoofer" | "Subwoofer" | "Mélynyomó (Subwoofer)" | "Mélynyomó" | hgvFeatures |
| rear_entertainment | "Rear Entertainment" | "Rear Entertainment System" | "Hátsó szórakoztató rendszer" | "Hátsó szórakoztató rendszer" | hgvFeatures |
| traction_control | "Traction Control (TCS)" | "Traction Control" | "Kipörgésgátló (TCS)" | "Kipörgésgátló" | hgvFeatures |
---
## 4. Backend JSON Aszimmetria
### en.json vs hu.json
| Kulcs | en.json | hu.json | Státusz |
|-------|---------|---------|---------|
| AUTH.ERROR.UNAUTHORIZED | ✅ "Unauthorized access" | ❌ **HIÁNYZIK** | Pótlandó hu.json-ban |
| COMMON.SAVE_SUCCESS | ❌ **HIÁNYZIK** | ✅ "Sikeres mentés!" | Pótlandó en.json-ban |
| SENTINEL.APPROVAL.REQUIRED | ❌ **HIÁNYZIK** | ✅ "A kérelem jóváhagyása szükséges" | Pótlandó en.json-ban |
A fennmaradó ~40 kulcs mindkét fájlban azonos szerkezetű.
---
## 5. Hiányos Fordítások (de, ro, cz, sk)
A 4 részleges fájl mindegyike **csak 5 szekciót** fed le a 25-ből:
| Szekció | de.ts | ro.ts | cz.ts | sk.ts |
|---------|-------|-------|-------|-------|
| menu | ✅ | ✅ | ✅ | ✅ |
| header | ✅ | ✅ | ✅ | ✅ |
| dashboard | ✅ | ✅ | ✅ | ✅ |
| zen | ✅ | ✅ | ✅ | ✅ |
| auth | ✅ | ✅ | ✅ | ✅ |
| Többi 20 szekció | ❌ | ❌ | ❌ | ❌ |
**Hiányzó:** common, subscription, landing, garage, vehicleDetail, finance, profile, kyc, verifyEmail, company, organization, address, servicebook, vehicle, serviceFinder, provider, categories, gamification, admin
---
## 6. Statisztikai Összesítés
| Mérőszám | Érték |
|----------|-------|
| Összes i18n fájl | **8 db** (6 frontend + 2 backend) |
| Frontend teljes kulcsok (en.ts) | **~900+** egyedi kulcs |
| Frontend hiányos fájlok | **4 db** (de, ro, cz, sk) — csak 20% lefedettség |
| Backend teljes kulcsok | **~55** db |
| **Pontos duplikációk (összevonható)** | **25 csoport**, ~60 kulcs érintett |
| **Közel-duplikációk (felülvizsgálandó)** | **7 csoport**, ~15 kulcs érintett |
| **Jármű feature átfedések (pontos)** | **18 csoport**, ~50 kulcs érintett |
| **Jármű feature átfedések (eltérő)** | **11 csoport**, ~25 kulcs érintett |
| **Backend hiányzó kulcsok** | **3 db** |
| **Összes optimalizálható kulcs** | **~150+** (a ~900-ból) ≈ **16-17%** |
---
## 7. Optimalizálási Javaslat
### 7.1 Azonnal összevonható (25 csoport)
Javasolt elnevezési konvenció: A leggyakrabban használt kulcsot tartsuk meg (pl. common), a többit alias-ként hivatkozzuk rá.
### 7.2 Jármű feature-ök konszolidációja
Javasolt struktúra: egy központi `vehicle.features` szekció, a motorcycleFeatures/lcvFeatures/hgvFeatures pedig hivatkozzon rá. Az eltérő magyar fordításokat egységesíteni kell.
### 7.3 Backend hiányzó kulcsok pótlása
- AUTH.ERROR.UNAUTHORIZED → hozzáadandó a hu.json-hoz
- COMMON.SAVE_SUCCESS → hozzáadandó az en.json-hoz
- SENTINEL.APPROVAL.REQUIRED → hozzáadandó az en.json-hoz
### 7.4 Várakozó lista (nem sürgős)
A 4 hiányos fordítást (de, ro, cz, sk) csak az optimalizálás után érdemes bővíteni.
---
## 8. Összefoglaló
A frontend i18n rendszerben **~150 kulcs (16-17%)** duplikált vagy átfedő. Összevonásukkal:
- **Karbantarthatóság javul:** egy helyen módosítandó fordítás
- **Konzisztencia nő:** nem jelenhet meg kétféleképp ugyanaz
- **Fájlméret csökken:** ~5-10% méretcsökkenés
- **Backend hiba javul:** 3 hiányzó kulcs pótlása
**A véglegesítéshez kérjük a felhasználó jóváhagyását.**