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>
204 lines
10 KiB
JSON
204 lines
10 KiB
JSON
{
|
|
"platform": {
|
|
"nav": {
|
|
"pricing": "Präisser",
|
|
"find_shop": "Fannt Äre Buttek",
|
|
"start_trial": "Gratis Testen",
|
|
"admin_login": "Admin Login",
|
|
"vendor_login": "Händler Login",
|
|
"toggle_menu": "Menü wiesselen",
|
|
"toggle_dark_mode": "Däischter Modus wiesselen"
|
|
},
|
|
"hero": {
|
|
"badge": "{trial_days}-Deeg gratis Testversioun - Keng Kreditkaart néideg",
|
|
"title": "Liichtt OMS fir Letzshop Verkeefer",
|
|
"subtitle": "Bestellungsverwaltung, Lager an Rechnungsstellung fir de lëtzebuergeschen E-Commerce. Schluss mat Tabellen. Féiert Äert Geschäft.",
|
|
"cta_trial": "Gratis Testen",
|
|
"cta_find_shop": "Fannt Äre Letzshop Buttek"
|
|
},
|
|
"pricing": {
|
|
"title": "Einfach, transparent Präisser",
|
|
"subtitle": "Wielt de Plang deen zu Ärer Firma passt. All Pläng enthalen eng {trial_days}-Deeg gratis Testversioun.",
|
|
"monthly": "Monatslech",
|
|
"annual": "Jäerlech",
|
|
"save_months": "Spuert 2 Méint!",
|
|
"most_popular": "AM BELÉIFSTEN",
|
|
"recommended": "EMPFOHLEN",
|
|
"contact_sales": "Kontaktéiert eis",
|
|
"start_trial": "Gratis Testen",
|
|
"per_month": "/Mount",
|
|
"per_year": "/Joer",
|
|
"custom": "Personnaliséiert",
|
|
"orders_per_month": "{count} Bestellungen/Mount",
|
|
"unlimited_orders": "Onbegrenzt Bestellungen",
|
|
"products_limit": "{count} Produkter",
|
|
"unlimited_products": "Onbegrenzt Produkter",
|
|
"team_members": "{count} Teammemberen",
|
|
"unlimited_team": "Onbegrenzt Team",
|
|
"letzshop_sync": "Letzshop Synchronisatioun",
|
|
"eu_vat_invoicing": "EU TVA Rechnungen",
|
|
"analytics_dashboard": "Analyse Dashboard",
|
|
"api_access": "API Zougang",
|
|
"multi_channel": "Multi-Channel Integratioun",
|
|
"products": "Produkter",
|
|
"team_member": "Teammember",
|
|
"unlimited": "Onbegrenzt",
|
|
"order_history": "Méint Bestellungshistorique",
|
|
"trial_note": "All Pläng enthalen eng {trial_days}-Deeg gratis Testversioun. Keng Kreditkaart néideg.",
|
|
"back_home": "Zréck op d'Haaptsäit"
|
|
},
|
|
"features": {
|
|
"letzshop_sync": "Letzshop Synchronisatioun",
|
|
"inventory_basic": "Basis Lagerverwaltung",
|
|
"inventory_locations": "Lagerstanduerten",
|
|
"inventory_purchase_orders": "Bestellungen",
|
|
"invoice_lu": "Lëtzebuerg TVA Rechnungen",
|
|
"invoice_eu_vat": "EU TVA Rechnungen",
|
|
"invoice_bulk": "Massrechnungen",
|
|
"customer_view": "Clientelëscht",
|
|
"customer_export": "Client Export",
|
|
"analytics_dashboard": "Analyse Dashboard",
|
|
"accounting_export": "Comptabilitéits Export",
|
|
"api_access": "API Zougang",
|
|
"automation_rules": "Automatiséierungsreegelen",
|
|
"team_roles": "Team Rollen an Autorisatiounen",
|
|
"white_label": "White-Label Optioun",
|
|
"multi_vendor": "Multi-Händler Ënnerstëtzung",
|
|
"custom_integrations": "Personnaliséiert Integratiounen",
|
|
"sla_guarantee": "SLA Garantie",
|
|
"dedicated_support": "Dedizéierte Kontobetreier"
|
|
},
|
|
"addons": {
|
|
"title": "Erweidert Är Plattform",
|
|
"subtitle": "Füügt Är Mark, professionell Email a verbessert Sécherheet derbäi.",
|
|
"per_year": "/Joer",
|
|
"per_month": "/Mount",
|
|
"custom_domain": "Eegen Domain",
|
|
"custom_domain_desc": "Benotzt Är eegen Domain (mengdomain.lu)",
|
|
"premium_ssl": "Premium SSL",
|
|
"premium_ssl_desc": "EV Zertifikat fir Vertrauensbadgen",
|
|
"email_package": "Email Package",
|
|
"email_package_desc": "Professionell Email Adressen"
|
|
},
|
|
"find_shop": {
|
|
"title": "Fannt Äre Letzshop Buttek",
|
|
"subtitle": "Verkaaft Dir schonn op Letzshop? Gitt Är Buttek URL an fir unzefänken.",
|
|
"placeholder": "Gitt Är Letzshop URL an (z.B. letzshop.lu/vendors/mäi-buttek)",
|
|
"button": "Mäi Buttek fannen",
|
|
"claim_shop": "Dëse Buttek reklaméieren",
|
|
"already_claimed": "Scho reklaméiert",
|
|
"no_account": "Kee Letzshop Kont?",
|
|
"signup_letzshop": "Registréiert Iech éischt bei Letzshop",
|
|
"then_connect": ", dann kommt zréck fir Äre Buttek ze verbannen.",
|
|
"search_placeholder": "Letzshop URL oder Butteknumm aginn...",
|
|
"search_button": "Sichen",
|
|
"examples": "Beispiller:",
|
|
"claim_button": "Dëse Buttek reklaméieren a gratis testen",
|
|
"not_found": "Mir konnten keen Letzshop Buttek mat dëser URL fannen. Iwwerpréift w.e.g. a probéiert nach eng Kéier.",
|
|
"or_signup": "Oder registréiert Iech ouni Letzshop Verbindung",
|
|
"need_help": "Braucht Dir Hëllef?",
|
|
"no_account_yet": "Dir hutt nach keen Letzshop Kont? Keen Problem!",
|
|
"create_letzshop": "Letzshop Kont erstellen",
|
|
"signup_without": "Ouni Letzshop registréieren",
|
|
"looking_up": "Sich Äre Buttek...",
|
|
"found": "Fonnt:",
|
|
"claimed_badge": "Scho reklaméiert"
|
|
},
|
|
"signup": {
|
|
"step_plan": "Plang wielen",
|
|
"step_shop": "Buttek reklaméieren",
|
|
"step_account": "Kont",
|
|
"step_payment": "Bezuelung",
|
|
"choose_plan": "Wielt Äre Plang",
|
|
"save_percent": "Spuert {percent}%",
|
|
"trial_info": "Mir sammelen Är Bezuelungsinformatiounen, awer Dir gitt eréischt nom Enn vun der Testperiod belaaschtt.",
|
|
"connect_shop": "Verbannt Äre Letzshop Buttek",
|
|
"connect_optional": "Optional: Verlinkt Äre Letzshop Kont fir Bestellungen automatesch ze synchroniséieren.",
|
|
"connect_continue": "Verbannen a weider",
|
|
"skip_step": "Dëse Schrëtt iwwersprangen",
|
|
"create_account": "Erstellt Äre Kont",
|
|
"first_name": "Virnumm",
|
|
"last_name": "Numm",
|
|
"company_name": "Firmennumm",
|
|
"email": "Email",
|
|
"password": "Passwuert",
|
|
"password_hint": "Mindestens 8 Zeechen",
|
|
"continue": "Weider",
|
|
"continue_payment": "Weider zur Bezuelung",
|
|
"back": "Zréck",
|
|
"add_payment": "Bezuelungsmethod derbäisetzen",
|
|
"no_charge_note": "Dir gitt eréischt nom Enn vun Ärer {trial_days}-Deeg Testperiod belaaschtt.",
|
|
"processing": "Veraarbechtung...",
|
|
"start_trial": "Gratis Testversioun starten",
|
|
"creating_account": "Erstellt Äre Kont..."
|
|
},
|
|
"success": {
|
|
"title": "Wëllkomm bei Wizamart!",
|
|
"subtitle": "Äre Kont gouf erstallt an Är {trial_days}-Deeg gratis Testversioun huet ugefaang.",
|
|
"what_next": "Wat kënnt duerno?",
|
|
"step_connect": "Letzshop verbannen:",
|
|
"step_connect_desc": "Füügt Äre API Schlëssel derbäi fir Bestellungen automatesch ze synchroniséieren.",
|
|
"step_invoicing": "Rechnungsstellung astellen:",
|
|
"step_invoicing_desc": "Konfiguréiert Är Rechnungsastellungen fir Lëtzebuerger Konformitéit.",
|
|
"step_products": "Produkter importéieren:",
|
|
"step_products_desc": "Synchroniséiert Äre Produktkatalog vu Letzshop.",
|
|
"go_to_dashboard": "Zum Dashboard",
|
|
"login_dashboard": "Am Dashboard umellen",
|
|
"need_help": "Braucht Dir Hëllef beim Ufänken?",
|
|
"contact_support": "Kontaktéiert eist Support Team"
|
|
},
|
|
"cta": {
|
|
"title": "Prett fir Är Bestellungen ze optiméieren?",
|
|
"subtitle": "Schléisst Iech Letzshop Händler un déi Wizamart fir hir Bestellungsverwaltung vertrauen. Fänkt haut Är {trial_days}-Deeg gratis Testversioun un.",
|
|
"button": "Gratis Testen"
|
|
},
|
|
"footer": {
|
|
"tagline": "Liichtt OMS fir Letzshop Verkeefer. Verwaltt Bestellungen, Lager an Rechnungen.",
|
|
"quick_links": "Séier Linken",
|
|
"platform": "Plattform",
|
|
"contact": "Kontakt",
|
|
"copyright": "© {year} Wizamart. Gemaach fir de lëtzebuergeschen E-Commerce.",
|
|
"privacy": "Dateschutzrichtlinn",
|
|
"terms": "Notzungsbedéngungen",
|
|
"about": "Iwwer eis",
|
|
"faq": "FAQ",
|
|
"contact_us": "Kontaktéiert eis"
|
|
},
|
|
"modern": {
|
|
"badge_integration": "Offiziell Integratioun",
|
|
"badge_connect": "An 2 Minutten verbannen",
|
|
"hero_title_1": "Gemaach fir de lëtzebuergeschen E-Commerce",
|
|
"hero_title_2": "De Back-Office dee Letzshop Iech net gëtt",
|
|
"hero_subtitle": "Synchroniséiert Bestellungen, verwaltt Lager, erstellt Rechnunge mat der korrekter TVA a besëtzt Är Clientsdaten. Alles un engem Plaz.",
|
|
"cta_trial": "{trial_days}-Deeg gratis testen",
|
|
"cta_how": "Kuckt wéi et funktionéiert",
|
|
"hero_note": "Keng Kreditkaart néideg. Setup an 5 Minutten. Ëmmer kënnegen.",
|
|
"pain_title": "Kënnt Iech dat bekannt vir?",
|
|
"pain_subtitle": "Dat sinn d'deeglech Frustratioune vu Letzshop Verkeefer",
|
|
"pain_manual": "Manuell Bestellungsagab",
|
|
"pain_manual_desc": "Bestellunge vu Letzshop an Tabelle kopéieren. All. Eenzelen. Dag.",
|
|
"pain_inventory": "Lager Chaos",
|
|
"pain_inventory_desc": "De Stock an Letzshop stëmmt net mat der Realitéit iwwereneen. Iwwerverkeef passéieren.",
|
|
"pain_vat": "Falsch TVA Rechnungen",
|
|
"pain_vat_desc": "EU Cliente brauchen déi korrekt TVA. Äre Comptabel beschwéiert sech.",
|
|
"pain_customers": "Verluer Clienten",
|
|
"pain_customers_desc": "Letzshop besëtzt Är Clientsdaten. Dir kënnt se net retargeten oder Loyalitéit opbauen.",
|
|
"how_title": "Wéi et funktionéiert",
|
|
"how_subtitle": "Vum Chaos zur Kontroll an 4 Schrëtt",
|
|
"how_step1": "Letzshop verbannen",
|
|
"how_step1_desc": "Gitt Är Letzshop API Zougangsdaten an. An 2 Minutte fäerdeg, keng technesch Kenntnisser néideg.",
|
|
"how_step2": "Bestellunge kommen eran",
|
|
"how_step2_desc": "Bestellunge ginn automatesch synchroniséiert. Confirméiert an Tracking direkt vu Wizamart derbäisetzen.",
|
|
"how_step3": "Rechnunge generéieren",
|
|
"how_step3_desc": "Ee Klick fir konform PDF Rechnunge mat korrekter TVA fir all EU Land ze erstellen.",
|
|
"how_step4": "Äert Geschäft ausbauen",
|
|
"how_step4_desc": "Exportéiert Clientë fir Marketing. Verfolgt Lagerstänn. Konzentréiert Iech op de Verkaf, net op Tabellen.",
|
|
"features_title": "Alles wat e Letzshop Verkeefer brauch",
|
|
"features_subtitle": "D'operativ Tools déi Letzshop net bitt",
|
|
"cta_final_title": "Prett fir d'Kontroll iwwer Äert Letzshop Geschäft ze iwwerhuelen?",
|
|
"cta_final_subtitle": "Schléisst Iech lëtzebuerger Händler un déi opgehalen hunn géint Tabellen ze kämpfen an ugefaang hunn hiert Geschäft auszbauen.",
|
|
"cta_final_note": "Keng Kreditkaart néideg. Setup an 5 Minutten. Voll Professional Fonctiounen während der Testperiod."
|
|
}
|
|
}
|
|
}
|