Files
orion/static/locales/lb.json
Samir Boulahtit d7a0ff8818 refactor: complete module-driven architecture migration
This commit completes the migration to a fully module-driven architecture:

## Models Migration
- Moved all domain models from models/database/ to their respective modules:
  - tenancy: User, Admin, Vendor, Company, Platform, VendorDomain, etc.
  - cms: MediaFile, VendorTheme
  - messaging: Email, VendorEmailSettings, VendorEmailTemplate
  - core: AdminMenuConfig
- models/database/ now only contains Base and TimestampMixin (infrastructure)

## Schemas Migration
- Moved all domain schemas from models/schema/ to their respective modules:
  - tenancy: company, vendor, admin, team, vendor_domain
  - cms: media, image, vendor_theme
  - messaging: email
- models/schema/ now only contains base.py and auth.py (infrastructure)

## Routes Migration
- Moved admin routes from app/api/v1/admin/ to modules:
  - menu_config.py -> core module
  - modules.py -> tenancy module
  - module_config.py -> tenancy module
- app/api/v1/admin/ now only aggregates auto-discovered module routes

## Menu System
- Implemented module-driven menu system with MenuDiscoveryService
- Extended FrontendType enum: PLATFORM, ADMIN, VENDOR, STOREFRONT
- Added MenuItemDefinition and MenuSectionDefinition dataclasses
- Each module now defines its own menu items in definition.py
- MenuService integrates with MenuDiscoveryService for template rendering

## Documentation
- Updated docs/architecture/models-structure.md
- Updated docs/architecture/menu-management.md
- Updated architecture validation rules for new exceptions

## Architecture Validation
- Updated MOD-019 rule to allow base.py in models/schema/
- Created core module exceptions.py and schemas/ directory
- All validation errors resolved (only warnings remain)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-01 21:02:56 +01:00

196 lines
5.9 KiB
JSON

{
"common": {
"save": "Späicheren",
"cancel": "Ofbriechen",
"delete": "Läschen",
"edit": "Änneren",
"create": "Erstellen",
"update": "Aktualiséieren",
"add": "Derbäisetzen",
"remove": "Ewechhuelen",
"close": "Zoumaachen",
"back": "Zréck",
"next": "Weider",
"previous": "Virdrun",
"submit": "Ofschécken",
"confirm": "Bestätegen",
"yes": "Jo",
"no": "Nee",
"ok": "OK",
"done": "Fäerdeg",
"loading": "Lueden...",
"saving": "Späicheren...",
"processing": "Veraarbechten...",
"searching": "Sichen...",
"refresh": "Aktualiséieren",
"retry": "Nach eng Kéier probéieren",
"view": "Kucken",
"view_details": "Detailer kucken",
"view_all": "Alles kucken",
"show_more": "Méi weisen",
"show_less": "Manner weisen",
"search": "Sichen",
"filter": "Filteren",
"sort": "Sortéieren",
"export": "Exportéieren",
"import": "Importéieren",
"download": "Eroflueden",
"upload": "Eroplueden",
"select": "Auswielen",
"select_all": "Alles auswielen",
"deselect_all": "Alles ofwielen",
"actions": "Aktiounen",
"status": "Status",
"date": "Datum",
"time": "Zäit",
"name": "Numm",
"email": "E-Mail",
"phone": "Telefon",
"address": "Adress",
"description": "Beschreiwung",
"notes": "Notizen",
"total": "Total",
"amount": "Betrag",
"quantity": "Quantitéit",
"price": "Präis",
"items": "Artikelen",
"id": "ID",
"type": "Typ",
"category": "Kategorie",
"tags": "Tags",
"active": "Aktiv",
"inactive": "Inaktiv",
"enabled": "Aktivéiert",
"disabled": "Deaktivéiert",
"pending": "Aussteesend",
"completed": "Fäerdeg",
"failed": "Feelgeschloen",
"success": "Erfollegräich",
"error": "Feeler",
"warning": "Warnung",
"info": "Info",
"all": "Alles",
"none": "Keen",
"other": "Anerer",
"unknown": "Onbekannt",
"not_available": "N/A",
"required": "Obligatoresch",
"optional": "Optional",
"language": "Sprooch",
"settings": "Astellungen",
"help": "Hëllef",
"support": "Ënnerstëtzung",
"contact": "Kontakt",
"about": "Iwwer eis",
"privacy": "Dateschutz",
"terms": "Konditiounen",
"copyright": "Copyright"
},
"auth": {
"sign_in": "Umellen",
"sign_out": "Ofmellen",
"sign_up": "Registréieren",
"login": "Login",
"logout": "Logout",
"register": "Registréieren",
"forgot_password": "Passwuert vergiess?",
"reset_password": "Passwuert zrécksetzen",
"change_password": "Passwuert änneren",
"username": "Benotzernumm",
"password": "Passwuert",
"confirm_password": "Passwuert bestätegen",
"current_password": "Aktuellt Passwuert",
"new_password": "Neit Passwuert",
"remember_me": "Un mech erënneren",
"email_placeholder": "Gitt Är E-Mail an",
"username_placeholder": "Gitt Äre Benotzernumm an",
"password_placeholder": "Gitt Äert Passwuert an",
"login_success": "Login erfollegräich",
"login_failed": "Login feelgeschloen",
"logout_success": "Dir sidd ofgemellt",
"invalid_credentials": "Ongëltege Benotzernumm oder Passwuert",
"session_expired": "Är Sessioun ass ofgelaf. Mellt Iech w.e.g. erëm un.",
"account_locked": "Äre Kont ass gespaart",
"account_inactive": "Äre Kont ass inaktiv"
},
"nav": {
"dashboard": "Dashboard",
"products": "Produkter",
"orders": "Bestellungen",
"customers": "Clienten",
"inventory": "Inventar",
"analytics": "Analysen",
"reports": "Rapporten",
"settings": "Astellungen",
"profile": "Profil",
"team": "Team",
"marketplace": "Marchéplaz",
"integrations": "Integratiounen",
"notifications": "Notifikatiounen",
"help": "Hëllef",
"home": "Heem",
"shop": "Buttek",
"cart": "Kuerf",
"checkout": "Bezuelen",
"account": "Kont",
"wishlist": "Wonschlëscht"
},
"errors": {
"generic": "E Feeler ass opgetrueden",
"not_found": "Net fonnt",
"unauthorized": "Net autoriséiert",
"forbidden": "Verbueden",
"bad_request": "Ongëlteg Ufro",
"server_error": "Server Feeler",
"network_error": "Netzwierk Feeler",
"timeout": "Ufro Timeout",
"validation_error": "Validéierungsfeeler",
"field_required": "Dëst Feld ass obligatoresch",
"invalid_email": "Ongëlteg E-Mail Adress",
"invalid_phone": "Ongëlteg Telefonsnummer",
"password_mismatch": "Passwierder stëmmen net iwwereneen",
"password_too_short": "Passwuert ass ze kuerz",
"try_again": "Probéiert w.e.g. nach eng Kéier",
"contact_support": "Kontaktéiert w.e.g. den Support wann de Problem bestoe bleift"
},
"confirmations": {
"delete_title": "Läsche bestätegen",
"delete_message": "Sidd Dir sécher datt Dir dësen Artikel läsche wëllt?",
"delete_warning": "Dës Aktioun kann net réckgängeg gemaach ginn.",
"cancel_title": "Ofbriechen bestätegen",
"cancel_message": "Sidd Dir sécher datt Dir ofbrieche wëllt?",
"unsaved_changes": "Dir hutt net gespäichert Ännerungen. Sidd Dir sécher datt Dir fortfuere wëllt?",
"logout_title": "Ofmellen bestätegen",
"logout_message": "Sidd Dir sécher datt Dir Iech ofmelle wëllt?"
},
"footer": {
"all_rights_reserved": "All Rechter reservéiert",
"powered_by": "Ënnerstëtzt vun"
},
"time": {
"now": "Elo",
"today": "Haut",
"yesterday": "Gëschter",
"tomorrow": "Muer",
"this_week": "Dës Woch",
"last_week": "Lescht Woch",
"this_month": "Dëse Mount",
"last_month": "Läschte Mount",
"this_year": "Dëst Joer",
"ago": "hier",
"seconds": "Sekonnen",
"minutes": "Minutten",
"hours": "Stonnen",
"days": "Deeg",
"weeks": "Wochen",
"months": "Méint",
"years": "Joer"
},
"formats": {
"date": "DD.MM.YYYY",
"time": "HH:mm",
"datetime": "DD.MM.YYYY HH:mm",
"currency": "{amount} {symbol}"
}
}