From 6b83fce8b2808a579f077757c527f283ae97e808 Mon Sep 17 00:00:00 2001 From: magdev Date: Sat, 24 Jan 2026 16:06:13 +0100 Subject: [PATCH] Fix admin order license generation bug - Add 'Generate Licenses' button to order meta box for admin-created orders - Add AJAX handler for manual license generation - Show warning when domain is not set or order is not paid - Handle partial license generation (when some products already have licenses) - Update German translations for new strings (365 translated) Co-Authored-By: Claude Opus 4.5 --- assets/js/order-licenses.js | 51 + languages/wc-licensed-product-de_CH.mo | Bin 31370 -> 32481 bytes languages/wc-licensed-product-de_CH.po | 1808 ++++++++++++------------ languages/wc-licensed-product.pot | 1680 +++++++++++----------- src/Admin/OrderLicenseController.php | 148 +- 5 files changed, 1985 insertions(+), 1702 deletions(-) diff --git a/assets/js/order-licenses.js b/assets/js/order-licenses.js index 13e13c0..4607225 100644 --- a/assets/js/order-licenses.js +++ b/assets/js/order-licenses.js @@ -16,6 +16,9 @@ // Order domain save $('#wclp-save-order-domain').on('click', this.saveOrderDomain.bind(this)); + // Generate licenses button + $(document).on('click', '#wclp-generate-licenses', this.generateLicenses.bind(this)); + // License domain edit/save/cancel $(document).on('click', '.wclp-edit-domain-btn', this.startEditDomain); $(document).on('click', '.wclp-save-domain-btn', this.saveLicenseDomain.bind(this)); @@ -135,6 +138,54 @@ $editBtn.show(); }, + /** + * Generate licenses for order + */ + generateLicenses: function(e) { + e.preventDefault(); + + var $btn = $(e.currentTarget); + var $spinner = $btn.siblings('.spinner'); + var $status = $btn.siblings('.wclp-generate-status'); + + var orderId = $btn.data('order-id'); + + $btn.prop('disabled', true); + $spinner.addClass('is-active'); + $status.text('').removeClass('success error'); + + $.ajax({ + url: wclpOrderLicenses.ajaxUrl, + type: 'POST', + data: { + action: 'wclp_generate_order_licenses', + nonce: wclpOrderLicenses.nonce, + order_id: orderId + }, + success: function(response) { + if (response.success) { + $status.text(response.data.message).addClass('success'); + if (response.data.reload) { + // Reload the page after a short delay to show the new licenses + setTimeout(function() { + window.location.reload(); + }, 1500); + } + } else { + $status.text(response.data.message || wclpOrderLicenses.strings.error).addClass('error'); + $btn.prop('disabled', false); + } + }, + error: function() { + $status.text(wclpOrderLicenses.strings.error).addClass('error'); + $btn.prop('disabled', false); + }, + complete: function() { + $spinner.removeClass('is-active'); + } + }); + }, + /** * Save license domain */ diff --git a/languages/wc-licensed-product-de_CH.mo b/languages/wc-licensed-product-de_CH.mo index 0c3fd7545720201575bfb3807601f5bb2ce24db5..1486c7a802912df7e02bc45a2b71c3a3e97892f8 100644 GIT binary patch delta 8852 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 b{On1diZt`j_x%?)O#FXu*6>JKWAy(5_z=Rb delta 7810 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�APf62ZEkC^^EcgRngj$BBt0A7&c0 zmx\n" "Language-Team: German (Switzerland) \n" @@ -15,14 +15,634 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: src/Admin/AdminController.php:76 src/Admin/AdminController.php:77 -#: src/Admin/AdminController.php:90 src/Admin/AdminController.php:1200 -#: src/Admin/OrderLicenseController.php:127 -#: src/Admin/OrderLicenseController.php:222 -#: src/Frontend/AccountController.php:90 +#: src/Admin/OrderLicenseController.php:57 +msgid "Product Licenses" +msgstr "Produktlizenzen" + +#: src/Admin/OrderLicenseController.php:78 +#: src/Admin/OrderLicenseController.php:367 +#: src/Admin/OrderLicenseController.php:469 +msgid "Order not found." +msgstr "Bestellung nicht gefunden." + +#: src/Admin/OrderLicenseController.php:93 +msgid "This order does not contain licensed products." +msgstr "Diese Bestellung enthält keine lizensierten Produkte." + +#: src/Admin/OrderLicenseController.php:107 +msgid "Order Domain" +msgstr "Bestellungs-Domain" + +#: src/Admin/OrderLicenseController.php:109 +msgid "" +"The domain specified during checkout. Changing this will not automatically " +"update existing license domains." +msgstr "" +"Die bei der Bestellung angegebene Domain. Eine Änderung aktualisiert nicht " +"automatisch bestehende Lizenz-Domains." + +#: src/Admin/OrderLicenseController.php:117 +#: src/Checkout/CheckoutController.php:89 +#: src/Checkout/CheckoutBlocksIntegration.php:102 +msgid "example.com" +msgstr "beispiel.ch" + +#: src/Admin/OrderLicenseController.php:119 +#: src/Admin/OrderLicenseController.php:209 src/Admin/AdminController.php:150 +#: src/Admin/AdminController.php:1340 src/Admin/AdminController.php:1360 +#: src/Admin/AdminController.php:1381 +msgid "Save" +msgstr "Speichern" + +#: src/Admin/OrderLicenseController.php:128 +#: src/Admin/OrderLicenseController.php:249 src/Admin/AdminController.php:76 +#: src/Admin/AdminController.php:77 src/Admin/AdminController.php:90 +#: src/Admin/AdminController.php:1200 src/Frontend/AccountController.php:90 msgid "Licenses" msgstr "Lizenzen" +#: src/Admin/OrderLicenseController.php:144 +msgid "No licenses have been generated for this order yet." +msgstr "Für diese Bestellung wurden noch keine Lizenzen generiert." + +#: src/Admin/OrderLicenseController.php:147 +msgid "" +"Licenses should be generated automatically when an order is paid. If " +"missing, check that a domain was specified during checkout." +msgstr "" +"Lizenzen sollten automatisch generiert werden, wenn eine Bestellung bezahlt " +"wird. Falls fehlend, prüfen Sie, ob bei der Bestellung eine Domain angegeben " +"wurde." + +#: src/Admin/OrderLicenseController.php:150 +msgid "Licenses will be generated when the order is marked as paid/completed." +msgstr "Lizenzen werden generiert, sobald die Bestellung als bezahlt/abgeschlossen markiert wird." + +#: src/Admin/OrderLicenseController.php:156 +msgid "Generate Licenses" +msgstr "Lizenzen generieren" + +#: src/Admin/OrderLicenseController.php:164 +msgid "Please set the order domain above before generating licenses." +msgstr "Bitte legen Sie zuerst die Bestellungs-Domain oben fest, bevor Sie Lizenzen generieren." + +#: src/Admin/OrderLicenseController.php:171 +#: src/Admin/SettingsController.php:142 src/Admin/AdminController.php:1291 +#: src/Admin/AdminController.php:1442 src/Admin/AdminController.php:1491 +#: src/Email/LicenseEmailController.php:269 +msgid "License Key" +msgstr "Lizenzschlüssel" + +#: src/Admin/OrderLicenseController.php:172 src/Admin/AdminController.php:1292 +#: src/Admin/AdminController.php:1443 src/Admin/AdminController.php:1608 +#: src/Email/LicenseEmailController.php:268 +msgid "Product" +msgstr "Produkt" + +#: src/Admin/OrderLicenseController.php:173 src/Admin/AdminController.php:1294 +#: src/Admin/AdminController.php:1445 src/Admin/AdminController.php:1495 +msgid "Domain" +msgstr "Domain" + +#: src/Admin/OrderLicenseController.php:174 +#: src/Admin/VersionAdminController.php:140 src/Admin/AdminController.php:1295 +#: src/Admin/AdminController.php:1446 +msgid "Status" +msgstr "Status" + +#: src/Admin/OrderLicenseController.php:175 src/Admin/AdminController.php:1297 +#: src/Admin/AdminController.php:1448 src/Admin/AdminController.php:1611 +#: src/Admin/AdminController.php:1613 src/Email/LicenseEmailController.php:270 +msgid "Expires" +msgstr "Läuft ab" + +#: src/Admin/OrderLicenseController.php:176 +#: src/Admin/VersionAdminController.php:142 src/Admin/AdminController.php:1298 +#: src/Admin/AdminController.php:1449 +msgid "Actions" +msgstr "Aktionen" + +#: src/Admin/OrderLicenseController.php:195 src/Admin/AdminController.php:195 +#: src/Admin/AdminController.php:1019 +msgid "Unknown" +msgstr "Unbekannt" + +#: src/Admin/OrderLicenseController.php:205 +msgid "Edit domain" +msgstr "Domain bearbeiten" + +#: src/Admin/OrderLicenseController.php:212 src/Admin/AdminController.php:149 +#: src/Admin/AdminController.php:1341 src/Admin/AdminController.php:1361 +#: src/Admin/AdminController.php:1382 src/Admin/AdminController.php:1537 +#: src/Frontend/AccountController.php:271 +msgid "Cancel" +msgstr "Abbrechen" + +#: src/Admin/OrderLicenseController.php:228 +#: src/Admin/SettingsController.php:192 src/Admin/AdminController.php:151 +#: src/Admin/AdminController.php:266 src/Admin/AdminController.php:1373 +#: src/Admin/AdminController.php:1613 +#: src/Admin/DashboardWidgetController.php:136 +#: src/Product/LicensedProductType.php:110 +#: src/Product/LicensedProductType.php:158 +msgid "Lifetime" +msgstr "Lebenslang" + +#: src/Admin/OrderLicenseController.php:235 +msgid "View in Licenses" +msgstr "In Lizenzen anzeigen" + +#: src/Admin/OrderLicenseController.php:248 +#, php-format +msgid "For more actions (revoke, extend, delete), go to the %s page." +msgstr "" +"Für weitere Aktionen (widerrufen, verlängern, löschen), gehen Sie zur Seite " +"%s." + +#: src/Admin/OrderLicenseController.php:261 +#, php-format +msgid "%d licensed product is missing a license." +msgid_plural "%d licensed products are missing licenses." +msgstr[0] "%d lizenziertes Produkt hat keine Lizenz." +msgstr[1] "%d lizenzierte Produkte haben keine Lizenzen." + +#: src/Admin/OrderLicenseController.php:270 +msgid "Generate Missing Licenses" +msgstr "Fehlende Lizenzen generieren" + +#: src/Admin/OrderLicenseController.php:338 src/Admin/AdminController.php:144 +msgid "Saving..." +msgstr "Speichere..." + +#: src/Admin/OrderLicenseController.php:339 +msgid "Saved!" +msgstr "Gespeichert!" + +#: src/Admin/OrderLicenseController.php:340 +msgid "Error. Please try again." +msgstr "Fehler. Bitte versuchen Sie es erneut." + +#: src/Admin/OrderLicenseController.php:341 +#: src/Frontend/AccountController.php:314 +#: src/Frontend/AccountController.php:346 +msgid "Please enter a valid domain." +msgstr "Bitte geben Sie eine gültige Domain ein." + +#: src/Admin/OrderLicenseController.php:342 +msgid "Generating..." +msgstr "Generiere..." + +#: src/Admin/OrderLicenseController.php:355 +#: src/Admin/OrderLicenseController.php:394 +#: src/Admin/OrderLicenseController.php:458 +#: src/Admin/VersionAdminController.php:259 +#: src/Admin/VersionAdminController.php:328 +#: src/Admin/VersionAdminController.php:354 src/Admin/AdminController.php:173 +#: src/Admin/AdminController.php:213 src/Admin/AdminController.php:249 +#: src/Admin/AdminController.php:301 src/Admin/AdminController.php:339 +#: src/Admin/AdminController.php:369 +msgid "Permission denied." +msgstr "Zugriff verweigert." + +#: src/Admin/OrderLicenseController.php:362 +#: src/Admin/OrderLicenseController.php:464 +msgid "Invalid order ID." +msgstr "Ungültige Bestellungs-ID." + +#: src/Admin/OrderLicenseController.php:373 +#: src/Admin/OrderLicenseController.php:411 +msgid "Invalid domain format." +msgstr "Ungültiges Domain-Format." + +#: src/Admin/OrderLicenseController.php:381 +msgid "Order domain updated." +msgstr "Bestellungs-Domain aktualisiert." + +#: src/Admin/OrderLicenseController.php:401 src/Admin/AdminController.php:220 +#: src/Admin/AdminController.php:256 src/Admin/AdminController.php:308 +#: src/Admin/AdminController.php:345 +msgid "Invalid license ID." +msgstr "Ungültige Lizenz-ID." + +#: src/Admin/OrderLicenseController.php:405 src/Admin/AdminController.php:312 +msgid "Domain cannot be empty." +msgstr "Domain darf nicht leer sein." + +#: src/Admin/OrderLicenseController.php:417 +#: src/Frontend/AccountController.php:352 +#: src/Frontend/DownloadController.php:117 +msgid "License not found." +msgstr "Lizenz nicht gefunden." + +#: src/Admin/OrderLicenseController.php:425 +msgid "License domain updated." +msgstr "Lizenz-Domain aktualisiert." + +#: src/Admin/OrderLicenseController.php:429 +msgid "Failed to update license domain." +msgstr "Lizenz-Domain konnte nicht aktualisiert werden." + +#: src/Admin/OrderLicenseController.php:474 +msgid "Order must be paid before licenses can be generated." +msgstr "Die Bestellung muss bezahlt sein, bevor Lizenzen generiert werden können." + +#: src/Admin/OrderLicenseController.php:480 +msgid "Please set the order domain before generating licenses." +msgstr "Bitte legen Sie die Bestellungs-Domain fest, bevor Sie Lizenzen generieren." + +#: src/Admin/OrderLicenseController.php:521 +#, php-format +msgid "%d license generated successfully." +msgid_plural "%d licenses generated successfully." +msgstr[0] "%d Lizenz erfolgreich generiert." +msgstr[1] "%d Lizenzen erfolgreich generiert." + +#: src/Admin/OrderLicenseController.php:534 +msgid "All licenses already exist for this order." +msgstr "Alle Lizenzen für diese Bestellung existieren bereits." + +#: src/Admin/SettingsController.php:54 +msgid "Licensed Products" +msgstr "Lizensierte Produkte" + +#: src/Admin/SettingsController.php:64 src/Admin/SettingsController.php:128 +msgid "Plugin License" +msgstr "Plugin-Lizenz" + +#: src/Admin/SettingsController.php:65 +msgid "Default Settings" +msgstr "Standardeinstellungen" + +#: src/Admin/SettingsController.php:66 +msgid "Notifications" +msgstr "Benachrichtigungen" + +#: src/Admin/SettingsController.php:130 +msgid "" +"Configure the license for this plugin. A valid license is required for " +"frontend features to work." +msgstr "" +"Konfigurieren Sie die Lizenz für dieses Plugin. Eine gültige Lizenz ist " +"erforderlich, damit die Frontend-Funktionen funktionieren." + +#: src/Admin/SettingsController.php:134 +msgid "License Server URL" +msgstr "Lizenzserver-URL" + +#: src/Admin/SettingsController.php:136 +msgid "The URL of the license server (e.g., https://shop.example.com)." +msgstr "Die URL des Lizenzservers (z.B. https://shop.example.com)." + +#: src/Admin/SettingsController.php:144 +msgid "Your license key in XXXX-XXXX-XXXX-XXXX format." +msgstr "Ihr Lizenzschlüssel im Format XXXX-XXXX-XXXX-XXXX." + +#: src/Admin/SettingsController.php:150 +msgid "Server Secret (Optional)" +msgstr "Server-Secret (Optional)" + +#: src/Admin/SettingsController.php:152 +msgid "" +"If the license server uses signed responses, enter the shared secret here " +"for enhanced security." +msgstr "" +"Falls der Lizenzserver signierte Antworten verwendet, geben Sie hier das " +"gemeinsame Secret für erhöhte Sicherheit ein." + +#: src/Admin/SettingsController.php:170 +msgid "Default License Settings" +msgstr "Standard Lizenz-Einstellungen" + +#: src/Admin/SettingsController.php:172 +msgid "" +"These settings serve as defaults for new licensed products. Individual " +"product settings override these defaults." +msgstr "" +"Diese Einstellungen dienen als Standard für neue lizensierte Produkte. " +"Individuelle Produkteinstellungen überschreiben diese Standards." + +#: src/Admin/SettingsController.php:176 +msgid "Default Max Activations" +msgstr "Standard Max. Aktivierungen" + +#: src/Admin/SettingsController.php:178 +msgid "Default maximum number of domain activations per license." +msgstr "Standard maximale Anzahl der Domain-Aktivierungen pro Lizenz." + +#: src/Admin/SettingsController.php:187 +msgid "Default License Validity (Days)" +msgstr "Standard Lizenz-Gültigkeit (Tage)" + +#: src/Admin/SettingsController.php:189 +msgid "" +"Default number of days a license is valid. Leave empty or set to 0 for " +"lifetime licenses." +msgstr "" +"Standard Anzahl Tage, die eine Lizenz gültig ist. Leer lassen oder auf 0 " +"setzen für lebenslange Lizenzen." + +#: src/Admin/SettingsController.php:199 +msgid "Default Bind to Major Version" +msgstr "Standard An Hauptversion binden" + +#: src/Admin/SettingsController.php:201 +msgid "" +"If enabled, licenses are bound to the major version at purchase time by " +"default." +msgstr "" +"Falls aktiviert, werden Lizenzen standardmässig an die Hauptversion zum " +"Kaufzeitpunkt gebunden." + +#: src/Admin/SettingsController.php:219 +msgid "Expiration Warning Schedule" +msgstr "Ablaufwarnung Zeitplan" + +#: src/Admin/SettingsController.php:223 +#, php-format +msgid "" +"Configure when expiration warning emails are sent. To customize the email " +"template, enable/disable, or change the subject, go to %s." +msgstr "" +"Konfigurieren Sie, wann Ablaufwarnungs-E-Mails gesendet werden. Um die E-" +"Mail-Vorlage anzupassen, zu aktivieren/deaktivieren oder den Betreff zu " +"ändern, gehen Sie zu %s." + +#: src/Admin/SettingsController.php:225 +msgid "WooCommerce > Settings > Emails > License Expiration Warning" +msgstr "WooCommerce > Einstellungen > E-Mails > Lizenzablauf-Warnung" + +#: src/Admin/SettingsController.php:230 +msgid "First Warning (Days Before)" +msgstr "Erste Warnung (Tage vorher)" + +#: src/Admin/SettingsController.php:232 +msgid "Days before expiration to send the first warning email." +msgstr "Tage vor Ablauf, um die erste Warn-E-Mail zu senden." + +#: src/Admin/SettingsController.php:241 +msgid "Second Warning (Days Before)" +msgstr "Zweite Warnung (Tage vorher)" + +#: src/Admin/SettingsController.php:243 +msgid "" +"Days before expiration to send the second warning email. Set to 0 to disable." +msgstr "" +"Tage vor Ablauf, um die zweite Warn-E-Mail zu senden. Setzen Sie auf 0, um " +"sie zu deaktivieren." + +#: src/Admin/SettingsController.php:283 +msgid "Running on localhost - license validation bypassed." +msgstr "Läuft auf localhost - Lizenzvalidierung übersprungen." + +#: src/Admin/SettingsController.php:291 +msgid "License is valid and active." +msgstr "Lizenz ist gültig und aktiv." + +#: src/Admin/SettingsController.php:297 +msgid "License is not valid. Frontend features are disabled." +msgstr "Lizenz ist ungültig. Frontend-Funktionen sind deaktiviert." + +#: src/Admin/SettingsController.php:308 src/Admin/SettingsController.php:344 +msgid "Verify License" +msgstr "Lizenz überprüfen" + +#: src/Admin/SettingsController.php:322 +msgid "Verifying..." +msgstr "Überprüfe..." + +#: src/Admin/SettingsController.php:341 +msgid "Request failed." +msgstr "Anfrage fehlgeschlagen." + +#: src/Admin/SettingsController.php:454 src/Admin/AdminController.php:455 +#: src/Admin/AdminController.php:475 src/Admin/AdminController.php:493 +#: src/Admin/AdminController.php:511 src/Admin/AdminController.php:531 +#: src/Admin/AdminController.php:549 src/Admin/AdminController.php:577 +#: src/Admin/AdminController.php:621 src/Admin/AdminController.php:811 +#: src/Frontend/AccountController.php:326 +msgid "Security check failed." +msgstr "Sicherheitsüberprüfung fehlgeschlagen." + +#: src/Admin/SettingsController.php:458 +msgid "Insufficient permissions." +msgstr "Unzureichende Berechtigungen." + +#: src/Admin/SettingsController.php:467 +msgid "License verified successfully!" +msgstr "Lizenz erfolgreich überprüft!" + +#: src/Admin/SettingsController.php:469 +msgid "License validation failed." +msgstr "Lizenzvalidierung fehlgeschlagen." + +#: src/Admin/VersionAdminController.php:58 +msgid "Product Versions" +msgstr "Produktversionen" + +#: src/Admin/VersionAdminController.php:78 +msgid "Add New Version" +msgstr "Neue Version hinzufügen" + +#: src/Admin/VersionAdminController.php:81 +#: src/Admin/VersionAdminController.php:136 src/Admin/AdminController.php:1609 +msgid "Version" +msgstr "Version" + +#: src/Admin/VersionAdminController.php:84 +msgid "Use semantic versioning (e.g., 1.0.0)" +msgstr "Verwenden Sie semantische Versionierung (z.B. 1.0.0)" + +#: src/Admin/VersionAdminController.php:88 +#: src/Admin/VersionAdminController.php:137 +msgid "Download File" +msgstr "Download-Datei" + +#: src/Admin/VersionAdminController.php:93 +msgid "Select File" +msgstr "Datei auswählen" + +#: src/Admin/VersionAdminController.php:96 +#: src/Admin/VersionAdminController.php:110 +msgid "Remove" +msgstr "Entfernen" + +#: src/Admin/VersionAdminController.php:98 +msgid "" +"Upload or select a file from the media library. Version will be auto-" +"detected from filename (e.g., plugin-v1.2.3.zip)." +msgstr "" +"Laden Sie eine Datei hoch oder wählen Sie eine aus der Mediathek. Die " +"Version wird automatisch aus dem Dateinamen erkannt (z.B. plugin-v1.2.3.zip)." + +#: src/Admin/VersionAdminController.php:102 +msgid "Checksum File" +msgstr "Prüfsummendatei" + +#: src/Admin/VersionAdminController.php:107 +msgid "Select Checksum File" +msgstr "Prüfsummendatei auswählen" + +#: src/Admin/VersionAdminController.php:112 +msgid "" +"Upload a SHA256 checksum file (.sha256 or .txt) to verify file integrity." +msgstr "" +"Laden Sie eine SHA256-Prüfsummendatei (.sha256 oder .txt) hoch, um die " +"Dateiintegrität zu überprüfen." + +#: src/Admin/VersionAdminController.php:116 +#: src/Admin/VersionAdminController.php:139 +msgid "Release Notes" +msgstr "Versionshinweise" + +#: src/Admin/VersionAdminController.php:124 +msgid "Add Version" +msgstr "Version hinzufügen" + +#: src/Admin/VersionAdminController.php:132 +msgid "Existing Versions" +msgstr "Vorhandene Versionen" + +#: src/Admin/VersionAdminController.php:138 +msgid "SHA256" +msgstr "SHA256" + +#: src/Admin/VersionAdminController.php:141 +msgid "Released" +msgstr "Veröffentlicht" + +#: src/Admin/VersionAdminController.php:148 +msgid "No versions found. Add your first version above." +msgstr "Keine Versionen gefunden. Fügen Sie Ihre erste Version oben hinzu." + +#: src/Admin/VersionAdminController.php:165 +#: src/Admin/VersionAdminController.php:396 +msgid "Uploaded file" +msgstr "Hochgeladene Datei" + +#: src/Admin/VersionAdminController.php:169 +#: src/Admin/VersionAdminController.php:400 +msgid "No download file" +msgstr "Keine Download-Datei" + +#: src/Admin/VersionAdminController.php:182 +#: src/Admin/VersionAdminController.php:413 src/Admin/AdminController.php:156 +#: src/Admin/AdminController.php:907 src/Admin/AdminController.php:1232 +#: src/Admin/AdminController.php:1355 +#: src/Admin/DashboardWidgetController.php:117 +msgid "Active" +msgstr "Aktiv" + +#: src/Admin/VersionAdminController.php:182 +#: src/Admin/VersionAdminController.php:413 src/Admin/AdminController.php:157 +#: src/Admin/AdminController.php:914 src/Admin/AdminController.php:1233 +#: src/Admin/AdminController.php:1356 +msgid "Inactive" +msgstr "Inaktiv" + +#: src/Admin/VersionAdminController.php:188 +#: src/Admin/VersionAdminController.php:419 src/Admin/AdminController.php:1274 +#: src/Admin/AdminController.php:1459 +msgid "Deactivate" +msgstr "Deaktivieren" + +#: src/Admin/VersionAdminController.php:188 +#: src/Admin/VersionAdminController.php:419 src/Admin/AdminController.php:1273 +#: src/Admin/AdminController.php:1458 +msgid "Activate" +msgstr "Aktivieren" + +#: src/Admin/VersionAdminController.php:191 +#: src/Admin/VersionAdminController.php:422 src/Admin/AdminController.php:1279 +#: src/Admin/AdminController.php:1428 src/Admin/AdminController.php:1464 +msgid "Delete" +msgstr "Löschen" + +#: src/Admin/VersionAdminController.php:232 +msgid "Are you sure you want to delete this version?" +msgstr "Sind Sie sicher, dass Sie diese Version löschen möchten?" + +#: src/Admin/VersionAdminController.php:233 +msgid "Please enter a version number." +msgstr "Bitte geben Sie eine Versionsnummer ein." + +#: src/Admin/VersionAdminController.php:234 +msgid "Please enter a valid version number (e.g., 1.0.0)." +msgstr "Bitte geben Sie eine gültige Versionsnummer ein (z.B. 1.0.0)." + +#: src/Admin/VersionAdminController.php:235 +msgid "An error occurred. Please try again." +msgstr "Ein Fehler ist aufgetreten. Bitte versuchen Sie es erneut." + +#: src/Admin/VersionAdminController.php:236 +msgid "Select Download File" +msgstr "Download-Datei auswählen" + +#: src/Admin/VersionAdminController.php:237 +msgid "Use this file" +msgstr "Diese Datei verwenden" + +#: src/Admin/VersionAdminController.php:238 +msgid "" +"Invalid checksum file format. File must contain a 64-character SHA256 hash." +msgstr "" +"Ungültiges Prüfsummendateiformat. Die Datei muss einen 64-stelligen SHA256-" +"Hash enthalten." + +#: src/Admin/VersionAdminController.php:239 +msgid "Failed to read checksum file." +msgstr "Prüfsummendatei konnte nicht gelesen werden." + +#: src/Admin/VersionAdminController.php:269 +msgid "Product ID and version are required." +msgstr "Produkt-ID und Version sind erforderlich." + +#: src/Admin/VersionAdminController.php:274 +msgid "Invalid version format. Use semantic versioning (e.g., 1.0.0)." +msgstr "" +"Ungültiges Versionsformat. Verwenden Sie semantische Versionierung (z.B. " +"1.0.0)." + +#: src/Admin/VersionAdminController.php:279 +msgid "This version already exists." +msgstr "Diese Version existiert bereits." + +#: src/Admin/VersionAdminController.php:285 +msgid "Product not found." +msgstr "Produkt nicht gefunden." + +#: src/Admin/VersionAdminController.php:289 +msgid "This product is not a licensed product." +msgstr "Dieses Produkt ist kein lizensiertes Produkt." + +#: src/Admin/VersionAdminController.php:306 +msgid "Failed to create version." +msgstr "Version konnte nicht erstellt werden." + +#: src/Admin/VersionAdminController.php:314 +msgid "Version added successfully." +msgstr "Version erfolgreich hinzugefügt." + +#: src/Admin/VersionAdminController.php:334 +#: src/Admin/VersionAdminController.php:361 +msgid "Version ID is required." +msgstr "Versions-ID ist erforderlich." + +#: src/Admin/VersionAdminController.php:340 +msgid "Failed to delete version." +msgstr "Version konnte nicht gelöscht werden." + +#: src/Admin/VersionAdminController.php:343 +msgid "Version deleted successfully." +msgstr "Version erfolgreich gelöscht." + +#: src/Admin/VersionAdminController.php:367 +msgid "Failed to update version." +msgstr "Version konnte nicht aktualisiert werden." + +#: src/Admin/VersionAdminController.php:371 +msgid "Version updated successfully." +msgstr "Version erfolgreich aktualisiert." + #: src/Admin/AdminController.php:93 msgid "Overview" msgstr "Übersicht" @@ -39,10 +659,6 @@ msgstr "Suche..." msgid "Search failed" msgstr "Suche fehlgeschlagen" -#: src/Admin/AdminController.php:144 src/Admin/OrderLicenseController.php:285 -msgid "Saving..." -msgstr "Speichere..." - #: src/Admin/AdminController.php:145 msgid "Saved" msgstr "Gespeichert" @@ -63,29 +679,6 @@ msgstr "" msgid "Edit" msgstr "Bearbeiten" -#: src/Admin/AdminController.php:149 src/Admin/AdminController.php:1341 -#: src/Admin/AdminController.php:1361 src/Admin/AdminController.php:1382 -#: src/Admin/AdminController.php:1537 src/Admin/OrderLicenseController.php:185 -#: src/Frontend/AccountController.php:271 -msgid "Cancel" -msgstr "Abbrechen" - -#: src/Admin/AdminController.php:150 src/Admin/AdminController.php:1340 -#: src/Admin/AdminController.php:1360 src/Admin/AdminController.php:1381 -#: src/Admin/OrderLicenseController.php:118 -#: src/Admin/OrderLicenseController.php:182 -msgid "Save" -msgstr "Speichern" - -#: src/Admin/AdminController.php:151 src/Admin/AdminController.php:266 -#: src/Admin/AdminController.php:1373 src/Admin/AdminController.php:1613 -#: src/Admin/DashboardWidgetController.php:136 -#: src/Admin/OrderLicenseController.php:201 -#: src/Admin/SettingsController.php:192 src/Product/LicensedProductType.php:110 -#: src/Product/LicensedProductType.php:158 -msgid "Lifetime" -msgstr "Lebenslang" - #: src/Admin/AdminController.php:152 src/Frontend/AccountController.php:309 msgid "Copied!" msgstr "Kopiert!" @@ -94,21 +687,6 @@ msgstr "Kopiert!" msgid "Copy failed" msgstr "Kopieren fehlgeschlagen" -#: src/Admin/AdminController.php:156 src/Admin/AdminController.php:907 -#: src/Admin/AdminController.php:1232 src/Admin/AdminController.php:1355 -#: src/Admin/DashboardWidgetController.php:117 -#: src/Admin/VersionAdminController.php:182 -#: src/Admin/VersionAdminController.php:413 -msgid "Active" -msgstr "Aktiv" - -#: src/Admin/AdminController.php:157 src/Admin/AdminController.php:914 -#: src/Admin/AdminController.php:1233 src/Admin/AdminController.php:1356 -#: src/Admin/VersionAdminController.php:182 -#: src/Admin/VersionAdminController.php:413 -msgid "Inactive" -msgstr "Inaktiv" - #: src/Admin/AdminController.php:158 src/Admin/AdminController.php:921 #: src/Admin/AdminController.php:1234 src/Admin/AdminController.php:1357 #: src/Admin/DashboardWidgetController.php:125 @@ -121,32 +699,10 @@ msgstr "Abgelaufen" msgid "Revoked" msgstr "Widerrufen" -#: src/Admin/AdminController.php:173 src/Admin/AdminController.php:213 -#: src/Admin/AdminController.php:249 src/Admin/AdminController.php:301 -#: src/Admin/AdminController.php:339 src/Admin/AdminController.php:369 -#: src/Admin/OrderLicenseController.php:301 -#: src/Admin/OrderLicenseController.php:340 -#: src/Admin/VersionAdminController.php:259 -#: src/Admin/VersionAdminController.php:328 -#: src/Admin/VersionAdminController.php:354 -msgid "Permission denied." -msgstr "Zugriff verweigert." - -#: src/Admin/AdminController.php:195 src/Admin/AdminController.php:1019 -#: src/Admin/OrderLicenseController.php:168 -msgid "Unknown" -msgstr "Unbekannt" - #: src/Admin/AdminController.php:196 src/Admin/AdminController.php:1023 msgid "Guest" msgstr "Gast" -#: src/Admin/AdminController.php:220 src/Admin/AdminController.php:256 -#: src/Admin/AdminController.php:308 src/Admin/AdminController.php:345 -#: src/Admin/OrderLicenseController.php:347 -msgid "Invalid license ID." -msgstr "Ungültige Lizenz-ID." - #: src/Admin/AdminController.php:225 msgid "Invalid status." msgstr "Ungültiger Status." @@ -175,10 +731,6 @@ msgstr "Ablaufdatum erfolgreich aktualisiert." msgid "Invalid date format." msgstr "Ungültiges Datumsformat." -#: src/Admin/AdminController.php:312 src/Admin/OrderLicenseController.php:351 -msgid "Domain cannot be empty." -msgstr "Domain darf nicht leer sein." - #: src/Admin/AdminController.php:323 msgid "Domain updated successfully." msgstr "Domain erfolgreich aktualisiert." @@ -199,15 +751,6 @@ msgstr "Lizenz konnte nicht widerrufen werden." msgid "License key and domain are required." msgstr "Lizenzschlüssel und Domain sind erforderlich." -#: src/Admin/AdminController.php:455 src/Admin/AdminController.php:475 -#: src/Admin/AdminController.php:493 src/Admin/AdminController.php:511 -#: src/Admin/AdminController.php:531 src/Admin/AdminController.php:549 -#: src/Admin/AdminController.php:577 src/Admin/AdminController.php:621 -#: src/Admin/AdminController.php:811 src/Admin/SettingsController.php:454 -#: src/Frontend/AccountController.php:326 -msgid "Security check failed." -msgstr "Sicherheitsüberprüfung fehlgeschlagen." - #: src/Admin/AdminController.php:581 msgid "You do not have permission to export licenses." msgstr "Sie haben keine Berechtigung, Lizenzen zu exportieren." @@ -430,18 +973,6 @@ msgstr "Dashboard anzeigen" msgid "Bulk Actions" msgstr "Massenaktionen" -#: src/Admin/AdminController.php:1273 src/Admin/AdminController.php:1458 -#: src/Admin/VersionAdminController.php:188 -#: src/Admin/VersionAdminController.php:419 -msgid "Activate" -msgstr "Aktivieren" - -#: src/Admin/AdminController.php:1274 src/Admin/AdminController.php:1459 -#: src/Admin/VersionAdminController.php:188 -#: src/Admin/VersionAdminController.php:419 -msgid "Deactivate" -msgstr "Deaktivieren" - #: src/Admin/AdminController.php:1275 src/Admin/AdminController.php:1419 #: src/Admin/AdminController.php:1460 msgid "Revoke" @@ -459,63 +990,20 @@ msgstr "90 Tage verlängern" msgid "Extend 1 year" msgstr "1 Jahr verlängern" -#: src/Admin/AdminController.php:1279 src/Admin/AdminController.php:1428 -#: src/Admin/AdminController.php:1464 src/Admin/VersionAdminController.php:191 -#: src/Admin/VersionAdminController.php:422 -msgid "Delete" -msgstr "Löschen" - #: src/Admin/AdminController.php:1281 src/Admin/AdminController.php:1466 msgid "Apply" msgstr "Anwenden" -#: src/Admin/AdminController.php:1291 src/Admin/AdminController.php:1442 -#: src/Admin/AdminController.php:1491 src/Admin/OrderLicenseController.php:144 -#: src/Admin/SettingsController.php:142 -#: src/Email/LicenseEmailController.php:269 -msgid "License Key" -msgstr "Lizenzschlüssel" - -#: src/Admin/AdminController.php:1292 src/Admin/AdminController.php:1443 -#: src/Admin/AdminController.php:1608 src/Admin/OrderLicenseController.php:145 -#: src/Email/LicenseEmailController.php:268 -msgid "Product" -msgstr "Produkt" - #: src/Admin/AdminController.php:1293 src/Admin/AdminController.php:1444 #: src/Email/LicenseExpirationEmail.php:104 #: src/Email/LicenseExpiredEmail.php:96 msgid "Customer" msgstr "Kunde" -#: src/Admin/AdminController.php:1294 src/Admin/AdminController.php:1445 -#: src/Admin/AdminController.php:1495 src/Admin/OrderLicenseController.php:146 -msgid "Domain" -msgstr "Domain" - -#: src/Admin/AdminController.php:1295 src/Admin/AdminController.php:1446 -#: src/Admin/OrderLicenseController.php:147 -#: src/Admin/VersionAdminController.php:140 -msgid "Status" -msgstr "Status" - #: src/Admin/AdminController.php:1296 src/Admin/AdminController.php:1447 msgid "Created" msgstr "Erstellt" -#: src/Admin/AdminController.php:1297 src/Admin/AdminController.php:1448 -#: src/Admin/AdminController.php:1611 src/Admin/AdminController.php:1613 -#: src/Admin/OrderLicenseController.php:148 -#: src/Email/LicenseEmailController.php:270 -msgid "Expires" -msgstr "Läuft ab" - -#: src/Admin/AdminController.php:1298 src/Admin/AdminController.php:1449 -#: src/Admin/OrderLicenseController.php:149 -#: src/Admin/VersionAdminController.php:142 -msgid "Actions" -msgstr "Aktionen" - #: src/Admin/AdminController.php:1304 msgid "No licenses found." msgstr "Keine Lizenzen gefunden." @@ -596,11 +1084,6 @@ msgstr "Lizenz übertragen" msgid "License is VALID" msgstr "Lizenz ist GÜLTIG" -#: src/Admin/AdminController.php:1609 src/Admin/VersionAdminController.php:81 -#: src/Admin/VersionAdminController.php:136 -msgid "Version" -msgstr "Version" - #: src/Admin/AdminController.php:1617 msgid "License is INVALID" msgstr "Lizenz ist UNGÜLTIG" @@ -758,447 +1241,6 @@ msgstr "Noch keine Downloads" msgid "Top Versions" msgstr "Top-Versionen" -#: src/Admin/OrderLicenseController.php:56 -msgid "Product Licenses" -msgstr "Produktlizenzen" - -#: src/Admin/OrderLicenseController.php:77 -#: src/Admin/OrderLicenseController.php:313 -msgid "Order not found." -msgstr "Bestellung nicht gefunden." - -#: src/Admin/OrderLicenseController.php:92 -msgid "This order does not contain licensed products." -msgstr "Diese Bestellung enthält keine lizensierten Produkte." - -#: src/Admin/OrderLicenseController.php:106 -msgid "Order Domain" -msgstr "Bestellungs-Domain" - -#: src/Admin/OrderLicenseController.php:108 -msgid "" -"The domain specified during checkout. Changing this will not automatically " -"update existing license domains." -msgstr "" -"Die bei der Bestellung angegebene Domain. Eine Änderung aktualisiert nicht " -"automatisch bestehende Lizenz-Domains." - -#: src/Admin/OrderLicenseController.php:116 -#: src/Checkout/CheckoutBlocksIntegration.php:102 -#: src/Checkout/CheckoutController.php:89 -msgid "example.com" -msgstr "beispiel.ch" - -#: src/Admin/OrderLicenseController.php:131 -msgid "No licenses have been generated for this order yet." -msgstr "Für diese Bestellung wurden noch keine Lizenzen generiert." - -#: src/Admin/OrderLicenseController.php:134 -msgid "" -"Licenses should be generated automatically when an order is paid. If " -"missing, check that a domain was specified during checkout." -msgstr "" -"Lizenzen sollten automatisch generiert werden, wenn eine Bestellung bezahlt " -"wird. Falls fehlend, prüfen Sie, ob bei der Bestellung eine Domain angegeben " -"wurde." - -#: src/Admin/OrderLicenseController.php:137 -msgid "Licenses will be generated when the order is marked as paid/completed." -msgstr "" -"Lizenzen werden generiert, sobald die Bestellung als bezahlt/abgeschlossen " -"markiert wird." - -#: src/Admin/OrderLicenseController.php:178 -msgid "Edit domain" -msgstr "Domain bearbeiten" - -#: src/Admin/OrderLicenseController.php:208 -msgid "View in Licenses" -msgstr "In Lizenzen anzeigen" - -#: src/Admin/OrderLicenseController.php:221 -#, php-format -msgid "For more actions (revoke, extend, delete), go to the %s page." -msgstr "" -"Für weitere Aktionen (widerrufen, verlängern, löschen), gehen Sie zur Seite " -"%s." - -#: src/Admin/OrderLicenseController.php:286 -msgid "Saved!" -msgstr "Gespeichert!" - -#: src/Admin/OrderLicenseController.php:287 -msgid "Error saving. Please try again." -msgstr "Fehler beim Speichern. Bitte versuchen Sie es erneut." - -#: src/Admin/OrderLicenseController.php:288 -#: src/Frontend/AccountController.php:314 -#: src/Frontend/AccountController.php:346 -msgid "Please enter a valid domain." -msgstr "Bitte geben Sie eine gültige Domain ein." - -#: src/Admin/OrderLicenseController.php:308 -msgid "Invalid order ID." -msgstr "Ungültige Bestellungs-ID." - -#: src/Admin/OrderLicenseController.php:319 -#: src/Admin/OrderLicenseController.php:357 -msgid "Invalid domain format." -msgstr "Ungültiges Domain-Format." - -#: src/Admin/OrderLicenseController.php:327 -msgid "Order domain updated." -msgstr "Bestellungs-Domain aktualisiert." - -#: src/Admin/OrderLicenseController.php:363 -#: src/Frontend/AccountController.php:352 -#: src/Frontend/DownloadController.php:117 -msgid "License not found." -msgstr "Lizenz nicht gefunden." - -#: src/Admin/OrderLicenseController.php:371 -msgid "License domain updated." -msgstr "Lizenz-Domain aktualisiert." - -#: src/Admin/OrderLicenseController.php:375 -msgid "Failed to update license domain." -msgstr "Lizenz-Domain konnte nicht aktualisiert werden." - -#: src/Admin/SettingsController.php:54 -msgid "Licensed Products" -msgstr "Lizensierte Produkte" - -#: src/Admin/SettingsController.php:64 src/Admin/SettingsController.php:128 -msgid "Plugin License" -msgstr "Plugin-Lizenz" - -#: src/Admin/SettingsController.php:65 -msgid "Default Settings" -msgstr "Standardeinstellungen" - -#: src/Admin/SettingsController.php:66 -msgid "Notifications" -msgstr "Benachrichtigungen" - -#: src/Admin/SettingsController.php:130 -msgid "" -"Configure the license for this plugin. A valid license is required for " -"frontend features to work." -msgstr "" -"Konfigurieren Sie die Lizenz für dieses Plugin. Eine gültige Lizenz ist " -"erforderlich, damit die Frontend-Funktionen funktionieren." - -#: src/Admin/SettingsController.php:134 -msgid "License Server URL" -msgstr "Lizenzserver-URL" - -#: src/Admin/SettingsController.php:136 -msgid "The URL of the license server (e.g., https://shop.example.com)." -msgstr "Die URL des Lizenzservers (z.B. https://shop.example.com)." - -#: src/Admin/SettingsController.php:144 -msgid "Your license key in XXXX-XXXX-XXXX-XXXX format." -msgstr "Ihr Lizenzschlüssel im Format XXXX-XXXX-XXXX-XXXX." - -#: src/Admin/SettingsController.php:150 -msgid "Server Secret (Optional)" -msgstr "Server-Secret (Optional)" - -#: src/Admin/SettingsController.php:152 -msgid "" -"If the license server uses signed responses, enter the shared secret here " -"for enhanced security." -msgstr "" -"Falls der Lizenzserver signierte Antworten verwendet, geben Sie hier das " -"gemeinsame Secret für erhöhte Sicherheit ein." - -#: src/Admin/SettingsController.php:170 -msgid "Default License Settings" -msgstr "Standard Lizenz-Einstellungen" - -#: src/Admin/SettingsController.php:172 -msgid "" -"These settings serve as defaults for new licensed products. Individual " -"product settings override these defaults." -msgstr "" -"Diese Einstellungen dienen als Standard für neue lizensierte Produkte. " -"Individuelle Produkteinstellungen überschreiben diese Standards." - -#: src/Admin/SettingsController.php:176 -msgid "Default Max Activations" -msgstr "Standard Max. Aktivierungen" - -#: src/Admin/SettingsController.php:178 -msgid "Default maximum number of domain activations per license." -msgstr "Standard maximale Anzahl der Domain-Aktivierungen pro Lizenz." - -#: src/Admin/SettingsController.php:187 -msgid "Default License Validity (Days)" -msgstr "Standard Lizenz-Gültigkeit (Tage)" - -#: src/Admin/SettingsController.php:189 -msgid "" -"Default number of days a license is valid. Leave empty or set to 0 for " -"lifetime licenses." -msgstr "" -"Standard Anzahl Tage, die eine Lizenz gültig ist. Leer lassen oder auf 0 " -"setzen für lebenslange Lizenzen." - -#: src/Admin/SettingsController.php:199 -msgid "Default Bind to Major Version" -msgstr "Standard An Hauptversion binden" - -#: src/Admin/SettingsController.php:201 -msgid "" -"If enabled, licenses are bound to the major version at purchase time by " -"default." -msgstr "" -"Falls aktiviert, werden Lizenzen standardmässig an die Hauptversion zum " -"Kaufzeitpunkt gebunden." - -#: src/Admin/SettingsController.php:219 -msgid "Expiration Warning Schedule" -msgstr "Ablaufwarnung Zeitplan" - -#: src/Admin/SettingsController.php:223 -#, php-format -msgid "" -"Configure when expiration warning emails are sent. To customize the email " -"template, enable/disable, or change the subject, go to %s." -msgstr "" -"Konfigurieren Sie, wann Ablaufwarnungs-E-Mails gesendet werden. Um die E-" -"Mail-Vorlage anzupassen, zu aktivieren/deaktivieren oder den Betreff zu " -"ändern, gehen Sie zu %s." - -#: src/Admin/SettingsController.php:225 -msgid "WooCommerce > Settings > Emails > License Expiration Warning" -msgstr "WooCommerce > Einstellungen > E-Mails > Lizenzablauf-Warnung" - -#: src/Admin/SettingsController.php:230 -msgid "First Warning (Days Before)" -msgstr "Erste Warnung (Tage vorher)" - -#: src/Admin/SettingsController.php:232 -msgid "Days before expiration to send the first warning email." -msgstr "Tage vor Ablauf, um die erste Warn-E-Mail zu senden." - -#: src/Admin/SettingsController.php:241 -msgid "Second Warning (Days Before)" -msgstr "Zweite Warnung (Tage vorher)" - -#: src/Admin/SettingsController.php:243 -msgid "" -"Days before expiration to send the second warning email. Set to 0 to disable." -msgstr "" -"Tage vor Ablauf, um die zweite Warn-E-Mail zu senden. Setzen Sie auf 0, um " -"sie zu deaktivieren." - -#: src/Admin/SettingsController.php:283 -msgid "Running on localhost - license validation bypassed." -msgstr "Läuft auf localhost - Lizenzvalidierung übersprungen." - -#: src/Admin/SettingsController.php:291 -msgid "License is valid and active." -msgstr "Lizenz ist gültig und aktiv." - -#: src/Admin/SettingsController.php:297 -msgid "License is not valid. Frontend features are disabled." -msgstr "Lizenz ist ungültig. Frontend-Funktionen sind deaktiviert." - -#: src/Admin/SettingsController.php:308 src/Admin/SettingsController.php:344 -msgid "Verify License" -msgstr "Lizenz überprüfen" - -#: src/Admin/SettingsController.php:322 -msgid "Verifying..." -msgstr "Überprüfe..." - -#: src/Admin/SettingsController.php:341 -msgid "Request failed." -msgstr "Anfrage fehlgeschlagen." - -#: src/Admin/SettingsController.php:458 -msgid "Insufficient permissions." -msgstr "Unzureichende Berechtigungen." - -#: src/Admin/SettingsController.php:467 -msgid "License verified successfully!" -msgstr "Lizenz erfolgreich überprüft!" - -#: src/Admin/SettingsController.php:469 -msgid "License validation failed." -msgstr "Lizenzvalidierung fehlgeschlagen." - -#: src/Admin/VersionAdminController.php:58 -msgid "Product Versions" -msgstr "Produktversionen" - -#: src/Admin/VersionAdminController.php:78 -msgid "Add New Version" -msgstr "Neue Version hinzufügen" - -#: src/Admin/VersionAdminController.php:84 -msgid "Use semantic versioning (e.g., 1.0.0)" -msgstr "Verwenden Sie semantische Versionierung (z.B. 1.0.0)" - -#: src/Admin/VersionAdminController.php:88 -#: src/Admin/VersionAdminController.php:137 -msgid "Download File" -msgstr "Download-Datei" - -#: src/Admin/VersionAdminController.php:93 -msgid "Select File" -msgstr "Datei auswählen" - -#: src/Admin/VersionAdminController.php:96 -#: src/Admin/VersionAdminController.php:110 -msgid "Remove" -msgstr "Entfernen" - -#: src/Admin/VersionAdminController.php:98 -msgid "" -"Upload or select a file from the media library. Version will be auto-" -"detected from filename (e.g., plugin-v1.2.3.zip)." -msgstr "" -"Laden Sie eine Datei hoch oder wählen Sie eine aus der Mediathek. Die " -"Version wird automatisch aus dem Dateinamen erkannt (z.B. plugin-v1.2.3.zip)." - -#: src/Admin/VersionAdminController.php:102 -msgid "Checksum File" -msgstr "Prüfsummendatei" - -#: src/Admin/VersionAdminController.php:107 -msgid "Select Checksum File" -msgstr "Prüfsummendatei auswählen" - -#: src/Admin/VersionAdminController.php:112 -msgid "" -"Upload a SHA256 checksum file (.sha256 or .txt) to verify file integrity." -msgstr "" -"Laden Sie eine SHA256-Prüfsummendatei (.sha256 oder .txt) hoch, um die " -"Dateiintegrität zu überprüfen." - -#: src/Admin/VersionAdminController.php:116 -#: src/Admin/VersionAdminController.php:139 -msgid "Release Notes" -msgstr "Versionshinweise" - -#: src/Admin/VersionAdminController.php:124 -msgid "Add Version" -msgstr "Version hinzufügen" - -#: src/Admin/VersionAdminController.php:132 -msgid "Existing Versions" -msgstr "Vorhandene Versionen" - -#: src/Admin/VersionAdminController.php:138 -msgid "SHA256" -msgstr "SHA256" - -#: src/Admin/VersionAdminController.php:141 -msgid "Released" -msgstr "Veröffentlicht" - -#: src/Admin/VersionAdminController.php:148 -msgid "No versions found. Add your first version above." -msgstr "Keine Versionen gefunden. Fügen Sie Ihre erste Version oben hinzu." - -#: src/Admin/VersionAdminController.php:165 -#: src/Admin/VersionAdminController.php:396 -msgid "Uploaded file" -msgstr "Hochgeladene Datei" - -#: src/Admin/VersionAdminController.php:169 -#: src/Admin/VersionAdminController.php:400 -msgid "No download file" -msgstr "Keine Download-Datei" - -#: src/Admin/VersionAdminController.php:232 -msgid "Are you sure you want to delete this version?" -msgstr "Sind Sie sicher, dass Sie diese Version löschen möchten?" - -#: src/Admin/VersionAdminController.php:233 -msgid "Please enter a version number." -msgstr "Bitte geben Sie eine Versionsnummer ein." - -#: src/Admin/VersionAdminController.php:234 -msgid "Please enter a valid version number (e.g., 1.0.0)." -msgstr "Bitte geben Sie eine gültige Versionsnummer ein (z.B. 1.0.0)." - -#: src/Admin/VersionAdminController.php:235 -msgid "An error occurred. Please try again." -msgstr "Ein Fehler ist aufgetreten. Bitte versuchen Sie es erneut." - -#: src/Admin/VersionAdminController.php:236 -msgid "Select Download File" -msgstr "Download-Datei auswählen" - -#: src/Admin/VersionAdminController.php:237 -msgid "Use this file" -msgstr "Diese Datei verwenden" - -#: src/Admin/VersionAdminController.php:238 -msgid "" -"Invalid checksum file format. File must contain a 64-character SHA256 hash." -msgstr "" -"Ungültiges Prüfsummendateiformat. Die Datei muss einen 64-stelligen SHA256-" -"Hash enthalten." - -#: src/Admin/VersionAdminController.php:239 -msgid "Failed to read checksum file." -msgstr "Prüfsummendatei konnte nicht gelesen werden." - -#: src/Admin/VersionAdminController.php:269 -msgid "Product ID and version are required." -msgstr "Produkt-ID und Version sind erforderlich." - -#: src/Admin/VersionAdminController.php:274 -msgid "Invalid version format. Use semantic versioning (e.g., 1.0.0)." -msgstr "" -"Ungültiges Versionsformat. Verwenden Sie semantische Versionierung (z.B. " -"1.0.0)." - -#: src/Admin/VersionAdminController.php:279 -msgid "This version already exists." -msgstr "Diese Version existiert bereits." - -#: src/Admin/VersionAdminController.php:285 -msgid "Product not found." -msgstr "Produkt nicht gefunden." - -#: src/Admin/VersionAdminController.php:289 -msgid "This product is not a licensed product." -msgstr "Dieses Produkt ist kein lizensiertes Produkt." - -#: src/Admin/VersionAdminController.php:306 -msgid "Failed to create version." -msgstr "Version konnte nicht erstellt werden." - -#: src/Admin/VersionAdminController.php:314 -msgid "Version added successfully." -msgstr "Version erfolgreich hinzugefügt." - -#: src/Admin/VersionAdminController.php:334 -#: src/Admin/VersionAdminController.php:361 -msgid "Version ID is required." -msgstr "Versions-ID ist erforderlich." - -#: src/Admin/VersionAdminController.php:340 -msgid "Failed to delete version." -msgstr "Version konnte nicht gelöscht werden." - -#: src/Admin/VersionAdminController.php:343 -msgid "Version deleted successfully." -msgstr "Version erfolgreich gelöscht." - -#: src/Admin/VersionAdminController.php:367 -msgid "Failed to update version." -msgstr "Version konnte nicht aktualisiert werden." - -#: src/Admin/VersionAdminController.php:371 -msgid "Version updated successfully." -msgstr "Version erfolgreich aktualisiert." - #: src/Api/RestApiController.php:84 msgid "Too many requests. Please try again later." msgstr "Zu viele Anfragen. Bitte versuchen Sie es später erneut." @@ -1228,32 +1270,28 @@ msgstr "Lizenz konnte nicht aktiviert werden." msgid "License activated successfully." msgstr "Lizenz erfolgreich aktiviert." -#: src/Checkout/CheckoutBlocksIntegration.php:101 +#: src/Checkout/CheckoutController.php:78 +#: src/Checkout/CheckoutBlocksIntegration.php:104 +msgid "License Domain" +msgstr "Lizenz-Domain" + #: src/Checkout/CheckoutController.php:81 +#: src/Checkout/CheckoutBlocksIntegration.php:101 msgid "Domain for License Activation" msgstr "Domain für Lizenz-Aktivierung" -#: src/Checkout/CheckoutBlocksIntegration.php:103 +#: src/Checkout/CheckoutController.php:82 +msgid "required" +msgstr "erforderlich" + #: src/Checkout/CheckoutController.php:93 +#: src/Checkout/CheckoutBlocksIntegration.php:103 msgid "" "Enter the domain where you will use this license (without http:// or www)." msgstr "" "Geben Sie die Domain ein, auf der Sie diese Lizenz verwenden möchten (ohne " "http:// oder www)." -#: src/Checkout/CheckoutBlocksIntegration.php:104 -#: src/Checkout/CheckoutController.php:78 -msgid "License Domain" -msgstr "Lizenz-Domain" - -#: src/Checkout/CheckoutBlocksIntegration.php:105 -msgid "Please enter a valid domain for your license activation." -msgstr "Bitte geben Sie eine gültige Domain für Ihre Lizenz-Aktivierung ein." - -#: src/Checkout/CheckoutController.php:82 -msgid "required" -msgstr "erforderlich" - #: src/Checkout/CheckoutController.php:115 msgid "Please enter a domain for your license activation." msgstr "Bitte geben Sie eine Domain für Ihre Lizenz-Aktivierung ein." @@ -1268,225 +1306,118 @@ msgstr "Bitte geben Sie einen gültigen Domain-Namen ein." msgid "License Domain:" msgstr "Lizenz-Domain:" +#: src/Checkout/CheckoutBlocksIntegration.php:105 +msgid "Please enter a valid domain for your license activation." +msgstr "Bitte geben Sie eine gültige Domain für Ihre Lizenz-Aktivierung ein." + #: src/Checkout/StoreApiExtension.php:85 msgid "Domain for license activation" msgstr "Domain für Lizenz-Aktivierung" -#: src/Email/LicenseEmailController.php:212 -#: src/Email/LicenseEmailController.php:216 -#: src/Email/LicenseEmailController.php:320 -#: src/Email/LicenseExpirationEmail.php:207 -#: src/Email/LicenseExpirationEmail.php:270 -#: src/Email/LicenseExpiredEmail.php:191 src/Email/LicenseExpiredEmail.php:256 -#: src/Frontend/AccountController.php:190 -msgid "License Key:" -msgstr "Lizenzschlüssel:" +#: src/License/PluginLicenseChecker.php:117 +msgid "License settings not configured." +msgstr "Lizenzeinstellungen nicht konfiguriert." -#: src/Email/LicenseEmailController.php:256 -msgid "Your License Keys" -msgstr "Ihre Lizenzschlüssel" +#: src/License/PluginLicenseChecker.php:153 +msgid "Could not connect to license server." +msgstr "Verbindung zum Lizenzserver konnte nicht hergestellt werden." -#: src/Email/LicenseEmailController.php:260 -#: src/Email/LicenseEmailController.php:315 -msgid "Licensed Domain:" -msgstr "Lizensierte Domain:" +#: src/License/LicenseManager.php:366 +msgid "This license has been revoked." +msgstr "Diese Lizenz wurde widerrufen." -#: src/Email/LicenseEmailController.php:287 -#: src/Email/LicenseEmailController.php:326 -#: src/Frontend/AccountController.php:218 -msgid "Never" -msgstr "Nie" +#: src/License/LicenseManager.php:376 +msgid "This license has expired." +msgstr "Diese Lizenz ist abgelaufen." -#: src/Email/LicenseEmailController.php:296 -#: src/Email/LicenseEmailController.php:330 -msgid "You can also view your licenses in your account under \"Licenses\"." -msgstr "" -"Sie können Ihre Lizenzen auch in Ihrem Konto unter \"Lizenzen\" einsehen." +#: src/License/LicenseManager.php:384 +msgid "This license is inactive." +msgstr "Diese Lizenz ist inaktiv." -#: src/Email/LicenseEmailController.php:311 -msgid "YOUR LICENSE KEYS" -msgstr "IHRE LIZENZSCHLÜSSEL" +#: src/License/LicenseManager.php:394 +msgid "This license is not valid for this domain." +msgstr "Diese Lizenz ist für diese Domain nicht gültig." -#: src/Email/LicenseEmailController.php:323 -#: src/Email/LicenseExpirationEmail.php:219 -#: src/Email/LicenseExpirationEmail.php:272 -#: src/Frontend/AccountController.php:213 -msgid "Expires:" -msgstr "Läuft ab:" - -#: src/Email/LicenseExpirationEmail.php:55 -msgid "License Expiration Warning" -msgstr "Lizenzablauf-Warnung" - -#: src/Email/LicenseExpirationEmail.php:56 -msgid "" -"License expiration warning emails are sent to customers when their licenses " -"are about to expire." -msgstr "" -"Lizenzablauf-Warnungs-E-Mails werden an Kunden gesendet, wenn ihre Lizenzen " -"bald ablaufen." - -#: src/Email/LicenseExpirationEmail.php:74 -msgid "" -"[{site_title}] Your license for {product_name} expires in {days_remaining} " -"days" -msgstr "" -"[{site_title}] Ihre Lizenz für {product_name} läuft in {days_remaining} " -"Tagen ab" - -#: src/Email/LicenseExpirationEmail.php:82 -msgid "License Expiration Notice" -msgstr "Lizenzablauf-Benachrichtigung" - -#: src/Email/LicenseExpirationEmail.php:107 -#: src/Email/LicenseExpiredEmail.php:99 src/Frontend/AccountController.php:140 #: src/License/LicenseManager.php:760 src/Product/VersionManager.php:349 -#: src/Product/VersionManager.php:361 +#: src/Product/VersionManager.php:361 src/Frontend/AccountController.php:140 +#: src/Email/LicenseExpirationEmail.php:107 +#: src/Email/LicenseExpiredEmail.php:99 msgid "Unknown Product" msgstr "Unbekanntes Produkt" -#: src/Email/LicenseExpirationEmail.php:176 -#: src/Email/LicenseExpirationEmail.php:246 -#: src/Email/LicenseExpiredEmail.php:167 src/Email/LicenseExpiredEmail.php:238 +#: src/Product/LicensedProductType.php:61 +msgid "Licensed Product" +msgstr "Lizensiertes Produkt" + +#: src/Product/LicensedProductType.php:82 +msgid "License Settings" +msgstr "Lizenz-Einstellungen" + +#: src/Product/LicensedProductType.php:109 #, php-format -msgid "Hello %s," -msgstr "Guten Tag %s," +msgid "%d days" +msgstr "%d Tage" -#: src/Email/LicenseExpirationEmail.php:181 -#: src/Email/LicenseExpirationEmail.php:251 +#: src/Product/LicensedProductType.php:119 #, php-format -msgid "Your license for %s will expire tomorrow (%s)." -msgstr "Ihre Lizenz für %s läuft morgen ab (%s)." +msgid "Leave fields empty to use default settings from %s." +msgstr "Felder leer lassen, um Standardeinstellungen von %s zu verwenden." -#: src/Email/LicenseExpirationEmail.php:189 -#: src/Email/LicenseExpirationEmail.php:257 +#: src/Product/LicensedProductType.php:121 +msgid "WooCommerce > Settings > Licensed Products" +msgstr "WooCommerce > Einstellungen > Lizensierte Produkte" + +#: src/Product/LicensedProductType.php:128 +msgid "Max Activations" +msgstr "Max. Aktivierungen" + +#: src/Product/LicensedProductType.php:131 #, php-format -msgid "Your license for %1$s will expire in %2$d days (%3$s)." -msgstr "Ihre Lizenz für %1$s läuft in %2$d Tagen ab (%3$s)." +msgid "Maximum number of domain activations per license. Default: %d" +msgstr "Maximale Anzahl der Domain-Aktivierungen pro Lizenz. Standard: %d" -#: src/Email/LicenseExpirationEmail.php:197 -#: src/Email/LicenseExpirationEmail.php:266 -msgid "License Details" -msgstr "Lizenzdetails" +#: src/Product/LicensedProductType.php:146 +msgid "License Validity (Days)" +msgstr "Lizenz-Gültigkeit (Tage)" -#: src/Email/LicenseExpirationEmail.php:203 -#: src/Email/LicenseExpirationEmail.php:269 -#: src/Email/LicenseExpiredEmail.php:187 src/Email/LicenseExpiredEmail.php:255 -msgid "Product:" -msgstr "Produkt:" +#: src/Product/LicensedProductType.php:149 +#, php-format +msgid "Number of days the license is valid. Leave empty for default (%s)." +msgstr "Anzahl Tage, die die Lizenz gültig ist. Leer lassen für Standard (%s)." -#: src/Email/LicenseExpirationEmail.php:215 -#: src/Email/LicenseExpirationEmail.php:271 -#: src/Email/LicenseExpiredEmail.php:199 src/Email/LicenseExpiredEmail.php:257 -#: src/Frontend/AccountController.php:201 -msgid "Domain:" -msgstr "Domain:" +#: src/Product/LicensedProductType.php:164 +msgid "Bind to Major Version" +msgstr "An Hauptversion binden" -#: src/Email/LicenseExpirationEmail.php:235 -#: src/Email/LicenseExpirationEmail.php:281 -#: src/Email/LicenseExpiredEmail.php:227 src/Email/LicenseExpiredEmail.php:268 -msgid "View My Licenses" -msgstr "Meine Lizenzen anzeigen" - -#: src/Email/LicenseExpirationEmail.php:291 +#: src/Product/LicensedProductType.php:167 +#, php-format msgid "" -"To continue using this product, please renew your license before the " -"expiration date." +"If enabled, licenses are bound to the major version at purchase time. " +"Default: %s" msgstr "" -"Um dieses Produkt weiterhin zu nutzen, verlängern Sie bitte Ihre Lizenz vor " -"dem Ablaufdatum." +"Falls aktiviert, werden Lizenzen an die Hauptversion zum Kaufzeitpunkt " +"gebunden. Standard: %s" -#: src/Email/LicenseExpirationEmail.php:301 -#: src/Email/LicenseExpiredEmail.php:288 +#: src/Product/LicensedProductType.php:168 +msgid "Yes" +msgstr "Ja" + +#: src/Product/LicensedProductType.php:168 +msgid "No" +msgstr "Nein" + +#: src/Product/LicensedProductType.php:288 +msgid "Version:" +msgstr "Version:" + +#: src/Product/VersionManager.php:166 +msgid "Attachment file not found." +msgstr "Anhangs-Datei nicht gefunden." + +#: src/Product/VersionManager.php:177 #, php-format -msgid "Available placeholders: %s" -msgstr "Verfügbare Platzhalter: %s" - -#: src/Email/LicenseExpirationEmail.php:307 -#: src/Email/LicenseExpiredEmail.php:294 -msgid "Enable/Disable" -msgstr "Aktivieren/Deaktivieren" - -#: src/Email/LicenseExpirationEmail.php:309 -#: src/Email/LicenseExpiredEmail.php:296 -msgid "Enable this email notification" -msgstr "Diese E-Mail-Benachrichtigung aktivieren" - -#: src/Email/LicenseExpirationEmail.php:313 -#: src/Email/LicenseExpiredEmail.php:300 -msgid "Subject" -msgstr "Betreff" - -#: src/Email/LicenseExpirationEmail.php:321 -#: src/Email/LicenseExpiredEmail.php:308 -msgid "Email heading" -msgstr "E-Mail-Überschrift" - -#: src/Email/LicenseExpirationEmail.php:329 -#: src/Email/LicenseExpiredEmail.php:316 -msgid "Additional content" -msgstr "Zusätzlicher Inhalt" - -#: src/Email/LicenseExpirationEmail.php:330 -#: src/Email/LicenseExpiredEmail.php:317 -msgid "Text to appear below the main email content." -msgstr "Text, der unter dem Haupt-E-Mail-Inhalt erscheinen soll." - -#: src/Email/LicenseExpirationEmail.php:338 -#: src/Email/LicenseExpiredEmail.php:325 -msgid "Email type" -msgstr "E-Mail-Typ" - -#: src/Email/LicenseExpirationEmail.php:340 -#: src/Email/LicenseExpiredEmail.php:327 -msgid "Choose which format of email to send." -msgstr "Wählen Sie, welches E-Mail-Format gesendet werden soll." - -#: src/Email/LicenseExpiredEmail.php:50 src/Email/LicenseExpiredEmail.php:76 -msgid "License Expired" -msgstr "Lizenz abgelaufen" - -#: src/Email/LicenseExpiredEmail.php:51 -msgid "" -"License expired emails are sent to customers when their licenses have " -"expired." -msgstr "" -"Lizenzablauf-E-Mails werden an Kunden gesendet, wenn ihre Lizenzen " -"abgelaufen sind." - -#: src/Email/LicenseExpiredEmail.php:68 -msgid "[{site_title}] Your license for {product_name} has expired" -msgstr "[{site_title}] Ihre Lizenz für {product_name} ist abgelaufen" - -#: src/Email/LicenseExpiredEmail.php:171 src/Email/LicenseExpiredEmail.php:242 -#, php-format -msgid "Your license for %1$s has expired on %2$s." -msgstr "Ihre Lizenz für %1$s ist am %2$s abgelaufen." - -#: src/Email/LicenseExpiredEmail.php:178 src/Email/LicenseExpiredEmail.php:248 -msgid "" -"Your license is no longer valid and the product will stop working until you " -"renew." -msgstr "" -"Ihre Lizenz ist nicht mehr gültig und das Produkt wird nicht mehr " -"funktionieren, bis Sie verlängern." - -#: src/Email/LicenseExpiredEmail.php:181 src/Email/LicenseExpiredEmail.php:252 -msgid "Expired License Details" -msgstr "Details der abgelaufenen Lizenz" - -#: src/Email/LicenseExpiredEmail.php:203 src/Email/LicenseExpiredEmail.php:258 -msgid "Expired on:" -msgstr "Abgelaufen am:" - -#: src/Email/LicenseExpiredEmail.php:207 src/Email/LicenseExpiredEmail.php:259 -msgid "Status:" -msgstr "Status:" - -#: src/Email/LicenseExpiredEmail.php:278 -msgid "To continue using this product, please renew your license." -msgstr "" -"Um dieses Produkt weiterhin zu nutzen, verlängern Sie bitte Ihre Lizenz." +msgid "File checksum does not match. Expected: %1$s, Got: %2$s" +msgstr "Datei-Prüfsumme stimmt nicht überein. Erwartet: %1$s, Erhalten: %2$s" #: src/Frontend/AccountController.php:104 msgid "Please log in to view your licenses." @@ -1496,6 +1427,36 @@ msgstr "Bitte melden Sie sich an, um Ihre Lizenzen zu sehen." msgid "You have no licenses yet." msgstr "Sie haben noch keine Lizenzen." +#: src/Frontend/AccountController.php:190 +#: src/Email/LicenseExpirationEmail.php:207 +#: src/Email/LicenseExpirationEmail.php:270 +#: src/Email/LicenseEmailController.php:212 +#: src/Email/LicenseEmailController.php:216 +#: src/Email/LicenseEmailController.php:320 +#: src/Email/LicenseExpiredEmail.php:191 src/Email/LicenseExpiredEmail.php:256 +msgid "License Key:" +msgstr "Lizenzschlüssel:" + +#: src/Frontend/AccountController.php:201 +#: src/Email/LicenseExpirationEmail.php:215 +#: src/Email/LicenseExpirationEmail.php:271 +#: src/Email/LicenseExpiredEmail.php:199 src/Email/LicenseExpiredEmail.php:257 +msgid "Domain:" +msgstr "Domain:" + +#: src/Frontend/AccountController.php:213 +#: src/Email/LicenseExpirationEmail.php:219 +#: src/Email/LicenseExpirationEmail.php:272 +#: src/Email/LicenseEmailController.php:323 +msgid "Expires:" +msgstr "Läuft ab:" + +#: src/Frontend/AccountController.php:218 +#: src/Email/LicenseEmailController.php:287 +#: src/Email/LicenseEmailController.php:326 +msgid "Never" +msgstr "Nie" + #: src/Frontend/AccountController.php:226 msgid "Available Downloads" msgstr "Verfügbare Downloads" @@ -1601,29 +1562,184 @@ msgstr "Keine Download-Datei für diese Version verfügbar." msgid "Download file not found." msgstr "Download-Datei nicht gefunden." -#: src/License/LicenseManager.php:366 -msgid "This license has been revoked." -msgstr "Diese Lizenz wurde widerrufen." +#: src/Email/LicenseExpirationEmail.php:55 +msgid "License Expiration Warning" +msgstr "Lizenzablauf-Warnung" -#: src/License/LicenseManager.php:376 -msgid "This license has expired." -msgstr "Diese Lizenz ist abgelaufen." +#: src/Email/LicenseExpirationEmail.php:56 +msgid "" +"License expiration warning emails are sent to customers when their licenses " +"are about to expire." +msgstr "" +"Lizenzablauf-Warnungs-E-Mails werden an Kunden gesendet, wenn ihre Lizenzen " +"bald ablaufen." -#: src/License/LicenseManager.php:384 -msgid "This license is inactive." -msgstr "Diese Lizenz ist inaktiv." +#: src/Email/LicenseExpirationEmail.php:74 +msgid "" +"[{site_title}] Your license for {product_name} expires in {days_remaining} " +"days" +msgstr "" +"[{site_title}] Ihre Lizenz für {product_name} läuft in {days_remaining} " +"Tagen ab" -#: src/License/LicenseManager.php:394 -msgid "This license is not valid for this domain." -msgstr "Diese Lizenz ist für diese Domain nicht gültig." +#: src/Email/LicenseExpirationEmail.php:82 +msgid "License Expiration Notice" +msgstr "Lizenzablauf-Benachrichtigung" -#: src/License/PluginLicenseChecker.php:117 -msgid "License settings not configured." -msgstr "Lizenzeinstellungen nicht konfiguriert." +#: src/Email/LicenseExpirationEmail.php:176 +#: src/Email/LicenseExpirationEmail.php:246 +#: src/Email/LicenseExpiredEmail.php:167 src/Email/LicenseExpiredEmail.php:238 +#, php-format +msgid "Hello %s," +msgstr "Guten Tag %s," -#: src/License/PluginLicenseChecker.php:153 -msgid "Could not connect to license server." -msgstr "Verbindung zum Lizenzserver konnte nicht hergestellt werden." +#: src/Email/LicenseExpirationEmail.php:181 +#: src/Email/LicenseExpirationEmail.php:251 +#, php-format +msgid "Your license for %s will expire tomorrow (%s)." +msgstr "Ihre Lizenz für %s läuft morgen ab (%s)." + +#: src/Email/LicenseExpirationEmail.php:189 +#: src/Email/LicenseExpirationEmail.php:257 +#, php-format +msgid "Your license for %1$s will expire in %2$d days (%3$s)." +msgstr "Ihre Lizenz für %1$s läuft in %2$d Tagen ab (%3$s)." + +#: src/Email/LicenseExpirationEmail.php:197 +#: src/Email/LicenseExpirationEmail.php:266 +msgid "License Details" +msgstr "Lizenzdetails" + +#: src/Email/LicenseExpirationEmail.php:203 +#: src/Email/LicenseExpirationEmail.php:269 +#: src/Email/LicenseExpiredEmail.php:187 src/Email/LicenseExpiredEmail.php:255 +msgid "Product:" +msgstr "Produkt:" + +#: src/Email/LicenseExpirationEmail.php:235 +#: src/Email/LicenseExpirationEmail.php:281 +#: src/Email/LicenseExpiredEmail.php:227 src/Email/LicenseExpiredEmail.php:268 +msgid "View My Licenses" +msgstr "Meine Lizenzen anzeigen" + +#: src/Email/LicenseExpirationEmail.php:291 +msgid "" +"To continue using this product, please renew your license before the " +"expiration date." +msgstr "" +"Um dieses Produkt weiterhin zu nutzen, verlängern Sie bitte Ihre Lizenz vor " +"dem Ablaufdatum." + +#: src/Email/LicenseExpirationEmail.php:301 +#: src/Email/LicenseExpiredEmail.php:288 +#, php-format +msgid "Available placeholders: %s" +msgstr "Verfügbare Platzhalter: %s" + +#: src/Email/LicenseExpirationEmail.php:307 +#: src/Email/LicenseExpiredEmail.php:294 +msgid "Enable/Disable" +msgstr "Aktivieren/Deaktivieren" + +#: src/Email/LicenseExpirationEmail.php:309 +#: src/Email/LicenseExpiredEmail.php:296 +msgid "Enable this email notification" +msgstr "Diese E-Mail-Benachrichtigung aktivieren" + +#: src/Email/LicenseExpirationEmail.php:313 +#: src/Email/LicenseExpiredEmail.php:300 +msgid "Subject" +msgstr "Betreff" + +#: src/Email/LicenseExpirationEmail.php:321 +#: src/Email/LicenseExpiredEmail.php:308 +msgid "Email heading" +msgstr "E-Mail-Überschrift" + +#: src/Email/LicenseExpirationEmail.php:329 +#: src/Email/LicenseExpiredEmail.php:316 +msgid "Additional content" +msgstr "Zusätzlicher Inhalt" + +#: src/Email/LicenseExpirationEmail.php:330 +#: src/Email/LicenseExpiredEmail.php:317 +msgid "Text to appear below the main email content." +msgstr "Text, der unter dem Haupt-E-Mail-Inhalt erscheinen soll." + +#: src/Email/LicenseExpirationEmail.php:338 +#: src/Email/LicenseExpiredEmail.php:325 +msgid "Email type" +msgstr "E-Mail-Typ" + +#: src/Email/LicenseExpirationEmail.php:340 +#: src/Email/LicenseExpiredEmail.php:327 +msgid "Choose which format of email to send." +msgstr "Wählen Sie, welches E-Mail-Format gesendet werden soll." + +#: src/Email/LicenseEmailController.php:256 +msgid "Your License Keys" +msgstr "Ihre Lizenzschlüssel" + +#: src/Email/LicenseEmailController.php:260 +#: src/Email/LicenseEmailController.php:315 +msgid "Licensed Domain:" +msgstr "Lizensierte Domain:" + +#: src/Email/LicenseEmailController.php:296 +#: src/Email/LicenseEmailController.php:330 +msgid "You can also view your licenses in your account under \"Licenses\"." +msgstr "" +"Sie können Ihre Lizenzen auch in Ihrem Konto unter \"Lizenzen\" einsehen." + +#: src/Email/LicenseEmailController.php:311 +msgid "YOUR LICENSE KEYS" +msgstr "IHRE LIZENZSCHLÜSSEL" + +#: src/Email/LicenseExpiredEmail.php:50 src/Email/LicenseExpiredEmail.php:76 +msgid "License Expired" +msgstr "Lizenz abgelaufen" + +#: src/Email/LicenseExpiredEmail.php:51 +msgid "" +"License expired emails are sent to customers when their licenses have " +"expired." +msgstr "" +"Lizenzablauf-E-Mails werden an Kunden gesendet, wenn ihre Lizenzen " +"abgelaufen sind." + +#: src/Email/LicenseExpiredEmail.php:68 +msgid "[{site_title}] Your license for {product_name} has expired" +msgstr "[{site_title}] Ihre Lizenz für {product_name} ist abgelaufen" + +#: src/Email/LicenseExpiredEmail.php:171 src/Email/LicenseExpiredEmail.php:242 +#, php-format +msgid "Your license for %1$s has expired on %2$s." +msgstr "Ihre Lizenz für %1$s ist am %2$s abgelaufen." + +#: src/Email/LicenseExpiredEmail.php:178 src/Email/LicenseExpiredEmail.php:248 +msgid "" +"Your license is no longer valid and the product will stop working until you " +"renew." +msgstr "" +"Ihre Lizenz ist nicht mehr gültig und das Produkt wird nicht mehr " +"funktionieren, bis Sie verlängern." + +#: src/Email/LicenseExpiredEmail.php:181 src/Email/LicenseExpiredEmail.php:252 +msgid "Expired License Details" +msgstr "Details der abgelaufenen Lizenz" + +#: src/Email/LicenseExpiredEmail.php:203 src/Email/LicenseExpiredEmail.php:258 +msgid "Expired on:" +msgstr "Abgelaufen am:" + +#: src/Email/LicenseExpiredEmail.php:207 src/Email/LicenseExpiredEmail.php:259 +msgid "Status:" +msgstr "Status:" + +#: src/Email/LicenseExpiredEmail.php:278 +msgid "To continue using this product, please renew your license." +msgstr "" +"Um dieses Produkt weiterhin zu nutzen, verlängern Sie bitte Ihre Lizenz." #: src/Plugin.php:260 msgid "WC Licensed Product" @@ -1640,80 +1756,6 @@ msgstr "" msgid "Configure License" msgstr "Lizenz konfigurieren" -#: src/Product/LicensedProductType.php:61 -msgid "Licensed Product" -msgstr "Lizensiertes Produkt" - -#: src/Product/LicensedProductType.php:82 -msgid "License Settings" -msgstr "Lizenz-Einstellungen" - -#: src/Product/LicensedProductType.php:109 -#, php-format -msgid "%d days" -msgstr "%d Tage" - -#: src/Product/LicensedProductType.php:119 -#, php-format -msgid "Leave fields empty to use default settings from %s." -msgstr "Felder leer lassen, um Standardeinstellungen von %s zu verwenden." - -#: src/Product/LicensedProductType.php:121 -msgid "WooCommerce > Settings > Licensed Products" -msgstr "WooCommerce > Einstellungen > Lizensierte Produkte" - -#: src/Product/LicensedProductType.php:128 -msgid "Max Activations" -msgstr "Max. Aktivierungen" - -#: src/Product/LicensedProductType.php:131 -#, php-format -msgid "Maximum number of domain activations per license. Default: %d" -msgstr "Maximale Anzahl der Domain-Aktivierungen pro Lizenz. Standard: %d" - -#: src/Product/LicensedProductType.php:146 -msgid "License Validity (Days)" -msgstr "Lizenz-Gültigkeit (Tage)" - -#: src/Product/LicensedProductType.php:149 -#, php-format -msgid "Number of days the license is valid. Leave empty for default (%s)." -msgstr "Anzahl Tage, die die Lizenz gültig ist. Leer lassen für Standard (%s)." - -#: src/Product/LicensedProductType.php:164 -msgid "Bind to Major Version" -msgstr "An Hauptversion binden" - -#: src/Product/LicensedProductType.php:167 -#, php-format -msgid "" -"If enabled, licenses are bound to the major version at purchase time. " -"Default: %s" -msgstr "" -"Falls aktiviert, werden Lizenzen an die Hauptversion zum Kaufzeitpunkt " -"gebunden. Standard: %s" - -#: src/Product/LicensedProductType.php:168 -msgid "Yes" -msgstr "Ja" - -#: src/Product/LicensedProductType.php:168 -msgid "No" -msgstr "Nein" - -#: src/Product/LicensedProductType.php:288 -msgid "Version:" -msgstr "Version:" - -#: src/Product/VersionManager.php:166 -msgid "Attachment file not found." -msgstr "Anhangs-Datei nicht gefunden." - -#: src/Product/VersionManager.php:177 -#, php-format -msgid "File checksum does not match. Expected: %1$s, Got: %2$s" -msgstr "Datei-Prüfsumme stimmt nicht überein. Erwartet: %1$s, Erhalten: %2$s" - #: wc-licensed-product.php:61 #, php-format msgid "%s requires WooCommerce to be installed and active." diff --git a/languages/wc-licensed-product.pot b/languages/wc-licensed-product.pot index 13d0af0..a182d25 100644 --- a/languages/wc-licensed-product.pot +++ b/languages/wc-licensed-product.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: WC Licensed Product 0.3.7\n" +"Project-Id-Version: WC Licensed Product 0.3.8\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-01-24 10:18+0100\n" +"POT-Creation-Date: 2026-01-24 16:03+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -18,14 +18,604 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" -#: src/Admin/AdminController.php:76 src/Admin/AdminController.php:77 -#: src/Admin/AdminController.php:90 src/Admin/AdminController.php:1200 -#: src/Admin/OrderLicenseController.php:127 -#: src/Admin/OrderLicenseController.php:222 -#: src/Frontend/AccountController.php:90 +#: src/Admin/OrderLicenseController.php:57 +msgid "Product Licenses" +msgstr "" + +#: src/Admin/OrderLicenseController.php:78 +#: src/Admin/OrderLicenseController.php:367 +#: src/Admin/OrderLicenseController.php:469 +msgid "Order not found." +msgstr "" + +#: src/Admin/OrderLicenseController.php:93 +msgid "This order does not contain licensed products." +msgstr "" + +#: src/Admin/OrderLicenseController.php:107 +msgid "Order Domain" +msgstr "" + +#: src/Admin/OrderLicenseController.php:109 +msgid "" +"The domain specified during checkout. Changing this will not automatically " +"update existing license domains." +msgstr "" + +#: src/Admin/OrderLicenseController.php:117 +#: src/Checkout/CheckoutController.php:89 +#: src/Checkout/CheckoutBlocksIntegration.php:102 +msgid "example.com" +msgstr "" + +#: src/Admin/OrderLicenseController.php:119 +#: src/Admin/OrderLicenseController.php:209 src/Admin/AdminController.php:150 +#: src/Admin/AdminController.php:1340 src/Admin/AdminController.php:1360 +#: src/Admin/AdminController.php:1381 +msgid "Save" +msgstr "" + +#: src/Admin/OrderLicenseController.php:128 +#: src/Admin/OrderLicenseController.php:249 src/Admin/AdminController.php:76 +#: src/Admin/AdminController.php:77 src/Admin/AdminController.php:90 +#: src/Admin/AdminController.php:1200 src/Frontend/AccountController.php:90 msgid "Licenses" msgstr "" +#: src/Admin/OrderLicenseController.php:144 +msgid "No licenses have been generated for this order yet." +msgstr "" + +#: src/Admin/OrderLicenseController.php:147 +msgid "" +"Licenses should be generated automatically when an order is paid. If " +"missing, check that a domain was specified during checkout." +msgstr "" + +#: src/Admin/OrderLicenseController.php:150 +msgid "Licenses will be generated when the order is marked as paid/completed." +msgstr "" + +#: src/Admin/OrderLicenseController.php:156 +msgid "Generate Licenses" +msgstr "" + +#: src/Admin/OrderLicenseController.php:164 +msgid "Please set the order domain above before generating licenses." +msgstr "" + +#: src/Admin/OrderLicenseController.php:171 +#: src/Admin/SettingsController.php:142 src/Admin/AdminController.php:1291 +#: src/Admin/AdminController.php:1442 src/Admin/AdminController.php:1491 +#: src/Email/LicenseEmailController.php:269 +msgid "License Key" +msgstr "" + +#: src/Admin/OrderLicenseController.php:172 src/Admin/AdminController.php:1292 +#: src/Admin/AdminController.php:1443 src/Admin/AdminController.php:1608 +#: src/Email/LicenseEmailController.php:268 +msgid "Product" +msgstr "" + +#: src/Admin/OrderLicenseController.php:173 src/Admin/AdminController.php:1294 +#: src/Admin/AdminController.php:1445 src/Admin/AdminController.php:1495 +msgid "Domain" +msgstr "" + +#: src/Admin/OrderLicenseController.php:174 +#: src/Admin/VersionAdminController.php:140 src/Admin/AdminController.php:1295 +#: src/Admin/AdminController.php:1446 +msgid "Status" +msgstr "" + +#: src/Admin/OrderLicenseController.php:175 src/Admin/AdminController.php:1297 +#: src/Admin/AdminController.php:1448 src/Admin/AdminController.php:1611 +#: src/Admin/AdminController.php:1613 src/Email/LicenseEmailController.php:270 +msgid "Expires" +msgstr "" + +#: src/Admin/OrderLicenseController.php:176 +#: src/Admin/VersionAdminController.php:142 src/Admin/AdminController.php:1298 +#: src/Admin/AdminController.php:1449 +msgid "Actions" +msgstr "" + +#: src/Admin/OrderLicenseController.php:195 src/Admin/AdminController.php:195 +#: src/Admin/AdminController.php:1019 +msgid "Unknown" +msgstr "" + +#: src/Admin/OrderLicenseController.php:205 +msgid "Edit domain" +msgstr "" + +#: src/Admin/OrderLicenseController.php:212 src/Admin/AdminController.php:149 +#: src/Admin/AdminController.php:1341 src/Admin/AdminController.php:1361 +#: src/Admin/AdminController.php:1382 src/Admin/AdminController.php:1537 +#: src/Frontend/AccountController.php:271 +msgid "Cancel" +msgstr "" + +#: src/Admin/OrderLicenseController.php:228 +#: src/Admin/SettingsController.php:192 src/Admin/AdminController.php:151 +#: src/Admin/AdminController.php:266 src/Admin/AdminController.php:1373 +#: src/Admin/AdminController.php:1613 +#: src/Admin/DashboardWidgetController.php:136 +#: src/Product/LicensedProductType.php:110 +#: src/Product/LicensedProductType.php:158 +msgid "Lifetime" +msgstr "" + +#: src/Admin/OrderLicenseController.php:235 +msgid "View in Licenses" +msgstr "" + +#: src/Admin/OrderLicenseController.php:248 +#, php-format +msgid "For more actions (revoke, extend, delete), go to the %s page." +msgstr "" + +#: src/Admin/OrderLicenseController.php:261 +#, php-format +msgid "%d licensed product is missing a license." +msgid_plural "%d licensed products are missing licenses." +msgstr[0] "" +msgstr[1] "" + +#: src/Admin/OrderLicenseController.php:270 +msgid "Generate Missing Licenses" +msgstr "" + +#: src/Admin/OrderLicenseController.php:338 src/Admin/AdminController.php:144 +msgid "Saving..." +msgstr "" + +#: src/Admin/OrderLicenseController.php:339 +msgid "Saved!" +msgstr "" + +#: src/Admin/OrderLicenseController.php:340 +msgid "Error. Please try again." +msgstr "" + +#: src/Admin/OrderLicenseController.php:341 +#: src/Frontend/AccountController.php:314 +#: src/Frontend/AccountController.php:346 +msgid "Please enter a valid domain." +msgstr "" + +#: src/Admin/OrderLicenseController.php:342 +msgid "Generating..." +msgstr "" + +#: src/Admin/OrderLicenseController.php:355 +#: src/Admin/OrderLicenseController.php:394 +#: src/Admin/OrderLicenseController.php:458 +#: src/Admin/VersionAdminController.php:259 +#: src/Admin/VersionAdminController.php:328 +#: src/Admin/VersionAdminController.php:354 src/Admin/AdminController.php:173 +#: src/Admin/AdminController.php:213 src/Admin/AdminController.php:249 +#: src/Admin/AdminController.php:301 src/Admin/AdminController.php:339 +#: src/Admin/AdminController.php:369 +msgid "Permission denied." +msgstr "" + +#: src/Admin/OrderLicenseController.php:362 +#: src/Admin/OrderLicenseController.php:464 +msgid "Invalid order ID." +msgstr "" + +#: src/Admin/OrderLicenseController.php:373 +#: src/Admin/OrderLicenseController.php:411 +msgid "Invalid domain format." +msgstr "" + +#: src/Admin/OrderLicenseController.php:381 +msgid "Order domain updated." +msgstr "" + +#: src/Admin/OrderLicenseController.php:401 src/Admin/AdminController.php:220 +#: src/Admin/AdminController.php:256 src/Admin/AdminController.php:308 +#: src/Admin/AdminController.php:345 +msgid "Invalid license ID." +msgstr "" + +#: src/Admin/OrderLicenseController.php:405 src/Admin/AdminController.php:312 +msgid "Domain cannot be empty." +msgstr "" + +#: src/Admin/OrderLicenseController.php:417 +#: src/Frontend/AccountController.php:352 +#: src/Frontend/DownloadController.php:117 +msgid "License not found." +msgstr "" + +#: src/Admin/OrderLicenseController.php:425 +msgid "License domain updated." +msgstr "" + +#: src/Admin/OrderLicenseController.php:429 +msgid "Failed to update license domain." +msgstr "" + +#: src/Admin/OrderLicenseController.php:474 +msgid "Order must be paid before licenses can be generated." +msgstr "" + +#: src/Admin/OrderLicenseController.php:480 +msgid "Please set the order domain before generating licenses." +msgstr "" + +#: src/Admin/OrderLicenseController.php:521 +#, php-format +msgid "%d license generated successfully." +msgid_plural "%d licenses generated successfully." +msgstr[0] "" +msgstr[1] "" + +#: src/Admin/OrderLicenseController.php:534 +msgid "All licenses already exist for this order." +msgstr "" + +#: src/Admin/SettingsController.php:54 +msgid "Licensed Products" +msgstr "" + +#: src/Admin/SettingsController.php:64 src/Admin/SettingsController.php:128 +msgid "Plugin License" +msgstr "" + +#: src/Admin/SettingsController.php:65 +msgid "Default Settings" +msgstr "" + +#: src/Admin/SettingsController.php:66 +msgid "Notifications" +msgstr "" + +#: src/Admin/SettingsController.php:130 +msgid "" +"Configure the license for this plugin. A valid license is required for " +"frontend features to work." +msgstr "" + +#: src/Admin/SettingsController.php:134 +msgid "License Server URL" +msgstr "" + +#: src/Admin/SettingsController.php:136 +msgid "The URL of the license server (e.g., https://shop.example.com)." +msgstr "" + +#: src/Admin/SettingsController.php:144 +msgid "Your license key in XXXX-XXXX-XXXX-XXXX format." +msgstr "" + +#: src/Admin/SettingsController.php:150 +msgid "Server Secret (Optional)" +msgstr "" + +#: src/Admin/SettingsController.php:152 +msgid "" +"If the license server uses signed responses, enter the shared secret here " +"for enhanced security." +msgstr "" + +#: src/Admin/SettingsController.php:170 +msgid "Default License Settings" +msgstr "" + +#: src/Admin/SettingsController.php:172 +msgid "" +"These settings serve as defaults for new licensed products. Individual " +"product settings override these defaults." +msgstr "" + +#: src/Admin/SettingsController.php:176 +msgid "Default Max Activations" +msgstr "" + +#: src/Admin/SettingsController.php:178 +msgid "Default maximum number of domain activations per license." +msgstr "" + +#: src/Admin/SettingsController.php:187 +msgid "Default License Validity (Days)" +msgstr "" + +#: src/Admin/SettingsController.php:189 +msgid "" +"Default number of days a license is valid. Leave empty or set to 0 for " +"lifetime licenses." +msgstr "" + +#: src/Admin/SettingsController.php:199 +msgid "Default Bind to Major Version" +msgstr "" + +#: src/Admin/SettingsController.php:201 +msgid "" +"If enabled, licenses are bound to the major version at purchase time by " +"default." +msgstr "" + +#: src/Admin/SettingsController.php:219 +msgid "Expiration Warning Schedule" +msgstr "" + +#: src/Admin/SettingsController.php:223 +#, php-format +msgid "" +"Configure when expiration warning emails are sent. To customize the email " +"template, enable/disable, or change the subject, go to %s." +msgstr "" + +#: src/Admin/SettingsController.php:225 +msgid "WooCommerce > Settings > Emails > License Expiration Warning" +msgstr "" + +#: src/Admin/SettingsController.php:230 +msgid "First Warning (Days Before)" +msgstr "" + +#: src/Admin/SettingsController.php:232 +msgid "Days before expiration to send the first warning email." +msgstr "" + +#: src/Admin/SettingsController.php:241 +msgid "Second Warning (Days Before)" +msgstr "" + +#: src/Admin/SettingsController.php:243 +msgid "" +"Days before expiration to send the second warning email. Set to 0 to disable." +msgstr "" + +#: src/Admin/SettingsController.php:283 +msgid "Running on localhost - license validation bypassed." +msgstr "" + +#: src/Admin/SettingsController.php:291 +msgid "License is valid and active." +msgstr "" + +#: src/Admin/SettingsController.php:297 +msgid "License is not valid. Frontend features are disabled." +msgstr "" + +#: src/Admin/SettingsController.php:308 src/Admin/SettingsController.php:344 +msgid "Verify License" +msgstr "" + +#: src/Admin/SettingsController.php:322 +msgid "Verifying..." +msgstr "" + +#: src/Admin/SettingsController.php:341 +msgid "Request failed." +msgstr "" + +#: src/Admin/SettingsController.php:454 src/Admin/AdminController.php:455 +#: src/Admin/AdminController.php:475 src/Admin/AdminController.php:493 +#: src/Admin/AdminController.php:511 src/Admin/AdminController.php:531 +#: src/Admin/AdminController.php:549 src/Admin/AdminController.php:577 +#: src/Admin/AdminController.php:621 src/Admin/AdminController.php:811 +#: src/Frontend/AccountController.php:326 +msgid "Security check failed." +msgstr "" + +#: src/Admin/SettingsController.php:458 +msgid "Insufficient permissions." +msgstr "" + +#: src/Admin/SettingsController.php:467 +msgid "License verified successfully!" +msgstr "" + +#: src/Admin/SettingsController.php:469 +msgid "License validation failed." +msgstr "" + +#: src/Admin/VersionAdminController.php:58 +msgid "Product Versions" +msgstr "" + +#: src/Admin/VersionAdminController.php:78 +msgid "Add New Version" +msgstr "" + +#: src/Admin/VersionAdminController.php:81 +#: src/Admin/VersionAdminController.php:136 src/Admin/AdminController.php:1609 +msgid "Version" +msgstr "" + +#: src/Admin/VersionAdminController.php:84 +msgid "Use semantic versioning (e.g., 1.0.0)" +msgstr "" + +#: src/Admin/VersionAdminController.php:88 +#: src/Admin/VersionAdminController.php:137 +msgid "Download File" +msgstr "" + +#: src/Admin/VersionAdminController.php:93 +msgid "Select File" +msgstr "" + +#: src/Admin/VersionAdminController.php:96 +#: src/Admin/VersionAdminController.php:110 +msgid "Remove" +msgstr "" + +#: src/Admin/VersionAdminController.php:98 +msgid "" +"Upload or select a file from the media library. Version will be auto-" +"detected from filename (e.g., plugin-v1.2.3.zip)." +msgstr "" + +#: src/Admin/VersionAdminController.php:102 +msgid "Checksum File" +msgstr "" + +#: src/Admin/VersionAdminController.php:107 +msgid "Select Checksum File" +msgstr "" + +#: src/Admin/VersionAdminController.php:112 +msgid "" +"Upload a SHA256 checksum file (.sha256 or .txt) to verify file integrity." +msgstr "" + +#: src/Admin/VersionAdminController.php:116 +#: src/Admin/VersionAdminController.php:139 +msgid "Release Notes" +msgstr "" + +#: src/Admin/VersionAdminController.php:124 +msgid "Add Version" +msgstr "" + +#: src/Admin/VersionAdminController.php:132 +msgid "Existing Versions" +msgstr "" + +#: src/Admin/VersionAdminController.php:138 +msgid "SHA256" +msgstr "" + +#: src/Admin/VersionAdminController.php:141 +msgid "Released" +msgstr "" + +#: src/Admin/VersionAdminController.php:148 +msgid "No versions found. Add your first version above." +msgstr "" + +#: src/Admin/VersionAdminController.php:165 +#: src/Admin/VersionAdminController.php:396 +msgid "Uploaded file" +msgstr "" + +#: src/Admin/VersionAdminController.php:169 +#: src/Admin/VersionAdminController.php:400 +msgid "No download file" +msgstr "" + +#: src/Admin/VersionAdminController.php:182 +#: src/Admin/VersionAdminController.php:413 src/Admin/AdminController.php:156 +#: src/Admin/AdminController.php:907 src/Admin/AdminController.php:1232 +#: src/Admin/AdminController.php:1355 +#: src/Admin/DashboardWidgetController.php:117 +msgid "Active" +msgstr "" + +#: src/Admin/VersionAdminController.php:182 +#: src/Admin/VersionAdminController.php:413 src/Admin/AdminController.php:157 +#: src/Admin/AdminController.php:914 src/Admin/AdminController.php:1233 +#: src/Admin/AdminController.php:1356 +msgid "Inactive" +msgstr "" + +#: src/Admin/VersionAdminController.php:188 +#: src/Admin/VersionAdminController.php:419 src/Admin/AdminController.php:1274 +#: src/Admin/AdminController.php:1459 +msgid "Deactivate" +msgstr "" + +#: src/Admin/VersionAdminController.php:188 +#: src/Admin/VersionAdminController.php:419 src/Admin/AdminController.php:1273 +#: src/Admin/AdminController.php:1458 +msgid "Activate" +msgstr "" + +#: src/Admin/VersionAdminController.php:191 +#: src/Admin/VersionAdminController.php:422 src/Admin/AdminController.php:1279 +#: src/Admin/AdminController.php:1428 src/Admin/AdminController.php:1464 +msgid "Delete" +msgstr "" + +#: src/Admin/VersionAdminController.php:232 +msgid "Are you sure you want to delete this version?" +msgstr "" + +#: src/Admin/VersionAdminController.php:233 +msgid "Please enter a version number." +msgstr "" + +#: src/Admin/VersionAdminController.php:234 +msgid "Please enter a valid version number (e.g., 1.0.0)." +msgstr "" + +#: src/Admin/VersionAdminController.php:235 +msgid "An error occurred. Please try again." +msgstr "" + +#: src/Admin/VersionAdminController.php:236 +msgid "Select Download File" +msgstr "" + +#: src/Admin/VersionAdminController.php:237 +msgid "Use this file" +msgstr "" + +#: src/Admin/VersionAdminController.php:238 +msgid "" +"Invalid checksum file format. File must contain a 64-character SHA256 hash." +msgstr "" + +#: src/Admin/VersionAdminController.php:239 +msgid "Failed to read checksum file." +msgstr "" + +#: src/Admin/VersionAdminController.php:269 +msgid "Product ID and version are required." +msgstr "" + +#: src/Admin/VersionAdminController.php:274 +msgid "Invalid version format. Use semantic versioning (e.g., 1.0.0)." +msgstr "" + +#: src/Admin/VersionAdminController.php:279 +msgid "This version already exists." +msgstr "" + +#: src/Admin/VersionAdminController.php:285 +msgid "Product not found." +msgstr "" + +#: src/Admin/VersionAdminController.php:289 +msgid "This product is not a licensed product." +msgstr "" + +#: src/Admin/VersionAdminController.php:306 +msgid "Failed to create version." +msgstr "" + +#: src/Admin/VersionAdminController.php:314 +msgid "Version added successfully." +msgstr "" + +#: src/Admin/VersionAdminController.php:334 +#: src/Admin/VersionAdminController.php:361 +msgid "Version ID is required." +msgstr "" + +#: src/Admin/VersionAdminController.php:340 +msgid "Failed to delete version." +msgstr "" + +#: src/Admin/VersionAdminController.php:343 +msgid "Version deleted successfully." +msgstr "" + +#: src/Admin/VersionAdminController.php:367 +msgid "Failed to update version." +msgstr "" + +#: src/Admin/VersionAdminController.php:371 +msgid "Version updated successfully." +msgstr "" + #: src/Admin/AdminController.php:93 msgid "Overview" msgstr "" @@ -42,10 +632,6 @@ msgstr "" msgid "Search failed" msgstr "" -#: src/Admin/AdminController.php:144 src/Admin/OrderLicenseController.php:285 -msgid "Saving..." -msgstr "" - #: src/Admin/AdminController.php:145 msgid "Saved" msgstr "" @@ -64,29 +650,6 @@ msgstr "" msgid "Edit" msgstr "" -#: src/Admin/AdminController.php:149 src/Admin/AdminController.php:1341 -#: src/Admin/AdminController.php:1361 src/Admin/AdminController.php:1382 -#: src/Admin/AdminController.php:1537 src/Admin/OrderLicenseController.php:185 -#: src/Frontend/AccountController.php:271 -msgid "Cancel" -msgstr "" - -#: src/Admin/AdminController.php:150 src/Admin/AdminController.php:1340 -#: src/Admin/AdminController.php:1360 src/Admin/AdminController.php:1381 -#: src/Admin/OrderLicenseController.php:118 -#: src/Admin/OrderLicenseController.php:182 -msgid "Save" -msgstr "" - -#: src/Admin/AdminController.php:151 src/Admin/AdminController.php:266 -#: src/Admin/AdminController.php:1373 src/Admin/AdminController.php:1613 -#: src/Admin/DashboardWidgetController.php:136 -#: src/Admin/OrderLicenseController.php:201 -#: src/Admin/SettingsController.php:192 src/Product/LicensedProductType.php:110 -#: src/Product/LicensedProductType.php:158 -msgid "Lifetime" -msgstr "" - #: src/Admin/AdminController.php:152 src/Frontend/AccountController.php:309 msgid "Copied!" msgstr "" @@ -95,21 +658,6 @@ msgstr "" msgid "Copy failed" msgstr "" -#: src/Admin/AdminController.php:156 src/Admin/AdminController.php:907 -#: src/Admin/AdminController.php:1232 src/Admin/AdminController.php:1355 -#: src/Admin/DashboardWidgetController.php:117 -#: src/Admin/VersionAdminController.php:182 -#: src/Admin/VersionAdminController.php:413 -msgid "Active" -msgstr "" - -#: src/Admin/AdminController.php:157 src/Admin/AdminController.php:914 -#: src/Admin/AdminController.php:1233 src/Admin/AdminController.php:1356 -#: src/Admin/VersionAdminController.php:182 -#: src/Admin/VersionAdminController.php:413 -msgid "Inactive" -msgstr "" - #: src/Admin/AdminController.php:158 src/Admin/AdminController.php:921 #: src/Admin/AdminController.php:1234 src/Admin/AdminController.php:1357 #: src/Admin/DashboardWidgetController.php:125 @@ -122,32 +670,10 @@ msgstr "" msgid "Revoked" msgstr "" -#: src/Admin/AdminController.php:173 src/Admin/AdminController.php:213 -#: src/Admin/AdminController.php:249 src/Admin/AdminController.php:301 -#: src/Admin/AdminController.php:339 src/Admin/AdminController.php:369 -#: src/Admin/OrderLicenseController.php:301 -#: src/Admin/OrderLicenseController.php:340 -#: src/Admin/VersionAdminController.php:259 -#: src/Admin/VersionAdminController.php:328 -#: src/Admin/VersionAdminController.php:354 -msgid "Permission denied." -msgstr "" - -#: src/Admin/AdminController.php:195 src/Admin/AdminController.php:1019 -#: src/Admin/OrderLicenseController.php:168 -msgid "Unknown" -msgstr "" - #: src/Admin/AdminController.php:196 src/Admin/AdminController.php:1023 msgid "Guest" msgstr "" -#: src/Admin/AdminController.php:220 src/Admin/AdminController.php:256 -#: src/Admin/AdminController.php:308 src/Admin/AdminController.php:345 -#: src/Admin/OrderLicenseController.php:347 -msgid "Invalid license ID." -msgstr "" - #: src/Admin/AdminController.php:225 msgid "Invalid status." msgstr "" @@ -176,10 +702,6 @@ msgstr "" msgid "Invalid date format." msgstr "" -#: src/Admin/AdminController.php:312 src/Admin/OrderLicenseController.php:351 -msgid "Domain cannot be empty." -msgstr "" - #: src/Admin/AdminController.php:323 msgid "Domain updated successfully." msgstr "" @@ -200,15 +722,6 @@ msgstr "" msgid "License key and domain are required." msgstr "" -#: src/Admin/AdminController.php:455 src/Admin/AdminController.php:475 -#: src/Admin/AdminController.php:493 src/Admin/AdminController.php:511 -#: src/Admin/AdminController.php:531 src/Admin/AdminController.php:549 -#: src/Admin/AdminController.php:577 src/Admin/AdminController.php:621 -#: src/Admin/AdminController.php:811 src/Admin/SettingsController.php:454 -#: src/Frontend/AccountController.php:326 -msgid "Security check failed." -msgstr "" - #: src/Admin/AdminController.php:581 msgid "You do not have permission to export licenses." msgstr "" @@ -429,18 +942,6 @@ msgstr "" msgid "Bulk Actions" msgstr "" -#: src/Admin/AdminController.php:1273 src/Admin/AdminController.php:1458 -#: src/Admin/VersionAdminController.php:188 -#: src/Admin/VersionAdminController.php:419 -msgid "Activate" -msgstr "" - -#: src/Admin/AdminController.php:1274 src/Admin/AdminController.php:1459 -#: src/Admin/VersionAdminController.php:188 -#: src/Admin/VersionAdminController.php:419 -msgid "Deactivate" -msgstr "" - #: src/Admin/AdminController.php:1275 src/Admin/AdminController.php:1419 #: src/Admin/AdminController.php:1460 msgid "Revoke" @@ -458,63 +959,20 @@ msgstr "" msgid "Extend 1 year" msgstr "" -#: src/Admin/AdminController.php:1279 src/Admin/AdminController.php:1428 -#: src/Admin/AdminController.php:1464 src/Admin/VersionAdminController.php:191 -#: src/Admin/VersionAdminController.php:422 -msgid "Delete" -msgstr "" - #: src/Admin/AdminController.php:1281 src/Admin/AdminController.php:1466 msgid "Apply" msgstr "" -#: src/Admin/AdminController.php:1291 src/Admin/AdminController.php:1442 -#: src/Admin/AdminController.php:1491 src/Admin/OrderLicenseController.php:144 -#: src/Admin/SettingsController.php:142 -#: src/Email/LicenseEmailController.php:269 -msgid "License Key" -msgstr "" - -#: src/Admin/AdminController.php:1292 src/Admin/AdminController.php:1443 -#: src/Admin/AdminController.php:1608 src/Admin/OrderLicenseController.php:145 -#: src/Email/LicenseEmailController.php:268 -msgid "Product" -msgstr "" - #: src/Admin/AdminController.php:1293 src/Admin/AdminController.php:1444 #: src/Email/LicenseExpirationEmail.php:104 #: src/Email/LicenseExpiredEmail.php:96 msgid "Customer" msgstr "" -#: src/Admin/AdminController.php:1294 src/Admin/AdminController.php:1445 -#: src/Admin/AdminController.php:1495 src/Admin/OrderLicenseController.php:146 -msgid "Domain" -msgstr "" - -#: src/Admin/AdminController.php:1295 src/Admin/AdminController.php:1446 -#: src/Admin/OrderLicenseController.php:147 -#: src/Admin/VersionAdminController.php:140 -msgid "Status" -msgstr "" - #: src/Admin/AdminController.php:1296 src/Admin/AdminController.php:1447 msgid "Created" msgstr "" -#: src/Admin/AdminController.php:1297 src/Admin/AdminController.php:1448 -#: src/Admin/AdminController.php:1611 src/Admin/AdminController.php:1613 -#: src/Admin/OrderLicenseController.php:148 -#: src/Email/LicenseEmailController.php:270 -msgid "Expires" -msgstr "" - -#: src/Admin/AdminController.php:1298 src/Admin/AdminController.php:1449 -#: src/Admin/OrderLicenseController.php:149 -#: src/Admin/VersionAdminController.php:142 -msgid "Actions" -msgstr "" - #: src/Admin/AdminController.php:1304 msgid "No licenses found." msgstr "" @@ -595,11 +1053,6 @@ msgstr "" msgid "License is VALID" msgstr "" -#: src/Admin/AdminController.php:1609 src/Admin/VersionAdminController.php:81 -#: src/Admin/VersionAdminController.php:136 -msgid "Version" -msgstr "" - #: src/Admin/AdminController.php:1617 msgid "License is INVALID" msgstr "" @@ -752,415 +1205,6 @@ msgstr "" msgid "Top Versions" msgstr "" -#: src/Admin/OrderLicenseController.php:56 -msgid "Product Licenses" -msgstr "" - -#: src/Admin/OrderLicenseController.php:77 -#: src/Admin/OrderLicenseController.php:313 -msgid "Order not found." -msgstr "" - -#: src/Admin/OrderLicenseController.php:92 -msgid "This order does not contain licensed products." -msgstr "" - -#: src/Admin/OrderLicenseController.php:106 -msgid "Order Domain" -msgstr "" - -#: src/Admin/OrderLicenseController.php:108 -msgid "" -"The domain specified during checkout. Changing this will not automatically " -"update existing license domains." -msgstr "" - -#: src/Admin/OrderLicenseController.php:116 -#: src/Checkout/CheckoutBlocksIntegration.php:102 -#: src/Checkout/CheckoutController.php:89 -msgid "example.com" -msgstr "" - -#: src/Admin/OrderLicenseController.php:131 -msgid "No licenses have been generated for this order yet." -msgstr "" - -#: src/Admin/OrderLicenseController.php:134 -msgid "" -"Licenses should be generated automatically when an order is paid. If " -"missing, check that a domain was specified during checkout." -msgstr "" - -#: src/Admin/OrderLicenseController.php:137 -msgid "Licenses will be generated when the order is marked as paid/completed." -msgstr "" - -#: src/Admin/OrderLicenseController.php:178 -msgid "Edit domain" -msgstr "" - -#: src/Admin/OrderLicenseController.php:208 -msgid "View in Licenses" -msgstr "" - -#: src/Admin/OrderLicenseController.php:221 -#, php-format -msgid "For more actions (revoke, extend, delete), go to the %s page." -msgstr "" - -#: src/Admin/OrderLicenseController.php:286 -msgid "Saved!" -msgstr "" - -#: src/Admin/OrderLicenseController.php:287 -msgid "Error saving. Please try again." -msgstr "" - -#: src/Admin/OrderLicenseController.php:288 -#: src/Frontend/AccountController.php:314 -#: src/Frontend/AccountController.php:346 -msgid "Please enter a valid domain." -msgstr "" - -#: src/Admin/OrderLicenseController.php:308 -msgid "Invalid order ID." -msgstr "" - -#: src/Admin/OrderLicenseController.php:319 -#: src/Admin/OrderLicenseController.php:357 -msgid "Invalid domain format." -msgstr "" - -#: src/Admin/OrderLicenseController.php:327 -msgid "Order domain updated." -msgstr "" - -#: src/Admin/OrderLicenseController.php:363 -#: src/Frontend/AccountController.php:352 -#: src/Frontend/DownloadController.php:117 -msgid "License not found." -msgstr "" - -#: src/Admin/OrderLicenseController.php:371 -msgid "License domain updated." -msgstr "" - -#: src/Admin/OrderLicenseController.php:375 -msgid "Failed to update license domain." -msgstr "" - -#: src/Admin/SettingsController.php:54 -msgid "Licensed Products" -msgstr "" - -#: src/Admin/SettingsController.php:64 src/Admin/SettingsController.php:128 -msgid "Plugin License" -msgstr "" - -#: src/Admin/SettingsController.php:65 -msgid "Default Settings" -msgstr "" - -#: src/Admin/SettingsController.php:66 -msgid "Notifications" -msgstr "" - -#: src/Admin/SettingsController.php:130 -msgid "" -"Configure the license for this plugin. A valid license is required for " -"frontend features to work." -msgstr "" - -#: src/Admin/SettingsController.php:134 -msgid "License Server URL" -msgstr "" - -#: src/Admin/SettingsController.php:136 -msgid "The URL of the license server (e.g., https://shop.example.com)." -msgstr "" - -#: src/Admin/SettingsController.php:144 -msgid "Your license key in XXXX-XXXX-XXXX-XXXX format." -msgstr "" - -#: src/Admin/SettingsController.php:150 -msgid "Server Secret (Optional)" -msgstr "" - -#: src/Admin/SettingsController.php:152 -msgid "" -"If the license server uses signed responses, enter the shared secret here " -"for enhanced security." -msgstr "" - -#: src/Admin/SettingsController.php:170 -msgid "Default License Settings" -msgstr "" - -#: src/Admin/SettingsController.php:172 -msgid "" -"These settings serve as defaults for new licensed products. Individual " -"product settings override these defaults." -msgstr "" - -#: src/Admin/SettingsController.php:176 -msgid "Default Max Activations" -msgstr "" - -#: src/Admin/SettingsController.php:178 -msgid "Default maximum number of domain activations per license." -msgstr "" - -#: src/Admin/SettingsController.php:187 -msgid "Default License Validity (Days)" -msgstr "" - -#: src/Admin/SettingsController.php:189 -msgid "" -"Default number of days a license is valid. Leave empty or set to 0 for " -"lifetime licenses." -msgstr "" - -#: src/Admin/SettingsController.php:199 -msgid "Default Bind to Major Version" -msgstr "" - -#: src/Admin/SettingsController.php:201 -msgid "" -"If enabled, licenses are bound to the major version at purchase time by " -"default." -msgstr "" - -#: src/Admin/SettingsController.php:219 -msgid "Expiration Warning Schedule" -msgstr "" - -#: src/Admin/SettingsController.php:223 -#, php-format -msgid "" -"Configure when expiration warning emails are sent. To customize the email " -"template, enable/disable, or change the subject, go to %s." -msgstr "" - -#: src/Admin/SettingsController.php:225 -msgid "WooCommerce > Settings > Emails > License Expiration Warning" -msgstr "" - -#: src/Admin/SettingsController.php:230 -msgid "First Warning (Days Before)" -msgstr "" - -#: src/Admin/SettingsController.php:232 -msgid "Days before expiration to send the first warning email." -msgstr "" - -#: src/Admin/SettingsController.php:241 -msgid "Second Warning (Days Before)" -msgstr "" - -#: src/Admin/SettingsController.php:243 -msgid "" -"Days before expiration to send the second warning email. Set to 0 to disable." -msgstr "" - -#: src/Admin/SettingsController.php:283 -msgid "Running on localhost - license validation bypassed." -msgstr "" - -#: src/Admin/SettingsController.php:291 -msgid "License is valid and active." -msgstr "" - -#: src/Admin/SettingsController.php:297 -msgid "License is not valid. Frontend features are disabled." -msgstr "" - -#: src/Admin/SettingsController.php:308 src/Admin/SettingsController.php:344 -msgid "Verify License" -msgstr "" - -#: src/Admin/SettingsController.php:322 -msgid "Verifying..." -msgstr "" - -#: src/Admin/SettingsController.php:341 -msgid "Request failed." -msgstr "" - -#: src/Admin/SettingsController.php:458 -msgid "Insufficient permissions." -msgstr "" - -#: src/Admin/SettingsController.php:467 -msgid "License verified successfully!" -msgstr "" - -#: src/Admin/SettingsController.php:469 -msgid "License validation failed." -msgstr "" - -#: src/Admin/VersionAdminController.php:58 -msgid "Product Versions" -msgstr "" - -#: src/Admin/VersionAdminController.php:78 -msgid "Add New Version" -msgstr "" - -#: src/Admin/VersionAdminController.php:84 -msgid "Use semantic versioning (e.g., 1.0.0)" -msgstr "" - -#: src/Admin/VersionAdminController.php:88 -#: src/Admin/VersionAdminController.php:137 -msgid "Download File" -msgstr "" - -#: src/Admin/VersionAdminController.php:93 -msgid "Select File" -msgstr "" - -#: src/Admin/VersionAdminController.php:96 -#: src/Admin/VersionAdminController.php:110 -msgid "Remove" -msgstr "" - -#: src/Admin/VersionAdminController.php:98 -msgid "" -"Upload or select a file from the media library. Version will be auto-" -"detected from filename (e.g., plugin-v1.2.3.zip)." -msgstr "" - -#: src/Admin/VersionAdminController.php:102 -msgid "Checksum File" -msgstr "" - -#: src/Admin/VersionAdminController.php:107 -msgid "Select Checksum File" -msgstr "" - -#: src/Admin/VersionAdminController.php:112 -msgid "" -"Upload a SHA256 checksum file (.sha256 or .txt) to verify file integrity." -msgstr "" - -#: src/Admin/VersionAdminController.php:116 -#: src/Admin/VersionAdminController.php:139 -msgid "Release Notes" -msgstr "" - -#: src/Admin/VersionAdminController.php:124 -msgid "Add Version" -msgstr "" - -#: src/Admin/VersionAdminController.php:132 -msgid "Existing Versions" -msgstr "" - -#: src/Admin/VersionAdminController.php:138 -msgid "SHA256" -msgstr "" - -#: src/Admin/VersionAdminController.php:141 -msgid "Released" -msgstr "" - -#: src/Admin/VersionAdminController.php:148 -msgid "No versions found. Add your first version above." -msgstr "" - -#: src/Admin/VersionAdminController.php:165 -#: src/Admin/VersionAdminController.php:396 -msgid "Uploaded file" -msgstr "" - -#: src/Admin/VersionAdminController.php:169 -#: src/Admin/VersionAdminController.php:400 -msgid "No download file" -msgstr "" - -#: src/Admin/VersionAdminController.php:232 -msgid "Are you sure you want to delete this version?" -msgstr "" - -#: src/Admin/VersionAdminController.php:233 -msgid "Please enter a version number." -msgstr "" - -#: src/Admin/VersionAdminController.php:234 -msgid "Please enter a valid version number (e.g., 1.0.0)." -msgstr "" - -#: src/Admin/VersionAdminController.php:235 -msgid "An error occurred. Please try again." -msgstr "" - -#: src/Admin/VersionAdminController.php:236 -msgid "Select Download File" -msgstr "" - -#: src/Admin/VersionAdminController.php:237 -msgid "Use this file" -msgstr "" - -#: src/Admin/VersionAdminController.php:238 -msgid "" -"Invalid checksum file format. File must contain a 64-character SHA256 hash." -msgstr "" - -#: src/Admin/VersionAdminController.php:239 -msgid "Failed to read checksum file." -msgstr "" - -#: src/Admin/VersionAdminController.php:269 -msgid "Product ID and version are required." -msgstr "" - -#: src/Admin/VersionAdminController.php:274 -msgid "Invalid version format. Use semantic versioning (e.g., 1.0.0)." -msgstr "" - -#: src/Admin/VersionAdminController.php:279 -msgid "This version already exists." -msgstr "" - -#: src/Admin/VersionAdminController.php:285 -msgid "Product not found." -msgstr "" - -#: src/Admin/VersionAdminController.php:289 -msgid "This product is not a licensed product." -msgstr "" - -#: src/Admin/VersionAdminController.php:306 -msgid "Failed to create version." -msgstr "" - -#: src/Admin/VersionAdminController.php:314 -msgid "Version added successfully." -msgstr "" - -#: src/Admin/VersionAdminController.php:334 -#: src/Admin/VersionAdminController.php:361 -msgid "Version ID is required." -msgstr "" - -#: src/Admin/VersionAdminController.php:340 -msgid "Failed to delete version." -msgstr "" - -#: src/Admin/VersionAdminController.php:343 -msgid "Version deleted successfully." -msgstr "" - -#: src/Admin/VersionAdminController.php:367 -msgid "Failed to update version." -msgstr "" - -#: src/Admin/VersionAdminController.php:371 -msgid "Version updated successfully." -msgstr "" - #: src/Api/RestApiController.php:84 msgid "Too many requests. Please try again later." msgstr "" @@ -1190,30 +1234,26 @@ msgstr "" msgid "License activated successfully." msgstr "" -#: src/Checkout/CheckoutBlocksIntegration.php:101 -#: src/Checkout/CheckoutController.php:81 -msgid "Domain for License Activation" -msgstr "" - -#: src/Checkout/CheckoutBlocksIntegration.php:103 -#: src/Checkout/CheckoutController.php:93 -msgid "" -"Enter the domain where you will use this license (without http:// or www)." -msgstr "" - -#: src/Checkout/CheckoutBlocksIntegration.php:104 #: src/Checkout/CheckoutController.php:78 +#: src/Checkout/CheckoutBlocksIntegration.php:104 msgid "License Domain" msgstr "" -#: src/Checkout/CheckoutBlocksIntegration.php:105 -msgid "Please enter a valid domain for your license activation." +#: src/Checkout/CheckoutController.php:81 +#: src/Checkout/CheckoutBlocksIntegration.php:101 +msgid "Domain for License Activation" msgstr "" #: src/Checkout/CheckoutController.php:82 msgid "required" msgstr "" +#: src/Checkout/CheckoutController.php:93 +#: src/Checkout/CheckoutBlocksIntegration.php:103 +msgid "" +"Enter the domain where you will use this license (without http:// or www)." +msgstr "" + #: src/Checkout/CheckoutController.php:115 msgid "Please enter a domain for your license activation." msgstr "" @@ -1228,212 +1268,115 @@ msgstr "" msgid "License Domain:" msgstr "" +#: src/Checkout/CheckoutBlocksIntegration.php:105 +msgid "Please enter a valid domain for your license activation." +msgstr "" + #: src/Checkout/StoreApiExtension.php:85 msgid "Domain for license activation" msgstr "" -#: src/Email/LicenseEmailController.php:212 -#: src/Email/LicenseEmailController.php:216 -#: src/Email/LicenseEmailController.php:320 -#: src/Email/LicenseExpirationEmail.php:207 -#: src/Email/LicenseExpirationEmail.php:270 -#: src/Email/LicenseExpiredEmail.php:191 src/Email/LicenseExpiredEmail.php:256 -#: src/Frontend/AccountController.php:190 -msgid "License Key:" +#: src/License/PluginLicenseChecker.php:117 +msgid "License settings not configured." msgstr "" -#: src/Email/LicenseEmailController.php:256 -msgid "Your License Keys" +#: src/License/PluginLicenseChecker.php:153 +msgid "Could not connect to license server." msgstr "" -#: src/Email/LicenseEmailController.php:260 -#: src/Email/LicenseEmailController.php:315 -msgid "Licensed Domain:" +#: src/License/LicenseManager.php:366 +msgid "This license has been revoked." msgstr "" -#: src/Email/LicenseEmailController.php:287 -#: src/Email/LicenseEmailController.php:326 -#: src/Frontend/AccountController.php:218 -msgid "Never" +#: src/License/LicenseManager.php:376 +msgid "This license has expired." msgstr "" -#: src/Email/LicenseEmailController.php:296 -#: src/Email/LicenseEmailController.php:330 -msgid "You can also view your licenses in your account under \"Licenses\"." +#: src/License/LicenseManager.php:384 +msgid "This license is inactive." msgstr "" -#: src/Email/LicenseEmailController.php:311 -msgid "YOUR LICENSE KEYS" +#: src/License/LicenseManager.php:394 +msgid "This license is not valid for this domain." msgstr "" -#: src/Email/LicenseEmailController.php:323 -#: src/Email/LicenseExpirationEmail.php:219 -#: src/Email/LicenseExpirationEmail.php:272 -#: src/Frontend/AccountController.php:213 -msgid "Expires:" -msgstr "" - -#: src/Email/LicenseExpirationEmail.php:55 -msgid "License Expiration Warning" -msgstr "" - -#: src/Email/LicenseExpirationEmail.php:56 -msgid "" -"License expiration warning emails are sent to customers when their licenses " -"are about to expire." -msgstr "" - -#: src/Email/LicenseExpirationEmail.php:74 -msgid "" -"[{site_title}] Your license for {product_name} expires in {days_remaining} " -"days" -msgstr "" - -#: src/Email/LicenseExpirationEmail.php:82 -msgid "License Expiration Notice" -msgstr "" - -#: src/Email/LicenseExpirationEmail.php:107 -#: src/Email/LicenseExpiredEmail.php:99 src/Frontend/AccountController.php:140 #: src/License/LicenseManager.php:760 src/Product/VersionManager.php:349 -#: src/Product/VersionManager.php:361 +#: src/Product/VersionManager.php:361 src/Frontend/AccountController.php:140 +#: src/Email/LicenseExpirationEmail.php:107 +#: src/Email/LicenseExpiredEmail.php:99 msgid "Unknown Product" msgstr "" -#: src/Email/LicenseExpirationEmail.php:176 -#: src/Email/LicenseExpirationEmail.php:246 -#: src/Email/LicenseExpiredEmail.php:167 src/Email/LicenseExpiredEmail.php:238 +#: src/Product/LicensedProductType.php:61 +msgid "Licensed Product" +msgstr "" + +#: src/Product/LicensedProductType.php:82 +msgid "License Settings" +msgstr "" + +#: src/Product/LicensedProductType.php:109 #, php-format -msgid "Hello %s," +msgid "%d days" msgstr "" -#: src/Email/LicenseExpirationEmail.php:181 -#: src/Email/LicenseExpirationEmail.php:251 +#: src/Product/LicensedProductType.php:119 #, php-format -msgid "Your license for %s will expire tomorrow (%s)." +msgid "Leave fields empty to use default settings from %s." msgstr "" -#: src/Email/LicenseExpirationEmail.php:189 -#: src/Email/LicenseExpirationEmail.php:257 +#: src/Product/LicensedProductType.php:121 +msgid "WooCommerce > Settings > Licensed Products" +msgstr "" + +#: src/Product/LicensedProductType.php:128 +msgid "Max Activations" +msgstr "" + +#: src/Product/LicensedProductType.php:131 #, php-format -msgid "Your license for %1$s will expire in %2$d days (%3$s)." +msgid "Maximum number of domain activations per license. Default: %d" msgstr "" -#: src/Email/LicenseExpirationEmail.php:197 -#: src/Email/LicenseExpirationEmail.php:266 -msgid "License Details" +#: src/Product/LicensedProductType.php:146 +msgid "License Validity (Days)" msgstr "" -#: src/Email/LicenseExpirationEmail.php:203 -#: src/Email/LicenseExpirationEmail.php:269 -#: src/Email/LicenseExpiredEmail.php:187 src/Email/LicenseExpiredEmail.php:255 -msgid "Product:" +#: src/Product/LicensedProductType.php:149 +#, php-format +msgid "Number of days the license is valid. Leave empty for default (%s)." msgstr "" -#: src/Email/LicenseExpirationEmail.php:215 -#: src/Email/LicenseExpirationEmail.php:271 -#: src/Email/LicenseExpiredEmail.php:199 src/Email/LicenseExpiredEmail.php:257 -#: src/Frontend/AccountController.php:201 -msgid "Domain:" +#: src/Product/LicensedProductType.php:164 +msgid "Bind to Major Version" msgstr "" -#: src/Email/LicenseExpirationEmail.php:235 -#: src/Email/LicenseExpirationEmail.php:281 -#: src/Email/LicenseExpiredEmail.php:227 src/Email/LicenseExpiredEmail.php:268 -msgid "View My Licenses" -msgstr "" - -#: src/Email/LicenseExpirationEmail.php:291 +#: src/Product/LicensedProductType.php:167 +#, php-format msgid "" -"To continue using this product, please renew your license before the " -"expiration date." +"If enabled, licenses are bound to the major version at purchase time. " +"Default: %s" msgstr "" -#: src/Email/LicenseExpirationEmail.php:301 -#: src/Email/LicenseExpiredEmail.php:288 +#: src/Product/LicensedProductType.php:168 +msgid "Yes" +msgstr "" + +#: src/Product/LicensedProductType.php:168 +msgid "No" +msgstr "" + +#: src/Product/LicensedProductType.php:288 +msgid "Version:" +msgstr "" + +#: src/Product/VersionManager.php:166 +msgid "Attachment file not found." +msgstr "" + +#: src/Product/VersionManager.php:177 #, php-format -msgid "Available placeholders: %s" -msgstr "" - -#: src/Email/LicenseExpirationEmail.php:307 -#: src/Email/LicenseExpiredEmail.php:294 -msgid "Enable/Disable" -msgstr "" - -#: src/Email/LicenseExpirationEmail.php:309 -#: src/Email/LicenseExpiredEmail.php:296 -msgid "Enable this email notification" -msgstr "" - -#: src/Email/LicenseExpirationEmail.php:313 -#: src/Email/LicenseExpiredEmail.php:300 -msgid "Subject" -msgstr "" - -#: src/Email/LicenseExpirationEmail.php:321 -#: src/Email/LicenseExpiredEmail.php:308 -msgid "Email heading" -msgstr "" - -#: src/Email/LicenseExpirationEmail.php:329 -#: src/Email/LicenseExpiredEmail.php:316 -msgid "Additional content" -msgstr "" - -#: src/Email/LicenseExpirationEmail.php:330 -#: src/Email/LicenseExpiredEmail.php:317 -msgid "Text to appear below the main email content." -msgstr "" - -#: src/Email/LicenseExpirationEmail.php:338 -#: src/Email/LicenseExpiredEmail.php:325 -msgid "Email type" -msgstr "" - -#: src/Email/LicenseExpirationEmail.php:340 -#: src/Email/LicenseExpiredEmail.php:327 -msgid "Choose which format of email to send." -msgstr "" - -#: src/Email/LicenseExpiredEmail.php:50 src/Email/LicenseExpiredEmail.php:76 -msgid "License Expired" -msgstr "" - -#: src/Email/LicenseExpiredEmail.php:51 -msgid "" -"License expired emails are sent to customers when their licenses have " -"expired." -msgstr "" - -#: src/Email/LicenseExpiredEmail.php:68 -msgid "[{site_title}] Your license for {product_name} has expired" -msgstr "" - -#: src/Email/LicenseExpiredEmail.php:171 src/Email/LicenseExpiredEmail.php:242 -#, php-format -msgid "Your license for %1$s has expired on %2$s." -msgstr "" - -#: src/Email/LicenseExpiredEmail.php:178 src/Email/LicenseExpiredEmail.php:248 -msgid "" -"Your license is no longer valid and the product will stop working until you " -"renew." -msgstr "" - -#: src/Email/LicenseExpiredEmail.php:181 src/Email/LicenseExpiredEmail.php:252 -msgid "Expired License Details" -msgstr "" - -#: src/Email/LicenseExpiredEmail.php:203 src/Email/LicenseExpiredEmail.php:258 -msgid "Expired on:" -msgstr "" - -#: src/Email/LicenseExpiredEmail.php:207 src/Email/LicenseExpiredEmail.php:259 -msgid "Status:" -msgstr "" - -#: src/Email/LicenseExpiredEmail.php:278 -msgid "To continue using this product, please renew your license." +msgid "File checksum does not match. Expected: %1$s, Got: %2$s" msgstr "" #: src/Frontend/AccountController.php:104 @@ -1444,6 +1387,36 @@ msgstr "" msgid "You have no licenses yet." msgstr "" +#: src/Frontend/AccountController.php:190 +#: src/Email/LicenseExpirationEmail.php:207 +#: src/Email/LicenseExpirationEmail.php:270 +#: src/Email/LicenseEmailController.php:212 +#: src/Email/LicenseEmailController.php:216 +#: src/Email/LicenseEmailController.php:320 +#: src/Email/LicenseExpiredEmail.php:191 src/Email/LicenseExpiredEmail.php:256 +msgid "License Key:" +msgstr "" + +#: src/Frontend/AccountController.php:201 +#: src/Email/LicenseExpirationEmail.php:215 +#: src/Email/LicenseExpirationEmail.php:271 +#: src/Email/LicenseExpiredEmail.php:199 src/Email/LicenseExpiredEmail.php:257 +msgid "Domain:" +msgstr "" + +#: src/Frontend/AccountController.php:213 +#: src/Email/LicenseExpirationEmail.php:219 +#: src/Email/LicenseExpirationEmail.php:272 +#: src/Email/LicenseEmailController.php:323 +msgid "Expires:" +msgstr "" + +#: src/Frontend/AccountController.php:218 +#: src/Email/LicenseEmailController.php:287 +#: src/Email/LicenseEmailController.php:326 +msgid "Never" +msgstr "" + #: src/Frontend/AccountController.php:226 msgid "Available Downloads" msgstr "" @@ -1547,28 +1520,171 @@ msgstr "" msgid "Download file not found." msgstr "" -#: src/License/LicenseManager.php:366 -msgid "This license has been revoked." +#: src/Email/LicenseExpirationEmail.php:55 +msgid "License Expiration Warning" msgstr "" -#: src/License/LicenseManager.php:376 -msgid "This license has expired." +#: src/Email/LicenseExpirationEmail.php:56 +msgid "" +"License expiration warning emails are sent to customers when their licenses " +"are about to expire." msgstr "" -#: src/License/LicenseManager.php:384 -msgid "This license is inactive." +#: src/Email/LicenseExpirationEmail.php:74 +msgid "" +"[{site_title}] Your license for {product_name} expires in {days_remaining} " +"days" msgstr "" -#: src/License/LicenseManager.php:394 -msgid "This license is not valid for this domain." +#: src/Email/LicenseExpirationEmail.php:82 +msgid "License Expiration Notice" msgstr "" -#: src/License/PluginLicenseChecker.php:117 -msgid "License settings not configured." +#: src/Email/LicenseExpirationEmail.php:176 +#: src/Email/LicenseExpirationEmail.php:246 +#: src/Email/LicenseExpiredEmail.php:167 src/Email/LicenseExpiredEmail.php:238 +#, php-format +msgid "Hello %s," msgstr "" -#: src/License/PluginLicenseChecker.php:153 -msgid "Could not connect to license server." +#: src/Email/LicenseExpirationEmail.php:181 +#: src/Email/LicenseExpirationEmail.php:251 +#, php-format +msgid "Your license for %s will expire tomorrow (%s)." +msgstr "" + +#: src/Email/LicenseExpirationEmail.php:189 +#: src/Email/LicenseExpirationEmail.php:257 +#, php-format +msgid "Your license for %1$s will expire in %2$d days (%3$s)." +msgstr "" + +#: src/Email/LicenseExpirationEmail.php:197 +#: src/Email/LicenseExpirationEmail.php:266 +msgid "License Details" +msgstr "" + +#: src/Email/LicenseExpirationEmail.php:203 +#: src/Email/LicenseExpirationEmail.php:269 +#: src/Email/LicenseExpiredEmail.php:187 src/Email/LicenseExpiredEmail.php:255 +msgid "Product:" +msgstr "" + +#: src/Email/LicenseExpirationEmail.php:235 +#: src/Email/LicenseExpirationEmail.php:281 +#: src/Email/LicenseExpiredEmail.php:227 src/Email/LicenseExpiredEmail.php:268 +msgid "View My Licenses" +msgstr "" + +#: src/Email/LicenseExpirationEmail.php:291 +msgid "" +"To continue using this product, please renew your license before the " +"expiration date." +msgstr "" + +#: src/Email/LicenseExpirationEmail.php:301 +#: src/Email/LicenseExpiredEmail.php:288 +#, php-format +msgid "Available placeholders: %s" +msgstr "" + +#: src/Email/LicenseExpirationEmail.php:307 +#: src/Email/LicenseExpiredEmail.php:294 +msgid "Enable/Disable" +msgstr "" + +#: src/Email/LicenseExpirationEmail.php:309 +#: src/Email/LicenseExpiredEmail.php:296 +msgid "Enable this email notification" +msgstr "" + +#: src/Email/LicenseExpirationEmail.php:313 +#: src/Email/LicenseExpiredEmail.php:300 +msgid "Subject" +msgstr "" + +#: src/Email/LicenseExpirationEmail.php:321 +#: src/Email/LicenseExpiredEmail.php:308 +msgid "Email heading" +msgstr "" + +#: src/Email/LicenseExpirationEmail.php:329 +#: src/Email/LicenseExpiredEmail.php:316 +msgid "Additional content" +msgstr "" + +#: src/Email/LicenseExpirationEmail.php:330 +#: src/Email/LicenseExpiredEmail.php:317 +msgid "Text to appear below the main email content." +msgstr "" + +#: src/Email/LicenseExpirationEmail.php:338 +#: src/Email/LicenseExpiredEmail.php:325 +msgid "Email type" +msgstr "" + +#: src/Email/LicenseExpirationEmail.php:340 +#: src/Email/LicenseExpiredEmail.php:327 +msgid "Choose which format of email to send." +msgstr "" + +#: src/Email/LicenseEmailController.php:256 +msgid "Your License Keys" +msgstr "" + +#: src/Email/LicenseEmailController.php:260 +#: src/Email/LicenseEmailController.php:315 +msgid "Licensed Domain:" +msgstr "" + +#: src/Email/LicenseEmailController.php:296 +#: src/Email/LicenseEmailController.php:330 +msgid "You can also view your licenses in your account under \"Licenses\"." +msgstr "" + +#: src/Email/LicenseEmailController.php:311 +msgid "YOUR LICENSE KEYS" +msgstr "" + +#: src/Email/LicenseExpiredEmail.php:50 src/Email/LicenseExpiredEmail.php:76 +msgid "License Expired" +msgstr "" + +#: src/Email/LicenseExpiredEmail.php:51 +msgid "" +"License expired emails are sent to customers when their licenses have " +"expired." +msgstr "" + +#: src/Email/LicenseExpiredEmail.php:68 +msgid "[{site_title}] Your license for {product_name} has expired" +msgstr "" + +#: src/Email/LicenseExpiredEmail.php:171 src/Email/LicenseExpiredEmail.php:242 +#, php-format +msgid "Your license for %1$s has expired on %2$s." +msgstr "" + +#: src/Email/LicenseExpiredEmail.php:178 src/Email/LicenseExpiredEmail.php:248 +msgid "" +"Your license is no longer valid and the product will stop working until you " +"renew." +msgstr "" + +#: src/Email/LicenseExpiredEmail.php:181 src/Email/LicenseExpiredEmail.php:252 +msgid "Expired License Details" +msgstr "" + +#: src/Email/LicenseExpiredEmail.php:203 src/Email/LicenseExpiredEmail.php:258 +msgid "Expired on:" +msgstr "" + +#: src/Email/LicenseExpiredEmail.php:207 src/Email/LicenseExpiredEmail.php:259 +msgid "Status:" +msgstr "" + +#: src/Email/LicenseExpiredEmail.php:278 +msgid "To continue using this product, please renew your license." msgstr "" #: src/Plugin.php:260 @@ -1584,78 +1700,6 @@ msgstr "" msgid "Configure License" msgstr "" -#: src/Product/LicensedProductType.php:61 -msgid "Licensed Product" -msgstr "" - -#: src/Product/LicensedProductType.php:82 -msgid "License Settings" -msgstr "" - -#: src/Product/LicensedProductType.php:109 -#, php-format -msgid "%d days" -msgstr "" - -#: src/Product/LicensedProductType.php:119 -#, php-format -msgid "Leave fields empty to use default settings from %s." -msgstr "" - -#: src/Product/LicensedProductType.php:121 -msgid "WooCommerce > Settings > Licensed Products" -msgstr "" - -#: src/Product/LicensedProductType.php:128 -msgid "Max Activations" -msgstr "" - -#: src/Product/LicensedProductType.php:131 -#, php-format -msgid "Maximum number of domain activations per license. Default: %d" -msgstr "" - -#: src/Product/LicensedProductType.php:146 -msgid "License Validity (Days)" -msgstr "" - -#: src/Product/LicensedProductType.php:149 -#, php-format -msgid "Number of days the license is valid. Leave empty for default (%s)." -msgstr "" - -#: src/Product/LicensedProductType.php:164 -msgid "Bind to Major Version" -msgstr "" - -#: src/Product/LicensedProductType.php:167 -#, php-format -msgid "" -"If enabled, licenses are bound to the major version at purchase time. " -"Default: %s" -msgstr "" - -#: src/Product/LicensedProductType.php:168 -msgid "Yes" -msgstr "" - -#: src/Product/LicensedProductType.php:168 -msgid "No" -msgstr "" - -#: src/Product/LicensedProductType.php:288 -msgid "Version:" -msgstr "" - -#: src/Product/VersionManager.php:166 -msgid "Attachment file not found." -msgstr "" - -#: src/Product/VersionManager.php:177 -#, php-format -msgid "File checksum does not match. Expected: %1$s, Got: %2$s" -msgstr "" - #: wc-licensed-product.php:61 #, php-format msgid "%s requires WooCommerce to be installed and active." diff --git a/src/Admin/OrderLicenseController.php b/src/Admin/OrderLicenseController.php index 829d999..f9a0d83 100644 --- a/src/Admin/OrderLicenseController.php +++ b/src/Admin/OrderLicenseController.php @@ -36,6 +36,7 @@ final class OrderLicenseController // Handle AJAX actions add_action('wp_ajax_wclp_update_order_domain', [$this, 'ajaxUpdateOrderDomain']); add_action('wp_ajax_wclp_update_license_domain', [$this, 'ajaxUpdateLicenseDomain']); + add_action('wp_ajax_wclp_generate_order_licenses', [$this, 'ajaxGenerateOrderLicenses']); // Enqueue admin scripts add_action('admin_enqueue_scripts', [$this, 'enqueueScripts']); @@ -126,6 +127,18 @@ final class OrderLicenseController

+ get_items() as $item) { + $product = $item->get_product(); + if ($product && $product->is_type('licensed')) { + $licensedProductCount++; + } + } + $missingLicenses = $licensedProductCount - count($licenses); + ?> +

@@ -137,6 +150,20 @@ final class OrderLicenseController

+ is_paid()): ?> +

+ + + +

+ +

+ + +

+ @@ -223,6 +250,29 @@ final class OrderLicenseController ); ?>

+ + 0 && $orderDomain && $order->is_paid()): ?> +

+ + + + + +

+ @@ -248,6 +298,9 @@ final class OrderLicenseController .wclp-lifetime { color: #0073aa; font-weight: 500; } .wclp-edit-domain-btn { color: #0073aa; text-decoration: none; } .wclp-edit-domain-btn .dashicons { font-size: 16px; width: 16px; height: 16px; } + .wclp-generate-status { font-style: italic; margin-left: 8px; } + .wclp-generate-status.success { color: #46b450; } + .wclp-generate-status.error { color: #dc3232; } [ 'saving' => __('Saving...', 'wc-licensed-product'), 'saved' => __('Saved!', 'wc-licensed-product'), - 'error' => __('Error saving. Please try again.', 'wc-licensed-product'), + 'error' => __('Error. Please try again.', 'wc-licensed-product'), 'invalidDomain' => __('Please enter a valid domain.', 'wc-licensed-product'), + 'generating' => __('Generating...', 'wc-licensed-product'), ], ]); } @@ -392,4 +446,96 @@ final class OrderLicenseController $pattern = '/^([a-zA-Z0-9]([a-zA-Z0-9\-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,}$/'; return (bool) preg_match($pattern, $domain); } + + /** + * AJAX handler for generating order licenses + */ + public function ajaxGenerateOrderLicenses(): void + { + check_ajax_referer('wclp_order_license_actions', 'nonce'); + + if (!current_user_can('manage_woocommerce')) { + wp_send_json_error(['message' => __('Permission denied.', 'wc-licensed-product')]); + } + + $orderId = absint($_POST['order_id'] ?? 0); + + if (!$orderId) { + wp_send_json_error(['message' => __('Invalid order ID.', 'wc-licensed-product')]); + } + + $order = wc_get_order($orderId); + if (!$order) { + wp_send_json_error(['message' => __('Order not found.', 'wc-licensed-product')]); + } + + // Check if order is paid + if (!$order->is_paid()) { + wp_send_json_error(['message' => __('Order must be paid before licenses can be generated.', 'wc-licensed-product')]); + } + + // Get domain + $domain = $order->get_meta('_licensed_product_domain'); + if (empty($domain)) { + wp_send_json_error(['message' => __('Please set the order domain before generating licenses.', 'wc-licensed-product')]); + } + + // Generate licenses for each licensed product + $generated = 0; + $skipped = 0; + + foreach ($order->get_items() as $item) { + $product = $item->get_product(); + if ($product && $product->is_type('licensed')) { + $license = $this->licenseManager->generateLicense( + $orderId, + $product->get_id(), + $order->get_customer_id(), + $domain + ); + + if ($license) { + // Check if this is a new license or existing + $existingLicenses = $this->licenseManager->getLicensesByOrder($orderId); + $isNew = true; + foreach ($existingLicenses as $existing) { + if ($existing->getProductId() === $product->get_id() && $existing->getId() !== $license->getId()) { + $isNew = false; + break; + } + } + if ($isNew) { + $generated++; + } else { + $skipped++; + } + } + } + } + + if ($generated > 0) { + wp_send_json_success([ + 'message' => sprintf( + /* translators: %d: Number of licenses generated */ + _n( + '%d license generated successfully.', + '%d licenses generated successfully.', + $generated, + 'wc-licensed-product' + ), + $generated + ), + 'generated' => $generated, + 'skipped' => $skipped, + 'reload' => true, + ]); + } else { + wp_send_json_success([ + 'message' => __('All licenses already exist for this order.', 'wc-licensed-product'), + 'generated' => 0, + 'skipped' => $skipped, + 'reload' => false, + ]); + } + } }