diff --git a/CHANGELOG.md b/CHANGELOG.md index e6b2858..b2aa417 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,28 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## [0.1.0] - 2026-01-22 + +### Added + +- First stable minor release +- Comprehensive code review for WordPress/WooCommerce best practices +- Security audit completed + +### Changed + +- Improved input sanitization for admin page context checks +- Fixed VersionManager null format handling for attachment updates + +### Technical Details + +- All code reviewed for OWASP Top 10 security vulnerabilities +- Verified proper nonce verification, capability checks, and input sanitization +- SQL injection prevention confirmed using `$wpdb->prepare()` throughout +- XSS prevention confirmed with proper output escaping +- Rate limiting verified on REST API endpoints +- README.md updated with full feature documentation + ## [0.0.11] - 2026-01-22 ### Added @@ -275,7 +297,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - WordPress REST API integration - Custom WooCommerce product type extending WC_Product -[Unreleased]: https://src.bundespruefstelle.ch/magdev/wc-licensed-product/compare/v0.0.11...HEAD +[Unreleased]: https://src.bundespruefstelle.ch/magdev/wc-licensed-product/compare/v0.1.0...HEAD +[0.1.0]: https://src.bundespruefstelle.ch/magdev/wc-licensed-product/compare/v0.0.11...v0.1.0 [0.0.11]: https://src.bundespruefstelle.ch/magdev/wc-licensed-product/compare/v0.0.10...v0.0.11 [0.0.10]: https://src.bundespruefstelle.ch/magdev/wc-licensed-product/compare/v0.0.9...v0.0.10 [0.0.9]: https://src.bundespruefstelle.ch/magdev/wc-licensed-product/compare/v0.0.8...v0.0.9 diff --git a/CLAUDE.md b/CLAUDE.md index 0cee627..9278d2d 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -36,6 +36,13 @@ This project is proudly **"vibe-coded"** using Claude.AI - the entire codebase w No known bugs at the moment +### Release 0.1.0 + +- Check the code for wordpress best practices, WooCommerce best practices and common security pitfalls. Refactor if needed. +- Update the README.md according to the current featureset +- Update all translations +- Create a release package 0.1.0 + ## Technical Stack - **Language:** PHP 8.3.x @@ -594,35 +601,26 @@ Full API documentation available in `openapi.json` (OpenAPI 3.1 specification). - SHA256: `3f4a093f6d4d02389082c3a88c00542f477ab3ad4d4a0c65079e524ef0739620` - Tagged as `v0.0.10` and pushed to `main` branch -### 2026-01-21 - Version 0.0.11 Features +### 2026-01-22 - Version 0.0.11 Features **Implemented:** -- Created date column added to admin license overview -- License Statistics page under WooCommerce menu (WooCommerce > License Statistics) -- REST API endpoints for analytics data with time-series support -- WooCommerce Analytics integration via submenu page - -**New files:** - -- `src/Admin/AnalyticsController.php` - WooCommerce Analytics integration -- `templates/admin/statistics.html.twig` - Statistics page template - -**New REST API endpoints:** - -- `GET /wp-json/wc-licensed-product/v1/analytics/stats` - License statistics with time-series data (supports day/week/month/quarter/year intervals) -- `GET /wp-json/wc-licensed-product/v1/analytics/products` - License counts by product +- Created date column added to admin license overview showing when each license was generated **Modified files:** -- `templates/admin/licenses.html.twig` - Added "Created" column -- `src/Admin/AdminController.php` - Added "Created" column to fallback rendering -- `src/Plugin.php` - Added AnalyticsController initialization and `getInstance()` alias +- `templates/admin/licenses.html.twig` - Added "Created" column to table header and data cells +- `src/Admin/AdminController.php` - Added "Created" column to PHP fallback rendering +- `src/Plugin.php` - Added `getInstance()` alias for singleton access **Technical notes:** -- Statistics page accessible via WooCommerce > License Statistics submenu -- REST API endpoints support date range filtering (`after`, `before` parameters) -- Time-series data aggregation supports multiple intervals (day, week, month, quarter, year) -- AnalyticsController registers REST routes and renders statistics page -- Page uses existing dashboard CSS styles for consistent appearance +- New column displays license creation date in Y-m-d format +- Both Twig template and PHP fallback updated for consistency +- WooCommerce Analytics integration was attempted but removed due to WordPress permission issues with submenu pages + +**Release v0.0.11:** + +- Created release package: `releases/wc-licensed-product-0.0.11.zip` (473 KB) +- SHA256: `c3f66c4ac54741053f87ce1a63b4ddb49ad9707d5c194a271311bb95518ab13c` +- Tagged as `v0.0.11` and pushed to `main` branch diff --git a/README.md b/README.md index 65644b3..abef446 100644 --- a/README.md +++ b/README.md @@ -17,6 +17,7 @@ WC Licensed Product adds a new product type "Licensed Product" to WooCommerce, e - **Version Binding**: Optional binding to major software versions - **Expiration Support**: Set license validity periods or lifetime licenses - **Rate Limiting**: API endpoints protected with rate limiting (30 requests/minute) +- **Checkout Blocks**: Full support for WooCommerce Checkout Blocks (default since WC 8.3+) ### Customer Features @@ -30,12 +31,16 @@ WC Licensed Product adds a new product type "Licensed Product" to WooCommerce, e - **License Management**: Full CRUD interface for license management - **License Dashboard**: Statistics and analytics (WooCommerce > Reports > Licenses) - **Search & Filtering**: Search by license key, domain, status, or product +- **Live Search**: AJAX-powered instant search results +- **Inline Editing**: Edit license status, expiry, and domain directly in the list - **Bulk Operations**: Activate, deactivate, revoke, extend, or delete multiple licenses - **License Transfer**: Transfer licenses to new domains - **CSV Export/Import**: Export and import licenses via CSV +- **Order Integration**: View and manage licenses directly from order pages - **Expiration Warnings**: Automatic email notifications before license expiration - **Version Management**: Manage multiple versions per product with file attachments - **Global Settings**: Default license settings via WooCommerce settings tab +- **WooCommerce HPOS**: Compatible with High-Performance Order Storage ## Requirements @@ -60,7 +65,6 @@ WC Licensed Product adds a new product type "Licensed Product" to WooCommerce, e - **Max Activations**: Number of domains allowed per license - **License Validity**: Days until expiration (empty = lifetime) - **Bind to Major Version**: Lock license to current major version - - **Current Version**: Your software's current version ### Managing Product Versions diff --git a/languages/wc-licensed-product-de_CH.mo b/languages/wc-licensed-product-de_CH.mo index e536403..44faa48 100644 Binary files a/languages/wc-licensed-product-de_CH.mo and b/languages/wc-licensed-product-de_CH.mo differ diff --git a/languages/wc-licensed-product-de_CH.po b/languages/wc-licensed-product-de_CH.po index 67423ef..efd2903 100644 --- a/languages/wc-licensed-product-de_CH.po +++ b/languages/wc-licensed-product-de_CH.po @@ -3,9 +3,9 @@ # This file is distributed under the GPL-2.0-or-later. msgid "" msgstr "" -"Project-Id-Version: WC Licensed Product 0.0.11\n" -"Report-Msgid-Bugs-To: https://src.bundespruefstelle.ch/magdev/wc-licensed-product/issues\n" -"POT-Creation-Date: 2026-01-21T00:00:00+00:00\n" +"Project-Id-Version: WC Licensed Product 0.1.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2026-01-22 11:52+0100\n" "PO-Revision-Date: 2026-01-21T00:00:00+00:00\n" "Last-Translator: Marco Graetsch \n" "Language-Team: German (Switzerland) \n" @@ -15,931 +15,1524 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#. Plugin requirement message +#. translators: %s: WooCommerce plugin name +#: wc-licensed-product.php:61 +#, php-format msgid "%s requires WooCommerce to be installed and active." msgstr "%s benötigt WooCommerce als installierte und aktivierte Erweiterung." +#: wc-licensed-product.php:119 msgid "WC Licensed Product requires WooCommerce to be installed and active." -msgstr "WC Licensed Product benötigt WooCommerce als installierte und aktivierte Erweiterung." - -#. Product type -msgid "Licensed Product" -msgstr "Lizensiertes Produkt" - -msgid "Licensed Products" -msgstr "Lizensierte Produkte" - -#. License Settings tab -msgid "License Settings" -msgstr "Lizenz-Einstellungen" - -msgid "Max Activations" -msgstr "Max. Aktivierungen" - -msgid "Maximum number of domain activations per license. Default: 1" -msgstr "Maximale Anzahl der Domain-Aktivierungen pro Lizenz. Standard: 1" - -msgid "Maximum number of domain activations per license. Default: %d" -msgstr "Maximale Anzahl der Domain-Aktivierungen pro Lizenz. Standard: %d" - -msgid "License Validity (Days)" -msgstr "Lizenz-Gültigkeit (Tage)" - -msgid "Number of days the license is valid. Leave empty for lifetime license." -msgstr "Anzahl Tage, die die Lizenz gültig ist. Leer lassen für eine lebenslange Lizenz." - -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)." - -msgid "Bind to Major Version" -msgstr "An Hauptversion binden" - -msgid "If enabled, licenses are bound to the major version at purchase time." -msgstr "Falls aktiviert, werden Lizenzen an die Hauptversion zum Kaufzeitpunkt gebunden." - -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" - -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." - -#. Global settings -msgid "Default License Settings" -msgstr "Standard Lizenz-Einstellungen" - -msgid "Default Max Activations" -msgstr "Standard Max. Aktivierungen" - -msgid "Default maximum number of domain activations per license." -msgstr "Standard maximale Anzahl der Domain-Aktivierungen pro Lizenz." - -msgid "Default License Validity (Days)" -msgstr "Standard Lizenz-Gültigkeit (Tage)" - -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." - -msgid "Default Bind to Major Version" -msgstr "Standard An Hauptversion binden" - -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." - -msgid "Leave fields empty to use default settings from %s." -msgstr "Felder leer lassen, um Standardeinstellungen von %s zu verwenden." - -msgid "WooCommerce > Settings > Licensed Products" -msgstr "WooCommerce > Einstellungen > Lizensierte Produkte" +msgstr "" +"WC Licensed Product benötigt WooCommerce als installierte und aktivierte " +"Erweiterung." +#: wc-licensed-product.php:137 src/Admin/AdminController.php:936 msgid "Settings" msgstr "Einstellungen" -#. License validation messages -msgid "License key not found." -msgstr "Lizenzschlüssel nicht gefunden." - -msgid "This license has been revoked." -msgstr "Diese Lizenz wurde widerrufen." - -msgid "This license has expired." -msgstr "Diese Lizenz ist abgelaufen." - -msgid "This license is inactive." -msgstr "Diese Lizenz ist inaktiv." - -msgid "This license is not valid for this domain." -msgstr "Diese Lizenz ist für diese Domain nicht gültig." - -msgid "This license is not valid." -msgstr "Diese Lizenz ist ungültig." - -msgid "License is already activated for this domain." -msgstr "Die Lizenz ist bereits für diese Domain aktiviert." - -msgid "Maximum number of activations reached." -msgstr "Maximale Anzahl der Aktivierungen erreicht." - -msgid "Failed to activate license." -msgstr "Lizenz konnte nicht aktiviert werden." - -msgid "License activated successfully." -msgstr "Lizenz erfolgreich aktiviert." - -msgid "License is not activated for this domain." -msgstr "Die Lizenz ist für diese Domain nicht aktiviert." - -msgid "Failed to deactivate license." -msgstr "Lizenz konnte nicht deaktiviert werden." - -msgid "License deactivated successfully." -msgstr "Lizenz erfolgreich deaktiviert." - -msgid "Your license is not active. Please contact support." -msgstr "Ihre Lizenz ist nicht aktiv. Bitte kontaktieren Sie den Support." - -msgid "Too many requests. Please try again later." -msgstr "Zu viele Anfragen. Bitte versuchen Sie es später erneut." - -#. Checkout -msgid "License Domain" -msgstr "Lizenz-Domain" - -msgid "Domain for License Activation" -msgstr "Domain für Lizenz-Aktivierung" - -msgid "required" -msgstr "erforderlich" - -msgid "example.com" -msgstr "beispiel.ch" - -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)." - -msgid "Please enter a domain for your license activation." -msgstr "Bitte geben Sie eine Domain für Ihre Lizenz-Aktivierung ein." - -msgid "Please enter a valid domain name." -msgstr "Bitte geben Sie einen gültigen Domain-Namen ein." - -msgid "License Domain:" -msgstr "Lizenz-Domain:" - -msgid "Licensed Domain:" -msgstr "Lizensierte Domain:" - -#. Frontend - Customer account -msgid "Please log in to view your licenses." -msgstr "Bitte melden Sie sich an, um Ihre Lizenzen zu sehen." - -msgid "Please log in to transfer a license." -msgstr "Bitte melden Sie sich an, um eine Lizenz zu übertragen." - +#: src/Admin/AdminController.php:73 src/Admin/AdminController.php:74 +#: src/Admin/AdminController.php:87 src/Admin/AdminController.php:1162 +#: src/Admin/OrderLicenseController.php:127 +#: src/Admin/OrderLicenseController.php:222 +#: src/Frontend/AccountController.php:90 msgid "Licenses" msgstr "Lizenzen" -msgid "Unknown Product" -msgstr "Unbekanntes Produkt" +#: src/Admin/AdminController.php:90 +msgid "Overview" +msgstr "Übersicht" -msgid "You have no licenses yet." -msgstr "Sie haben noch keine Lizenzen." +#: src/Admin/AdminController.php:138 +#, fuzzy +msgid "No licenses found" +msgstr "Keine Lizenzen gefunden." -msgid "License Key" -msgstr "Lizenzschlüssel" +#: src/Admin/AdminController.php:139 +msgid "Searching..." +msgstr "Suche..." -msgid "License Key:" -msgstr "Lizenzschlüssel:" +#: src/Admin/AdminController.php:140 +#, fuzzy +msgid "Search failed" +msgstr "Speichern fehlgeschlagen" -msgid "Product" -msgstr "Produkt" +#: src/Admin/AdminController.php:141 src/Admin/OrderLicenseController.php:285 +msgid "Saving..." +msgstr "Speichere..." -msgid "Product:" -msgstr "Produkt:" +#: src/Admin/AdminController.php:142 +msgid "Saved" +msgstr "Gespeichert" -msgid "Domain" -msgstr "Domain" +#: src/Admin/AdminController.php:143 +msgid "Save failed" +msgstr "Speichern fehlgeschlagen" -msgid "Domain:" -msgstr "Domain:" +#: src/Admin/AdminController.php:144 +msgid "" +"Are you sure you want to revoke this license? This action cannot be undone." +msgstr "" +"Sind Sie sicher, dass Sie diese Lizenz widerrufen möchten? Diese Aktion kann " +"nicht rückgängig gemacht werden." -msgid "Status" -msgstr "Status" - -msgid "Expires" -msgstr "Läuft ab" - -msgid "Expires:" -msgstr "Läuft ab:" - -msgid "Never" -msgstr "Nie" - -msgid "Lifetime" -msgstr "Lebenslang" - -msgid "Copy to clipboard" -msgstr "In Zwischenablage kopieren" - -msgid "Copied!" -msgstr "Kopiert!" - -msgid "Copy failed" -msgstr "Kopieren fehlgeschlagen" - -#. License transfer (customer) -msgid "Transfer" -msgstr "Übertragen" - -msgid "Transfer to new domain" -msgstr "Auf neue Domain übertragen" - -msgid "Transfer License" -msgstr "Lizenz übertragen" - -msgid "Transfer License to New Domain" -msgstr "Lizenz auf neue Domain übertragen" - -msgid "Current Domain" -msgstr "Aktuelle Domain" - -msgid "New Domain" -msgstr "Neue Domain" - -msgid "Enter the new domain without http:// or www." -msgstr "Geben Sie die neue Domain ohne http:// oder www ein." +#: src/Admin/AdminController.php:145 src/Admin/AdminController.php:1297 +#: src/Admin/AdminController.php:1312 src/Admin/AdminController.php:1338 +msgid "Edit" +msgstr "Bearbeiten" +#: src/Admin/AdminController.php:146 src/Admin/AdminController.php:1303 +#: src/Admin/AdminController.php:1323 src/Admin/AdminController.php:1344 +#: src/Admin/OrderLicenseController.php:185 +#: src/Frontend/AccountController.php:270 msgid "Cancel" msgstr "Abbrechen" -msgid "Close" -msgstr "Schliessen" +#: src/Admin/AdminController.php:147 src/Admin/AdminController.php:1302 +#: src/Admin/AdminController.php:1322 src/Admin/AdminController.php:1343 +#: src/Admin/OrderLicenseController.php:118 +#: src/Admin/OrderLicenseController.php:182 +msgid "Save" +msgstr "Speichern" -msgid "Please enter a valid domain." -msgstr "Bitte geben Sie eine gültige Domain ein." +#: src/Admin/AdminController.php:148 src/Admin/AdminController.php:263 +#: src/Admin/AdminController.php:1335 src/Admin/OrderLicenseController.php:201 +#: src/Admin/SettingsController.php:78 src/Product/LicensedProductType.php:104 +#: src/Product/LicensedProductType.php:152 +msgid "Lifetime" +msgstr "Lebenslang" -msgid "Are you sure you want to transfer this license to a new domain? This action cannot be undone." -msgstr "Sind Sie sicher, dass Sie diese Lizenz auf eine neue Domain übertragen möchten? Diese Aktion kann nicht rückgängig gemacht werden." +#: src/Admin/AdminController.php:149 src/Frontend/AccountController.php:308 +msgid "Copied!" +msgstr "Kopiert!" -msgid "License transferred successfully!" -msgstr "Lizenz erfolgreich übertragen!" - -msgid "Transfer failed. Please try again." -msgstr "Übertragung fehlgeschlagen. Bitte versuchen Sie es erneut." - -msgid "Invalid license." -msgstr "Ungültige Lizenz." - -msgid "License not found." -msgstr "Lizenz nicht gefunden." - -msgid "You do not have permission to transfer this license." -msgstr "Sie haben keine Berechtigung, diese Lizenz zu übertragen." - -msgid "Revoked licenses cannot be transferred." -msgstr "Widerrufene Lizenzen können nicht übertragen werden." - -msgid "Expired licenses cannot be transferred." -msgstr "Abgelaufene Lizenzen können nicht übertragen werden." - -msgid "The new domain is the same as the current domain." -msgstr "Die neue Domain ist dieselbe wie die aktuelle Domain." - -#. Available Downloads -msgid "Available Downloads" -msgstr "Verfügbare Downloads" - -msgid "Version %s" -msgstr "Version %s" - -msgid "Download Error" -msgstr "Download-Fehler" - -msgid "Invalid download link." -msgstr "Ungültiger Download-Link." - -msgid "Invalid download link format." -msgstr "Ungültiges Download-Link-Format." - -msgid "Download file not found." -msgstr "Download-Datei nicht gefunden." - -msgid "No download file available for this version." -msgstr "Keine Download-Datei für diese Version verfügbar." - -msgid "This version is no longer available for download." -msgstr "Diese Version ist nicht mehr zum Download verfügbar." - -msgid "Version does not match your licensed product." -msgstr "Version stimmt nicht mit Ihrem lizensierten Produkt überein." - -msgid "Permission denied." -msgstr "Zugriff verweigert." - -msgid "You do not have permission to download this file." -msgstr "Sie haben keine Berechtigung, diese Datei herunterzuladen." - -#. Admin - Licenses page -msgid "Security check failed." -msgstr "Sicherheitsüberprüfung fehlgeschlagen." - -msgid "License updated successfully." -msgstr "Lizenz erfolgreich aktualisiert." - -msgid "License deleted successfully." -msgstr "Lizenz erfolgreich gelöscht." - -msgid "License revoked successfully." -msgstr "Lizenz erfolgreich widerrufen." - -msgid "License extended successfully." -msgstr "Lizenz erfolgreich verlängert." - -msgid "License set to lifetime successfully." -msgstr "Lizenz erfolgreich auf lebenslang gesetzt." - -msgid "License transferred to new domain successfully." -msgstr "Lizenz erfolgreich auf neue Domain übertragen." - -msgid "Failed to transfer license. The license may be revoked or invalid." -msgstr "Lizenzübertragung fehlgeschlagen. Die Lizenz könnte widerrufen oder ungültig sein." - -msgid "Unknown" -msgstr "Unbekannt" - -msgid "Guest" -msgstr "Gast" - -msgid "Customer" -msgstr "Kunde" - -msgid "Actions" -msgstr "Aktionen" - -msgid "No licenses found." -msgstr "Keine Lizenzen gefunden." - -msgid "Are you sure?" -msgstr "Sind Sie sicher?" - -msgid "Revoke" -msgstr "Widerrufen" - -msgid "Are you sure you want to delete this license?" -msgstr "Sind Sie sicher, dass Sie diese Lizenz löschen möchten?" - -msgid "Delete" -msgstr "Löschen" - -msgid "License" -msgstr "Lizenz" - -msgid "No domain specified" -msgstr "Keine Domain angegeben" - -msgid "Total licenses:" -msgstr "Lizenzen insgesamt:" - -msgid "of" -msgstr "von" +#: src/Admin/AdminController.php:150 src/Frontend/AccountController.php:309 +msgid "Copy failed" +msgstr "Kopieren fehlgeschlagen" +#: src/Admin/AdminController.php:153 src/Admin/AdminController.php:875 +#: src/Admin/AdminController.php:1194 src/Admin/AdminController.php:1317 +#: src/Admin/VersionAdminController.php:165 +#: src/Admin/VersionAdminController.php:381 msgid "Active" msgstr "Aktiv" +#: src/Admin/AdminController.php:154 src/Admin/AdminController.php:882 +#: src/Admin/AdminController.php:1195 src/Admin/AdminController.php:1318 +#: src/Admin/VersionAdminController.php:165 +#: src/Admin/VersionAdminController.php:381 msgid "Inactive" msgstr "Inaktiv" +#: src/Admin/AdminController.php:155 src/Admin/AdminController.php:889 +#: src/Admin/AdminController.php:1196 src/Admin/AdminController.php:1319 msgid "Expired" msgstr "Abgelaufen" +#: src/Admin/AdminController.php:156 src/Admin/AdminController.php:896 +#: src/Admin/AdminController.php:1197 src/Admin/AdminController.php:1320 msgid "Revoked" msgstr "Widerrufen" -msgid "Activate" -msgstr "Aktivieren" +#: src/Admin/AdminController.php:170 src/Admin/AdminController.php:210 +#: src/Admin/AdminController.php:246 src/Admin/AdminController.php:298 +#: src/Admin/AdminController.php:336 src/Admin/OrderLicenseController.php:301 +#: src/Admin/OrderLicenseController.php:340 +#: src/Admin/VersionAdminController.php:240 +#: src/Admin/VersionAdminController.php:305 +#: src/Admin/VersionAdminController.php:331 +msgid "Permission denied." +msgstr "Zugriff verweigert." -msgid "Deactivate" -msgstr "Deaktivieren" +#: src/Admin/AdminController.php:192 src/Admin/AdminController.php:987 +#: src/Admin/OrderLicenseController.php:168 +msgid "Unknown" +msgstr "Unbekannt" -#. Admin - Bulk actions -msgid "Bulk Actions" -msgstr "Massenaktionen" +#: src/Admin/AdminController.php:193 src/Admin/AdminController.php:991 +msgid "Guest" +msgstr "Gast" -msgid "Apply" -msgstr "Anwenden" +#: src/Admin/AdminController.php:217 src/Admin/AdminController.php:253 +#: src/Admin/AdminController.php:305 src/Admin/AdminController.php:342 +#: src/Admin/OrderLicenseController.php:347 +msgid "Invalid license ID." +msgstr "Ungültige Lizenz-ID." -msgid "Extend 30 days" -msgstr "30 Tage verlängern" +#: src/Admin/AdminController.php:222 +msgid "Invalid status." +msgstr "Ungültiger Status." -msgid "Extend 90 days" -msgstr "90 Tage verlängern" +#: src/Admin/AdminController.php:229 +msgid "Status updated successfully." +msgstr "Status erfolgreich aktualisiert." -msgid "Extend 1 year" -msgstr "1 Jahr verlängern" +#: src/Admin/AdminController.php:234 +msgid "Failed to update status." +msgstr "Status konnte nicht aktualisiert werden." -msgid "Extend by 30 days" -msgstr "Um 30 Tage verlängern" +#: src/Admin/AdminController.php:261 +msgid "License set to lifetime." +msgstr "Lizenz auf lebenslang gesetzt." -msgid "Set to lifetime" -msgstr "Auf lebenslang setzen" +#: src/Admin/AdminController.php:266 src/Admin/AdminController.php:283 +msgid "Failed to update expiry date." +msgstr "Ablaufdatum konnte nicht aktualisiert werden." +#: src/Admin/AdminController.php:278 +msgid "Expiry date updated successfully." +msgstr "Ablaufdatum erfolgreich aktualisiert." + +#: src/Admin/AdminController.php:286 +msgid "Invalid date format." +msgstr "Ungültiges Datumsformat." + +#: src/Admin/AdminController.php:309 src/Admin/OrderLicenseController.php:351 +msgid "Domain cannot be empty." +msgstr "Domain darf nicht leer sein." + +#: src/Admin/AdminController.php:320 +msgid "Domain updated successfully." +msgstr "Domain erfolgreich aktualisiert." + +#: src/Admin/AdminController.php:324 +msgid "Failed to update domain." +msgstr "Domain konnte nicht aktualisiert werden." + +#: src/Admin/AdminController.php:349 src/Admin/AdminController.php:1056 +msgid "License revoked successfully." +msgstr "Lizenz erfolgreich widerrufen." + +#: src/Admin/AdminController.php:354 +msgid "Failed to revoke license." +msgstr "Lizenz konnte nicht widerrufen werden." + +#: src/Admin/AdminController.php:428 src/Admin/AdminController.php:448 +#: src/Admin/AdminController.php:466 src/Admin/AdminController.php:484 +#: src/Admin/AdminController.php:504 src/Admin/AdminController.php:522 +#: src/Admin/AdminController.php:589 src/Admin/AdminController.php:779 +#: src/Frontend/AccountController.php:325 +msgid "Security check failed." +msgstr "Sicherheitsüberprüfung fehlgeschlagen." + +#: src/Admin/AdminController.php:549 +msgid "You do not have permission to export licenses." +msgstr "Sie haben keine Berechtigung, Lizenzen zu exportieren." + +#: src/Admin/AdminController.php:593 +msgid "You do not have permission to import licenses." +msgstr "Sie haben keine Berechtigung, Lizenzen zu importieren." + +#: src/Admin/AdminController.php:713 +msgid "Row missing domain" +msgstr "Zeile ohne Domain" + +#: src/Admin/AdminController.php:717 +msgid "Row missing valid product ID" +msgstr "Zeile ohne gültige Produkt-ID" + +#: src/Admin/AdminController.php:770 +#, php-format +msgid "Failed to import license for domain %s" +msgstr "Import der Lizenz für Domain %s fehlgeschlagen" + +#: src/Admin/AdminController.php:860 +msgid "License Dashboard" +msgstr "Lizenz-Dashboard" + +#: src/Admin/AdminController.php:868 +msgid "Total Licenses" +msgstr "Lizenzen insgesamt" + +#: src/Admin/AdminController.php:905 +msgid "Attention:" +msgstr "Achtung:" + +#: src/Admin/AdminController.php:910 +#, fuzzy, php-format +msgid "%d license is expiring within the next 30 days." +msgid_plural "%d licenses are expiring within the next 30 days." +msgstr[0] "läuft innerhalb der nächsten 30 Tage ab." +msgstr[1] "läuft innerhalb der nächsten 30 Tage ab." + +#: src/Admin/AdminController.php:918 +msgid "View Licenses" +msgstr "Lizenzen anzeigen" + +#: src/Admin/AdminController.php:924 msgid "Quick Actions" msgstr "Schnellaktionen" -#. Plural forms for bulk actions +#: src/Admin/AdminController.php:928 +msgid "Manage Licenses" +msgstr "Lizenzen verwalten" + +#: src/Admin/AdminController.php:932 +msgid "Export to CSV" +msgstr "Als CSV exportieren" + +#: src/Admin/AdminController.php:1050 +msgid "License updated successfully." +msgstr "Lizenz erfolgreich aktualisiert." + +#: src/Admin/AdminController.php:1053 +msgid "License deleted successfully." +msgstr "Lizenz erfolgreich gelöscht." + +#: src/Admin/AdminController.php:1059 +msgid "License extended successfully." +msgstr "Lizenz erfolgreich verlängert." + +#: src/Admin/AdminController.php:1062 +msgid "License set to lifetime successfully." +msgstr "Lizenz erfolgreich auf lebenslang gesetzt." + +#. translators: %d: number of licenses +#: src/Admin/AdminController.php:1068 +#, php-format msgid "%d license activated." msgid_plural "%d licenses activated." msgstr[0] "%d Lizenz aktiviert." msgstr[1] "%d Lizenzen aktiviert." +#. translators: %d: number of licenses +#: src/Admin/AdminController.php:1076 +#, php-format msgid "%d license deactivated." msgid_plural "%d licenses deactivated." msgstr[0] "%d Lizenz deaktiviert." msgstr[1] "%d Lizenzen deaktiviert." +#. translators: %d: number of licenses +#: src/Admin/AdminController.php:1084 +#, php-format msgid "%d license revoked." msgid_plural "%d licenses revoked." msgstr[0] "%d Lizenz widerrufen." msgstr[1] "%d Lizenzen widerrufen." +#. translators: %d: number of licenses +#: src/Admin/AdminController.php:1092 +#, php-format msgid "%d license deleted." msgid_plural "%d licenses deleted." msgstr[0] "%d Lizenz gelöscht." msgstr[1] "%d Lizenzen gelöscht." +#. translators: %d: number of licenses +#: src/Admin/AdminController.php:1100 +#, php-format msgid "%d license extended." msgid_plural "%d licenses extended." msgstr[0] "%d Lizenz verlängert." msgstr[1] "%d Lizenzen verlängert." -#. Admin - Search and Filter -msgid "Search" -msgstr "Suchen" +#: src/Admin/AdminController.php:1105 +msgid "License transferred to new domain successfully." +msgstr "Lizenz erfolgreich auf neue Domain übertragen." -msgid "Search Licenses" -msgstr "Lizenzen durchsuchen" - -msgid "Search license key or domain..." -msgstr "Lizenzschlüssel oder Domain suchen..." - -msgid "Filter" -msgstr "Filtern" - -msgid "Clear" -msgstr "Zurücksetzen" - -msgid "All Statuses" -msgstr "Alle Status" - -msgid "All Products" -msgstr "Alle Produkte" - -msgid "Showing" -msgstr "Anzeige" - -msgid "filtered" -msgstr "gefiltert" - -msgid "item" -msgstr "Eintrag" - -msgid "items" -msgstr "Einträge" - -#. Admin - Export/Import -msgid "Export CSV" -msgstr "CSV exportieren" - -msgid "Export to CSV" -msgstr "Als CSV exportieren" +#: src/Admin/AdminController.php:1108 +msgid "Failed to transfer license. The license may be revoked or invalid." +msgstr "" +"Lizenzübertragung fehlgeschlagen. Die Lizenz könnte widerrufen oder ungültig " +"sein." +#: src/Admin/AdminController.php:1111 msgid "No licenses to export." msgstr "Keine Lizenzen zum Exportieren." -msgid "You do not have permission to export licenses." -msgstr "Sie haben keine Berechtigung, Lizenzen zu exportieren." - -msgid "Import CSV" -msgstr "CSV importieren" - -msgid "Import Licenses" -msgstr "Lizenzen importieren" - -msgid "Import Licenses from CSV" -msgstr "Lizenzen aus CSV importieren" - -msgid "Back to Licenses" -msgstr "Zurück zu Lizenzen" - -msgid "Upload a CSV file to import licenses. You can use the exported CSV format or a simplified format." -msgstr "Laden Sie eine CSV-Datei hoch, um Lizenzen zu importieren. Sie können das exportierte CSV-Format oder ein vereinfachtes Format verwenden." - -msgid "CSV Format" -msgstr "CSV-Format" - -msgid "The CSV file should contain the following columns:" -msgstr "Die CSV-Datei sollte die folgenden Spalten enthalten:" - -msgid "Full Format (from Export):" -msgstr "Vollständiges Format (vom Export):" - -msgid "Simplified Format:" -msgstr "Vereinfachtes Format:" - -msgid "Notes:" -msgstr "Hinweise:" - -msgid "Leave License Key empty to auto-generate." -msgstr "Lizenzschlüssel leer lassen für automatische Generierung." - -msgid "Status can be: active, inactive, expired, revoked (defaults to active)." -msgstr "Status kann sein: active, inactive, expired, revoked (Standard: active)." - -msgid "Expires At should be in YYYY-MM-DD format or \"Lifetime\"." -msgstr "Ablaufdatum sollte im Format JJJJ-MM-TT oder \"Lifetime\" sein." - -msgid "CSV File" -msgstr "CSV-Datei" - -msgid "Select a CSV file to import." -msgstr "Wählen Sie eine CSV-Datei zum Importieren." - -msgid "Options" -msgstr "Optionen" - -msgid "Skip first row (header row)" -msgstr "Erste Zeile überspringen (Kopfzeile)" - -msgid "Update existing licenses (by license key)" -msgstr "Bestehende Lizenzen aktualisieren (nach Lizenzschlüssel)" - -msgid "If enabled, licenses with matching keys will be updated instead of skipped." -msgstr "Falls aktiviert, werden Lizenzen mit übereinstimmenden Schlüsseln aktualisiert statt übersprungen." - -msgid "Error uploading file. Please try again." -msgstr "Fehler beim Hochladen der Datei. Bitte versuchen Sie es erneut." - -msgid "Invalid file type. Please upload a CSV file." -msgstr "Ungültiger Dateityp. Bitte laden Sie eine CSV-Datei hoch." - -msgid "Error reading file. Please check the file format." -msgstr "Fehler beim Lesen der Datei. Bitte überprüfen Sie das Dateiformat." - -msgid "An error occurred during import." -msgstr "Beim Import ist ein Fehler aufgetreten." - -msgid "You do not have permission to import licenses." -msgstr "Sie haben keine Berechtigung, Lizenzen zu importieren." - -msgid "Row missing domain" -msgstr "Zeile ohne Domain" - -msgid "Row missing valid product ID" -msgstr "Zeile ohne gültige Produkt-ID" - -msgid "Failed to import license for domain %s" -msgstr "Import der Lizenz für Domain %s fehlgeschlagen" - -#. Plural forms for import +#. translators: %d: number of licenses imported +#: src/Admin/AdminController.php:1121 +#, php-format msgid "%d license imported." msgid_plural "%d licenses imported." msgstr[0] "%d Lizenz importiert." msgstr[1] "%d Lizenzen importiert." +#. translators: %d: number of licenses updated +#: src/Admin/AdminController.php:1128 +#, php-format msgid "%d updated." msgid_plural "%d updated." msgstr[0] "%d aktualisiert." msgstr[1] "%d aktualisiert." +#. translators: %d: number of licenses skipped +#: src/Admin/AdminController.php:1136 +#, php-format msgid "%d skipped." msgid_plural "%d skipped." msgstr[0] "%d übersprungen." msgstr[1] "%d übersprungen." +#. translators: %d: number of errors +#: src/Admin/AdminController.php:1144 +#, php-format msgid "%d error." msgid_plural "%d errors." msgstr[0] "%d Fehler." msgstr[1] "%d Fehler." -#. Admin - Dashboard -msgid "License Dashboard" -msgstr "Lizenz-Dashboard" +#: src/Admin/AdminController.php:1165 +msgid "Export CSV" +msgstr "CSV exportieren" -msgid "View Dashboard" -msgstr "Dashboard anzeigen" +#: src/Admin/AdminController.php:1169 +msgid "Import CSV" +msgstr "CSV importieren" -msgid "Manage Licenses" -msgstr "Lizenzen verwalten" +#: src/Admin/AdminController.php:1184 +msgid "Search Licenses" +msgstr "Lizenzen durchsuchen" -msgid "View Licenses" -msgstr "Lizenzen anzeigen" +#: src/Admin/AdminController.php:1186 +msgid "Search license key or domain..." +msgstr "Lizenzschlüssel oder Domain suchen..." -msgid "Overview" -msgstr "Übersicht" +#: src/Admin/AdminController.php:1187 +msgid "Search" +msgstr "Suchen" -msgid "Total Licenses" -msgstr "Lizenzen insgesamt" +#: src/Admin/AdminController.php:1193 +msgid "All Statuses" +msgstr "Alle Status" -msgid "Expiring Soon (30 days)" -msgstr "Bald ablaufend (30 Tage)" +#: src/Admin/AdminController.php:1201 +msgid "All Products" +msgstr "Alle Produkte" -msgid "expiring within the next 30 days." -msgstr "läuft innerhalb der nächsten 30 Tage ab." +#: src/Admin/AdminController.php:1207 +msgid "Filter" +msgstr "Filtern" -msgid "License Types" -msgstr "Lizenztypen" +#: src/Admin/AdminController.php:1210 +msgid "Clear" +msgstr "Zurücksetzen" -msgid "Time-limited Licenses" -msgstr "Zeitlich begrenzte Lizenzen" +#: src/Admin/AdminController.php:1215 +msgid "item" +msgstr "Eintrag" -msgid "Lifetime Licenses" -msgstr "Lebenslange Lizenzen" +#: src/Admin/AdminController.php:1215 +msgid "items" +msgstr "Einträge" -msgid "Licenses Created (Last 12 Months)" -msgstr "Erstellte Lizenzen (letzte 12 Monate)" - -msgid "Top Products by Licenses" -msgstr "Top-Produkte nach Lizenzen" - -msgid "Top Domains" -msgstr "Top-Domains" - -msgid "No license data available yet." -msgstr "Noch keine Lizenzdaten verfügbar." +#: src/Admin/AdminController.php:1221 +msgid "Showing" +msgstr "Anzeige" +#: src/Admin/AdminController.php:1221 msgid "license" msgstr "Lizenz" +#: src/Admin/AdminController.php:1221 msgid "licenses" msgstr "Lizenzen" -msgid "license is" -msgstr "Lizenz ist" - -msgid "licenses are" -msgstr "Lizenzen sind" - -msgid "%d days" -msgstr "%d Tage" - -#. Product Versions -msgid "Product Versions" -msgstr "Produktversionen" - -msgid "Add New Version" -msgstr "Neue Version hinzufügen" - -msgid "Add Version" -msgstr "Version hinzufügen" - -msgid "Version" -msgstr "Version" - -msgid "Use semantic versioning (e.g., 1.0.0)" -msgstr "Verwenden Sie semantische Versionierung (z.B. 1.0.0)" - -msgid "Release Notes" -msgstr "Versionshinweise" - -msgid "Download File" -msgstr "Download-Datei" - -msgid "Select File" -msgstr "Datei auswählen" - -msgid "Use this file" -msgstr "Diese Datei verwenden" - -msgid "Remove" -msgstr "Entfernen" - -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)." - -msgid "Or External URL" -msgstr "Oder externe URL" - -msgid "Alternative: Enter an external download URL instead of uploading a file." -msgstr "Alternativ: Geben Sie eine externe Download-URL ein, anstatt eine Datei hochzuladen." - -msgid "Existing Versions" -msgstr "Vorhandene Versionen" - -msgid "No versions found. Add your first version above." -msgstr "Keine Versionen gefunden. Fügen Sie Ihre erste Version oben hinzu." - -msgid "Uploaded file" -msgstr "Hochgeladene Datei" - -msgid "No download file" -msgstr "Keine Download-Datei" - -msgid "Released" -msgstr "Veröffentlicht" - -msgid "Are you sure you want to delete this version?" -msgstr "Sind Sie sicher, dass Sie diese Version löschen möchten?" - -msgid "Version added successfully." -msgstr "Version erfolgreich hinzugefügt." - -msgid "Version updated successfully." -msgstr "Version erfolgreich aktualisiert." - -msgid "Version deleted successfully." -msgstr "Version erfolgreich gelöscht." - -msgid "Failed to create version." -msgstr "Version konnte nicht erstellt werden." - -msgid "Failed to update version." -msgstr "Version konnte nicht aktualisiert werden." - -msgid "Failed to delete version." -msgstr "Version konnte nicht gelöscht werden." - -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)." - -msgid "This version already exists." -msgstr "Diese Version existiert bereits." - -msgid "Please enter a version number." -msgstr "Bitte geben Sie eine Versionsnummer ein." - -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)." - -msgid "Product ID and version are required." -msgstr "Produkt-ID und Version sind erforderlich." - -msgid "Version ID is required." -msgstr "Versions-ID ist erforderlich." - -msgid "Version not found." -msgstr "Version nicht gefunden." - -msgid "Select Download File" -msgstr "Download-Datei auswählen" - -msgid "An error occurred. Please try again." -msgstr "Ein Fehler ist aufgetreten. Bitte versuchen Sie es erneut." - -#. Email notifications -msgid "Your License Keys" -msgstr "Ihre Lizenzschlüssel" - -msgid "YOUR LICENSE KEYS" -msgstr "IHRE LIZENZSCHLÜSSEL" - -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." - -msgid "License Expiration Notice" -msgstr "Lizenzablauf-Benachrichtigung" - -msgid "Hello %s," -msgstr "Guten Tag %s," - -msgid "[%2$s] Your license for %1$s expires tomorrow" -msgstr "[%2$s] Ihre Lizenz für %1$s läuft morgen ab" - -msgid "[%3$s] Your license for %1$s expires in %2$d days" -msgstr "[%3$s] Ihre Lizenz für %1$s läuft in %2$d Tagen ab" - -msgid "Your license for %s will expire tomorrow (%s)." -msgstr "Ihre Lizenz für %s läuft morgen ab (%s)." - -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 "License Details" -msgstr "Lizenzdetails" - -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." - -msgid "View My Licenses" -msgstr "Meine Lizenzen anzeigen" - -msgid "This email was sent from %s." -msgstr "Diese E-Mail wurde von %s gesendet." - -msgid "Attention:" -msgstr "Achtung:" - -msgid "Yes" -msgstr "Ja" - -msgid "No" -msgstr "Nein" - -#. Email settings -msgid "Expiration Warning Schedule" -msgstr "Ablaufwarnung Zeitplan" - -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." - -msgid "WooCommerce > Settings > Emails > License Expiration Warning" -msgstr "WooCommerce > Einstellungen > E-Mails > Lizenzablauf-Warnung" - -msgid "First Warning (Days Before)" -msgstr "Erste Warnung (Tage vorher)" - -msgid "Days before expiration to send the first warning email." -msgstr "Tage vor Ablauf, um die erste Warn-E-Mail zu senden." - -msgid "Second Warning (Days Before)" -msgstr "Zweite Warnung (Tage vorher)" - -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." - -#. WooCommerce Email Class -msgid "License Expiration Warning" -msgstr "Lizenzablauf-Warnung" - -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." - -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" - -msgid "Available placeholders: %s" -msgstr "Verfügbare Platzhalter: %s" - -msgid "Enable this email notification" -msgstr "Diese E-Mail-Benachrichtigung aktivieren" - -msgid "Email heading" -msgstr "E-Mail-Überschrift" - -msgid "Additional content" -msgstr "Zusätzlicher Inhalt" - -msgid "Text to appear below the main email content." -msgstr "Text, der unter dem Haupt-E-Mail-Inhalt erscheinen soll." - -msgid "Email type" -msgstr "E-Mail-Typ" - -msgid "Choose which format of email to send." -msgstr "Wählen Sie, welches E-Mail-Format gesendet werden soll." - -#. Admin - Inline Editing -msgid "Searching..." -msgstr "Suche..." - -msgid "No results found" -msgstr "Keine Ergebnisse gefunden" - -msgid "Saving..." -msgstr "Speichere..." - -msgid "Saved" -msgstr "Gespeichert" - -msgid "Save failed" -msgstr "Speichern fehlgeschlagen" - -msgid "Are you sure you want to revoke this license? This action cannot be undone." -msgstr "Sind Sie sicher, dass Sie diese Lizenz widerrufen möchten? Diese Aktion kann nicht rückgängig gemacht werden." - -msgid "Edit" -msgstr "Bearbeiten" - -msgid "Save" -msgstr "Speichern" - -msgid "Status updated successfully." -msgstr "Status erfolgreich aktualisiert." - -msgid "Expiry date updated successfully." -msgstr "Ablaufdatum erfolgreich aktualisiert." - -msgid "License set to lifetime." -msgstr "Lizenz auf lebenslang gesetzt." - -msgid "Domain updated successfully." -msgstr "Domain erfolgreich aktualisiert." - -msgid "Invalid license ID." -msgstr "Ungültige Lizenz-ID." - -msgid "Invalid status." -msgstr "Ungültiger Status." - -msgid "Invalid date format." -msgstr "Ungültiges Datumsformat." - -msgid "Domain cannot be empty." -msgstr "Domain darf nicht leer sein." - -msgid "Failed to update status." -msgstr "Status konnte nicht aktualisiert werden." - -msgid "Failed to update expiry date." -msgstr "Ablaufdatum konnte nicht aktualisiert werden." - -msgid "Failed to update domain." -msgstr "Domain konnte nicht aktualisiert werden." - -msgid "Failed to revoke license." -msgstr "Lizenz konnte nicht widerrufen werden." - +#: src/Admin/AdminController.php:1223 +msgid "filtered" +msgstr "gefiltert" + +#: src/Admin/AdminController.php:1225 +msgid "View Dashboard" +msgstr "Dashboard anzeigen" + +#: src/Admin/AdminController.php:1234 src/Admin/AdminController.php:1406 +msgid "Bulk Actions" +msgstr "Massenaktionen" + +#: src/Admin/AdminController.php:1235 src/Admin/AdminController.php:1407 +#: src/Admin/VersionAdminController.php:171 +#: src/Admin/VersionAdminController.php:387 +msgid "Activate" +msgstr "Aktivieren" + +#: src/Admin/AdminController.php:1236 src/Admin/AdminController.php:1408 +#: src/Admin/VersionAdminController.php:171 +#: src/Admin/VersionAdminController.php:387 +msgid "Deactivate" +msgstr "Deaktivieren" + +#: src/Admin/AdminController.php:1237 src/Admin/AdminController.php:1368 +#: src/Admin/AdminController.php:1409 +msgid "Revoke" +msgstr "Widerrufen" + +#: src/Admin/AdminController.php:1238 src/Admin/AdminController.php:1410 +msgid "Extend 30 days" +msgstr "30 Tage verlängern" + +#: src/Admin/AdminController.php:1239 src/Admin/AdminController.php:1411 +msgid "Extend 90 days" +msgstr "90 Tage verlängern" + +#: src/Admin/AdminController.php:1240 src/Admin/AdminController.php:1412 +msgid "Extend 1 year" +msgstr "1 Jahr verlängern" + +#: src/Admin/AdminController.php:1241 src/Admin/AdminController.php:1377 +#: src/Admin/AdminController.php:1413 src/Admin/VersionAdminController.php:174 +#: src/Admin/VersionAdminController.php:390 +msgid "Delete" +msgstr "Löschen" + +#: src/Admin/AdminController.php:1243 src/Admin/AdminController.php:1415 +msgid "Apply" +msgstr "Anwenden" + +#: src/Admin/AdminController.php:1253 src/Admin/AdminController.php:1391 +#: src/Admin/OrderLicenseController.php:144 +#: src/Email/LicenseEmailController.php:230 +msgid "License Key" +msgstr "Lizenzschlüssel" + +#: src/Admin/AdminController.php:1254 src/Admin/AdminController.php:1392 +#: src/Admin/OrderLicenseController.php:145 +#: src/Email/LicenseEmailController.php:229 +msgid "Product" +msgstr "Produkt" + +#: src/Admin/AdminController.php:1255 src/Admin/AdminController.php:1393 +#: src/Email/LicenseExpirationEmail.php:104 +msgid "Customer" +msgstr "Kunde" + +#: src/Admin/AdminController.php:1256 src/Admin/AdminController.php:1394 +#: src/Admin/OrderLicenseController.php:146 +msgid "Domain" +msgstr "Domain" + +#: src/Admin/AdminController.php:1257 src/Admin/AdminController.php:1395 +#: src/Admin/OrderLicenseController.php:147 +#: src/Admin/VersionAdminController.php:132 +msgid "Status" +msgstr "Status" + +#: src/Admin/AdminController.php:1258 src/Admin/AdminController.php:1396 +msgid "Created" +msgstr "Erstellt" + +#: src/Admin/AdminController.php:1259 src/Admin/AdminController.php:1397 +#: src/Admin/OrderLicenseController.php:148 +#: src/Email/LicenseEmailController.php:231 +msgid "Expires" +msgstr "Läuft ab" + +#: src/Admin/AdminController.php:1260 src/Admin/AdminController.php:1398 +#: src/Admin/OrderLicenseController.php:149 +#: src/Admin/VersionAdminController.php:134 +msgid "Actions" +msgstr "Aktionen" + +#: src/Admin/AdminController.php:1266 +msgid "No licenses found." +msgstr "Keine Lizenzen gefunden." + +#: src/Admin/AdminController.php:1276 src/Frontend/AccountController.php:193 +msgid "Copy to clipboard" +msgstr "In Zwischenablage kopieren" + +#: src/Admin/AdminController.php:1342 msgid "Leave empty for lifetime" msgstr "Leer lassen für lebenslang" -#. Admin - Order License Management +#: src/Admin/AdminController.php:1345 src/Admin/AdminController.php:1361 +msgid "Set to lifetime" +msgstr "Auf lebenslang setzen" + +#: src/Admin/AdminController.php:1355 +msgid "Extend by 30 days" +msgstr "Um 30 Tage verlängern" + +#: src/Admin/AdminController.php:1367 +msgid "Are you sure?" +msgstr "Sind Sie sicher?" + +#: src/Admin/AdminController.php:1376 +msgid "Are you sure you want to delete this license?" +msgstr "Sind Sie sicher, dass Sie diese Lizenz löschen möchten?" + +#: src/Admin/AdminController.php:1463 src/Admin/AdminController.php:1556 +msgid "Import Licenses" +msgstr "Lizenzen importieren" + +#: src/Admin/AdminController.php:1465 +msgid "Back to Licenses" +msgstr "Zurück zu Lizenzen" + +#: src/Admin/AdminController.php:1475 +msgid "Error uploading file. Please try again." +msgstr "Fehler beim Hochladen der Datei. Bitte versuchen Sie es erneut." + +#: src/Admin/AdminController.php:1478 +msgid "Invalid file type. Please upload a CSV file." +msgstr "Ungültiger Dateityp. Bitte laden Sie eine CSV-Datei hoch." + +#: src/Admin/AdminController.php:1481 +msgid "Error reading file. Please check the file format." +msgstr "Fehler beim Lesen der Datei. Bitte überprüfen Sie das Dateiformat." + +#: src/Admin/AdminController.php:1484 +msgid "An error occurred during import." +msgstr "Beim Import ist ein Fehler aufgetreten." + +#: src/Admin/AdminController.php:1492 +msgid "Import Licenses from CSV" +msgstr "Lizenzen aus CSV importieren" + +#: src/Admin/AdminController.php:1495 +msgid "" +"Upload a CSV file to import licenses. You can use the exported CSV format or " +"a simplified format." +msgstr "" +"Laden Sie eine CSV-Datei hoch, um Lizenzen zu importieren. Sie können das " +"exportierte CSV-Format oder ein vereinfachtes Format verwenden." + +#: src/Admin/AdminController.php:1498 +msgid "CSV Format" +msgstr "CSV-Format" + +#: src/Admin/AdminController.php:1500 +msgid "The CSV file should contain the following columns:" +msgstr "Die CSV-Datei sollte die folgenden Spalten enthalten:" + +#: src/Admin/AdminController.php:1504 +msgid "Full Format (from Export):" +msgstr "Vollständiges Format (vom Export):" + +#: src/Admin/AdminController.php:1507 +msgid "Simplified Format:" +msgstr "Vereinfachtes Format:" + +#: src/Admin/AdminController.php:1512 +msgid "Notes:" +msgstr "Hinweise:" + +#: src/Admin/AdminController.php:1513 +msgid "Leave License Key empty to auto-generate." +msgstr "Lizenzschlüssel leer lassen für automatische Generierung." + +#: src/Admin/AdminController.php:1514 +msgid "Status can be: active, inactive, expired, revoked (defaults to active)." +msgstr "" +"Status kann sein: active, inactive, expired, revoked (Standard: active)." + +#: src/Admin/AdminController.php:1515 +msgid "Expires At should be in YYYY-MM-DD format or \"Lifetime\"." +msgstr "Ablaufdatum sollte im Format JJJJ-MM-TT oder \"Lifetime\" sein." + +#: src/Admin/AdminController.php:1527 +msgid "CSV File" +msgstr "CSV-Datei" + +#: src/Admin/AdminController.php:1531 +msgid "Select a CSV file to import." +msgstr "Wählen Sie eine CSV-Datei zum Importieren." + +#: src/Admin/AdminController.php:1535 +msgid "Options" +msgstr "Optionen" + +#: src/Admin/AdminController.php:1539 +msgid "Skip first row (header row)" +msgstr "Erste Zeile überspringen (Kopfzeile)" + +#: src/Admin/AdminController.php:1544 +msgid "Update existing licenses (by license key)" +msgstr "Bestehende Lizenzen aktualisieren (nach Lizenzschlüssel)" + +#: src/Admin/AdminController.php:1547 +msgid "" +"If enabled, licenses with matching keys will be updated instead of skipped." +msgstr "" +"Falls aktiviert, werden Lizenzen mit übereinstimmenden Schlüsseln " +"aktualisiert statt übersprungen." + +#: src/Admin/AdminController.php:1574 +msgid "License" +msgstr "Lizenz" + +#: src/Admin/AdminController.php:1633 +msgid "No domain specified" +msgstr "Keine Domain angegeben" + +#: src/Admin/OrderLicenseController.php:56 +#, fuzzy +msgid "Product Licenses" +msgstr "Top-Produkte nach Lizenzen" + +#: src/Admin/OrderLicenseController.php:77 +#: src/Admin/OrderLicenseController.php:313 +#, fuzzy +msgid "Order not found." +msgstr "Version nicht gefunden." + +#: src/Admin/OrderLicenseController.php:92 +#, fuzzy +msgid "This order does not contain licensed products." +msgstr "Version stimmt nicht mit Ihrem lizensierten Produkt überein." + +#: src/Admin/OrderLicenseController.php:106 +#, fuzzy +msgid "Order Domain" +msgstr "Neue 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/CheckoutController.php:89 +#: src/Checkout/CheckoutBlocksIntegration.php:102 +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 +#, fuzzy +msgid "View in Licenses" +msgstr "Lizenzen anzeigen" + +#. translators: %s: Link to licenses page +#: 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:313 +#: src/Frontend/AccountController.php:345 +msgid "Please enter a valid domain." +msgstr "Bitte geben Sie eine gültige Domain ein." + +#: src/Admin/OrderLicenseController.php:308 +#, fuzzy +msgid "Invalid order ID." +msgstr "Ungültige Lizenz-ID." + +#: src/Admin/OrderLicenseController.php:319 +#: src/Admin/OrderLicenseController.php:357 +#, fuzzy +msgid "Invalid domain format." +msgstr "Ungültiges Datumsformat." + +#: src/Admin/OrderLicenseController.php:327 +#, fuzzy +msgid "Order domain updated." +msgstr "%d aktualisiert." + +#: src/Admin/OrderLicenseController.php:363 +#: src/Frontend/AccountController.php:351 +#: src/Frontend/DownloadController.php:105 +msgid "License not found." +msgstr "Lizenz nicht gefunden." + +#: src/Admin/OrderLicenseController.php:371 +#, fuzzy +msgid "License domain updated." +msgstr "Lizenz-Domain" + +#: src/Admin/OrderLicenseController.php:375 msgid "Failed to update license domain." msgstr "Lizenz-Domain konnte nicht aktualisiert werden." -#. Admin - License Overview (Created column) -msgid "Created" -msgstr "Erstellt" +#: src/Admin/SettingsController.php:45 +msgid "Licensed Products" +msgstr "Lizensierte Produkte" + +#: src/Admin/SettingsController.php:56 +msgid "Default License Settings" +msgstr "Standard Lizenz-Einstellungen" + +#: src/Admin/SettingsController.php:58 +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:62 +msgid "Default Max Activations" +msgstr "Standard Max. Aktivierungen" + +#: src/Admin/SettingsController.php:64 +msgid "Default maximum number of domain activations per license." +msgstr "Standard maximale Anzahl der Domain-Aktivierungen pro Lizenz." + +#: src/Admin/SettingsController.php:73 +msgid "Default License Validity (Days)" +msgstr "Standard Lizenz-Gültigkeit (Tage)" + +#: src/Admin/SettingsController.php:75 +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:85 +msgid "Default Bind to Major Version" +msgstr "Standard An Hauptversion binden" + +#: src/Admin/SettingsController.php:87 +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:97 +msgid "Expiration Warning Schedule" +msgstr "Ablaufwarnung Zeitplan" + +#. translators: %s: URL to WooCommerce email settings +#: src/Admin/SettingsController.php:101 +#, 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:103 +msgid "WooCommerce > Settings > Emails > License Expiration Warning" +msgstr "WooCommerce > Einstellungen > E-Mails > Lizenzablauf-Warnung" + +#: src/Admin/SettingsController.php:108 +msgid "First Warning (Days Before)" +msgstr "Erste Warnung (Tage vorher)" + +#: src/Admin/SettingsController.php:110 +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:119 +msgid "Second Warning (Days Before)" +msgstr "Zweite Warnung (Tage vorher)" + +#: src/Admin/SettingsController.php:121 +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/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:129 +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:130 +msgid "Download File" +msgstr "Download-Datei" + +#: src/Admin/VersionAdminController.php:93 +msgid "Select File" +msgstr "Datei auswählen" + +#: src/Admin/VersionAdminController.php:96 +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 "Or External URL" +msgstr "Oder externe URL" + +#: src/Admin/VersionAdminController.php:105 +msgid "" +"Alternative: Enter an external download URL instead of uploading a file." +msgstr "" +"Alternativ: Geben Sie eine externe Download-URL ein, anstatt eine Datei " +"hochzuladen." + +#: src/Admin/VersionAdminController.php:109 +#: src/Admin/VersionAdminController.php:131 +msgid "Release Notes" +msgstr "Versionshinweise" + +#: src/Admin/VersionAdminController.php:117 +msgid "Add Version" +msgstr "Version hinzufügen" + +#: src/Admin/VersionAdminController.php:125 +msgid "Existing Versions" +msgstr "Vorhandene Versionen" + +#: src/Admin/VersionAdminController.php:133 +msgid "Released" +msgstr "Veröffentlicht" + +#: src/Admin/VersionAdminController.php:140 +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:156 +#: src/Admin/VersionAdminController.php:372 +msgid "Uploaded file" +msgstr "Hochgeladene Datei" + +#: src/Admin/VersionAdminController.php:159 +#: src/Admin/VersionAdminController.php:375 +msgid "No download file" +msgstr "Keine Download-Datei" + +#: src/Admin/VersionAdminController.php:215 +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:216 +msgid "Please enter a version number." +msgstr "Bitte geben Sie eine Versionsnummer ein." + +#: src/Admin/VersionAdminController.php:217 +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:218 +msgid "An error occurred. Please try again." +msgstr "Ein Fehler ist aufgetreten. Bitte versuchen Sie es erneut." + +#: src/Admin/VersionAdminController.php:219 +msgid "Select Download File" +msgstr "Download-Datei auswählen" + +#: src/Admin/VersionAdminController.php:220 +msgid "Use this file" +msgstr "Diese Datei verwenden" + +#: src/Admin/VersionAdminController.php:250 +msgid "Product ID and version are required." +msgstr "Produkt-ID und Version sind erforderlich." + +#: src/Admin/VersionAdminController.php:255 +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:260 +msgid "This version already exists." +msgstr "Diese Version existiert bereits." + +#: src/Admin/VersionAdminController.php:266 +#, fuzzy +msgid "Product not found." +msgstr "Version nicht gefunden." + +#: src/Admin/VersionAdminController.php:270 +#, fuzzy +msgid "This product is not a licensed product." +msgstr "Version stimmt nicht mit Ihrem lizensierten Produkt überein." + +#: src/Admin/VersionAdminController.php:283 +msgid "Failed to create version." +msgstr "Version konnte nicht erstellt werden." + +#: src/Admin/VersionAdminController.php:291 +msgid "Version added successfully." +msgstr "Version erfolgreich hinzugefügt." + +#: src/Admin/VersionAdminController.php:311 +#: src/Admin/VersionAdminController.php:338 +msgid "Version ID is required." +msgstr "Versions-ID ist erforderlich." + +#: src/Admin/VersionAdminController.php:317 +msgid "Failed to delete version." +msgstr "Version konnte nicht gelöscht werden." + +#: src/Admin/VersionAdminController.php:320 +msgid "Version deleted successfully." +msgstr "Version erfolgreich gelöscht." + +#: src/Admin/VersionAdminController.php:344 +msgid "Failed to update version." +msgstr "Version konnte nicht aktualisiert werden." + +#: src/Admin/VersionAdminController.php:348 +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." + +#: src/Api/RestApiController.php:222 src/Api/RestApiController.php:255 +#: src/License/LicenseManager.php:357 +msgid "License key not found." +msgstr "Lizenzschlüssel nicht gefunden." + +#: src/Api/RestApiController.php:263 +msgid "This license is not valid." +msgstr "Diese Lizenz ist ungültig." + +#: src/Api/RestApiController.php:273 +msgid "License is already activated for this domain." +msgstr "Die Lizenz ist bereits für diese Domain aktiviert." + +#: src/Api/RestApiController.php:282 +msgid "Maximum number of activations reached." +msgstr "Maximale Anzahl der Aktivierungen erreicht." + +#: src/Api/RestApiController.php:293 +msgid "Failed to activate license." +msgstr "Lizenz konnte nicht aktiviert werden." + +#: src/Api/RestApiController.php:299 +msgid "License activated successfully." +msgstr "Lizenz erfolgreich aktiviert." + +#: 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/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/CheckoutController.php:115 +msgid "Please enter a domain for your license activation." +msgstr "Bitte geben Sie eine Domain für Ihre Lizenz-Aktivierung ein." + +#: src/Checkout/CheckoutController.php:125 +msgid "Please enter a valid domain name." +msgstr "Bitte geben Sie einen gültigen Domain-Namen ein." + +#: src/Checkout/CheckoutController.php:164 +#: src/Checkout/CheckoutController.php:181 +#: src/Checkout/CheckoutController.php:185 +msgid "License Domain:" +msgstr "Lizenz-Domain:" + +#: src/Checkout/CheckoutBlocksIntegration.php:105 +#, fuzzy +msgid "Please enter a valid domain for your license activation." +msgstr "Bitte geben Sie eine Domain für Ihre Lizenz-Aktivierung ein." + +#: src/Checkout/StoreApiExtension.php:85 +#, fuzzy +msgid "Domain for license activation" +msgstr "Domain für Lizenz-Aktivierung" + +#: src/Email/LicenseEmailController.php:173 +#: src/Email/LicenseEmailController.php:177 +#: src/Email/LicenseEmailController.php:281 +#: src/Email/LicenseExpirationEmail.php:207 +#: src/Email/LicenseExpirationEmail.php:270 +#: src/Frontend/AccountController.php:189 +msgid "License Key:" +msgstr "Lizenzschlüssel:" + +#: src/Email/LicenseEmailController.php:217 +msgid "Your License Keys" +msgstr "Ihre Lizenzschlüssel" + +#: src/Email/LicenseEmailController.php:221 +#: src/Email/LicenseEmailController.php:276 +msgid "Licensed Domain:" +msgstr "Lizensierte Domain:" + +#: src/Email/LicenseEmailController.php:248 +#: src/Email/LicenseEmailController.php:287 +#: src/Frontend/AccountController.php:217 +msgid "Never" +msgstr "Nie" + +#: src/Email/LicenseEmailController.php:257 +#: src/Email/LicenseEmailController.php:291 +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:272 +msgid "YOUR LICENSE KEYS" +msgstr "IHRE LIZENZSCHLÜSSEL" + +#: src/Email/LicenseEmailController.php:284 +#: src/Email/LicenseExpirationEmail.php:219 +#: src/Email/LicenseExpirationEmail.php:272 +#: src/Frontend/AccountController.php:212 +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/Frontend/AccountController.php:139 src/License/LicenseManager.php:760 +msgid "Unknown Product" +msgstr "Unbekanntes Produkt" + +#: src/Email/LicenseExpirationEmail.php:176 +#: src/Email/LicenseExpirationEmail.php:246 +#, php-format +msgid "Hello %s," +msgstr "Guten Tag %s," + +#: 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 +msgid "Product:" +msgstr "Produkt:" + +#: src/Email/LicenseExpirationEmail.php:215 +#: src/Email/LicenseExpirationEmail.php:271 +#: src/Frontend/AccountController.php:200 +msgid "Domain:" +msgstr "Domain:" + +#: src/Email/LicenseExpirationEmail.php:235 +#: src/Email/LicenseExpirationEmail.php:281 +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." + +#. translators: %s: list of placeholders +#: src/Email/LicenseExpirationEmail.php:301 +#, php-format +msgid "Available placeholders: %s" +msgstr "Verfügbare Platzhalter: %s" + +#: src/Email/LicenseExpirationEmail.php:307 +msgid "Enable/Disable" +msgstr "Aktivieren/Deaktivieren" + +#: src/Email/LicenseExpirationEmail.php:309 +msgid "Enable this email notification" +msgstr "Diese E-Mail-Benachrichtigung aktivieren" + +#: src/Email/LicenseExpirationEmail.php:313 +msgid "Subject" +msgstr "Betreff" + +#: src/Email/LicenseExpirationEmail.php:321 +msgid "Email heading" +msgstr "E-Mail-Überschrift" + +#: src/Email/LicenseExpirationEmail.php:329 +msgid "Additional content" +msgstr "Zusätzlicher Inhalt" + +#: src/Email/LicenseExpirationEmail.php:330 +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 +msgid "Email type" +msgstr "E-Mail-Typ" + +#: src/Email/LicenseExpirationEmail.php:340 +msgid "Choose which format of email to send." +msgstr "Wählen Sie, welches E-Mail-Format gesendet werden soll." + +#: src/Frontend/AccountController.php:104 +msgid "Please log in to view your licenses." +msgstr "Bitte melden Sie sich an, um Ihre Lizenzen zu sehen." + +#: src/Frontend/AccountController.php:164 +msgid "You have no licenses yet." +msgstr "Sie haben noch keine Lizenzen." + +#: src/Frontend/AccountController.php:206 +msgid "Transfer to new domain" +msgstr "Auf neue Domain übertragen" + +#: src/Frontend/AccountController.php:208 +msgid "Transfer" +msgstr "Übertragen" + +#: src/Frontend/AccountController.php:225 +msgid "Available Downloads" +msgstr "Verfügbare Downloads" + +#: src/Frontend/AccountController.php:231 +#, php-format +msgid "Version %s" +msgstr "Version %s" + +#: src/Frontend/AccountController.php:248 +msgid "Close" +msgstr "Schliessen" + +#: src/Frontend/AccountController.php:249 +msgid "Transfer License to New Domain" +msgstr "Lizenz auf neue Domain übertragen" + +#: src/Frontend/AccountController.php:254 +msgid "Current Domain" +msgstr "Aktuelle Domain" + +#: src/Frontend/AccountController.php:259 +msgid "New Domain" +msgstr "Neue Domain" + +#: src/Frontend/AccountController.php:263 +msgid "Enter the new domain without http:// or www." +msgstr "Geben Sie die neue Domain ohne http:// oder www ein." + +#: src/Frontend/AccountController.php:268 +msgid "Transfer License" +msgstr "Lizenz übertragen" + +#: src/Frontend/AccountController.php:310 +#: src/Frontend/AccountController.php:377 +msgid "License transferred successfully!" +msgstr "Lizenz erfolgreich übertragen!" + +#: src/Frontend/AccountController.php:311 +msgid "Transfer failed. Please try again." +msgstr "Übertragung fehlgeschlagen. Bitte versuchen Sie es erneut." + +#: src/Frontend/AccountController.php:312 +msgid "" +"Are you sure you want to transfer this license to a new domain? This action " +"cannot be undone." +msgstr "" +"Sind Sie sicher, dass Sie diese Lizenz auf eine neue Domain übertragen " +"möchten? Diese Aktion kann nicht rückgängig gemacht werden." + +#: src/Frontend/AccountController.php:331 +msgid "Please log in to transfer a license." +msgstr "Bitte melden Sie sich an, um eine Lizenz zu übertragen." + +#: src/Frontend/AccountController.php:337 +msgid "Invalid license." +msgstr "Ungültige Lizenz." + +#: src/Frontend/AccountController.php:355 +msgid "You do not have permission to transfer this license." +msgstr "Sie haben keine Berechtigung, diese Lizenz zu übertragen." + +#: src/Frontend/AccountController.php:360 +msgid "Revoked licenses cannot be transferred." +msgstr "Widerrufene Lizenzen können nicht übertragen werden." + +#: src/Frontend/AccountController.php:364 +msgid "Expired licenses cannot be transferred." +msgstr "Abgelaufene Lizenzen können nicht übertragen werden." + +#: src/Frontend/AccountController.php:369 +msgid "The new domain is the same as the current domain." +msgstr "Die neue Domain ist dieselbe wie die aktuelle Domain." + +#: src/Frontend/AccountController.php:381 +#, fuzzy +msgid "Failed to transfer license. Please try again." +msgstr "Übertragung fehlgeschlagen. Bitte versuchen Sie es erneut." + +#: src/Frontend/DownloadController.php:65 +#: src/Frontend/DownloadController.php:89 +msgid "Invalid download link." +msgstr "Ungültiger Download-Link." + +#: src/Frontend/DownloadController.php:66 +#: src/Frontend/DownloadController.php:76 +#: src/Frontend/DownloadController.php:90 +#: src/Frontend/DownloadController.php:106 +#: src/Frontend/DownloadController.php:116 +#: src/Frontend/DownloadController.php:125 +#: src/Frontend/DownloadController.php:135 +#: src/Frontend/DownloadController.php:144 +#: src/Frontend/DownloadController.php:153 +#: src/Frontend/DownloadController.php:171 +#: src/Frontend/DownloadController.php:187 +msgid "Download Error" +msgstr "Download-Fehler" + +#: src/Frontend/DownloadController.php:75 +msgid "Invalid download link format." +msgstr "Ungültiges Download-Link-Format." + +#: src/Frontend/DownloadController.php:115 +msgid "You do not have permission to download this file." +msgstr "Sie haben keine Berechtigung, diese Datei herunterzuladen." + +#: src/Frontend/DownloadController.php:124 +msgid "Your license is not active. Please contact support." +msgstr "Ihre Lizenz ist nicht aktiv. Bitte kontaktieren Sie den Support." + +#: src/Frontend/DownloadController.php:134 +msgid "Version not found." +msgstr "Version nicht gefunden." + +#: src/Frontend/DownloadController.php:143 +msgid "Version does not match your licensed product." +msgstr "Version stimmt nicht mit Ihrem lizensierten Produkt überein." + +#: src/Frontend/DownloadController.php:152 +msgid "This version is no longer available for download." +msgstr "Diese Version ist nicht mehr zum Download verfügbar." + +#: src/Frontend/DownloadController.php:170 +msgid "No download file available for this version." +msgstr "Keine Download-Datei für diese Version verfügbar." + +#: src/Frontend/DownloadController.php:186 +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/License/LicenseManager.php:376 +msgid "This license has expired." +msgstr "Diese Lizenz ist abgelaufen." + +#: src/License/LicenseManager.php:384 +msgid "This license is inactive." +msgstr "Diese Lizenz ist inaktiv." + +#: 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/Product/LicensedProductType.php:55 +msgid "Licensed Product" +msgstr "Lizensiertes Produkt" + +#: src/Product/LicensedProductType.php:76 +msgid "License Settings" +msgstr "Lizenz-Einstellungen" + +#: src/Product/LicensedProductType.php:103 +#, php-format +msgid "%d days" +msgstr "%d Tage" + +#. translators: %s: URL to settings page +#: src/Product/LicensedProductType.php:113 +#, 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:115 +msgid "WooCommerce > Settings > Licensed Products" +msgstr "WooCommerce > Einstellungen > Lizensierte Produkte" + +#: src/Product/LicensedProductType.php:122 +msgid "Max Activations" +msgstr "Max. Aktivierungen" + +#. translators: %d: default max activations value +#: src/Product/LicensedProductType.php:125 +#, 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:140 +msgid "License Validity (Days)" +msgstr "Lizenz-Gültigkeit (Tage)" + +#. translators: %s: default validity value +#: src/Product/LicensedProductType.php:143 +#, 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:158 +msgid "Bind to Major Version" +msgstr "An Hauptversion binden" + +#. translators: %s: default bind to version value (Yes/No) +#: src/Product/LicensedProductType.php:161 +#, 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:162 +msgid "Yes" +msgstr "Ja" + +#: src/Product/LicensedProductType.php:162 +msgid "No" +msgstr "Nein" + +#~ msgid "Maximum number of domain activations per license. Default: 1" +#~ msgstr "Maximale Anzahl der Domain-Aktivierungen pro Lizenz. Standard: 1" + +#~ msgid "" +#~ "Number of days the license is valid. Leave empty for lifetime license." +#~ msgstr "" +#~ "Anzahl Tage, die die Lizenz gültig ist. Leer lassen für eine lebenslange " +#~ "Lizenz." + +#~ msgid "" +#~ "If enabled, licenses are bound to the major version at purchase time." +#~ msgstr "" +#~ "Falls aktiviert, werden Lizenzen an die Hauptversion zum Kaufzeitpunkt " +#~ "gebunden." + +#~ msgid "License is not activated for this domain." +#~ msgstr "Die Lizenz ist für diese Domain nicht aktiviert." + +#~ msgid "Failed to deactivate license." +#~ msgstr "Lizenz konnte nicht deaktiviert werden." + +#~ msgid "License deactivated successfully." +#~ msgstr "Lizenz erfolgreich deaktiviert." + +#~ msgid "Total licenses:" +#~ msgstr "Lizenzen insgesamt:" + +#~ msgid "of" +#~ msgstr "von" + +#~ msgid "Expiring Soon (30 days)" +#~ msgstr "Bald ablaufend (30 Tage)" + +#~ msgid "License Types" +#~ msgstr "Lizenztypen" + +#~ msgid "Time-limited Licenses" +#~ msgstr "Zeitlich begrenzte Lizenzen" + +#~ msgid "Lifetime Licenses" +#~ msgstr "Lebenslange Lizenzen" + +#~ msgid "Licenses Created (Last 12 Months)" +#~ msgstr "Erstellte Lizenzen (letzte 12 Monate)" + +#~ msgid "Top Domains" +#~ msgstr "Top-Domains" + +#~ msgid "No license data available yet." +#~ msgstr "Noch keine Lizenzdaten verfügbar." + +#~ msgid "license is" +#~ msgstr "Lizenz ist" + +#~ msgid "licenses are" +#~ msgstr "Lizenzen sind" + +#~ msgid "[%2$s] Your license for %1$s expires tomorrow" +#~ msgstr "[%2$s] Ihre Lizenz für %1$s läuft morgen ab" + +#~ msgid "[%3$s] Your license for %1$s expires in %2$d days" +#~ msgstr "[%3$s] Ihre Lizenz für %1$s läuft in %2$d Tagen ab" + +#~ msgid "This email was sent from %s." +#~ msgstr "Diese E-Mail wurde von %s gesendet." + +#~ msgid "No results found" +#~ msgstr "Keine Ergebnisse gefunden" diff --git a/languages/wc-licensed-product.pot b/languages/wc-licensed-product.pot index 9e4d195..307ecbb 100644 --- a/languages/wc-licensed-product.pot +++ b/languages/wc-licensed-product.pot @@ -1,945 +1,1410 @@ -# Copyright (C) 2024 Marco Graetsch -# This file is distributed under the GPL-2.0-or-later. +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR Marco Graetsch +# This file is distributed under the same license as the WooCommerce Licensed Product package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy msgid "" msgstr "" -"Project-Id-Version: WC Licensed Product 0.0.11\n" -"Report-Msgid-Bugs-To: https://src.bundespruefstelle.ch/magdev/wc-licensed-product/issues\n" -"POT-Creation-Date: 2026-01-21T00:00:00+00:00\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" +"Project-Id-Version: WooCommerce Licensed Product 0.1.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2026-01-22 11:52+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" -#. Plugin requirement message +#. translators: %s: WooCommerce plugin name +#: wc-licensed-product.php:61 +#, php-format msgid "%s requires WooCommerce to be installed and active." msgstr "" +#: wc-licensed-product.php:119 msgid "WC Licensed Product requires WooCommerce to be installed and active." msgstr "" -#. Product type -msgid "Licensed Product" -msgstr "" - -msgid "Licensed Products" -msgstr "" - -#. License Settings tab -msgid "License Settings" -msgstr "" - -msgid "Max Activations" -msgstr "" - -msgid "Maximum number of domain activations per license. Default: 1" -msgstr "" - -msgid "Maximum number of domain activations per license. Default: %d" -msgstr "" - -msgid "License Validity (Days)" -msgstr "" - -msgid "Number of days the license is valid. Leave empty for lifetime license." -msgstr "" - -msgid "Number of days the license is valid. Leave empty for default (%s)." -msgstr "" - -msgid "Bind to Major Version" -msgstr "" - -msgid "If enabled, licenses are bound to the major version at purchase time." -msgstr "" - -msgid "If enabled, licenses are bound to the major version at purchase time. Default: %s" -msgstr "" - -msgid "If enabled, licenses are bound to the major version at purchase time by default." -msgstr "" - -#. Global settings -msgid "Default License Settings" -msgstr "" - -msgid "Default Max Activations" -msgstr "" - -msgid "Default maximum number of domain activations per license." -msgstr "" - -msgid "Default License Validity (Days)" -msgstr "" - -msgid "Default number of days a license is valid. Leave empty or set to 0 for lifetime licenses." -msgstr "" - -msgid "Default Bind to Major Version" -msgstr "" - -msgid "These settings serve as defaults for new licensed products. Individual product settings override these defaults." -msgstr "" - -msgid "Leave fields empty to use default settings from %s." -msgstr "" - -msgid "WooCommerce > Settings > Licensed Products" -msgstr "" - +#: wc-licensed-product.php:137 src/Admin/AdminController.php:936 msgid "Settings" msgstr "" -#. License validation messages -msgid "License key not found." -msgstr "" - -msgid "This license has been revoked." -msgstr "" - -msgid "This license has expired." -msgstr "" - -msgid "This license is inactive." -msgstr "" - -msgid "This license is not valid for this domain." -msgstr "" - -msgid "This license is not valid." -msgstr "" - -msgid "License is already activated for this domain." -msgstr "" - -msgid "Maximum number of activations reached." -msgstr "" - -msgid "Failed to activate license." -msgstr "" - -msgid "License activated successfully." -msgstr "" - -msgid "License is not activated for this domain." -msgstr "" - -msgid "Failed to deactivate license." -msgstr "" - -msgid "License deactivated successfully." -msgstr "" - -msgid "Your license is not active. Please contact support." -msgstr "" - -msgid "Too many requests. Please try again later." -msgstr "" - -#. Checkout -msgid "License Domain" -msgstr "" - -msgid "Domain for License Activation" -msgstr "" - -msgid "required" -msgstr "" - -msgid "example.com" -msgstr "" - -msgid "Enter the domain where you will use this license (without http:// or www)." -msgstr "" - -msgid "Please enter a domain for your license activation." -msgstr "" - -msgid "Please enter a valid domain name." -msgstr "" - -msgid "License Domain:" -msgstr "" - -msgid "Licensed Domain:" -msgstr "" - -#. Frontend - Customer account -msgid "Please log in to view your licenses." -msgstr "" - -msgid "Please log in to transfer a license." -msgstr "" - +#: src/Admin/AdminController.php:73 src/Admin/AdminController.php:74 +#: src/Admin/AdminController.php:87 src/Admin/AdminController.php:1162 +#: src/Admin/OrderLicenseController.php:127 +#: src/Admin/OrderLicenseController.php:222 +#: src/Frontend/AccountController.php:90 msgid "Licenses" msgstr "" -msgid "Unknown Product" +#: src/Admin/AdminController.php:90 +msgid "Overview" msgstr "" -msgid "You have no licenses yet." +#: src/Admin/AdminController.php:138 +msgid "No licenses found" msgstr "" -msgid "License Key" +#: src/Admin/AdminController.php:139 +msgid "Searching..." msgstr "" -msgid "License Key:" +#: src/Admin/AdminController.php:140 +msgid "Search failed" msgstr "" -msgid "Product" +#: src/Admin/AdminController.php:141 src/Admin/OrderLicenseController.php:285 +msgid "Saving..." msgstr "" -msgid "Product:" +#: src/Admin/AdminController.php:142 +msgid "Saved" msgstr "" -msgid "Domain" +#: src/Admin/AdminController.php:143 +msgid "Save failed" msgstr "" -msgid "Domain:" +#: src/Admin/AdminController.php:144 +msgid "" +"Are you sure you want to revoke this license? This action cannot be undone." msgstr "" -msgid "Status" -msgstr "" - -msgid "Expires" -msgstr "" - -msgid "Expires:" -msgstr "" - -msgid "Never" -msgstr "" - -msgid "Lifetime" -msgstr "" - -msgid "Copy to clipboard" -msgstr "" - -msgid "Copied!" -msgstr "" - -msgid "Copy failed" -msgstr "" - -#. License transfer (customer) -msgid "Transfer" -msgstr "" - -msgid "Transfer to new domain" -msgstr "" - -msgid "Transfer License" -msgstr "" - -msgid "Transfer License to New Domain" -msgstr "" - -msgid "Current Domain" -msgstr "" - -msgid "New Domain" -msgstr "" - -msgid "Enter the new domain without http:// or www." +#: src/Admin/AdminController.php:145 src/Admin/AdminController.php:1297 +#: src/Admin/AdminController.php:1312 src/Admin/AdminController.php:1338 +msgid "Edit" msgstr "" +#: src/Admin/AdminController.php:146 src/Admin/AdminController.php:1303 +#: src/Admin/AdminController.php:1323 src/Admin/AdminController.php:1344 +#: src/Admin/OrderLicenseController.php:185 +#: src/Frontend/AccountController.php:270 msgid "Cancel" msgstr "" -msgid "Close" +#: src/Admin/AdminController.php:147 src/Admin/AdminController.php:1302 +#: src/Admin/AdminController.php:1322 src/Admin/AdminController.php:1343 +#: src/Admin/OrderLicenseController.php:118 +#: src/Admin/OrderLicenseController.php:182 +msgid "Save" msgstr "" -msgid "Please enter a valid domain." +#: src/Admin/AdminController.php:148 src/Admin/AdminController.php:263 +#: src/Admin/AdminController.php:1335 src/Admin/OrderLicenseController.php:201 +#: src/Admin/SettingsController.php:78 src/Product/LicensedProductType.php:104 +#: src/Product/LicensedProductType.php:152 +msgid "Lifetime" msgstr "" -msgid "Are you sure you want to transfer this license to a new domain? This action cannot be undone." +#: src/Admin/AdminController.php:149 src/Frontend/AccountController.php:308 +msgid "Copied!" msgstr "" -msgid "License transferred successfully!" -msgstr "" - -msgid "Transfer failed. Please try again." -msgstr "" - -msgid "Invalid license." -msgstr "" - -msgid "License not found." -msgstr "" - -msgid "You do not have permission to transfer this license." -msgstr "" - -msgid "Revoked licenses cannot be transferred." -msgstr "" - -msgid "Expired licenses cannot be transferred." -msgstr "" - -msgid "The new domain is the same as the current domain." -msgstr "" - -#. Available Downloads -msgid "Available Downloads" -msgstr "" - -msgid "Version %s" -msgstr "" - -msgid "Download Error" -msgstr "" - -msgid "Invalid download link." -msgstr "" - -msgid "Invalid download link format." -msgstr "" - -msgid "Download file not found." -msgstr "" - -msgid "No download file available for this version." -msgstr "" - -msgid "This version is no longer available for download." -msgstr "" - -msgid "Version does not match your licensed product." -msgstr "" - -msgid "Permission denied." -msgstr "" - -msgid "You do not have permission to download this file." -msgstr "" - -#. Admin - Licenses page -msgid "Security check failed." -msgstr "" - -msgid "License updated successfully." -msgstr "" - -msgid "License deleted successfully." -msgstr "" - -msgid "License revoked successfully." -msgstr "" - -msgid "License extended successfully." -msgstr "" - -msgid "License set to lifetime successfully." -msgstr "" - -msgid "License transferred to new domain successfully." -msgstr "" - -msgid "Failed to transfer license. The license may be revoked or invalid." -msgstr "" - -msgid "Unknown" -msgstr "" - -msgid "Guest" -msgstr "" - -msgid "Customer" -msgstr "" - -msgid "Actions" -msgstr "" - -msgid "No licenses found." -msgstr "" - -msgid "Are you sure?" -msgstr "" - -msgid "Revoke" -msgstr "" - -msgid "Are you sure you want to delete this license?" -msgstr "" - -msgid "Delete" -msgstr "" - -msgid "License" -msgstr "" - -msgid "No domain specified" -msgstr "" - -msgid "Total licenses:" -msgstr "" - -msgid "of" +#: src/Admin/AdminController.php:150 src/Frontend/AccountController.php:309 +msgid "Copy failed" msgstr "" +#: src/Admin/AdminController.php:153 src/Admin/AdminController.php:875 +#: src/Admin/AdminController.php:1194 src/Admin/AdminController.php:1317 +#: src/Admin/VersionAdminController.php:165 +#: src/Admin/VersionAdminController.php:381 msgid "Active" msgstr "" +#: src/Admin/AdminController.php:154 src/Admin/AdminController.php:882 +#: src/Admin/AdminController.php:1195 src/Admin/AdminController.php:1318 +#: src/Admin/VersionAdminController.php:165 +#: src/Admin/VersionAdminController.php:381 msgid "Inactive" msgstr "" +#: src/Admin/AdminController.php:155 src/Admin/AdminController.php:889 +#: src/Admin/AdminController.php:1196 src/Admin/AdminController.php:1319 msgid "Expired" msgstr "" +#: src/Admin/AdminController.php:156 src/Admin/AdminController.php:896 +#: src/Admin/AdminController.php:1197 src/Admin/AdminController.php:1320 msgid "Revoked" msgstr "" -msgid "Activate" +#: src/Admin/AdminController.php:170 src/Admin/AdminController.php:210 +#: src/Admin/AdminController.php:246 src/Admin/AdminController.php:298 +#: src/Admin/AdminController.php:336 src/Admin/OrderLicenseController.php:301 +#: src/Admin/OrderLicenseController.php:340 +#: src/Admin/VersionAdminController.php:240 +#: src/Admin/VersionAdminController.php:305 +#: src/Admin/VersionAdminController.php:331 +msgid "Permission denied." msgstr "" -msgid "Deactivate" +#: src/Admin/AdminController.php:192 src/Admin/AdminController.php:987 +#: src/Admin/OrderLicenseController.php:168 +msgid "Unknown" msgstr "" -#. Admin - Bulk actions -msgid "Bulk Actions" +#: src/Admin/AdminController.php:193 src/Admin/AdminController.php:991 +msgid "Guest" msgstr "" -msgid "Apply" +#: src/Admin/AdminController.php:217 src/Admin/AdminController.php:253 +#: src/Admin/AdminController.php:305 src/Admin/AdminController.php:342 +#: src/Admin/OrderLicenseController.php:347 +msgid "Invalid license ID." msgstr "" -msgid "Extend 30 days" +#: src/Admin/AdminController.php:222 +msgid "Invalid status." msgstr "" -msgid "Extend 90 days" +#: src/Admin/AdminController.php:229 +msgid "Status updated successfully." msgstr "" -msgid "Extend 1 year" +#: src/Admin/AdminController.php:234 +msgid "Failed to update status." msgstr "" -msgid "Extend by 30 days" +#: src/Admin/AdminController.php:261 +msgid "License set to lifetime." msgstr "" -msgid "Set to lifetime" +#: src/Admin/AdminController.php:266 src/Admin/AdminController.php:283 +msgid "Failed to update expiry date." msgstr "" +#: src/Admin/AdminController.php:278 +msgid "Expiry date updated successfully." +msgstr "" + +#: src/Admin/AdminController.php:286 +msgid "Invalid date format." +msgstr "" + +#: src/Admin/AdminController.php:309 src/Admin/OrderLicenseController.php:351 +msgid "Domain cannot be empty." +msgstr "" + +#: src/Admin/AdminController.php:320 +msgid "Domain updated successfully." +msgstr "" + +#: src/Admin/AdminController.php:324 +msgid "Failed to update domain." +msgstr "" + +#: src/Admin/AdminController.php:349 src/Admin/AdminController.php:1056 +msgid "License revoked successfully." +msgstr "" + +#: src/Admin/AdminController.php:354 +msgid "Failed to revoke license." +msgstr "" + +#: src/Admin/AdminController.php:428 src/Admin/AdminController.php:448 +#: src/Admin/AdminController.php:466 src/Admin/AdminController.php:484 +#: src/Admin/AdminController.php:504 src/Admin/AdminController.php:522 +#: src/Admin/AdminController.php:589 src/Admin/AdminController.php:779 +#: src/Frontend/AccountController.php:325 +msgid "Security check failed." +msgstr "" + +#: src/Admin/AdminController.php:549 +msgid "You do not have permission to export licenses." +msgstr "" + +#: src/Admin/AdminController.php:593 +msgid "You do not have permission to import licenses." +msgstr "" + +#: src/Admin/AdminController.php:713 +msgid "Row missing domain" +msgstr "" + +#: src/Admin/AdminController.php:717 +msgid "Row missing valid product ID" +msgstr "" + +#: src/Admin/AdminController.php:770 +#, php-format +msgid "Failed to import license for domain %s" +msgstr "" + +#: src/Admin/AdminController.php:860 +msgid "License Dashboard" +msgstr "" + +#: src/Admin/AdminController.php:868 +msgid "Total Licenses" +msgstr "" + +#: src/Admin/AdminController.php:905 +msgid "Attention:" +msgstr "" + +#: src/Admin/AdminController.php:910 +#, php-format +msgid "%d license is expiring within the next 30 days." +msgid_plural "%d licenses are expiring within the next 30 days." +msgstr[0] "" +msgstr[1] "" + +#: src/Admin/AdminController.php:918 +msgid "View Licenses" +msgstr "" + +#: src/Admin/AdminController.php:924 msgid "Quick Actions" msgstr "" -#. Plural forms for bulk actions +#: src/Admin/AdminController.php:928 +msgid "Manage Licenses" +msgstr "" + +#: src/Admin/AdminController.php:932 +msgid "Export to CSV" +msgstr "" + +#: src/Admin/AdminController.php:1050 +msgid "License updated successfully." +msgstr "" + +#: src/Admin/AdminController.php:1053 +msgid "License deleted successfully." +msgstr "" + +#: src/Admin/AdminController.php:1059 +msgid "License extended successfully." +msgstr "" + +#: src/Admin/AdminController.php:1062 +msgid "License set to lifetime successfully." +msgstr "" + +#. translators: %d: number of licenses +#: src/Admin/AdminController.php:1068 +#, php-format msgid "%d license activated." msgid_plural "%d licenses activated." msgstr[0] "" msgstr[1] "" +#. translators: %d: number of licenses +#: src/Admin/AdminController.php:1076 +#, php-format msgid "%d license deactivated." msgid_plural "%d licenses deactivated." msgstr[0] "" msgstr[1] "" +#. translators: %d: number of licenses +#: src/Admin/AdminController.php:1084 +#, php-format msgid "%d license revoked." msgid_plural "%d licenses revoked." msgstr[0] "" msgstr[1] "" +#. translators: %d: number of licenses +#: src/Admin/AdminController.php:1092 +#, php-format msgid "%d license deleted." msgid_plural "%d licenses deleted." msgstr[0] "" msgstr[1] "" +#. translators: %d: number of licenses +#: src/Admin/AdminController.php:1100 +#, php-format msgid "%d license extended." msgid_plural "%d licenses extended." msgstr[0] "" msgstr[1] "" -#. Admin - Search and Filter -msgid "Search" +#: src/Admin/AdminController.php:1105 +msgid "License transferred to new domain successfully." msgstr "" -msgid "Search Licenses" -msgstr "" - -msgid "Search license key or domain..." -msgstr "" - -msgid "Filter" -msgstr "" - -msgid "Clear" -msgstr "" - -msgid "All Statuses" -msgstr "" - -msgid "All Products" -msgstr "" - -msgid "Showing" -msgstr "" - -msgid "filtered" -msgstr "" - -msgid "item" -msgstr "" - -msgid "items" -msgstr "" - -#. Admin - Export/Import -msgid "Export CSV" -msgstr "" - -msgid "Export to CSV" +#: src/Admin/AdminController.php:1108 +msgid "Failed to transfer license. The license may be revoked or invalid." msgstr "" +#: src/Admin/AdminController.php:1111 msgid "No licenses to export." msgstr "" -msgid "You do not have permission to export licenses." -msgstr "" - -msgid "Import CSV" -msgstr "" - -msgid "Import Licenses" -msgstr "" - -msgid "Import Licenses from CSV" -msgstr "" - -msgid "Back to Licenses" -msgstr "" - -msgid "Upload a CSV file to import licenses. You can use the exported CSV format or a simplified format." -msgstr "" - -msgid "CSV Format" -msgstr "" - -msgid "The CSV file should contain the following columns:" -msgstr "" - -msgid "Full Format (from Export):" -msgstr "" - -msgid "Simplified Format:" -msgstr "" - -msgid "Notes:" -msgstr "" - -msgid "Leave License Key empty to auto-generate." -msgstr "" - -msgid "Status can be: active, inactive, expired, revoked (defaults to active)." -msgstr "" - -msgid "Expires At should be in YYYY-MM-DD format or \"Lifetime\"." -msgstr "" - -msgid "CSV File" -msgstr "" - -msgid "Select a CSV file to import." -msgstr "" - -msgid "Options" -msgstr "" - -msgid "Skip first row (header row)" -msgstr "" - -msgid "Update existing licenses (by license key)" -msgstr "" - -msgid "If enabled, licenses with matching keys will be updated instead of skipped." -msgstr "" - -msgid "Error uploading file. Please try again." -msgstr "" - -msgid "Invalid file type. Please upload a CSV file." -msgstr "" - -msgid "Error reading file. Please check the file format." -msgstr "" - -msgid "An error occurred during import." -msgstr "" - -msgid "You do not have permission to import licenses." -msgstr "" - -msgid "Row missing domain" -msgstr "" - -msgid "Row missing valid product ID" -msgstr "" - -msgid "Failed to import license for domain %s" -msgstr "" - -#. Plural forms for import +#. translators: %d: number of licenses imported +#: src/Admin/AdminController.php:1121 +#, php-format msgid "%d license imported." msgid_plural "%d licenses imported." msgstr[0] "" msgstr[1] "" +#. translators: %d: number of licenses updated +#: src/Admin/AdminController.php:1128 +#, php-format msgid "%d updated." msgid_plural "%d updated." msgstr[0] "" msgstr[1] "" +#. translators: %d: number of licenses skipped +#: src/Admin/AdminController.php:1136 +#, php-format msgid "%d skipped." msgid_plural "%d skipped." msgstr[0] "" msgstr[1] "" +#. translators: %d: number of errors +#: src/Admin/AdminController.php:1144 +#, php-format msgid "%d error." msgid_plural "%d errors." msgstr[0] "" msgstr[1] "" -#. Admin - Dashboard -msgid "License Dashboard" +#: src/Admin/AdminController.php:1165 +msgid "Export CSV" msgstr "" -msgid "View Dashboard" +#: src/Admin/AdminController.php:1169 +msgid "Import CSV" msgstr "" -msgid "Manage Licenses" +#: src/Admin/AdminController.php:1184 +msgid "Search Licenses" msgstr "" -msgid "View Licenses" +#: src/Admin/AdminController.php:1186 +msgid "Search license key or domain..." msgstr "" -msgid "Overview" +#: src/Admin/AdminController.php:1187 +msgid "Search" msgstr "" -msgid "Total Licenses" +#: src/Admin/AdminController.php:1193 +msgid "All Statuses" msgstr "" -msgid "Expiring Soon (30 days)" +#: src/Admin/AdminController.php:1201 +msgid "All Products" msgstr "" -msgid "expiring within the next 30 days." +#: src/Admin/AdminController.php:1207 +msgid "Filter" msgstr "" -msgid "License Types" +#: src/Admin/AdminController.php:1210 +msgid "Clear" msgstr "" -msgid "Time-limited Licenses" +#: src/Admin/AdminController.php:1215 +msgid "item" msgstr "" -msgid "Lifetime Licenses" +#: src/Admin/AdminController.php:1215 +msgid "items" msgstr "" -msgid "Licenses Created (Last 12 Months)" -msgstr "" - -msgid "Top Products by Licenses" -msgstr "" - -msgid "Top Domains" -msgstr "" - -msgid "No license data available yet." +#: src/Admin/AdminController.php:1221 +msgid "Showing" msgstr "" +#: src/Admin/AdminController.php:1221 msgid "license" msgstr "" +#: src/Admin/AdminController.php:1221 msgid "licenses" msgstr "" -msgid "license is" +#: src/Admin/AdminController.php:1223 +msgid "filtered" msgstr "" -msgid "licenses are" +#: src/Admin/AdminController.php:1225 +msgid "View Dashboard" msgstr "" -msgid "%d days" +#: src/Admin/AdminController.php:1234 src/Admin/AdminController.php:1406 +msgid "Bulk Actions" msgstr "" -#. Product Versions -msgid "Product Versions" +#: src/Admin/AdminController.php:1235 src/Admin/AdminController.php:1407 +#: src/Admin/VersionAdminController.php:171 +#: src/Admin/VersionAdminController.php:387 +msgid "Activate" msgstr "" -msgid "Add New Version" +#: src/Admin/AdminController.php:1236 src/Admin/AdminController.php:1408 +#: src/Admin/VersionAdminController.php:171 +#: src/Admin/VersionAdminController.php:387 +msgid "Deactivate" msgstr "" -msgid "Add Version" +#: src/Admin/AdminController.php:1237 src/Admin/AdminController.php:1368 +#: src/Admin/AdminController.php:1409 +msgid "Revoke" msgstr "" -msgid "Version" +#: src/Admin/AdminController.php:1238 src/Admin/AdminController.php:1410 +msgid "Extend 30 days" msgstr "" -msgid "Use semantic versioning (e.g., 1.0.0)" +#: src/Admin/AdminController.php:1239 src/Admin/AdminController.php:1411 +msgid "Extend 90 days" msgstr "" -msgid "Release Notes" +#: src/Admin/AdminController.php:1240 src/Admin/AdminController.php:1412 +msgid "Extend 1 year" msgstr "" -msgid "Download File" +#: src/Admin/AdminController.php:1241 src/Admin/AdminController.php:1377 +#: src/Admin/AdminController.php:1413 src/Admin/VersionAdminController.php:174 +#: src/Admin/VersionAdminController.php:390 +msgid "Delete" msgstr "" -msgid "Select File" +#: src/Admin/AdminController.php:1243 src/Admin/AdminController.php:1415 +msgid "Apply" msgstr "" -msgid "Use this file" +#: src/Admin/AdminController.php:1253 src/Admin/AdminController.php:1391 +#: src/Admin/OrderLicenseController.php:144 +#: src/Email/LicenseEmailController.php:230 +msgid "License Key" msgstr "" -msgid "Remove" -msgstr "" - -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 "" - -msgid "Or External URL" -msgstr "" - -msgid "Alternative: Enter an external download URL instead of uploading a file." -msgstr "" - -msgid "Existing Versions" -msgstr "" - -msgid "No versions found. Add your first version above." -msgstr "" - -msgid "Uploaded file" -msgstr "" - -msgid "No download file" -msgstr "" - -msgid "Released" -msgstr "" - -msgid "Are you sure you want to delete this version?" -msgstr "" - -msgid "Version added successfully." -msgstr "" - -msgid "Version updated successfully." -msgstr "" - -msgid "Version deleted successfully." -msgstr "" - -msgid "Failed to create version." -msgstr "" - -msgid "Failed to update version." -msgstr "" - -msgid "Failed to delete version." -msgstr "" - -msgid "Invalid version format. Use semantic versioning (e.g., 1.0.0)." -msgstr "" - -msgid "This version already exists." -msgstr "" - -msgid "Please enter a version number." -msgstr "" - -msgid "Please enter a valid version number (e.g., 1.0.0)." -msgstr "" - -msgid "Product ID and version are required." -msgstr "" - -msgid "Version ID is required." -msgstr "" - -msgid "Version not found." -msgstr "" - -msgid "Select Download File" -msgstr "" - -msgid "An error occurred. Please try again." -msgstr "" - -#. Email notifications -msgid "Your License Keys" -msgstr "" - -msgid "YOUR LICENSE KEYS" -msgstr "" - -msgid "You can also view your licenses in your account under \"Licenses\"." -msgstr "" - -msgid "License Expiration Notice" -msgstr "" - -msgid "Hello %s," -msgstr "" - -msgid "[%2$s] Your license for %1$s expires tomorrow" -msgstr "" - -msgid "[%3$s] Your license for %1$s expires in %2$d days" -msgstr "" - -msgid "Your license for %s will expire tomorrow (%s)." -msgstr "" - -msgid "Your license for %1$s will expire in %2$d days (%3$s)." -msgstr "" - -msgid "License Details" -msgstr "" - -msgid "To continue using this product, please renew your license before the expiration date." -msgstr "" - -msgid "View My Licenses" -msgstr "" - -msgid "This email was sent from %s." -msgstr "" - -msgid "Attention:" -msgstr "" - -msgid "Yes" -msgstr "" - -msgid "No" -msgstr "" - -#. Email settings -msgid "Expiration Warning Schedule" -msgstr "" - -msgid "Configure when expiration warning emails are sent. To customize the email template, enable/disable, or change the subject, go to %s." -msgstr "" - -msgid "WooCommerce > Settings > Emails > License Expiration Warning" -msgstr "" - -msgid "First Warning (Days Before)" -msgstr "" - -msgid "Days before expiration to send the first warning email." -msgstr "" - -msgid "Second Warning (Days Before)" -msgstr "" - -msgid "Days before expiration to send the second warning email. Set to 0 to disable." -msgstr "" - -#. WooCommerce Email Class -msgid "License Expiration Warning" -msgstr "" - -msgid "License expiration warning emails are sent to customers when their licenses are about to expire." -msgstr "" - -msgid "[{site_title}] Your license for {product_name} expires in {days_remaining} days" -msgstr "" - -msgid "Available placeholders: %s" -msgstr "" - -msgid "Enable this email notification" -msgstr "" - -msgid "Email heading" -msgstr "" - -msgid "Additional content" -msgstr "" - -msgid "Text to appear below the main email content." -msgstr "" - -msgid "Email type" -msgstr "" - -msgid "Choose which format of email to send." +#: src/Admin/AdminController.php:1254 src/Admin/AdminController.php:1392 +#: src/Admin/OrderLicenseController.php:145 +#: src/Email/LicenseEmailController.php:229 +msgid "Product" msgstr "" +#: src/Admin/AdminController.php:1255 src/Admin/AdminController.php:1393 +#: src/Email/LicenseExpirationEmail.php:104 msgid "Customer" msgstr "" -#. Admin - Inline Editing -msgid "Searching..." +#: src/Admin/AdminController.php:1256 src/Admin/AdminController.php:1394 +#: src/Admin/OrderLicenseController.php:146 +msgid "Domain" msgstr "" -msgid "No results found" +#: src/Admin/AdminController.php:1257 src/Admin/AdminController.php:1395 +#: src/Admin/OrderLicenseController.php:147 +#: src/Admin/VersionAdminController.php:132 +msgid "Status" msgstr "" -msgid "Saving..." +#: src/Admin/AdminController.php:1258 src/Admin/AdminController.php:1396 +msgid "Created" msgstr "" -msgid "Saved" +#: src/Admin/AdminController.php:1259 src/Admin/AdminController.php:1397 +#: src/Admin/OrderLicenseController.php:148 +#: src/Email/LicenseEmailController.php:231 +msgid "Expires" msgstr "" -msgid "Save failed" +#: src/Admin/AdminController.php:1260 src/Admin/AdminController.php:1398 +#: src/Admin/OrderLicenseController.php:149 +#: src/Admin/VersionAdminController.php:134 +msgid "Actions" msgstr "" -msgid "Are you sure you want to revoke this license? This action cannot be undone." +#: src/Admin/AdminController.php:1266 +msgid "No licenses found." msgstr "" -msgid "Edit" -msgstr "" - -msgid "Save" -msgstr "" - -msgid "Status updated successfully." -msgstr "" - -msgid "Expiry date updated successfully." -msgstr "" - -msgid "License set to lifetime." -msgstr "" - -msgid "Domain updated successfully." -msgstr "" - -msgid "Invalid license ID." -msgstr "" - -msgid "Invalid status." -msgstr "" - -msgid "Invalid date format." -msgstr "" - -msgid "Domain cannot be empty." -msgstr "" - -msgid "Failed to update status." -msgstr "" - -msgid "Failed to update expiry date." -msgstr "" - -msgid "Failed to update domain." -msgstr "" - -msgid "Failed to revoke license." +#: src/Admin/AdminController.php:1276 src/Frontend/AccountController.php:193 +msgid "Copy to clipboard" msgstr "" +#: src/Admin/AdminController.php:1342 msgid "Leave empty for lifetime" msgstr "" -#. Admin - Order License Management +#: src/Admin/AdminController.php:1345 src/Admin/AdminController.php:1361 +msgid "Set to lifetime" +msgstr "" + +#: src/Admin/AdminController.php:1355 +msgid "Extend by 30 days" +msgstr "" + +#: src/Admin/AdminController.php:1367 +msgid "Are you sure?" +msgstr "" + +#: src/Admin/AdminController.php:1376 +msgid "Are you sure you want to delete this license?" +msgstr "" + +#: src/Admin/AdminController.php:1463 src/Admin/AdminController.php:1556 +msgid "Import Licenses" +msgstr "" + +#: src/Admin/AdminController.php:1465 +msgid "Back to Licenses" +msgstr "" + +#: src/Admin/AdminController.php:1475 +msgid "Error uploading file. Please try again." +msgstr "" + +#: src/Admin/AdminController.php:1478 +msgid "Invalid file type. Please upload a CSV file." +msgstr "" + +#: src/Admin/AdminController.php:1481 +msgid "Error reading file. Please check the file format." +msgstr "" + +#: src/Admin/AdminController.php:1484 +msgid "An error occurred during import." +msgstr "" + +#: src/Admin/AdminController.php:1492 +msgid "Import Licenses from CSV" +msgstr "" + +#: src/Admin/AdminController.php:1495 +msgid "" +"Upload a CSV file to import licenses. You can use the exported CSV format or " +"a simplified format." +msgstr "" + +#: src/Admin/AdminController.php:1498 +msgid "CSV Format" +msgstr "" + +#: src/Admin/AdminController.php:1500 +msgid "The CSV file should contain the following columns:" +msgstr "" + +#: src/Admin/AdminController.php:1504 +msgid "Full Format (from Export):" +msgstr "" + +#: src/Admin/AdminController.php:1507 +msgid "Simplified Format:" +msgstr "" + +#: src/Admin/AdminController.php:1512 +msgid "Notes:" +msgstr "" + +#: src/Admin/AdminController.php:1513 +msgid "Leave License Key empty to auto-generate." +msgstr "" + +#: src/Admin/AdminController.php:1514 +msgid "Status can be: active, inactive, expired, revoked (defaults to active)." +msgstr "" + +#: src/Admin/AdminController.php:1515 +msgid "Expires At should be in YYYY-MM-DD format or \"Lifetime\"." +msgstr "" + +#: src/Admin/AdminController.php:1527 +msgid "CSV File" +msgstr "" + +#: src/Admin/AdminController.php:1531 +msgid "Select a CSV file to import." +msgstr "" + +#: src/Admin/AdminController.php:1535 +msgid "Options" +msgstr "" + +#: src/Admin/AdminController.php:1539 +msgid "Skip first row (header row)" +msgstr "" + +#: src/Admin/AdminController.php:1544 +msgid "Update existing licenses (by license key)" +msgstr "" + +#: src/Admin/AdminController.php:1547 +msgid "" +"If enabled, licenses with matching keys will be updated instead of skipped." +msgstr "" + +#: src/Admin/AdminController.php:1574 +msgid "License" +msgstr "" + +#: src/Admin/AdminController.php:1633 +msgid "No domain specified" +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/CheckoutController.php:89 +#: src/Checkout/CheckoutBlocksIntegration.php:102 +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 "" + +#. translators: %s: Link to licenses page +#: 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:313 +#: src/Frontend/AccountController.php:345 +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:351 +#: src/Frontend/DownloadController.php:105 +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 "" -#. Admin - License Overview (Created column) -msgid "Created" +#: src/Admin/SettingsController.php:45 +msgid "Licensed Products" +msgstr "" + +#: src/Admin/SettingsController.php:56 +msgid "Default License Settings" +msgstr "" + +#: src/Admin/SettingsController.php:58 +msgid "" +"These settings serve as defaults for new licensed products. Individual " +"product settings override these defaults." +msgstr "" + +#: src/Admin/SettingsController.php:62 +msgid "Default Max Activations" +msgstr "" + +#: src/Admin/SettingsController.php:64 +msgid "Default maximum number of domain activations per license." +msgstr "" + +#: src/Admin/SettingsController.php:73 +msgid "Default License Validity (Days)" +msgstr "" + +#: src/Admin/SettingsController.php:75 +msgid "" +"Default number of days a license is valid. Leave empty or set to 0 for " +"lifetime licenses." +msgstr "" + +#: src/Admin/SettingsController.php:85 +msgid "Default Bind to Major Version" +msgstr "" + +#: src/Admin/SettingsController.php:87 +msgid "" +"If enabled, licenses are bound to the major version at purchase time by " +"default." +msgstr "" + +#: src/Admin/SettingsController.php:97 +msgid "Expiration Warning Schedule" +msgstr "" + +#. translators: %s: URL to WooCommerce email settings +#: src/Admin/SettingsController.php:101 +#, 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:103 +msgid "WooCommerce > Settings > Emails > License Expiration Warning" +msgstr "" + +#: src/Admin/SettingsController.php:108 +msgid "First Warning (Days Before)" +msgstr "" + +#: src/Admin/SettingsController.php:110 +msgid "Days before expiration to send the first warning email." +msgstr "" + +#: src/Admin/SettingsController.php:119 +msgid "Second Warning (Days Before)" +msgstr "" + +#: src/Admin/SettingsController.php:121 +msgid "" +"Days before expiration to send the second warning email. Set to 0 to disable." +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:129 +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:130 +msgid "Download File" +msgstr "" + +#: src/Admin/VersionAdminController.php:93 +msgid "Select File" +msgstr "" + +#: src/Admin/VersionAdminController.php:96 +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 "Or External URL" +msgstr "" + +#: src/Admin/VersionAdminController.php:105 +msgid "" +"Alternative: Enter an external download URL instead of uploading a file." +msgstr "" + +#: src/Admin/VersionAdminController.php:109 +#: src/Admin/VersionAdminController.php:131 +msgid "Release Notes" +msgstr "" + +#: src/Admin/VersionAdminController.php:117 +msgid "Add Version" +msgstr "" + +#: src/Admin/VersionAdminController.php:125 +msgid "Existing Versions" +msgstr "" + +#: src/Admin/VersionAdminController.php:133 +msgid "Released" +msgstr "" + +#: src/Admin/VersionAdminController.php:140 +msgid "No versions found. Add your first version above." +msgstr "" + +#: src/Admin/VersionAdminController.php:156 +#: src/Admin/VersionAdminController.php:372 +msgid "Uploaded file" +msgstr "" + +#: src/Admin/VersionAdminController.php:159 +#: src/Admin/VersionAdminController.php:375 +msgid "No download file" +msgstr "" + +#: src/Admin/VersionAdminController.php:215 +msgid "Are you sure you want to delete this version?" +msgstr "" + +#: src/Admin/VersionAdminController.php:216 +msgid "Please enter a version number." +msgstr "" + +#: src/Admin/VersionAdminController.php:217 +msgid "Please enter a valid version number (e.g., 1.0.0)." +msgstr "" + +#: src/Admin/VersionAdminController.php:218 +msgid "An error occurred. Please try again." +msgstr "" + +#: src/Admin/VersionAdminController.php:219 +msgid "Select Download File" +msgstr "" + +#: src/Admin/VersionAdminController.php:220 +msgid "Use this file" +msgstr "" + +#: src/Admin/VersionAdminController.php:250 +msgid "Product ID and version are required." +msgstr "" + +#: src/Admin/VersionAdminController.php:255 +msgid "Invalid version format. Use semantic versioning (e.g., 1.0.0)." +msgstr "" + +#: src/Admin/VersionAdminController.php:260 +msgid "This version already exists." +msgstr "" + +#: src/Admin/VersionAdminController.php:266 +msgid "Product not found." +msgstr "" + +#: src/Admin/VersionAdminController.php:270 +msgid "This product is not a licensed product." +msgstr "" + +#: src/Admin/VersionAdminController.php:283 +msgid "Failed to create version." +msgstr "" + +#: src/Admin/VersionAdminController.php:291 +msgid "Version added successfully." +msgstr "" + +#: src/Admin/VersionAdminController.php:311 +#: src/Admin/VersionAdminController.php:338 +msgid "Version ID is required." +msgstr "" + +#: src/Admin/VersionAdminController.php:317 +msgid "Failed to delete version." +msgstr "" + +#: src/Admin/VersionAdminController.php:320 +msgid "Version deleted successfully." +msgstr "" + +#: src/Admin/VersionAdminController.php:344 +msgid "Failed to update version." +msgstr "" + +#: src/Admin/VersionAdminController.php:348 +msgid "Version updated successfully." +msgstr "" + +#: src/Api/RestApiController.php:84 +msgid "Too many requests. Please try again later." +msgstr "" + +#: src/Api/RestApiController.php:222 src/Api/RestApiController.php:255 +#: src/License/LicenseManager.php:357 +msgid "License key not found." +msgstr "" + +#: src/Api/RestApiController.php:263 +msgid "This license is not valid." +msgstr "" + +#: src/Api/RestApiController.php:273 +msgid "License is already activated for this domain." +msgstr "" + +#: src/Api/RestApiController.php:282 +msgid "Maximum number of activations reached." +msgstr "" + +#: src/Api/RestApiController.php:293 +msgid "Failed to activate license." +msgstr "" + +#: src/Api/RestApiController.php:299 +msgid "License activated successfully." +msgstr "" + +#: src/Checkout/CheckoutController.php:78 +#: src/Checkout/CheckoutBlocksIntegration.php:104 +msgid "License Domain" +msgstr "" + +#: 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 "" + +#: src/Checkout/CheckoutController.php:125 +msgid "Please enter a valid domain name." +msgstr "" + +#: src/Checkout/CheckoutController.php:164 +#: src/Checkout/CheckoutController.php:181 +#: src/Checkout/CheckoutController.php:185 +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:173 +#: src/Email/LicenseEmailController.php:177 +#: src/Email/LicenseEmailController.php:281 +#: src/Email/LicenseExpirationEmail.php:207 +#: src/Email/LicenseExpirationEmail.php:270 +#: src/Frontend/AccountController.php:189 +msgid "License Key:" +msgstr "" + +#: src/Email/LicenseEmailController.php:217 +msgid "Your License Keys" +msgstr "" + +#: src/Email/LicenseEmailController.php:221 +#: src/Email/LicenseEmailController.php:276 +msgid "Licensed Domain:" +msgstr "" + +#: src/Email/LicenseEmailController.php:248 +#: src/Email/LicenseEmailController.php:287 +#: src/Frontend/AccountController.php:217 +msgid "Never" +msgstr "" + +#: src/Email/LicenseEmailController.php:257 +#: src/Email/LicenseEmailController.php:291 +msgid "You can also view your licenses in your account under \"Licenses\"." +msgstr "" + +#: src/Email/LicenseEmailController.php:272 +msgid "YOUR LICENSE KEYS" +msgstr "" + +#: src/Email/LicenseEmailController.php:284 +#: src/Email/LicenseExpirationEmail.php:219 +#: src/Email/LicenseExpirationEmail.php:272 +#: src/Frontend/AccountController.php:212 +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/Frontend/AccountController.php:139 src/License/LicenseManager.php:760 +msgid "Unknown Product" +msgstr "" + +#: src/Email/LicenseExpirationEmail.php:176 +#: src/Email/LicenseExpirationEmail.php:246 +#, php-format +msgid "Hello %s," +msgstr "" + +#: 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 +msgid "Product:" +msgstr "" + +#: src/Email/LicenseExpirationEmail.php:215 +#: src/Email/LicenseExpirationEmail.php:271 +#: src/Frontend/AccountController.php:200 +msgid "Domain:" +msgstr "" + +#: src/Email/LicenseExpirationEmail.php:235 +#: src/Email/LicenseExpirationEmail.php:281 +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 "" + +#. translators: %s: list of placeholders +#: src/Email/LicenseExpirationEmail.php:301 +#, php-format +msgid "Available placeholders: %s" +msgstr "" + +#: src/Email/LicenseExpirationEmail.php:307 +msgid "Enable/Disable" +msgstr "" + +#: src/Email/LicenseExpirationEmail.php:309 +msgid "Enable this email notification" +msgstr "" + +#: src/Email/LicenseExpirationEmail.php:313 +msgid "Subject" +msgstr "" + +#: src/Email/LicenseExpirationEmail.php:321 +msgid "Email heading" +msgstr "" + +#: src/Email/LicenseExpirationEmail.php:329 +msgid "Additional content" +msgstr "" + +#: src/Email/LicenseExpirationEmail.php:330 +msgid "Text to appear below the main email content." +msgstr "" + +#: src/Email/LicenseExpirationEmail.php:338 +msgid "Email type" +msgstr "" + +#: src/Email/LicenseExpirationEmail.php:340 +msgid "Choose which format of email to send." +msgstr "" + +#: src/Frontend/AccountController.php:104 +msgid "Please log in to view your licenses." +msgstr "" + +#: src/Frontend/AccountController.php:164 +msgid "You have no licenses yet." +msgstr "" + +#: src/Frontend/AccountController.php:206 +msgid "Transfer to new domain" +msgstr "" + +#: src/Frontend/AccountController.php:208 +msgid "Transfer" +msgstr "" + +#: src/Frontend/AccountController.php:225 +msgid "Available Downloads" +msgstr "" + +#: src/Frontend/AccountController.php:231 +#, php-format +msgid "Version %s" +msgstr "" + +#: src/Frontend/AccountController.php:248 +msgid "Close" +msgstr "" + +#: src/Frontend/AccountController.php:249 +msgid "Transfer License to New Domain" +msgstr "" + +#: src/Frontend/AccountController.php:254 +msgid "Current Domain" +msgstr "" + +#: src/Frontend/AccountController.php:259 +msgid "New Domain" +msgstr "" + +#: src/Frontend/AccountController.php:263 +msgid "Enter the new domain without http:// or www." +msgstr "" + +#: src/Frontend/AccountController.php:268 +msgid "Transfer License" +msgstr "" + +#: src/Frontend/AccountController.php:310 +#: src/Frontend/AccountController.php:377 +msgid "License transferred successfully!" +msgstr "" + +#: src/Frontend/AccountController.php:311 +msgid "Transfer failed. Please try again." +msgstr "" + +#: src/Frontend/AccountController.php:312 +msgid "" +"Are you sure you want to transfer this license to a new domain? This action " +"cannot be undone." +msgstr "" + +#: src/Frontend/AccountController.php:331 +msgid "Please log in to transfer a license." +msgstr "" + +#: src/Frontend/AccountController.php:337 +msgid "Invalid license." +msgstr "" + +#: src/Frontend/AccountController.php:355 +msgid "You do not have permission to transfer this license." +msgstr "" + +#: src/Frontend/AccountController.php:360 +msgid "Revoked licenses cannot be transferred." +msgstr "" + +#: src/Frontend/AccountController.php:364 +msgid "Expired licenses cannot be transferred." +msgstr "" + +#: src/Frontend/AccountController.php:369 +msgid "The new domain is the same as the current domain." +msgstr "" + +#: src/Frontend/AccountController.php:381 +msgid "Failed to transfer license. Please try again." +msgstr "" + +#: src/Frontend/DownloadController.php:65 +#: src/Frontend/DownloadController.php:89 +msgid "Invalid download link." +msgstr "" + +#: src/Frontend/DownloadController.php:66 +#: src/Frontend/DownloadController.php:76 +#: src/Frontend/DownloadController.php:90 +#: src/Frontend/DownloadController.php:106 +#: src/Frontend/DownloadController.php:116 +#: src/Frontend/DownloadController.php:125 +#: src/Frontend/DownloadController.php:135 +#: src/Frontend/DownloadController.php:144 +#: src/Frontend/DownloadController.php:153 +#: src/Frontend/DownloadController.php:171 +#: src/Frontend/DownloadController.php:187 +msgid "Download Error" +msgstr "" + +#: src/Frontend/DownloadController.php:75 +msgid "Invalid download link format." +msgstr "" + +#: src/Frontend/DownloadController.php:115 +msgid "You do not have permission to download this file." +msgstr "" + +#: src/Frontend/DownloadController.php:124 +msgid "Your license is not active. Please contact support." +msgstr "" + +#: src/Frontend/DownloadController.php:134 +msgid "Version not found." +msgstr "" + +#: src/Frontend/DownloadController.php:143 +msgid "Version does not match your licensed product." +msgstr "" + +#: src/Frontend/DownloadController.php:152 +msgid "This version is no longer available for download." +msgstr "" + +#: src/Frontend/DownloadController.php:170 +msgid "No download file available for this version." +msgstr "" + +#: src/Frontend/DownloadController.php:186 +msgid "Download file not found." +msgstr "" + +#: src/License/LicenseManager.php:366 +msgid "This license has been revoked." +msgstr "" + +#: src/License/LicenseManager.php:376 +msgid "This license has expired." +msgstr "" + +#: src/License/LicenseManager.php:384 +msgid "This license is inactive." +msgstr "" + +#: src/License/LicenseManager.php:394 +msgid "This license is not valid for this domain." +msgstr "" + +#: src/Product/LicensedProductType.php:55 +msgid "Licensed Product" +msgstr "" + +#: src/Product/LicensedProductType.php:76 +msgid "License Settings" +msgstr "" + +#: src/Product/LicensedProductType.php:103 +#, php-format +msgid "%d days" +msgstr "" + +#. translators: %s: URL to settings page +#: src/Product/LicensedProductType.php:113 +#, php-format +msgid "Leave fields empty to use default settings from %s." +msgstr "" + +#: src/Product/LicensedProductType.php:115 +msgid "WooCommerce > Settings > Licensed Products" +msgstr "" + +#: src/Product/LicensedProductType.php:122 +msgid "Max Activations" +msgstr "" + +#. translators: %d: default max activations value +#: src/Product/LicensedProductType.php:125 +#, php-format +msgid "Maximum number of domain activations per license. Default: %d" +msgstr "" + +#: src/Product/LicensedProductType.php:140 +msgid "License Validity (Days)" +msgstr "" + +#. translators: %s: default validity value +#: src/Product/LicensedProductType.php:143 +#, php-format +msgid "Number of days the license is valid. Leave empty for default (%s)." +msgstr "" + +#: src/Product/LicensedProductType.php:158 +msgid "Bind to Major Version" +msgstr "" + +#. translators: %s: default bind to version value (Yes/No) +#: src/Product/LicensedProductType.php:161 +#, php-format +msgid "" +"If enabled, licenses are bound to the major version at purchase time. " +"Default: %s" +msgstr "" + +#: src/Product/LicensedProductType.php:162 +msgid "Yes" +msgstr "" + +#: src/Product/LicensedProductType.php:162 +msgid "No" msgstr "" diff --git a/src/Admin/AdminController.php b/src/Admin/AdminController.php index 15fc39b..7ff052e 100644 --- a/src/Admin/AdminController.php +++ b/src/Admin/AdminController.php @@ -105,7 +105,9 @@ final class AdminController { // Check for our pages and WooCommerce Reports page with licenses tab $isLicensePage = in_array($hook, ['woocommerce_page_wc-licenses', 'woocommerce_page_wc-license-dashboard'], true); - $isReportsPage = $hook === 'woocommerce_page_wc-reports' && isset($_GET['tab']) && $_GET['tab'] === 'licenses'; + // phpcs:ignore WordPress.Security.NonceVerification.Recommended -- Only checking current page context + $currentTab = isset($_GET['tab']) ? sanitize_text_field(wp_unslash($_GET['tab'])) : ''; + $isReportsPage = $hook === 'woocommerce_page_wc-reports' && $currentTab === 'licenses'; if (!$isLicensePage && !$isReportsPage) { return; diff --git a/src/Product/VersionManager.php b/src/Product/VersionManager.php index 27d37c2..cb851b4 100644 --- a/src/Product/VersionManager.php +++ b/src/Product/VersionManager.php @@ -167,8 +167,20 @@ class VersionManager } if ($attachmentId !== null) { - $data['attachment_id'] = $attachmentId > 0 ? $attachmentId : null; - $formats[] = $attachmentId > 0 ? '%d' : null; + if ($attachmentId > 0) { + $data['attachment_id'] = $attachmentId; + $formats[] = '%d'; + } else { + // Set to NULL using raw SQL instead of adding to $data + global $wpdb; + $tableName = Installer::getVersionsTable(); + $wpdb->query( + $wpdb->prepare( + "UPDATE {$tableName} SET attachment_id = NULL WHERE id = %d", + $versionId + ) + ); + } } if (empty($data)) { diff --git a/wc-licensed-product.php b/wc-licensed-product.php index 02f63c0..9bdb942 100644 --- a/wc-licensed-product.php +++ b/wc-licensed-product.php @@ -3,7 +3,7 @@ * Plugin Name: WooCommerce Licensed Product * Plugin URI: https://src.bundespruefstelle.ch/magdev/wc-licensed-product * Description: WooCommerce plugin to sell software products using license keys with domain-based validation. - * Version: 0.0.11 + * Version: 0.1.0 * Author: Marco Graetsch * Author URI: https://src.bundespruefstelle.ch/magdev * License: GPL-2.0-or-later @@ -28,7 +28,7 @@ if (!defined('ABSPATH')) { } // Plugin constants -define('WC_LICENSED_PRODUCT_VERSION', '0.0.11'); +define('WC_LICENSED_PRODUCT_VERSION', '0.1.0'); define('WC_LICENSED_PRODUCT_PLUGIN_FILE', __FILE__); define('WC_LICENSED_PRODUCT_PLUGIN_DIR', plugin_dir_path(__FILE__)); define('WC_LICENSED_PRODUCT_PLUGIN_URL', plugin_dir_url(__FILE__));