13 KiB
🌐 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.