feat(roles): add admin store roles page, permission i18n, and menu integration
Some checks failed
Some checks failed
- Add admin store roles page with merchant→store cascading for superadmin and store-only selection for platform admin - Add permission catalog API with translated labels/descriptions (en/fr/de/lb) - Add permission translations to all 15 module locale files (60 files total) - Add info icon tooltips for permission descriptions in role editor - Add store roles menu item and admin menu item in module definition - Fix store-selector.js URL construction bug when apiEndpoint has query params - Add admin store roles API (CRUD + platform scoping) - Add integration tests for admin store roles and permission catalog Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -1,87 +1,95 @@
|
||||
{
|
||||
"menu": {
|
||||
"marketplace": "Marktplatz",
|
||||
"letzshop": "Letzshop",
|
||||
"products_inventory": "Produkte & Inventar",
|
||||
"marketplace_import": "Marktplatz Import",
|
||||
"sales_orders": "Verkäufe & Bestellungen",
|
||||
"letzshop_orders": "Letzshop Bestellungen"
|
||||
},
|
||||
"marketplace": {
|
||||
"title": "Marktplatz",
|
||||
"import": "Importieren",
|
||||
"export": "Exportieren",
|
||||
"sync": "Synchronisieren",
|
||||
"source": "Quelle",
|
||||
"source_url": "Quell-URL",
|
||||
"import_products": "Produkte importieren",
|
||||
"start_import": "Import starten",
|
||||
"importing": "Importiere...",
|
||||
"import_complete": "Import abgeschlossen",
|
||||
"import_failed": "Import fehlgeschlagen",
|
||||
"import_history": "Import-Verlauf",
|
||||
"job_id": "Auftrags-ID",
|
||||
"started_at": "Gestartet um",
|
||||
"completed_at": "Abgeschlossen um",
|
||||
"duration": "Dauer",
|
||||
"imported_count": "Importiert",
|
||||
"error_count": "Fehler",
|
||||
"total_processed": "Gesamt verarbeitet",
|
||||
"progress": "Fortschritt",
|
||||
"no_import_jobs": "Noch keine Imports",
|
||||
"start_first_import": "Starten Sie Ihren ersten Import mit dem Formular oben"
|
||||
},
|
||||
"letzshop": {
|
||||
"title": "Letzshop-Integration",
|
||||
"connection": "Verbindung",
|
||||
"credentials": "Zugangsdaten",
|
||||
"api_key": "API-Schlüssel",
|
||||
"api_endpoint": "API-Endpunkt",
|
||||
"auto_sync": "Auto-Sync",
|
||||
"sync_interval": "Sync-Intervall",
|
||||
"every_hour": "Jede Stunde",
|
||||
"every_day": "Jeden Tag",
|
||||
"test_connection": "Verbindung testen",
|
||||
"save_credentials": "Zugangsdaten speichern",
|
||||
"connection_success": "Verbindung erfolgreich",
|
||||
"connection_failed": "Verbindung fehlgeschlagen",
|
||||
"last_sync": "Letzte Synchronisation",
|
||||
"sync_status": "Sync-Status",
|
||||
"import_orders": "Bestellungen importieren",
|
||||
"export_products": "Produkte exportieren",
|
||||
"no_credentials": "Konfigurieren Sie Ihren API-Schlüssel in den Einstellungen",
|
||||
"carriers": {
|
||||
"dhl": "DHL",
|
||||
"ups": "UPS",
|
||||
"fedex": "FedEx",
|
||||
"dpd": "DPD",
|
||||
"gls": "GLS",
|
||||
"post_luxembourg": "Post Luxemburg",
|
||||
"other": "Andere"
|
||||
"menu": {
|
||||
"marketplace": "Marktplatz",
|
||||
"letzshop": "Letzshop",
|
||||
"products_inventory": "Produkte & Inventar",
|
||||
"marketplace_import": "Marktplatz Import",
|
||||
"sales_orders": "Verkäufe & Bestellungen",
|
||||
"letzshop_orders": "Letzshop Bestellungen"
|
||||
},
|
||||
"marketplace": {
|
||||
"title": "Marktplatz",
|
||||
"import": "Importieren",
|
||||
"export": "Exportieren",
|
||||
"sync": "Synchronisieren",
|
||||
"source": "Quelle",
|
||||
"source_url": "Quell-URL",
|
||||
"import_products": "Produkte importieren",
|
||||
"start_import": "Import starten",
|
||||
"importing": "Importiere...",
|
||||
"import_complete": "Import abgeschlossen",
|
||||
"import_failed": "Import fehlgeschlagen",
|
||||
"import_history": "Import-Verlauf",
|
||||
"job_id": "Auftrags-ID",
|
||||
"started_at": "Gestartet um",
|
||||
"completed_at": "Abgeschlossen um",
|
||||
"duration": "Dauer",
|
||||
"imported_count": "Importiert",
|
||||
"error_count": "Fehler",
|
||||
"total_processed": "Gesamt verarbeitet",
|
||||
"progress": "Fortschritt",
|
||||
"no_import_jobs": "Noch keine Imports",
|
||||
"start_first_import": "Starten Sie Ihren ersten Import mit dem Formular oben"
|
||||
},
|
||||
"letzshop": {
|
||||
"title": "Letzshop-Integration",
|
||||
"connection": "Verbindung",
|
||||
"credentials": "Zugangsdaten",
|
||||
"api_key": "API-Schlüssel",
|
||||
"api_endpoint": "API-Endpunkt",
|
||||
"auto_sync": "Auto-Sync",
|
||||
"sync_interval": "Sync-Intervall",
|
||||
"every_hour": "Jede Stunde",
|
||||
"every_day": "Jeden Tag",
|
||||
"test_connection": "Verbindung testen",
|
||||
"save_credentials": "Zugangsdaten speichern",
|
||||
"connection_success": "Verbindung erfolgreich",
|
||||
"connection_failed": "Verbindung fehlgeschlagen",
|
||||
"last_sync": "Letzte Synchronisation",
|
||||
"sync_status": "Sync-Status",
|
||||
"import_orders": "Bestellungen importieren",
|
||||
"export_products": "Produkte exportieren",
|
||||
"no_credentials": "Konfigurieren Sie Ihren API-Schlüssel in den Einstellungen",
|
||||
"carriers": {
|
||||
"dhl": "DHL",
|
||||
"ups": "UPS",
|
||||
"fedex": "FedEx",
|
||||
"dpd": "DPD",
|
||||
"gls": "GLS",
|
||||
"post_luxembourg": "Post Luxemburg",
|
||||
"other": "Andere"
|
||||
}
|
||||
},
|
||||
"messages": {
|
||||
"no_error_details_available": "No error details available",
|
||||
"failed_to_load_error_details": "Failed to load error details",
|
||||
"copied_to_clipboard": "Copied to clipboard",
|
||||
"failed_to_copy_to_clipboard": "Failed to copy to clipboard"
|
||||
},
|
||||
"features": {
|
||||
"letzshop_sync": {
|
||||
"name": "Lëtzshop-Synchronisation",
|
||||
"description": "Produkte mit dem Lëtzshop-Marktplatz synchronisieren"
|
||||
},
|
||||
"api_access": {
|
||||
"name": "API-Zugang",
|
||||
"description": "Zugang zur Plattform-API"
|
||||
},
|
||||
"webhooks": {
|
||||
"name": "Webhooks",
|
||||
"description": "Echtzeit-Ereignisbenachrichtigungen über Webhooks"
|
||||
},
|
||||
"custom_integrations": {
|
||||
"name": "Eigene Integrationen",
|
||||
"description": "Eigene Integrationen mit der Plattform erstellen"
|
||||
}
|
||||
},
|
||||
"permissions": {
|
||||
"view_integration": "Integration anzeigen",
|
||||
"view_integration_desc": "Marktplatz-Integrationseinstellungen anzeigen",
|
||||
"manage_integration": "Integration verwalten",
|
||||
"manage_integration_desc": "Marktplatz-Integration konfigurieren",
|
||||
"sync_products": "Produkte synchronisieren",
|
||||
"sync_products_desc": "Produkte mit dem Marktplatz synchronisieren"
|
||||
}
|
||||
},
|
||||
"messages": {
|
||||
"no_error_details_available": "No error details available",
|
||||
"failed_to_load_error_details": "Failed to load error details",
|
||||
"copied_to_clipboard": "Copied to clipboard",
|
||||
"failed_to_copy_to_clipboard": "Failed to copy to clipboard"
|
||||
},
|
||||
"features": {
|
||||
"letzshop_sync": {
|
||||
"name": "Lëtzshop-Synchronisation",
|
||||
"description": "Produkte mit dem Lëtzshop-Marktplatz synchronisieren"
|
||||
},
|
||||
"api_access": {
|
||||
"name": "API-Zugang",
|
||||
"description": "Zugang zur Plattform-API"
|
||||
},
|
||||
"webhooks": {
|
||||
"name": "Webhooks",
|
||||
"description": "Echtzeit-Ereignisbenachrichtigungen über Webhooks"
|
||||
},
|
||||
"custom_integrations": {
|
||||
"name": "Eigene Integrationen",
|
||||
"description": "Eigene Integrationen mit der Plattform erstellen"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user