Rechnung/Lieferschein: - PDF-Gruppierung Abo- vs. Einmal-Artikel (is_abo_addon), rueckwaertskompatibel - Vorschau-Command sales:preview-invoice (umgeht Test-System-Gate, ohne Rechnungsnummer) Reminder-Mail (vorbereitet, Cron inaktiv): - MailAboExecutionReminder + Template, abo:send-execution-reminder, Spalte onetime_reminder_sent_for - Berater -> Sales Center, Kunde -> Portal; Vorschau abo:preview-reminder - Datum-Fix: formatDateDB() statt formatDate() (ICU-Format) Sperrfristen konfigurierbar (Admin-Settings): - abo-lock-days-change (Liefertag + Abo-Produkte), abo-lock-days-pause-cancel - Meldungen mit :lock-Platzhalter; Pausieren/Kuendigen vom Change-Lock entkoppelt - Abo-Produkt-Aenderungen im Lock-Fenster server- + clientseitig eingefroren - Selbstbedienung: Add-only/Lock nach $view (kein Admin-Bypass), Stale-Cache-Fix beim Mengen-Update Dashboard: - Einmalprodukte-Card + Team-Abo-KPI-Card, News-Card responsiv (col-xl-6) Lokalisierung: - Sprachdateien en/es/fr vollstaendig mit de synchronisiert (inkl. marketingplan/portal) - LocalizationSyncTest sichert Key-Gleichheit ab Tests: AboOneTimeInvoiceGrouping, AboExecutionReminder, AboLockDaysSetting, AboOnetimeDashboardAndMail, PreviewInvoiceCommand, TeamAboOverview + erweiterte View-Tests Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
24 lines
1.3 KiB
PHP
24 lines
1.3 KiB
PHP
<?php
|
||
|
||
return [
|
||
'' => '',
|
||
'cancel' => 'annuler',
|
||
'confirm' => 'confirmer',
|
||
'file_is_too_big' => 'Le fichier est trop volumineux<br>max. $0 Mo',
|
||
'image_too_small' => 'Image trop petite<br>min. $0 pixels',
|
||
'invalid_file' => 'Fichier invalide<br>uniquement : $0',
|
||
'really_delete_picture' => 'Supprimer vraiment l’image ?',
|
||
'rotate' => 'pivoter',
|
||
'save_image' => 'Enregistrer l’image',
|
||
'search_file_or_drag_drop' => 'Rechercher un fichier ou glisser-déposer',
|
||
'upload_photo' => 'Téléchargement de photo',
|
||
'dictDefaultMessage' => 'Déposez les fichiers ici pour les téléverser',
|
||
'dictFallbackMessage' => 'Votre navigateur ne prend pas en charge le téléversement par glisser-déposer.',
|
||
'dictFallbackText' => 'Veuillez utiliser le formulaire de secours ci-dessous pour téléverser vos fichiers comme auparavant.',
|
||
'dictFileTooBig' => 'Le fichier est trop volumineux ({{filesize}}MiB). Taille max. : {{maxFilesize}}MiB.',
|
||
'dictInvalidFileType' => 'Vous ne pouvez pas téléverser des fichiers de ce type.',
|
||
'dictResponseError' => 'Le serveur a répondu avec le code {{statusCode}}.',
|
||
'dictCancelUpload' => 'Annuler le téléversement',
|
||
'dictRemoveFile' => 'Supprimer le fichier',
|
||
'dictMaxFilesExceeded' => 'Vous ne pouvez plus téléverser de fichiers.',
|
||
];
|