You've already forked wc-licensed-product
Merge branch 'main' into dev
This commit is contained in:
28
CHANGELOG.md
28
CHANGELOG.md
@@ -7,6 +7,34 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|||||||
|
|
||||||
## [Unreleased]
|
## [Unreleased]
|
||||||
|
|
||||||
|
## [0.3.6] - 2026-01-23
|
||||||
|
|
||||||
|
### Security
|
||||||
|
|
||||||
|
- Added CSRF protection (nonce verification) to CSV export functionality
|
||||||
|
- Fixed IP header spoofing vulnerability in rate limiting - now requires explicit trusted proxy configuration
|
||||||
|
- Enabled explicit Twig autoescape for XSS protection
|
||||||
|
- Fixed unescaped status values in CSS classes in Twig templates
|
||||||
|
|
||||||
|
### Fixed
|
||||||
|
|
||||||
|
- Fixed response signing to use recursive key sorting for client compatibility
|
||||||
|
- ResponseSigner now recursively sorts nested array keys alphabetically as required by client implementation
|
||||||
|
|
||||||
|
### Changed
|
||||||
|
|
||||||
|
- Rate limiting now only trusts proxy headers when `WC_LICENSE_TRUSTED_PROXIES` constant is defined
|
||||||
|
- Added Cloudflare IP range support via `WC_LICENSE_TRUSTED_PROXIES = 'CLOUDFLARE'` configuration
|
||||||
|
- Improved IP detection with CIDR notation support for trusted proxy ranges
|
||||||
|
|
||||||
|
### Technical Details
|
||||||
|
|
||||||
|
- Added `recursiveKeySort()` method to `ResponseSigner` for proper response signing
|
||||||
|
- Added `isTrustedProxy()`, `isCloudflareIp()`, and `ipMatchesCidr()` methods to `RestApiController`
|
||||||
|
- Twig environment now explicitly sets `autoescape => 'html'`
|
||||||
|
- Export CSV link now includes nonce via `wp_nonce_url()`
|
||||||
|
- Added `export_csv_url()` Twig function for generating export URL with nonce
|
||||||
|
|
||||||
## [0.3.5] - 2026-01-23
|
## [0.3.5] - 2026-01-23
|
||||||
|
|
||||||
### Added
|
### Added
|
||||||
|
|||||||
50
README.md
50
README.md
@@ -14,10 +14,13 @@ WC Licensed Product adds a new product type "Licensed Product" to WooCommerce, e
|
|||||||
- **Automatic License Generation**: License keys generated on order completion (format: XXXX-XXXX-XXXX-XXXX)
|
- **Automatic License Generation**: License keys generated on order completion (format: XXXX-XXXX-XXXX-XXXX)
|
||||||
- **Domain Binding**: Licenses are bound to customer-specified domains
|
- **Domain Binding**: Licenses are bound to customer-specified domains
|
||||||
- **REST API**: Public endpoints for license validation and management
|
- **REST API**: Public endpoints for license validation and management
|
||||||
|
- **Response Signing**: Optional HMAC-SHA256 cryptographic signatures for API responses
|
||||||
- **Version Binding**: Optional binding to major software versions
|
- **Version Binding**: Optional binding to major software versions
|
||||||
- **Expiration Support**: Set license validity periods or lifetime licenses
|
- **Expiration Support**: Set license validity periods or lifetime licenses
|
||||||
- **Rate Limiting**: API endpoints protected with rate limiting (30 requests/minute)
|
- **Rate Limiting**: API endpoints protected with rate limiting (30 requests/minute)
|
||||||
|
- **Trusted Proxy Support**: Configurable trusted proxies for accurate rate limiting behind CDNs
|
||||||
- **Checkout Blocks**: Full support for WooCommerce Checkout Blocks (default since WC 8.3+)
|
- **Checkout Blocks**: Full support for WooCommerce Checkout Blocks (default since WC 8.3+)
|
||||||
|
- **Self-Licensing**: The plugin can validate its own license (for commercial distribution)
|
||||||
|
|
||||||
### Customer Features
|
### Customer Features
|
||||||
|
|
||||||
@@ -30,6 +33,7 @@ WC Licensed Product adds a new product type "Licensed Product" to WooCommerce, e
|
|||||||
|
|
||||||
- **License Management**: Full CRUD interface for license management
|
- **License Management**: Full CRUD interface for license management
|
||||||
- **License Dashboard**: Statistics and analytics (WooCommerce > Reports > Licenses)
|
- **License Dashboard**: Statistics and analytics (WooCommerce > Reports > Licenses)
|
||||||
|
- **Dashboard Widget**: License statistics on WordPress admin dashboard
|
||||||
- **Search & Filtering**: Search by license key, domain, status, or product
|
- **Search & Filtering**: Search by license key, domain, status, or product
|
||||||
- **Live Search**: AJAX-powered instant search results
|
- **Live Search**: AJAX-powered instant search results
|
||||||
- **Inline Editing**: Edit license status, expiry, and domain directly in the list
|
- **Inline Editing**: Edit license status, expiry, and domain directly in the list
|
||||||
@@ -38,7 +42,10 @@ WC Licensed Product adds a new product type "Licensed Product" to WooCommerce, e
|
|||||||
- **CSV Export/Import**: Export and import licenses via CSV
|
- **CSV Export/Import**: Export and import licenses via CSV
|
||||||
- **Order Integration**: View and manage licenses directly from order pages
|
- **Order Integration**: View and manage licenses directly from order pages
|
||||||
- **Expiration Warnings**: Automatic email notifications before license expiration
|
- **Expiration Warnings**: Automatic email notifications before license expiration
|
||||||
|
- **Auto-Expire**: Daily cron job automatically expires licenses past their expiration date
|
||||||
|
- **License Testing**: Test licenses against the API directly from admin interface
|
||||||
- **Version Management**: Manage multiple versions per product with file attachments
|
- **Version Management**: Manage multiple versions per product with file attachments
|
||||||
|
- **SHA256 Checksums**: File integrity verification with SHA256 hash display
|
||||||
- **Global Settings**: Default license settings via WooCommerce settings tab
|
- **Global Settings**: Default license settings via WooCommerce settings tab
|
||||||
- **WooCommerce HPOS**: Compatible with High-Performance Order Storage
|
- **WooCommerce HPOS**: Compatible with High-Performance Order Storage
|
||||||
|
|
||||||
@@ -103,6 +110,40 @@ When a customer purchases a licensed product, they must enter the domain where t
|
|||||||
3. Upload a CSV file (supports exported format or simplified format)
|
3. Upload a CSV file (supports exported format or simplified format)
|
||||||
4. Choose options: skip header row, update existing licenses
|
4. Choose options: skip header row, update existing licenses
|
||||||
|
|
||||||
|
## Security
|
||||||
|
|
||||||
|
The plugin implements several security best practices:
|
||||||
|
|
||||||
|
- **Input Sanitization**: All user inputs are sanitized using WordPress functions
|
||||||
|
- **Output Escaping**: All output is escaped to prevent XSS attacks
|
||||||
|
- **CSRF Protection**: Nonce verification on all forms and AJAX requests
|
||||||
|
- **SQL Injection Prevention**: All database queries use prepared statements
|
||||||
|
- **Capability Checks**: Admin functions require `manage_woocommerce` capability
|
||||||
|
- **Secure Downloads**: File downloads use hash-verified URLs with user authentication
|
||||||
|
- **Response Signing**: Optional HMAC-SHA256 signatures for API tamper protection
|
||||||
|
|
||||||
|
### Trusted Proxy Configuration
|
||||||
|
|
||||||
|
If your server is behind a load balancer, reverse proxy, or CDN (like Cloudflare), you need to configure trusted proxies for accurate rate limiting. Without this, the rate limiter uses the direct connection IP which may be your proxy's IP.
|
||||||
|
|
||||||
|
**Configuration (wp-config.php):**
|
||||||
|
|
||||||
|
```php
|
||||||
|
// For Cloudflare (includes all Cloudflare IP ranges)
|
||||||
|
define('WC_LICENSE_TRUSTED_PROXIES', 'CLOUDFLARE');
|
||||||
|
|
||||||
|
// For specific proxy IPs
|
||||||
|
define('WC_LICENSE_TRUSTED_PROXIES', '10.0.0.1,10.0.0.2');
|
||||||
|
|
||||||
|
// For CIDR ranges
|
||||||
|
define('WC_LICENSE_TRUSTED_PROXIES', '10.0.0.0/8,192.168.1.0/24');
|
||||||
|
|
||||||
|
// Combine multiple methods
|
||||||
|
define('WC_LICENSE_TRUSTED_PROXIES', 'CLOUDFLARE,10.0.0.1');
|
||||||
|
```
|
||||||
|
|
||||||
|
**Note**: Only configure trusted proxies if you actually use them. Without this configuration, rate limiting is more secure against IP spoofing attacks.
|
||||||
|
|
||||||
## REST API
|
## REST API
|
||||||
|
|
||||||
Full API documentation available in `openapi.json` (OpenAPI 3.1 specification).
|
Full API documentation available in `openapi.json` (OpenAPI 3.1 specification).
|
||||||
@@ -117,6 +158,12 @@ When the server is configured with a shared secret, all API responses include cr
|
|||||||
define('WC_LICENSE_SERVER_SECRET', 'your-secure-random-string-min-32-chars');
|
define('WC_LICENSE_SERVER_SECRET', 'your-secure-random-string-min-32-chars');
|
||||||
```
|
```
|
||||||
|
|
||||||
|
Generate a secure secret using:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
openssl rand -hex 32
|
||||||
|
```
|
||||||
|
|
||||||
**Response Headers:**
|
**Response Headers:**
|
||||||
|
|
||||||
| Header | Description |
|
| Header | Description |
|
||||||
@@ -256,11 +303,12 @@ Content-Type: application/json
|
|||||||
|
|
||||||
## Email Notifications
|
## Email Notifications
|
||||||
|
|
||||||
The plugin sends automatic email notifications:
|
The plugin sends automatic email notifications (configurable via WooCommerce > Settings > Emails):
|
||||||
|
|
||||||
- **Order Completion**: License keys included in order confirmation emails
|
- **Order Completion**: License keys included in order confirmation emails
|
||||||
- **Expiration Warning (7 days)**: Reminder sent 7 days before expiration
|
- **Expiration Warning (7 days)**: Reminder sent 7 days before expiration
|
||||||
- **Expiration Warning (1 day)**: Urgent reminder sent 1 day before expiration
|
- **Expiration Warning (1 day)**: Urgent reminder sent 1 day before expiration
|
||||||
|
- **License Expired**: Notification when a license auto-expires
|
||||||
|
|
||||||
## Changelog
|
## Changelog
|
||||||
|
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: WC Licensed Product 0.3.1\n"
|
"Project-Id-Version: WC Licensed Product 0.3.1\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2026-01-23 16:05+0100\n"
|
"POT-Creation-Date: 2026-01-23 21:09+0100\n"
|
||||||
"PO-Revision-Date: 2026-01-22T17:15:00+00:00\n"
|
"PO-Revision-Date: 2026-01-22T17:15:00+00:00\n"
|
||||||
"Last-Translator: Marco Graetsch <magdev3.0@gmail.com>\n"
|
"Last-Translator: Marco Graetsch <magdev3.0@gmail.com>\n"
|
||||||
"Language-Team: German (Switzerland) <de_CH@li.org>\n"
|
"Language-Team: German (Switzerland) <de_CH@li.org>\n"
|
||||||
@@ -48,15 +48,15 @@ msgstr "beispiel.ch"
|
|||||||
|
|
||||||
#: src/Admin/OrderLicenseController.php:118
|
#: src/Admin/OrderLicenseController.php:118
|
||||||
#: src/Admin/OrderLicenseController.php:182 src/Admin/AdminController.php:150
|
#: src/Admin/OrderLicenseController.php:182 src/Admin/AdminController.php:150
|
||||||
#: src/Admin/AdminController.php:1329 src/Admin/AdminController.php:1349
|
#: src/Admin/AdminController.php:1340 src/Admin/AdminController.php:1360
|
||||||
#: src/Admin/AdminController.php:1370
|
#: src/Admin/AdminController.php:1381
|
||||||
msgid "Save"
|
msgid "Save"
|
||||||
msgstr "Speichern"
|
msgstr "Speichern"
|
||||||
|
|
||||||
#: src/Admin/OrderLicenseController.php:127
|
#: src/Admin/OrderLicenseController.php:127
|
||||||
#: src/Admin/OrderLicenseController.php:222 src/Admin/AdminController.php:76
|
#: src/Admin/OrderLicenseController.php:222 src/Admin/AdminController.php:76
|
||||||
#: src/Admin/AdminController.php:77 src/Admin/AdminController.php:90
|
#: src/Admin/AdminController.php:77 src/Admin/AdminController.php:90
|
||||||
#: src/Admin/AdminController.php:1189 src/Frontend/AccountController.php:90
|
#: src/Admin/AdminController.php:1200 src/Frontend/AccountController.php:90
|
||||||
msgid "Licenses"
|
msgid "Licenses"
|
||||||
msgstr "Lizenzen"
|
msgstr "Lizenzen"
|
||||||
|
|
||||||
@@ -80,41 +80,41 @@ msgstr ""
|
|||||||
"markiert wird."
|
"markiert wird."
|
||||||
|
|
||||||
#: src/Admin/OrderLicenseController.php:144
|
#: src/Admin/OrderLicenseController.php:144
|
||||||
#: src/Admin/SettingsController.php:142 src/Admin/AdminController.php:1280
|
#: src/Admin/SettingsController.php:142 src/Admin/AdminController.php:1291
|
||||||
#: src/Admin/AdminController.php:1431 src/Admin/AdminController.php:1480
|
#: src/Admin/AdminController.php:1442 src/Admin/AdminController.php:1491
|
||||||
#: src/Email/LicenseEmailController.php:269
|
#: src/Email/LicenseEmailController.php:269
|
||||||
msgid "License Key"
|
msgid "License Key"
|
||||||
msgstr "Lizenzschlüssel"
|
msgstr "Lizenzschlüssel"
|
||||||
|
|
||||||
#: src/Admin/OrderLicenseController.php:145 src/Admin/AdminController.php:1281
|
#: src/Admin/OrderLicenseController.php:145 src/Admin/AdminController.php:1292
|
||||||
#: src/Admin/AdminController.php:1432 src/Admin/AdminController.php:1597
|
#: src/Admin/AdminController.php:1443 src/Admin/AdminController.php:1608
|
||||||
#: src/Email/LicenseEmailController.php:268
|
#: src/Email/LicenseEmailController.php:268
|
||||||
msgid "Product"
|
msgid "Product"
|
||||||
msgstr "Produkt"
|
msgstr "Produkt"
|
||||||
|
|
||||||
#: src/Admin/OrderLicenseController.php:146 src/Admin/AdminController.php:1283
|
#: src/Admin/OrderLicenseController.php:146 src/Admin/AdminController.php:1294
|
||||||
#: src/Admin/AdminController.php:1434 src/Admin/AdminController.php:1484
|
#: src/Admin/AdminController.php:1445 src/Admin/AdminController.php:1495
|
||||||
msgid "Domain"
|
msgid "Domain"
|
||||||
msgstr "Domain"
|
msgstr "Domain"
|
||||||
|
|
||||||
#: src/Admin/OrderLicenseController.php:147 src/Admin/AdminController.php:1284
|
#: src/Admin/OrderLicenseController.php:147 src/Admin/AdminController.php:1295
|
||||||
#: src/Admin/AdminController.php:1435 src/Admin/VersionAdminController.php:140
|
#: src/Admin/AdminController.php:1446 src/Admin/VersionAdminController.php:140
|
||||||
msgid "Status"
|
msgid "Status"
|
||||||
msgstr "Status"
|
msgstr "Status"
|
||||||
|
|
||||||
#: src/Admin/OrderLicenseController.php:148 src/Admin/AdminController.php:1286
|
#: src/Admin/OrderLicenseController.php:148 src/Admin/AdminController.php:1297
|
||||||
#: src/Admin/AdminController.php:1437 src/Admin/AdminController.php:1600
|
#: src/Admin/AdminController.php:1448 src/Admin/AdminController.php:1611
|
||||||
#: src/Admin/AdminController.php:1602 src/Email/LicenseEmailController.php:270
|
#: src/Admin/AdminController.php:1613 src/Email/LicenseEmailController.php:270
|
||||||
msgid "Expires"
|
msgid "Expires"
|
||||||
msgstr "Läuft ab"
|
msgstr "Läuft ab"
|
||||||
|
|
||||||
#: src/Admin/OrderLicenseController.php:149 src/Admin/AdminController.php:1287
|
#: src/Admin/OrderLicenseController.php:149 src/Admin/AdminController.php:1298
|
||||||
#: src/Admin/AdminController.php:1438 src/Admin/VersionAdminController.php:142
|
#: src/Admin/AdminController.php:1449 src/Admin/VersionAdminController.php:142
|
||||||
msgid "Actions"
|
msgid "Actions"
|
||||||
msgstr "Aktionen"
|
msgstr "Aktionen"
|
||||||
|
|
||||||
#: src/Admin/OrderLicenseController.php:168 src/Admin/AdminController.php:195
|
#: src/Admin/OrderLicenseController.php:168 src/Admin/AdminController.php:195
|
||||||
#: src/Admin/AdminController.php:1014
|
#: src/Admin/AdminController.php:1019
|
||||||
msgid "Unknown"
|
msgid "Unknown"
|
||||||
msgstr "Unbekannt"
|
msgstr "Unbekannt"
|
||||||
|
|
||||||
@@ -123,16 +123,16 @@ msgid "Edit domain"
|
|||||||
msgstr "Domain bearbeiten"
|
msgstr "Domain bearbeiten"
|
||||||
|
|
||||||
#: src/Admin/OrderLicenseController.php:185 src/Admin/AdminController.php:149
|
#: src/Admin/OrderLicenseController.php:185 src/Admin/AdminController.php:149
|
||||||
#: src/Admin/AdminController.php:1330 src/Admin/AdminController.php:1350
|
#: src/Admin/AdminController.php:1341 src/Admin/AdminController.php:1361
|
||||||
#: src/Admin/AdminController.php:1371 src/Admin/AdminController.php:1526
|
#: src/Admin/AdminController.php:1382 src/Admin/AdminController.php:1537
|
||||||
#: src/Frontend/AccountController.php:271
|
#: src/Frontend/AccountController.php:271
|
||||||
msgid "Cancel"
|
msgid "Cancel"
|
||||||
msgstr "Abbrechen"
|
msgstr "Abbrechen"
|
||||||
|
|
||||||
#: src/Admin/OrderLicenseController.php:201
|
#: src/Admin/OrderLicenseController.php:201
|
||||||
#: src/Admin/SettingsController.php:192 src/Admin/AdminController.php:151
|
#: src/Admin/SettingsController.php:192 src/Admin/AdminController.php:151
|
||||||
#: src/Admin/AdminController.php:266 src/Admin/AdminController.php:1362
|
#: src/Admin/AdminController.php:266 src/Admin/AdminController.php:1373
|
||||||
#: src/Admin/AdminController.php:1602 src/Product/LicensedProductType.php:110
|
#: src/Admin/AdminController.php:1613 src/Product/LicensedProductType.php:110
|
||||||
#: src/Product/LicensedProductType.php:158
|
#: src/Product/LicensedProductType.php:158
|
||||||
msgid "Lifetime"
|
msgid "Lifetime"
|
||||||
msgstr "Lebenslang"
|
msgstr "Lebenslang"
|
||||||
@@ -141,6 +141,7 @@ msgstr "Lebenslang"
|
|||||||
msgid "View in Licenses"
|
msgid "View in Licenses"
|
||||||
msgstr "In Lizenzen anzeigen"
|
msgstr "In Lizenzen anzeigen"
|
||||||
|
|
||||||
|
#. translators: %s: Link to licenses page
|
||||||
#: src/Admin/OrderLicenseController.php:221
|
#: src/Admin/OrderLicenseController.php:221
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "For more actions (revoke, extend, delete), go to the %s page."
|
msgid "For more actions (revoke, extend, delete), go to the %s page."
|
||||||
@@ -309,6 +310,7 @@ msgstr ""
|
|||||||
msgid "Expiration Warning Schedule"
|
msgid "Expiration Warning Schedule"
|
||||||
msgstr "Ablaufwarnung Zeitplan"
|
msgstr "Ablaufwarnung Zeitplan"
|
||||||
|
|
||||||
|
#. translators: %s: URL to WooCommerce email settings
|
||||||
#: src/Admin/SettingsController.php:223
|
#: src/Admin/SettingsController.php:223
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid ""
|
msgid ""
|
||||||
@@ -369,8 +371,9 @@ msgstr "Anfrage fehlgeschlagen."
|
|||||||
#: src/Admin/SettingsController.php:454 src/Admin/AdminController.php:455
|
#: src/Admin/SettingsController.php:454 src/Admin/AdminController.php:455
|
||||||
#: src/Admin/AdminController.php:475 src/Admin/AdminController.php:493
|
#: src/Admin/AdminController.php:475 src/Admin/AdminController.php:493
|
||||||
#: src/Admin/AdminController.php:511 src/Admin/AdminController.php:531
|
#: src/Admin/AdminController.php:511 src/Admin/AdminController.php:531
|
||||||
#: src/Admin/AdminController.php:549 src/Admin/AdminController.php:616
|
#: src/Admin/AdminController.php:549 src/Admin/AdminController.php:577
|
||||||
#: src/Admin/AdminController.php:806 src/Frontend/AccountController.php:326
|
#: src/Admin/AdminController.php:621 src/Admin/AdminController.php:811
|
||||||
|
#: src/Frontend/AccountController.php:326
|
||||||
msgid "Security check failed."
|
msgid "Security check failed."
|
||||||
msgstr "Sicherheitsüberprüfung fehlgeschlagen."
|
msgstr "Sicherheitsüberprüfung fehlgeschlagen."
|
||||||
|
|
||||||
@@ -417,8 +420,8 @@ msgstr ""
|
|||||||
"Sind Sie sicher, dass Sie diese Lizenz widerrufen möchten? Diese Aktion kann "
|
"Sind Sie sicher, dass Sie diese Lizenz widerrufen möchten? Diese Aktion kann "
|
||||||
"nicht rückgängig gemacht werden."
|
"nicht rückgängig gemacht werden."
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:148 src/Admin/AdminController.php:1324
|
#: src/Admin/AdminController.php:148 src/Admin/AdminController.php:1335
|
||||||
#: src/Admin/AdminController.php:1339 src/Admin/AdminController.php:1365
|
#: src/Admin/AdminController.php:1350 src/Admin/AdminController.php:1376
|
||||||
msgid "Edit"
|
msgid "Edit"
|
||||||
msgstr "Bearbeiten"
|
msgstr "Bearbeiten"
|
||||||
|
|
||||||
@@ -430,34 +433,34 @@ msgstr "Kopiert!"
|
|||||||
msgid "Copy failed"
|
msgid "Copy failed"
|
||||||
msgstr "Kopieren fehlgeschlagen"
|
msgstr "Kopieren fehlgeschlagen"
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:156 src/Admin/AdminController.php:902
|
#: src/Admin/AdminController.php:156 src/Admin/AdminController.php:907
|
||||||
#: src/Admin/AdminController.php:1221 src/Admin/AdminController.php:1344
|
#: src/Admin/AdminController.php:1232 src/Admin/AdminController.php:1355
|
||||||
#: src/Admin/VersionAdminController.php:182
|
#: src/Admin/VersionAdminController.php:182
|
||||||
#: src/Admin/VersionAdminController.php:413
|
#: src/Admin/VersionAdminController.php:413
|
||||||
#: src/Admin/DashboardWidgetController.php:151
|
#: src/Admin/DashboardWidgetController.php:151
|
||||||
msgid "Active"
|
msgid "Active"
|
||||||
msgstr "Aktiv"
|
msgstr "Aktiv"
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:157 src/Admin/AdminController.php:909
|
#: src/Admin/AdminController.php:157 src/Admin/AdminController.php:914
|
||||||
#: src/Admin/AdminController.php:1222 src/Admin/AdminController.php:1345
|
#: src/Admin/AdminController.php:1233 src/Admin/AdminController.php:1356
|
||||||
#: src/Admin/VersionAdminController.php:182
|
#: src/Admin/VersionAdminController.php:182
|
||||||
#: src/Admin/VersionAdminController.php:413
|
#: src/Admin/VersionAdminController.php:413
|
||||||
msgid "Inactive"
|
msgid "Inactive"
|
||||||
msgstr "Inaktiv"
|
msgstr "Inaktiv"
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:158 src/Admin/AdminController.php:916
|
#: src/Admin/AdminController.php:158 src/Admin/AdminController.php:921
|
||||||
#: src/Admin/AdminController.php:1223 src/Admin/AdminController.php:1346
|
#: src/Admin/AdminController.php:1234 src/Admin/AdminController.php:1357
|
||||||
#: src/Admin/DashboardWidgetController.php:159
|
#: src/Admin/DashboardWidgetController.php:159
|
||||||
#: src/Email/LicenseExpiredEmail.php:210 src/Email/LicenseExpiredEmail.php:259
|
#: src/Email/LicenseExpiredEmail.php:210 src/Email/LicenseExpiredEmail.php:259
|
||||||
msgid "Expired"
|
msgid "Expired"
|
||||||
msgstr "Abgelaufen"
|
msgstr "Abgelaufen"
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:159 src/Admin/AdminController.php:923
|
#: src/Admin/AdminController.php:159 src/Admin/AdminController.php:928
|
||||||
#: src/Admin/AdminController.php:1224 src/Admin/AdminController.php:1347
|
#: src/Admin/AdminController.php:1235 src/Admin/AdminController.php:1358
|
||||||
msgid "Revoked"
|
msgid "Revoked"
|
||||||
msgstr "Widerrufen"
|
msgstr "Widerrufen"
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:196 src/Admin/AdminController.php:1018
|
#: src/Admin/AdminController.php:196 src/Admin/AdminController.php:1023
|
||||||
msgid "Guest"
|
msgid "Guest"
|
||||||
msgstr "Gast"
|
msgstr "Gast"
|
||||||
|
|
||||||
@@ -497,7 +500,7 @@ msgstr "Domain erfolgreich aktualisiert."
|
|||||||
msgid "Failed to update domain."
|
msgid "Failed to update domain."
|
||||||
msgstr "Domain konnte nicht aktualisiert werden."
|
msgstr "Domain konnte nicht aktualisiert werden."
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:352 src/Admin/AdminController.php:1083
|
#: src/Admin/AdminController.php:352 src/Admin/AdminController.php:1094
|
||||||
msgid "License revoked successfully."
|
msgid "License revoked successfully."
|
||||||
msgstr "Lizenz erfolgreich widerrufen."
|
msgstr "Lizenz erfolgreich widerrufen."
|
||||||
|
|
||||||
@@ -509,407 +512,416 @@ msgstr "Lizenz konnte nicht widerrufen werden."
|
|||||||
msgid "License key and domain are required."
|
msgid "License key and domain are required."
|
||||||
msgstr "Lizenzschlüssel und Domain sind erforderlich."
|
msgstr "Lizenzschlüssel und Domain sind erforderlich."
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:576
|
#: src/Admin/AdminController.php:581
|
||||||
msgid "You do not have permission to export licenses."
|
msgid "You do not have permission to export licenses."
|
||||||
msgstr "Sie haben keine Berechtigung, Lizenzen zu exportieren."
|
msgstr "Sie haben keine Berechtigung, Lizenzen zu exportieren."
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:620
|
#: src/Admin/AdminController.php:625
|
||||||
msgid "You do not have permission to import licenses."
|
msgid "You do not have permission to import licenses."
|
||||||
msgstr "Sie haben keine Berechtigung, Lizenzen zu importieren."
|
msgstr "Sie haben keine Berechtigung, Lizenzen zu importieren."
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:740
|
#: src/Admin/AdminController.php:745
|
||||||
msgid "Row missing domain"
|
msgid "Row missing domain"
|
||||||
msgstr "Zeile ohne Domain"
|
msgstr "Zeile ohne Domain"
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:744
|
#: src/Admin/AdminController.php:749
|
||||||
msgid "Row missing valid product ID"
|
msgid "Row missing valid product ID"
|
||||||
msgstr "Zeile ohne gültige Produkt-ID"
|
msgstr "Zeile ohne gültige Produkt-ID"
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:797
|
#: src/Admin/AdminController.php:802
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "Failed to import license for domain %s"
|
msgid "Failed to import license for domain %s"
|
||||||
msgstr "Import der Lizenz für Domain %s fehlgeschlagen"
|
msgstr "Import der Lizenz für Domain %s fehlgeschlagen"
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:887
|
#: src/Admin/AdminController.php:892
|
||||||
msgid "License Dashboard"
|
msgid "License Dashboard"
|
||||||
msgstr "Lizenz-Dashboard"
|
msgstr "Lizenz-Dashboard"
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:895
|
#: src/Admin/AdminController.php:900
|
||||||
#: src/Admin/DashboardWidgetController.php:147
|
#: src/Admin/DashboardWidgetController.php:147
|
||||||
msgid "Total Licenses"
|
msgid "Total Licenses"
|
||||||
msgstr "Lizenzen insgesamt"
|
msgstr "Lizenzen insgesamt"
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:932
|
#: src/Admin/AdminController.php:937
|
||||||
msgid "Attention:"
|
msgid "Attention:"
|
||||||
msgstr "Achtung:"
|
msgstr "Achtung:"
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:937
|
#: src/Admin/AdminController.php:942
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "%d license is expiring within the next 30 days."
|
msgid "%d license is expiring within the next 30 days."
|
||||||
msgid_plural "%d licenses are expiring within the next 30 days."
|
msgid_plural "%d licenses are expiring within the next 30 days."
|
||||||
msgstr[0] "%d Lizenz läuft innerhalb der nächsten 30 Tage ab."
|
msgstr[0] "%d Lizenz läuft innerhalb der nächsten 30 Tage ab."
|
||||||
msgstr[1] "%d Lizenzen laufen innerhalb der nächsten 30 Tage ab."
|
msgstr[1] "%d Lizenzen laufen innerhalb der nächsten 30 Tage ab."
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:945
|
#: src/Admin/AdminController.php:950
|
||||||
msgid "View Licenses"
|
msgid "View Licenses"
|
||||||
msgstr "Lizenzen anzeigen"
|
msgstr "Lizenzen anzeigen"
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:951
|
#: src/Admin/AdminController.php:956
|
||||||
msgid "Quick Actions"
|
msgid "Quick Actions"
|
||||||
msgstr "Schnellaktionen"
|
msgstr "Schnellaktionen"
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:955
|
#: src/Admin/AdminController.php:960
|
||||||
msgid "Manage Licenses"
|
msgid "Manage Licenses"
|
||||||
msgstr "Lizenzen verwalten"
|
msgstr "Lizenzen verwalten"
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:959
|
#: src/Admin/AdminController.php:964
|
||||||
msgid "Export to CSV"
|
msgid "Export to CSV"
|
||||||
msgstr "Als CSV exportieren"
|
msgstr "Als CSV exportieren"
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:963 wc-licensed-product.php:137
|
#: src/Admin/AdminController.php:968 wc-licensed-product.php:137
|
||||||
msgid "Settings"
|
msgid "Settings"
|
||||||
msgstr "Einstellungen"
|
msgstr "Einstellungen"
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1077
|
#: src/Admin/AdminController.php:1088
|
||||||
msgid "License updated successfully."
|
msgid "License updated successfully."
|
||||||
msgstr "Lizenz erfolgreich aktualisiert."
|
msgstr "Lizenz erfolgreich aktualisiert."
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1080
|
#: src/Admin/AdminController.php:1091
|
||||||
msgid "License deleted successfully."
|
msgid "License deleted successfully."
|
||||||
msgstr "Lizenz erfolgreich gelöscht."
|
msgstr "Lizenz erfolgreich gelöscht."
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1086
|
#: src/Admin/AdminController.php:1097
|
||||||
msgid "License extended successfully."
|
msgid "License extended successfully."
|
||||||
msgstr "Lizenz erfolgreich verlängert."
|
msgstr "Lizenz erfolgreich verlängert."
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1089
|
#: src/Admin/AdminController.php:1100
|
||||||
msgid "License set to lifetime successfully."
|
msgid "License set to lifetime successfully."
|
||||||
msgstr "Lizenz erfolgreich auf lebenslang gesetzt."
|
msgstr "Lizenz erfolgreich auf lebenslang gesetzt."
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1095
|
#. translators: %d: number of licenses
|
||||||
|
#: src/Admin/AdminController.php:1106
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "%d license activated."
|
msgid "%d license activated."
|
||||||
msgid_plural "%d licenses activated."
|
msgid_plural "%d licenses activated."
|
||||||
msgstr[0] "%d Lizenz aktiviert."
|
msgstr[0] "%d Lizenz aktiviert."
|
||||||
msgstr[1] "%d Lizenzen aktiviert."
|
msgstr[1] "%d Lizenzen aktiviert."
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1103
|
#. translators: %d: number of licenses
|
||||||
|
#: src/Admin/AdminController.php:1114
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "%d license deactivated."
|
msgid "%d license deactivated."
|
||||||
msgid_plural "%d licenses deactivated."
|
msgid_plural "%d licenses deactivated."
|
||||||
msgstr[0] "%d Lizenz deaktiviert."
|
msgstr[0] "%d Lizenz deaktiviert."
|
||||||
msgstr[1] "%d Lizenzen deaktiviert."
|
msgstr[1] "%d Lizenzen deaktiviert."
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1111
|
#. translators: %d: number of licenses
|
||||||
|
#: src/Admin/AdminController.php:1122
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "%d license revoked."
|
msgid "%d license revoked."
|
||||||
msgid_plural "%d licenses revoked."
|
msgid_plural "%d licenses revoked."
|
||||||
msgstr[0] "%d Lizenz widerrufen."
|
msgstr[0] "%d Lizenz widerrufen."
|
||||||
msgstr[1] "%d Lizenzen widerrufen."
|
msgstr[1] "%d Lizenzen widerrufen."
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1119
|
#. translators: %d: number of licenses
|
||||||
|
#: src/Admin/AdminController.php:1130
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "%d license deleted."
|
msgid "%d license deleted."
|
||||||
msgid_plural "%d licenses deleted."
|
msgid_plural "%d licenses deleted."
|
||||||
msgstr[0] "%d Lizenz gelöscht."
|
msgstr[0] "%d Lizenz gelöscht."
|
||||||
msgstr[1] "%d Lizenzen gelöscht."
|
msgstr[1] "%d Lizenzen gelöscht."
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1127
|
#. translators: %d: number of licenses
|
||||||
|
#: src/Admin/AdminController.php:1138
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "%d license extended."
|
msgid "%d license extended."
|
||||||
msgid_plural "%d licenses extended."
|
msgid_plural "%d licenses extended."
|
||||||
msgstr[0] "%d Lizenz verlängert."
|
msgstr[0] "%d Lizenz verlängert."
|
||||||
msgstr[1] "%d Lizenzen verlängert."
|
msgstr[1] "%d Lizenzen verlängert."
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1132
|
#: src/Admin/AdminController.php:1143
|
||||||
msgid "License transferred to new domain successfully."
|
msgid "License transferred to new domain successfully."
|
||||||
msgstr "Lizenz erfolgreich auf neue Domain übertragen."
|
msgstr "Lizenz erfolgreich auf neue Domain übertragen."
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1135
|
#: src/Admin/AdminController.php:1146
|
||||||
msgid "Failed to transfer license. The license may be revoked or invalid."
|
msgid "Failed to transfer license. The license may be revoked or invalid."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Lizenzübertragung fehlgeschlagen. Die Lizenz könnte widerrufen oder ungültig "
|
"Lizenzübertragung fehlgeschlagen. Die Lizenz könnte widerrufen oder ungültig "
|
||||||
"sein."
|
"sein."
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1138
|
#: src/Admin/AdminController.php:1149
|
||||||
msgid "No licenses to export."
|
msgid "No licenses to export."
|
||||||
msgstr "Keine Lizenzen zum Exportieren."
|
msgstr "Keine Lizenzen zum Exportieren."
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1148
|
#. translators: %d: number of licenses imported
|
||||||
|
#: src/Admin/AdminController.php:1159
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "%d license imported."
|
msgid "%d license imported."
|
||||||
msgid_plural "%d licenses imported."
|
msgid_plural "%d licenses imported."
|
||||||
msgstr[0] "%d Lizenz importiert."
|
msgstr[0] "%d Lizenz importiert."
|
||||||
msgstr[1] "%d Lizenzen importiert."
|
msgstr[1] "%d Lizenzen importiert."
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1155
|
#. translators: %d: number of licenses updated
|
||||||
|
#: src/Admin/AdminController.php:1166
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "%d updated."
|
msgid "%d updated."
|
||||||
msgid_plural "%d updated."
|
msgid_plural "%d updated."
|
||||||
msgstr[0] "%d aktualisiert."
|
msgstr[0] "%d aktualisiert."
|
||||||
msgstr[1] "%d aktualisiert."
|
msgstr[1] "%d aktualisiert."
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1163
|
#. translators: %d: number of licenses skipped
|
||||||
|
#: src/Admin/AdminController.php:1174
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "%d skipped."
|
msgid "%d skipped."
|
||||||
msgid_plural "%d skipped."
|
msgid_plural "%d skipped."
|
||||||
msgstr[0] "%d übersprungen."
|
msgstr[0] "%d übersprungen."
|
||||||
msgstr[1] "%d übersprungen."
|
msgstr[1] "%d übersprungen."
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1171
|
#. translators: %d: number of errors
|
||||||
|
#: src/Admin/AdminController.php:1182
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "%d error."
|
msgid "%d error."
|
||||||
msgid_plural "%d errors."
|
msgid_plural "%d errors."
|
||||||
msgstr[0] "%d Fehler."
|
msgstr[0] "%d Fehler."
|
||||||
msgstr[1] "%d Fehler."
|
msgstr[1] "%d Fehler."
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1192
|
#: src/Admin/AdminController.php:1203
|
||||||
msgid "Export CSV"
|
msgid "Export CSV"
|
||||||
msgstr "CSV exportieren"
|
msgstr "CSV exportieren"
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1196
|
#: src/Admin/AdminController.php:1207
|
||||||
msgid "Import CSV"
|
msgid "Import CSV"
|
||||||
msgstr "CSV importieren"
|
msgstr "CSV importieren"
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1211
|
#: src/Admin/AdminController.php:1222
|
||||||
msgid "Search Licenses"
|
msgid "Search Licenses"
|
||||||
msgstr "Lizenzen durchsuchen"
|
msgstr "Lizenzen durchsuchen"
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1213
|
#: src/Admin/AdminController.php:1224
|
||||||
msgid "Search license key or domain..."
|
msgid "Search license key or domain..."
|
||||||
msgstr "Lizenzschlüssel oder Domain suchen..."
|
msgstr "Lizenzschlüssel oder Domain suchen..."
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1214
|
#: src/Admin/AdminController.php:1225
|
||||||
msgid "Search"
|
msgid "Search"
|
||||||
msgstr "Suchen"
|
msgstr "Suchen"
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1220
|
#: src/Admin/AdminController.php:1231
|
||||||
msgid "All Statuses"
|
msgid "All Statuses"
|
||||||
msgstr "Alle Status"
|
msgstr "Alle Status"
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1228
|
#: src/Admin/AdminController.php:1239
|
||||||
msgid "All Products"
|
msgid "All Products"
|
||||||
msgstr "Alle Produkte"
|
msgstr "Alle Produkte"
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1234
|
#: src/Admin/AdminController.php:1245
|
||||||
msgid "Filter"
|
msgid "Filter"
|
||||||
msgstr "Filtern"
|
msgstr "Filtern"
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1237
|
#: src/Admin/AdminController.php:1248
|
||||||
msgid "Clear"
|
msgid "Clear"
|
||||||
msgstr "Zurücksetzen"
|
msgstr "Zurücksetzen"
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1242
|
#: src/Admin/AdminController.php:1253
|
||||||
msgid "item"
|
msgid "item"
|
||||||
msgstr "Eintrag"
|
msgstr "Eintrag"
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1242
|
#: src/Admin/AdminController.php:1253
|
||||||
msgid "items"
|
msgid "items"
|
||||||
msgstr "Einträge"
|
msgstr "Einträge"
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1248
|
#: src/Admin/AdminController.php:1259
|
||||||
msgid "Showing"
|
msgid "Showing"
|
||||||
msgstr "Anzeige"
|
msgstr "Anzeige"
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1248
|
#: src/Admin/AdminController.php:1259
|
||||||
msgid "license"
|
msgid "license"
|
||||||
msgstr "Lizenz"
|
msgstr "Lizenz"
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1248
|
#: src/Admin/AdminController.php:1259
|
||||||
msgid "licenses"
|
msgid "licenses"
|
||||||
msgstr "Lizenzen"
|
msgstr "Lizenzen"
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1250
|
#: src/Admin/AdminController.php:1261
|
||||||
msgid "filtered"
|
msgid "filtered"
|
||||||
msgstr "gefiltert"
|
msgstr "gefiltert"
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1252
|
#: src/Admin/AdminController.php:1263
|
||||||
msgid "View Dashboard"
|
msgid "View Dashboard"
|
||||||
msgstr "Dashboard anzeigen"
|
msgstr "Dashboard anzeigen"
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1261 src/Admin/AdminController.php:1446
|
#: src/Admin/AdminController.php:1272 src/Admin/AdminController.php:1457
|
||||||
msgid "Bulk Actions"
|
msgid "Bulk Actions"
|
||||||
msgstr "Massenaktionen"
|
msgstr "Massenaktionen"
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1262 src/Admin/AdminController.php:1447
|
#: src/Admin/AdminController.php:1273 src/Admin/AdminController.php:1458
|
||||||
#: src/Admin/VersionAdminController.php:188
|
#: src/Admin/VersionAdminController.php:188
|
||||||
#: src/Admin/VersionAdminController.php:419
|
#: src/Admin/VersionAdminController.php:419
|
||||||
msgid "Activate"
|
msgid "Activate"
|
||||||
msgstr "Aktivieren"
|
msgstr "Aktivieren"
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1263 src/Admin/AdminController.php:1448
|
#: src/Admin/AdminController.php:1274 src/Admin/AdminController.php:1459
|
||||||
#: src/Admin/VersionAdminController.php:188
|
#: src/Admin/VersionAdminController.php:188
|
||||||
#: src/Admin/VersionAdminController.php:419
|
#: src/Admin/VersionAdminController.php:419
|
||||||
msgid "Deactivate"
|
msgid "Deactivate"
|
||||||
msgstr "Deaktivieren"
|
msgstr "Deaktivieren"
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1264 src/Admin/AdminController.php:1408
|
#: src/Admin/AdminController.php:1275 src/Admin/AdminController.php:1419
|
||||||
#: src/Admin/AdminController.php:1449
|
#: src/Admin/AdminController.php:1460
|
||||||
msgid "Revoke"
|
msgid "Revoke"
|
||||||
msgstr "Widerrufen"
|
msgstr "Widerrufen"
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1265 src/Admin/AdminController.php:1450
|
#: src/Admin/AdminController.php:1276 src/Admin/AdminController.php:1461
|
||||||
msgid "Extend 30 days"
|
msgid "Extend 30 days"
|
||||||
msgstr "30 Tage verlängern"
|
msgstr "30 Tage verlängern"
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1266 src/Admin/AdminController.php:1451
|
#: src/Admin/AdminController.php:1277 src/Admin/AdminController.php:1462
|
||||||
msgid "Extend 90 days"
|
msgid "Extend 90 days"
|
||||||
msgstr "90 Tage verlängern"
|
msgstr "90 Tage verlängern"
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1267 src/Admin/AdminController.php:1452
|
#: src/Admin/AdminController.php:1278 src/Admin/AdminController.php:1463
|
||||||
msgid "Extend 1 year"
|
msgid "Extend 1 year"
|
||||||
msgstr "1 Jahr verlängern"
|
msgstr "1 Jahr verlängern"
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1268 src/Admin/AdminController.php:1417
|
#: src/Admin/AdminController.php:1279 src/Admin/AdminController.php:1428
|
||||||
#: src/Admin/AdminController.php:1453 src/Admin/VersionAdminController.php:191
|
#: src/Admin/AdminController.php:1464 src/Admin/VersionAdminController.php:191
|
||||||
#: src/Admin/VersionAdminController.php:422
|
#: src/Admin/VersionAdminController.php:422
|
||||||
msgid "Delete"
|
msgid "Delete"
|
||||||
msgstr "Löschen"
|
msgstr "Löschen"
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1270 src/Admin/AdminController.php:1455
|
#: src/Admin/AdminController.php:1281 src/Admin/AdminController.php:1466
|
||||||
msgid "Apply"
|
msgid "Apply"
|
||||||
msgstr "Anwenden"
|
msgstr "Anwenden"
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1282 src/Admin/AdminController.php:1433
|
#: src/Admin/AdminController.php:1293 src/Admin/AdminController.php:1444
|
||||||
#: src/Email/LicenseExpirationEmail.php:104
|
#: src/Email/LicenseExpirationEmail.php:104
|
||||||
#: src/Email/LicenseExpiredEmail.php:96
|
#: src/Email/LicenseExpiredEmail.php:96
|
||||||
msgid "Customer"
|
msgid "Customer"
|
||||||
msgstr "Kunde"
|
msgstr "Kunde"
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1285 src/Admin/AdminController.php:1436
|
#: src/Admin/AdminController.php:1296 src/Admin/AdminController.php:1447
|
||||||
msgid "Created"
|
msgid "Created"
|
||||||
msgstr "Erstellt"
|
msgstr "Erstellt"
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1293
|
#: src/Admin/AdminController.php:1304
|
||||||
msgid "No licenses found."
|
msgid "No licenses found."
|
||||||
msgstr "Keine Lizenzen gefunden."
|
msgstr "Keine Lizenzen gefunden."
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1303 src/Frontend/AccountController.php:194
|
#: src/Admin/AdminController.php:1314 src/Frontend/AccountController.php:194
|
||||||
msgid "Copy to clipboard"
|
msgid "Copy to clipboard"
|
||||||
msgstr "In Zwischenablage kopieren"
|
msgstr "In Zwischenablage kopieren"
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1369
|
#: src/Admin/AdminController.php:1380
|
||||||
msgid "Leave empty for lifetime"
|
msgid "Leave empty for lifetime"
|
||||||
msgstr "Leer lassen für lebenslang"
|
msgstr "Leer lassen für lebenslang"
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1372 src/Admin/AdminController.php:1401
|
#: src/Admin/AdminController.php:1383 src/Admin/AdminController.php:1412
|
||||||
msgid "Set to lifetime"
|
msgid "Set to lifetime"
|
||||||
msgstr "Auf lebenslang setzen"
|
msgstr "Auf lebenslang setzen"
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1382
|
#: src/Admin/AdminController.php:1393
|
||||||
msgid "Test license against API"
|
msgid "Test license against API"
|
||||||
msgstr "Lizenz gegen API testen"
|
msgstr "Lizenz gegen API testen"
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1382
|
#: src/Admin/AdminController.php:1393
|
||||||
msgid "Test"
|
msgid "Test"
|
||||||
msgstr "Testen"
|
msgstr "Testen"
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1389 src/Frontend/AccountController.php:207
|
#: src/Admin/AdminController.php:1400 src/Frontend/AccountController.php:207
|
||||||
msgid "Transfer to new domain"
|
msgid "Transfer to new domain"
|
||||||
msgstr "Auf neue Domain übertragen"
|
msgstr "Auf neue Domain übertragen"
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1389 src/Frontend/AccountController.php:209
|
#: src/Admin/AdminController.php:1400 src/Frontend/AccountController.php:209
|
||||||
msgid "Transfer"
|
msgid "Transfer"
|
||||||
msgstr "Übertragen"
|
msgstr "Übertragen"
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1395
|
#: src/Admin/AdminController.php:1406
|
||||||
msgid "Extend by 30 days"
|
msgid "Extend by 30 days"
|
||||||
msgstr "Um 30 Tage verlängern"
|
msgstr "Um 30 Tage verlängern"
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1407
|
#: src/Admin/AdminController.php:1418
|
||||||
msgid "Are you sure?"
|
msgid "Are you sure?"
|
||||||
msgstr "Sind Sie sicher?"
|
msgstr "Sind Sie sicher?"
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1416
|
#: src/Admin/AdminController.php:1427
|
||||||
msgid "Are you sure you want to delete this license?"
|
msgid "Are you sure you want to delete this license?"
|
||||||
msgstr "Sind Sie sicher, dass Sie diese Lizenz löschen möchten?"
|
msgstr "Sind Sie sicher, dass Sie diese Lizenz löschen möchten?"
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1476
|
#: src/Admin/AdminController.php:1487
|
||||||
msgid "License Validation Test"
|
msgid "License Validation Test"
|
||||||
msgstr "Lizenzvalidierungstest"
|
msgstr "Lizenzvalidierungstest"
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1491
|
#: src/Admin/AdminController.php:1502
|
||||||
msgid "Testing license..."
|
msgid "Testing license..."
|
||||||
msgstr "Lizenz wird geprüft..."
|
msgstr "Lizenz wird geprüft..."
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1497 src/Frontend/AccountController.php:249
|
#: src/Admin/AdminController.php:1508 src/Frontend/AccountController.php:249
|
||||||
msgid "Close"
|
msgid "Close"
|
||||||
msgstr "Schliessen"
|
msgstr "Schliessen"
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1506 src/Frontend/AccountController.php:250
|
#: src/Admin/AdminController.php:1517 src/Frontend/AccountController.php:250
|
||||||
msgid "Transfer License to New Domain"
|
msgid "Transfer License to New Domain"
|
||||||
msgstr "Lizenz auf neue Domain übertragen"
|
msgstr "Lizenz auf neue Domain übertragen"
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1513 src/Frontend/AccountController.php:255
|
#: src/Admin/AdminController.php:1524 src/Frontend/AccountController.php:255
|
||||||
msgid "Current Domain"
|
msgid "Current Domain"
|
||||||
msgstr "Aktuelle Domain"
|
msgstr "Aktuelle Domain"
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1517 src/Frontend/AccountController.php:260
|
#: src/Admin/AdminController.php:1528 src/Frontend/AccountController.php:260
|
||||||
msgid "New Domain"
|
msgid "New Domain"
|
||||||
msgstr "Neue Domain"
|
msgstr "Neue Domain"
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1520 src/Frontend/AccountController.php:264
|
#: src/Admin/AdminController.php:1531 src/Frontend/AccountController.php:264
|
||||||
msgid "Enter the new domain without http:// or www."
|
msgid "Enter the new domain without http:// or www."
|
||||||
msgstr "Geben Sie die neue Domain ohne http:// oder www ein."
|
msgstr "Geben Sie die neue Domain ohne http:// oder www ein."
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1525 src/Frontend/AccountController.php:269
|
#: src/Admin/AdminController.php:1536 src/Frontend/AccountController.php:269
|
||||||
msgid "Transfer License"
|
msgid "Transfer License"
|
||||||
msgstr "Lizenz übertragen"
|
msgstr "Lizenz übertragen"
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1595
|
#: src/Admin/AdminController.php:1606
|
||||||
msgid "License is VALID"
|
msgid "License is VALID"
|
||||||
msgstr "Lizenz ist GÜLTIG"
|
msgstr "Lizenz ist GÜLTIG"
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1598 src/Admin/VersionAdminController.php:81
|
#: src/Admin/AdminController.php:1609 src/Admin/VersionAdminController.php:81
|
||||||
#: src/Admin/VersionAdminController.php:136
|
#: src/Admin/VersionAdminController.php:136
|
||||||
msgid "Version"
|
msgid "Version"
|
||||||
msgstr "Version"
|
msgstr "Version"
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1606
|
#: src/Admin/AdminController.php:1617
|
||||||
msgid "License is INVALID"
|
msgid "License is INVALID"
|
||||||
msgstr "Lizenz ist UNGÜLTIG"
|
msgstr "Lizenz ist UNGÜLTIG"
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1608
|
#: src/Admin/AdminController.php:1619
|
||||||
msgid "Error Code"
|
msgid "Error Code"
|
||||||
msgstr "Fehlercode"
|
msgstr "Fehlercode"
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1609
|
#: src/Admin/AdminController.php:1620
|
||||||
msgid "Message"
|
msgid "Message"
|
||||||
msgstr "Meldung"
|
msgstr "Meldung"
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1622
|
#: src/Admin/AdminController.php:1633
|
||||||
msgid "Failed to test license. Please try again."
|
msgid "Failed to test license. Please try again."
|
||||||
msgstr "Lizenztest fehlgeschlagen. Bitte versuchen Sie es erneut."
|
msgstr "Lizenztest fehlgeschlagen. Bitte versuchen Sie es erneut."
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1660 src/Admin/AdminController.php:1753
|
#: src/Admin/AdminController.php:1671 src/Admin/AdminController.php:1764
|
||||||
msgid "Import Licenses"
|
msgid "Import Licenses"
|
||||||
msgstr "Lizenzen importieren"
|
msgstr "Lizenzen importieren"
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1662
|
#: src/Admin/AdminController.php:1673
|
||||||
msgid "Back to Licenses"
|
msgid "Back to Licenses"
|
||||||
msgstr "Zurück zu Lizenzen"
|
msgstr "Zurück zu Lizenzen"
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1672
|
#: src/Admin/AdminController.php:1683
|
||||||
msgid "Error uploading file. Please try again."
|
msgid "Error uploading file. Please try again."
|
||||||
msgstr "Fehler beim Hochladen der Datei. Bitte versuchen Sie es erneut."
|
msgstr "Fehler beim Hochladen der Datei. Bitte versuchen Sie es erneut."
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1675
|
#: src/Admin/AdminController.php:1686
|
||||||
msgid "Invalid file type. Please upload a CSV file."
|
msgid "Invalid file type. Please upload a CSV file."
|
||||||
msgstr "Ungültiger Dateityp. Bitte laden Sie eine CSV-Datei hoch."
|
msgstr "Ungültiger Dateityp. Bitte laden Sie eine CSV-Datei hoch."
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1678
|
#: src/Admin/AdminController.php:1689
|
||||||
msgid "Error reading file. Please check the file format."
|
msgid "Error reading file. Please check the file format."
|
||||||
msgstr "Fehler beim Lesen der Datei. Bitte überprüfen Sie das Dateiformat."
|
msgstr "Fehler beim Lesen der Datei. Bitte überprüfen Sie das Dateiformat."
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1681
|
#: src/Admin/AdminController.php:1692
|
||||||
msgid "An error occurred during import."
|
msgid "An error occurred during import."
|
||||||
msgstr "Beim Import ist ein Fehler aufgetreten."
|
msgstr "Beim Import ist ein Fehler aufgetreten."
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1689
|
#: src/Admin/AdminController.php:1700
|
||||||
msgid "Import Licenses from CSV"
|
msgid "Import Licenses from CSV"
|
||||||
msgstr "Lizenzen aus CSV importieren"
|
msgstr "Lizenzen aus CSV importieren"
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1692
|
#: src/Admin/AdminController.php:1703
|
||||||
msgid ""
|
msgid ""
|
||||||
"Upload a CSV file to import licenses. You can use the exported CSV format or "
|
"Upload a CSV file to import licenses. You can use the exported CSV format or "
|
||||||
"a simplified format."
|
"a simplified format."
|
||||||
@@ -917,71 +929,71 @@ msgstr ""
|
|||||||
"Laden Sie eine CSV-Datei hoch, um Lizenzen zu importieren. Sie können das "
|
"Laden Sie eine CSV-Datei hoch, um Lizenzen zu importieren. Sie können das "
|
||||||
"exportierte CSV-Format oder ein vereinfachtes Format verwenden."
|
"exportierte CSV-Format oder ein vereinfachtes Format verwenden."
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1695
|
#: src/Admin/AdminController.php:1706
|
||||||
msgid "CSV Format"
|
msgid "CSV Format"
|
||||||
msgstr "CSV-Format"
|
msgstr "CSV-Format"
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1697
|
#: src/Admin/AdminController.php:1708
|
||||||
msgid "The CSV file should contain the following columns:"
|
msgid "The CSV file should contain the following columns:"
|
||||||
msgstr "Die CSV-Datei sollte die folgenden Spalten enthalten:"
|
msgstr "Die CSV-Datei sollte die folgenden Spalten enthalten:"
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1701
|
#: src/Admin/AdminController.php:1712
|
||||||
msgid "Full Format (from Export):"
|
msgid "Full Format (from Export):"
|
||||||
msgstr "Vollständiges Format (vom Export):"
|
msgstr "Vollständiges Format (vom Export):"
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1704
|
#: src/Admin/AdminController.php:1715
|
||||||
msgid "Simplified Format:"
|
msgid "Simplified Format:"
|
||||||
msgstr "Vereinfachtes Format:"
|
msgstr "Vereinfachtes Format:"
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1709
|
#: src/Admin/AdminController.php:1720
|
||||||
msgid "Notes:"
|
msgid "Notes:"
|
||||||
msgstr "Hinweise:"
|
msgstr "Hinweise:"
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1710
|
#: src/Admin/AdminController.php:1721
|
||||||
msgid "Leave License Key empty to auto-generate."
|
msgid "Leave License Key empty to auto-generate."
|
||||||
msgstr "Lizenzschlüssel leer lassen für automatische Generierung."
|
msgstr "Lizenzschlüssel leer lassen für automatische Generierung."
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1711
|
#: src/Admin/AdminController.php:1722
|
||||||
msgid "Status can be: active, inactive, expired, revoked (defaults to active)."
|
msgid "Status can be: active, inactive, expired, revoked (defaults to active)."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Status kann sein: active, inactive, expired, revoked (Standard: active)."
|
"Status kann sein: active, inactive, expired, revoked (Standard: active)."
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1712
|
#: src/Admin/AdminController.php:1723
|
||||||
msgid "Expires At should be in YYYY-MM-DD format or \"Lifetime\"."
|
msgid "Expires At should be in YYYY-MM-DD format or \"Lifetime\"."
|
||||||
msgstr "Ablaufdatum sollte im Format JJJJ-MM-TT oder \"Lifetime\" sein."
|
msgstr "Ablaufdatum sollte im Format JJJJ-MM-TT oder \"Lifetime\" sein."
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1724
|
#: src/Admin/AdminController.php:1735
|
||||||
msgid "CSV File"
|
msgid "CSV File"
|
||||||
msgstr "CSV-Datei"
|
msgstr "CSV-Datei"
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1728
|
#: src/Admin/AdminController.php:1739
|
||||||
msgid "Select a CSV file to import."
|
msgid "Select a CSV file to import."
|
||||||
msgstr "Wählen Sie eine CSV-Datei zum Importieren."
|
msgstr "Wählen Sie eine CSV-Datei zum Importieren."
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1732
|
#: src/Admin/AdminController.php:1743
|
||||||
msgid "Options"
|
msgid "Options"
|
||||||
msgstr "Optionen"
|
msgstr "Optionen"
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1736
|
#: src/Admin/AdminController.php:1747
|
||||||
msgid "Skip first row (header row)"
|
msgid "Skip first row (header row)"
|
||||||
msgstr "Erste Zeile überspringen (Kopfzeile)"
|
msgstr "Erste Zeile überspringen (Kopfzeile)"
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1741
|
#: src/Admin/AdminController.php:1752
|
||||||
msgid "Update existing licenses (by license key)"
|
msgid "Update existing licenses (by license key)"
|
||||||
msgstr "Bestehende Lizenzen aktualisieren (nach Lizenzschlüssel)"
|
msgstr "Bestehende Lizenzen aktualisieren (nach Lizenzschlüssel)"
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1744
|
#: src/Admin/AdminController.php:1755
|
||||||
msgid ""
|
msgid ""
|
||||||
"If enabled, licenses with matching keys will be updated instead of skipped."
|
"If enabled, licenses with matching keys will be updated instead of skipped."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Falls aktiviert, werden Lizenzen mit übereinstimmenden Schlüsseln "
|
"Falls aktiviert, werden Lizenzen mit übereinstimmenden Schlüsseln "
|
||||||
"aktualisiert statt übersprungen."
|
"aktualisiert statt übersprungen."
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1771
|
#: src/Admin/AdminController.php:1782
|
||||||
msgid "License"
|
msgid "License"
|
||||||
msgstr "Lizenz"
|
msgstr "Lizenz"
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1830
|
#: src/Admin/AdminController.php:1841
|
||||||
msgid "No domain specified"
|
msgid "No domain specified"
|
||||||
msgstr "Keine Domain angegeben"
|
msgstr "Keine Domain angegeben"
|
||||||
|
|
||||||
@@ -1209,28 +1221,28 @@ msgstr "Alle Lizenzen anzeigen"
|
|||||||
msgid "Too many requests. Please try again later."
|
msgid "Too many requests. Please try again later."
|
||||||
msgstr "Zu viele Anfragen. Bitte versuchen Sie es später erneut."
|
msgstr "Zu viele Anfragen. Bitte versuchen Sie es später erneut."
|
||||||
|
|
||||||
#: src/Api/RestApiController.php:222 src/Api/RestApiController.php:255
|
#: src/Api/RestApiController.php:345 src/Api/RestApiController.php:378
|
||||||
#: src/License/LicenseManager.php:357
|
#: src/License/LicenseManager.php:357
|
||||||
msgid "License key not found."
|
msgid "License key not found."
|
||||||
msgstr "Lizenzschlüssel nicht gefunden."
|
msgstr "Lizenzschlüssel nicht gefunden."
|
||||||
|
|
||||||
#: src/Api/RestApiController.php:263
|
#: src/Api/RestApiController.php:386
|
||||||
msgid "This license is not valid."
|
msgid "This license is not valid."
|
||||||
msgstr "Diese Lizenz ist ungültig."
|
msgstr "Diese Lizenz ist ungültig."
|
||||||
|
|
||||||
#: src/Api/RestApiController.php:273
|
#: src/Api/RestApiController.php:396
|
||||||
msgid "License is already activated for this domain."
|
msgid "License is already activated for this domain."
|
||||||
msgstr "Die Lizenz ist bereits für diese Domain aktiviert."
|
msgstr "Die Lizenz ist bereits für diese Domain aktiviert."
|
||||||
|
|
||||||
#: src/Api/RestApiController.php:282
|
#: src/Api/RestApiController.php:405
|
||||||
msgid "Maximum number of activations reached."
|
msgid "Maximum number of activations reached."
|
||||||
msgstr "Maximale Anzahl der Aktivierungen erreicht."
|
msgstr "Maximale Anzahl der Aktivierungen erreicht."
|
||||||
|
|
||||||
#: src/Api/RestApiController.php:293
|
#: src/Api/RestApiController.php:416
|
||||||
msgid "Failed to activate license."
|
msgid "Failed to activate license."
|
||||||
msgstr "Lizenz konnte nicht aktiviert werden."
|
msgstr "Lizenz konnte nicht aktiviert werden."
|
||||||
|
|
||||||
#: src/Api/RestApiController.php:299
|
#: src/Api/RestApiController.php:422
|
||||||
msgid "License activated successfully."
|
msgid "License activated successfully."
|
||||||
msgstr "Lizenz erfolgreich aktiviert."
|
msgstr "Lizenz erfolgreich aktiviert."
|
||||||
|
|
||||||
@@ -1278,6 +1290,14 @@ msgstr "Bitte geben Sie eine gültige Domain für Ihre Lizenz-Aktivierung ein."
|
|||||||
msgid "Domain for license activation"
|
msgid "Domain for license activation"
|
||||||
msgstr "Domain für Lizenz-Aktivierung"
|
msgstr "Domain für Lizenz-Aktivierung"
|
||||||
|
|
||||||
|
#: src/License/PluginLicenseChecker.php:117
|
||||||
|
msgid "License settings not configured."
|
||||||
|
msgstr "Lizenzeinstellungen nicht konfiguriert."
|
||||||
|
|
||||||
|
#: src/License/PluginLicenseChecker.php:153
|
||||||
|
msgid "Could not connect to license server."
|
||||||
|
msgstr "Verbindung zum Lizenzserver konnte nicht hergestellt werden."
|
||||||
|
|
||||||
#: src/License/LicenseManager.php:366
|
#: src/License/LicenseManager.php:366
|
||||||
msgid "This license has been revoked."
|
msgid "This license has been revoked."
|
||||||
msgstr "Diese Lizenz wurde widerrufen."
|
msgstr "Diese Lizenz wurde widerrufen."
|
||||||
@@ -1300,18 +1320,11 @@ msgstr "Diese Lizenz ist für diese Domain nicht gültig."
|
|||||||
msgid "Unknown Product"
|
msgid "Unknown Product"
|
||||||
msgstr "Unbekanntes Produkt"
|
msgstr "Unbekanntes Produkt"
|
||||||
|
|
||||||
#: src/License/PluginLicenseChecker.php:117
|
|
||||||
msgid "License settings not configured."
|
|
||||||
msgstr "Lizenzeinstellungen nicht konfiguriert."
|
|
||||||
|
|
||||||
#: src/License/PluginLicenseChecker.php:153
|
|
||||||
msgid "Could not connect to license server."
|
|
||||||
msgstr "Verbindung zum Lizenzserver konnte nicht hergestellt werden."
|
|
||||||
|
|
||||||
#: src/Product/VersionManager.php:166
|
#: src/Product/VersionManager.php:166
|
||||||
msgid "Attachment file not found."
|
msgid "Attachment file not found."
|
||||||
msgstr "Anhangs-Datei nicht gefunden."
|
msgstr "Anhangs-Datei nicht gefunden."
|
||||||
|
|
||||||
|
#. translators: 1: provided hash, 2: calculated hash
|
||||||
#: src/Product/VersionManager.php:177
|
#: src/Product/VersionManager.php:177
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "File checksum does not match. Expected: %1$s, Got: %2$s"
|
msgid "File checksum does not match. Expected: %1$s, Got: %2$s"
|
||||||
@@ -1330,6 +1343,7 @@ msgstr "Lizenz-Einstellungen"
|
|||||||
msgid "%d days"
|
msgid "%d days"
|
||||||
msgstr "%d Tage"
|
msgstr "%d Tage"
|
||||||
|
|
||||||
|
#. translators: %s: URL to settings page
|
||||||
#: src/Product/LicensedProductType.php:119
|
#: src/Product/LicensedProductType.php:119
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "Leave fields empty to use default settings from %s."
|
msgid "Leave fields empty to use default settings from %s."
|
||||||
@@ -1343,6 +1357,7 @@ msgstr "WooCommerce > Einstellungen > Lizensierte Produkte"
|
|||||||
msgid "Max Activations"
|
msgid "Max Activations"
|
||||||
msgstr "Max. Aktivierungen"
|
msgstr "Max. Aktivierungen"
|
||||||
|
|
||||||
|
#. translators: %d: default max activations value
|
||||||
#: src/Product/LicensedProductType.php:131
|
#: src/Product/LicensedProductType.php:131
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "Maximum number of domain activations per license. Default: %d"
|
msgid "Maximum number of domain activations per license. Default: %d"
|
||||||
@@ -1352,6 +1367,7 @@ msgstr "Maximale Anzahl der Domain-Aktivierungen pro Lizenz. Standard: %d"
|
|||||||
msgid "License Validity (Days)"
|
msgid "License Validity (Days)"
|
||||||
msgstr "Lizenz-Gültigkeit (Tage)"
|
msgstr "Lizenz-Gültigkeit (Tage)"
|
||||||
|
|
||||||
|
#. translators: %s: default validity value
|
||||||
#: src/Product/LicensedProductType.php:149
|
#: src/Product/LicensedProductType.php:149
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "Number of days the license is valid. Leave empty for default (%s)."
|
msgid "Number of days the license is valid. Leave empty for default (%s)."
|
||||||
@@ -1361,6 +1377,7 @@ msgstr "Anzahl Tage, die die Lizenz gültig ist. Leer lassen für Standard (%s).
|
|||||||
msgid "Bind to Major Version"
|
msgid "Bind to Major Version"
|
||||||
msgstr "An Hauptversion binden"
|
msgstr "An Hauptversion binden"
|
||||||
|
|
||||||
|
#. translators: %s: default bind to version value (Yes/No)
|
||||||
#: src/Product/LicensedProductType.php:167
|
#: src/Product/LicensedProductType.php:167
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid ""
|
msgid ""
|
||||||
@@ -1442,11 +1459,11 @@ msgid "You have no licenses yet."
|
|||||||
msgstr "Sie haben noch keine Lizenzen."
|
msgstr "Sie haben noch keine Lizenzen."
|
||||||
|
|
||||||
#: src/Frontend/AccountController.php:190
|
#: src/Frontend/AccountController.php:190
|
||||||
|
#: src/Email/LicenseExpirationEmail.php:207
|
||||||
|
#: src/Email/LicenseExpirationEmail.php:270
|
||||||
#: src/Email/LicenseEmailController.php:212
|
#: src/Email/LicenseEmailController.php:212
|
||||||
#: src/Email/LicenseEmailController.php:216
|
#: src/Email/LicenseEmailController.php:216
|
||||||
#: src/Email/LicenseEmailController.php:320
|
#: src/Email/LicenseEmailController.php:320
|
||||||
#: src/Email/LicenseExpirationEmail.php:207
|
|
||||||
#: src/Email/LicenseExpirationEmail.php:270
|
|
||||||
#: src/Email/LicenseExpiredEmail.php:191 src/Email/LicenseExpiredEmail.php:256
|
#: src/Email/LicenseExpiredEmail.php:191 src/Email/LicenseExpiredEmail.php:256
|
||||||
msgid "License Key:"
|
msgid "License Key:"
|
||||||
msgstr "Lizenzschlüssel:"
|
msgstr "Lizenzschlüssel:"
|
||||||
@@ -1459,9 +1476,9 @@ msgid "Domain:"
|
|||||||
msgstr "Domain:"
|
msgstr "Domain:"
|
||||||
|
|
||||||
#: src/Frontend/AccountController.php:213
|
#: src/Frontend/AccountController.php:213
|
||||||
#: src/Email/LicenseEmailController.php:323
|
|
||||||
#: src/Email/LicenseExpirationEmail.php:219
|
#: src/Email/LicenseExpirationEmail.php:219
|
||||||
#: src/Email/LicenseExpirationEmail.php:272
|
#: src/Email/LicenseExpirationEmail.php:272
|
||||||
|
#: src/Email/LicenseEmailController.php:323
|
||||||
msgid "Expires:"
|
msgid "Expires:"
|
||||||
msgstr "Läuft ab:"
|
msgstr "Läuft ab:"
|
||||||
|
|
||||||
@@ -1525,25 +1542,6 @@ msgstr "Die neue Domain ist dieselbe wie die aktuelle Domain."
|
|||||||
msgid "Failed to transfer license. Please try again."
|
msgid "Failed to transfer license. Please try again."
|
||||||
msgstr "Lizenzübertragung fehlgeschlagen. Bitte versuchen Sie es erneut."
|
msgstr "Lizenzübertragung fehlgeschlagen. Bitte versuchen Sie es erneut."
|
||||||
|
|
||||||
#: src/Email/LicenseEmailController.php:256
|
|
||||||
msgid "Your License Keys"
|
|
||||||
msgstr "Ihre Lizenzschlüssel"
|
|
||||||
|
|
||||||
#: src/Email/LicenseEmailController.php:260
|
|
||||||
#: src/Email/LicenseEmailController.php:315
|
|
||||||
msgid "Licensed Domain:"
|
|
||||||
msgstr "Lizensierte Domain:"
|
|
||||||
|
|
||||||
#: src/Email/LicenseEmailController.php:296
|
|
||||||
#: src/Email/LicenseEmailController.php:330
|
|
||||||
msgid "You can also view your licenses in your account under \"Licenses\"."
|
|
||||||
msgstr ""
|
|
||||||
"Sie können Ihre Lizenzen auch in Ihrem Konto unter \"Lizenzen\" einsehen."
|
|
||||||
|
|
||||||
#: src/Email/LicenseEmailController.php:311
|
|
||||||
msgid "YOUR LICENSE KEYS"
|
|
||||||
msgstr "IHRE LIZENZSCHLÜSSEL"
|
|
||||||
|
|
||||||
#: src/Email/LicenseExpirationEmail.php:55
|
#: src/Email/LicenseExpirationEmail.php:55
|
||||||
msgid "License Expiration Warning"
|
msgid "License Expiration Warning"
|
||||||
msgstr "Lizenzablauf-Warnung"
|
msgstr "Lizenzablauf-Warnung"
|
||||||
@@ -1612,6 +1610,7 @@ msgstr ""
|
|||||||
"Um dieses Produkt weiterhin zu nutzen, verlängern Sie bitte Ihre Lizenz vor "
|
"Um dieses Produkt weiterhin zu nutzen, verlängern Sie bitte Ihre Lizenz vor "
|
||||||
"dem Ablaufdatum."
|
"dem Ablaufdatum."
|
||||||
|
|
||||||
|
#. translators: %s: list of placeholders
|
||||||
#: src/Email/LicenseExpirationEmail.php:301
|
#: src/Email/LicenseExpirationEmail.php:301
|
||||||
#: src/Email/LicenseExpiredEmail.php:288
|
#: src/Email/LicenseExpiredEmail.php:288
|
||||||
#, php-format
|
#, php-format
|
||||||
@@ -1658,6 +1657,25 @@ msgstr "E-Mail-Typ"
|
|||||||
msgid "Choose which format of email to send."
|
msgid "Choose which format of email to send."
|
||||||
msgstr "Wählen Sie, welches E-Mail-Format gesendet werden soll."
|
msgstr "Wählen Sie, welches E-Mail-Format gesendet werden soll."
|
||||||
|
|
||||||
|
#: src/Email/LicenseEmailController.php:256
|
||||||
|
msgid "Your License Keys"
|
||||||
|
msgstr "Ihre Lizenzschlüssel"
|
||||||
|
|
||||||
|
#: src/Email/LicenseEmailController.php:260
|
||||||
|
#: src/Email/LicenseEmailController.php:315
|
||||||
|
msgid "Licensed Domain:"
|
||||||
|
msgstr "Lizensierte Domain:"
|
||||||
|
|
||||||
|
#: src/Email/LicenseEmailController.php:296
|
||||||
|
#: src/Email/LicenseEmailController.php:330
|
||||||
|
msgid "You can also view your licenses in your account under \"Licenses\"."
|
||||||
|
msgstr ""
|
||||||
|
"Sie können Ihre Lizenzen auch in Ihrem Konto unter \"Lizenzen\" einsehen."
|
||||||
|
|
||||||
|
#: src/Email/LicenseEmailController.php:311
|
||||||
|
msgid "YOUR LICENSE KEYS"
|
||||||
|
msgstr "IHRE LIZENZSCHLÜSSEL"
|
||||||
|
|
||||||
#: src/Email/LicenseExpiredEmail.php:50 src/Email/LicenseExpiredEmail.php:76
|
#: src/Email/LicenseExpiredEmail.php:50 src/Email/LicenseExpiredEmail.php:76
|
||||||
msgid "License Expired"
|
msgid "License Expired"
|
||||||
msgstr "Lizenz abgelaufen"
|
msgstr "Lizenz abgelaufen"
|
||||||
@@ -1701,23 +1719,25 @@ msgstr "Status:"
|
|||||||
|
|
||||||
#: src/Email/LicenseExpiredEmail.php:278
|
#: src/Email/LicenseExpiredEmail.php:278
|
||||||
msgid "To continue using this product, please renew your license."
|
msgid "To continue using this product, please renew your license."
|
||||||
msgstr "Um dieses Produkt weiterhin zu nutzen, verlängern Sie bitte Ihre Lizenz."
|
msgstr ""
|
||||||
|
"Um dieses Produkt weiterhin zu nutzen, verlängern Sie bitte Ihre Lizenz."
|
||||||
|
|
||||||
#: src/Plugin.php:257
|
#: src/Plugin.php:258
|
||||||
msgid "WC Licensed Product"
|
msgid "WC Licensed Product"
|
||||||
msgstr "WC Licensed Product"
|
msgstr "WC Licensed Product"
|
||||||
|
|
||||||
#: src/Plugin.php:258
|
#: src/Plugin.php:259
|
||||||
msgid ""
|
msgid ""
|
||||||
"Plugin license is not configured or invalid. Frontend features are disabled."
|
"Plugin license is not configured or invalid. Frontend features are disabled."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Plugin-Lizenz ist nicht konfiguriert oder ungültig. Frontend-Funktionen sind "
|
"Plugin-Lizenz ist nicht konfiguriert oder ungültig. Frontend-Funktionen sind "
|
||||||
"deaktiviert."
|
"deaktiviert."
|
||||||
|
|
||||||
#: src/Plugin.php:259
|
#: src/Plugin.php:260
|
||||||
msgid "Configure License"
|
msgid "Configure License"
|
||||||
msgstr "Lizenz konfigurieren"
|
msgstr "Lizenz konfigurieren"
|
||||||
|
|
||||||
|
#. translators: %s: WooCommerce plugin name
|
||||||
#: wc-licensed-product.php:61
|
#: wc-licensed-product.php:61
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "%s requires WooCommerce to be installed and active."
|
msgid "%s requires WooCommerce to be installed and active."
|
||||||
|
|||||||
@@ -1,14 +1,14 @@
|
|||||||
# SOME DESCRIPTIVE TITLE.
|
# SOME DESCRIPTIVE TITLE.
|
||||||
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
|
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
|
||||||
# This file is distributed under the same license as the PACKAGE package.
|
# This file is distributed under the same license as the wc-licensed-product package.
|
||||||
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
||||||
#
|
#
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PACKAGE VERSION\n"
|
"Project-Id-Version: wc-licensed-product 0.3.6\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2026-01-23 16:05+0100\n"
|
"POT-Creation-Date: 2026-01-23 21:09+0100\n"
|
||||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
@@ -49,15 +49,15 @@ msgstr ""
|
|||||||
|
|
||||||
#: src/Admin/OrderLicenseController.php:118
|
#: src/Admin/OrderLicenseController.php:118
|
||||||
#: src/Admin/OrderLicenseController.php:182 src/Admin/AdminController.php:150
|
#: src/Admin/OrderLicenseController.php:182 src/Admin/AdminController.php:150
|
||||||
#: src/Admin/AdminController.php:1329 src/Admin/AdminController.php:1349
|
#: src/Admin/AdminController.php:1340 src/Admin/AdminController.php:1360
|
||||||
#: src/Admin/AdminController.php:1370
|
#: src/Admin/AdminController.php:1381
|
||||||
msgid "Save"
|
msgid "Save"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Admin/OrderLicenseController.php:127
|
#: src/Admin/OrderLicenseController.php:127
|
||||||
#: src/Admin/OrderLicenseController.php:222 src/Admin/AdminController.php:76
|
#: src/Admin/OrderLicenseController.php:222 src/Admin/AdminController.php:76
|
||||||
#: src/Admin/AdminController.php:77 src/Admin/AdminController.php:90
|
#: src/Admin/AdminController.php:77 src/Admin/AdminController.php:90
|
||||||
#: src/Admin/AdminController.php:1189 src/Frontend/AccountController.php:90
|
#: src/Admin/AdminController.php:1200 src/Frontend/AccountController.php:90
|
||||||
msgid "Licenses"
|
msgid "Licenses"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -76,41 +76,41 @@ msgid "Licenses will be generated when the order is marked as paid/completed."
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Admin/OrderLicenseController.php:144
|
#: src/Admin/OrderLicenseController.php:144
|
||||||
#: src/Admin/SettingsController.php:142 src/Admin/AdminController.php:1280
|
#: src/Admin/SettingsController.php:142 src/Admin/AdminController.php:1291
|
||||||
#: src/Admin/AdminController.php:1431 src/Admin/AdminController.php:1480
|
#: src/Admin/AdminController.php:1442 src/Admin/AdminController.php:1491
|
||||||
#: src/Email/LicenseEmailController.php:269
|
#: src/Email/LicenseEmailController.php:269
|
||||||
msgid "License Key"
|
msgid "License Key"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Admin/OrderLicenseController.php:145 src/Admin/AdminController.php:1281
|
#: src/Admin/OrderLicenseController.php:145 src/Admin/AdminController.php:1292
|
||||||
#: src/Admin/AdminController.php:1432 src/Admin/AdminController.php:1597
|
#: src/Admin/AdminController.php:1443 src/Admin/AdminController.php:1608
|
||||||
#: src/Email/LicenseEmailController.php:268
|
#: src/Email/LicenseEmailController.php:268
|
||||||
msgid "Product"
|
msgid "Product"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Admin/OrderLicenseController.php:146 src/Admin/AdminController.php:1283
|
#: src/Admin/OrderLicenseController.php:146 src/Admin/AdminController.php:1294
|
||||||
#: src/Admin/AdminController.php:1434 src/Admin/AdminController.php:1484
|
#: src/Admin/AdminController.php:1445 src/Admin/AdminController.php:1495
|
||||||
msgid "Domain"
|
msgid "Domain"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Admin/OrderLicenseController.php:147 src/Admin/AdminController.php:1284
|
#: src/Admin/OrderLicenseController.php:147 src/Admin/AdminController.php:1295
|
||||||
#: src/Admin/AdminController.php:1435 src/Admin/VersionAdminController.php:140
|
#: src/Admin/AdminController.php:1446 src/Admin/VersionAdminController.php:140
|
||||||
msgid "Status"
|
msgid "Status"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Admin/OrderLicenseController.php:148 src/Admin/AdminController.php:1286
|
#: src/Admin/OrderLicenseController.php:148 src/Admin/AdminController.php:1297
|
||||||
#: src/Admin/AdminController.php:1437 src/Admin/AdminController.php:1600
|
#: src/Admin/AdminController.php:1448 src/Admin/AdminController.php:1611
|
||||||
#: src/Admin/AdminController.php:1602 src/Email/LicenseEmailController.php:270
|
#: src/Admin/AdminController.php:1613 src/Email/LicenseEmailController.php:270
|
||||||
msgid "Expires"
|
msgid "Expires"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Admin/OrderLicenseController.php:149 src/Admin/AdminController.php:1287
|
#: src/Admin/OrderLicenseController.php:149 src/Admin/AdminController.php:1298
|
||||||
#: src/Admin/AdminController.php:1438 src/Admin/VersionAdminController.php:142
|
#: src/Admin/AdminController.php:1449 src/Admin/VersionAdminController.php:142
|
||||||
msgid "Actions"
|
msgid "Actions"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Admin/OrderLicenseController.php:168 src/Admin/AdminController.php:195
|
#: src/Admin/OrderLicenseController.php:168 src/Admin/AdminController.php:195
|
||||||
#: src/Admin/AdminController.php:1014
|
#: src/Admin/AdminController.php:1019
|
||||||
msgid "Unknown"
|
msgid "Unknown"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -119,16 +119,16 @@ msgid "Edit domain"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Admin/OrderLicenseController.php:185 src/Admin/AdminController.php:149
|
#: src/Admin/OrderLicenseController.php:185 src/Admin/AdminController.php:149
|
||||||
#: src/Admin/AdminController.php:1330 src/Admin/AdminController.php:1350
|
#: src/Admin/AdminController.php:1341 src/Admin/AdminController.php:1361
|
||||||
#: src/Admin/AdminController.php:1371 src/Admin/AdminController.php:1526
|
#: src/Admin/AdminController.php:1382 src/Admin/AdminController.php:1537
|
||||||
#: src/Frontend/AccountController.php:271
|
#: src/Frontend/AccountController.php:271
|
||||||
msgid "Cancel"
|
msgid "Cancel"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Admin/OrderLicenseController.php:201
|
#: src/Admin/OrderLicenseController.php:201
|
||||||
#: src/Admin/SettingsController.php:192 src/Admin/AdminController.php:151
|
#: src/Admin/SettingsController.php:192 src/Admin/AdminController.php:151
|
||||||
#: src/Admin/AdminController.php:266 src/Admin/AdminController.php:1362
|
#: src/Admin/AdminController.php:266 src/Admin/AdminController.php:1373
|
||||||
#: src/Admin/AdminController.php:1602 src/Product/LicensedProductType.php:110
|
#: src/Admin/AdminController.php:1613 src/Product/LicensedProductType.php:110
|
||||||
#: src/Product/LicensedProductType.php:158
|
#: src/Product/LicensedProductType.php:158
|
||||||
msgid "Lifetime"
|
msgid "Lifetime"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -137,6 +137,7 @@ msgstr ""
|
|||||||
msgid "View in Licenses"
|
msgid "View in Licenses"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#. translators: %s: Link to licenses page
|
||||||
#: src/Admin/OrderLicenseController.php:221
|
#: src/Admin/OrderLicenseController.php:221
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "For more actions (revoke, extend, delete), go to the %s page."
|
msgid "For more actions (revoke, extend, delete), go to the %s page."
|
||||||
@@ -293,6 +294,7 @@ msgstr ""
|
|||||||
msgid "Expiration Warning Schedule"
|
msgid "Expiration Warning Schedule"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#. translators: %s: URL to WooCommerce email settings
|
||||||
#: src/Admin/SettingsController.php:223
|
#: src/Admin/SettingsController.php:223
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid ""
|
msgid ""
|
||||||
@@ -348,8 +350,9 @@ msgstr ""
|
|||||||
#: src/Admin/SettingsController.php:454 src/Admin/AdminController.php:455
|
#: src/Admin/SettingsController.php:454 src/Admin/AdminController.php:455
|
||||||
#: src/Admin/AdminController.php:475 src/Admin/AdminController.php:493
|
#: src/Admin/AdminController.php:475 src/Admin/AdminController.php:493
|
||||||
#: src/Admin/AdminController.php:511 src/Admin/AdminController.php:531
|
#: src/Admin/AdminController.php:511 src/Admin/AdminController.php:531
|
||||||
#: src/Admin/AdminController.php:549 src/Admin/AdminController.php:616
|
#: src/Admin/AdminController.php:549 src/Admin/AdminController.php:577
|
||||||
#: src/Admin/AdminController.php:806 src/Frontend/AccountController.php:326
|
#: src/Admin/AdminController.php:621 src/Admin/AdminController.php:811
|
||||||
|
#: src/Frontend/AccountController.php:326
|
||||||
msgid "Security check failed."
|
msgid "Security check failed."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -394,8 +397,8 @@ msgid ""
|
|||||||
"Are you sure you want to revoke this license? This action cannot be undone."
|
"Are you sure you want to revoke this license? This action cannot be undone."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:148 src/Admin/AdminController.php:1324
|
#: src/Admin/AdminController.php:148 src/Admin/AdminController.php:1335
|
||||||
#: src/Admin/AdminController.php:1339 src/Admin/AdminController.php:1365
|
#: src/Admin/AdminController.php:1350 src/Admin/AdminController.php:1376
|
||||||
msgid "Edit"
|
msgid "Edit"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -407,34 +410,34 @@ msgstr ""
|
|||||||
msgid "Copy failed"
|
msgid "Copy failed"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:156 src/Admin/AdminController.php:902
|
#: src/Admin/AdminController.php:156 src/Admin/AdminController.php:907
|
||||||
#: src/Admin/AdminController.php:1221 src/Admin/AdminController.php:1344
|
#: src/Admin/AdminController.php:1232 src/Admin/AdminController.php:1355
|
||||||
#: src/Admin/VersionAdminController.php:182
|
#: src/Admin/VersionAdminController.php:182
|
||||||
#: src/Admin/VersionAdminController.php:413
|
#: src/Admin/VersionAdminController.php:413
|
||||||
#: src/Admin/DashboardWidgetController.php:151
|
#: src/Admin/DashboardWidgetController.php:151
|
||||||
msgid "Active"
|
msgid "Active"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:157 src/Admin/AdminController.php:909
|
#: src/Admin/AdminController.php:157 src/Admin/AdminController.php:914
|
||||||
#: src/Admin/AdminController.php:1222 src/Admin/AdminController.php:1345
|
#: src/Admin/AdminController.php:1233 src/Admin/AdminController.php:1356
|
||||||
#: src/Admin/VersionAdminController.php:182
|
#: src/Admin/VersionAdminController.php:182
|
||||||
#: src/Admin/VersionAdminController.php:413
|
#: src/Admin/VersionAdminController.php:413
|
||||||
msgid "Inactive"
|
msgid "Inactive"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:158 src/Admin/AdminController.php:916
|
#: src/Admin/AdminController.php:158 src/Admin/AdminController.php:921
|
||||||
#: src/Admin/AdminController.php:1223 src/Admin/AdminController.php:1346
|
#: src/Admin/AdminController.php:1234 src/Admin/AdminController.php:1357
|
||||||
#: src/Admin/DashboardWidgetController.php:159
|
#: src/Admin/DashboardWidgetController.php:159
|
||||||
#: src/Email/LicenseExpiredEmail.php:210 src/Email/LicenseExpiredEmail.php:259
|
#: src/Email/LicenseExpiredEmail.php:210 src/Email/LicenseExpiredEmail.php:259
|
||||||
msgid "Expired"
|
msgid "Expired"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:159 src/Admin/AdminController.php:923
|
#: src/Admin/AdminController.php:159 src/Admin/AdminController.php:928
|
||||||
#: src/Admin/AdminController.php:1224 src/Admin/AdminController.php:1347
|
#: src/Admin/AdminController.php:1235 src/Admin/AdminController.php:1358
|
||||||
msgid "Revoked"
|
msgid "Revoked"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:196 src/Admin/AdminController.php:1018
|
#: src/Admin/AdminController.php:196 src/Admin/AdminController.php:1023
|
||||||
msgid "Guest"
|
msgid "Guest"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -474,7 +477,7 @@ msgstr ""
|
|||||||
msgid "Failed to update domain."
|
msgid "Failed to update domain."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:352 src/Admin/AdminController.php:1083
|
#: src/Admin/AdminController.php:352 src/Admin/AdminController.php:1094
|
||||||
msgid "License revoked successfully."
|
msgid "License revoked successfully."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -486,472 +489,481 @@ msgstr ""
|
|||||||
msgid "License key and domain are required."
|
msgid "License key and domain are required."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:576
|
#: src/Admin/AdminController.php:581
|
||||||
msgid "You do not have permission to export licenses."
|
msgid "You do not have permission to export licenses."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:620
|
#: src/Admin/AdminController.php:625
|
||||||
msgid "You do not have permission to import licenses."
|
msgid "You do not have permission to import licenses."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:740
|
#: src/Admin/AdminController.php:745
|
||||||
msgid "Row missing domain"
|
msgid "Row missing domain"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:744
|
#: src/Admin/AdminController.php:749
|
||||||
msgid "Row missing valid product ID"
|
msgid "Row missing valid product ID"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:797
|
#: src/Admin/AdminController.php:802
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "Failed to import license for domain %s"
|
msgid "Failed to import license for domain %s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:887
|
#: src/Admin/AdminController.php:892
|
||||||
msgid "License Dashboard"
|
msgid "License Dashboard"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:895
|
#: src/Admin/AdminController.php:900
|
||||||
#: src/Admin/DashboardWidgetController.php:147
|
#: src/Admin/DashboardWidgetController.php:147
|
||||||
msgid "Total Licenses"
|
msgid "Total Licenses"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:932
|
#: src/Admin/AdminController.php:937
|
||||||
msgid "Attention:"
|
msgid "Attention:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:937
|
#: src/Admin/AdminController.php:942
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "%d license is expiring within the next 30 days."
|
msgid "%d license is expiring within the next 30 days."
|
||||||
msgid_plural "%d licenses are expiring within the next 30 days."
|
msgid_plural "%d licenses are expiring within the next 30 days."
|
||||||
msgstr[0] ""
|
msgstr[0] ""
|
||||||
msgstr[1] ""
|
msgstr[1] ""
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:945
|
#: src/Admin/AdminController.php:950
|
||||||
msgid "View Licenses"
|
msgid "View Licenses"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:951
|
#: src/Admin/AdminController.php:956
|
||||||
msgid "Quick Actions"
|
msgid "Quick Actions"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:955
|
#: src/Admin/AdminController.php:960
|
||||||
msgid "Manage Licenses"
|
msgid "Manage Licenses"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:959
|
#: src/Admin/AdminController.php:964
|
||||||
msgid "Export to CSV"
|
msgid "Export to CSV"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:963 wc-licensed-product.php:137
|
#: src/Admin/AdminController.php:968 wc-licensed-product.php:137
|
||||||
msgid "Settings"
|
msgid "Settings"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1077
|
#: src/Admin/AdminController.php:1088
|
||||||
msgid "License updated successfully."
|
msgid "License updated successfully."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1080
|
#: src/Admin/AdminController.php:1091
|
||||||
msgid "License deleted successfully."
|
msgid "License deleted successfully."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1086
|
#: src/Admin/AdminController.php:1097
|
||||||
msgid "License extended successfully."
|
msgid "License extended successfully."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1089
|
#: src/Admin/AdminController.php:1100
|
||||||
msgid "License set to lifetime successfully."
|
msgid "License set to lifetime successfully."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1095
|
#. translators: %d: number of licenses
|
||||||
|
#: src/Admin/AdminController.php:1106
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "%d license activated."
|
msgid "%d license activated."
|
||||||
msgid_plural "%d licenses activated."
|
msgid_plural "%d licenses activated."
|
||||||
msgstr[0] ""
|
msgstr[0] ""
|
||||||
msgstr[1] ""
|
msgstr[1] ""
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1103
|
#. translators: %d: number of licenses
|
||||||
|
#: src/Admin/AdminController.php:1114
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "%d license deactivated."
|
msgid "%d license deactivated."
|
||||||
msgid_plural "%d licenses deactivated."
|
msgid_plural "%d licenses deactivated."
|
||||||
msgstr[0] ""
|
msgstr[0] ""
|
||||||
msgstr[1] ""
|
msgstr[1] ""
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1111
|
#. translators: %d: number of licenses
|
||||||
|
#: src/Admin/AdminController.php:1122
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "%d license revoked."
|
msgid "%d license revoked."
|
||||||
msgid_plural "%d licenses revoked."
|
msgid_plural "%d licenses revoked."
|
||||||
msgstr[0] ""
|
msgstr[0] ""
|
||||||
msgstr[1] ""
|
msgstr[1] ""
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1119
|
#. translators: %d: number of licenses
|
||||||
|
#: src/Admin/AdminController.php:1130
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "%d license deleted."
|
msgid "%d license deleted."
|
||||||
msgid_plural "%d licenses deleted."
|
msgid_plural "%d licenses deleted."
|
||||||
msgstr[0] ""
|
msgstr[0] ""
|
||||||
msgstr[1] ""
|
msgstr[1] ""
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1127
|
#. translators: %d: number of licenses
|
||||||
|
#: src/Admin/AdminController.php:1138
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "%d license extended."
|
msgid "%d license extended."
|
||||||
msgid_plural "%d licenses extended."
|
msgid_plural "%d licenses extended."
|
||||||
msgstr[0] ""
|
msgstr[0] ""
|
||||||
msgstr[1] ""
|
msgstr[1] ""
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1132
|
#: src/Admin/AdminController.php:1143
|
||||||
msgid "License transferred to new domain successfully."
|
msgid "License transferred to new domain successfully."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1135
|
#: src/Admin/AdminController.php:1146
|
||||||
msgid "Failed to transfer license. The license may be revoked or invalid."
|
msgid "Failed to transfer license. The license may be revoked or invalid."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1138
|
#: src/Admin/AdminController.php:1149
|
||||||
msgid "No licenses to export."
|
msgid "No licenses to export."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1148
|
#. translators: %d: number of licenses imported
|
||||||
|
#: src/Admin/AdminController.php:1159
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "%d license imported."
|
msgid "%d license imported."
|
||||||
msgid_plural "%d licenses imported."
|
msgid_plural "%d licenses imported."
|
||||||
msgstr[0] ""
|
msgstr[0] ""
|
||||||
msgstr[1] ""
|
msgstr[1] ""
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1155
|
#. translators: %d: number of licenses updated
|
||||||
|
#: src/Admin/AdminController.php:1166
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "%d updated."
|
msgid "%d updated."
|
||||||
msgid_plural "%d updated."
|
msgid_plural "%d updated."
|
||||||
msgstr[0] ""
|
msgstr[0] ""
|
||||||
msgstr[1] ""
|
msgstr[1] ""
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1163
|
#. translators: %d: number of licenses skipped
|
||||||
|
#: src/Admin/AdminController.php:1174
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "%d skipped."
|
msgid "%d skipped."
|
||||||
msgid_plural "%d skipped."
|
msgid_plural "%d skipped."
|
||||||
msgstr[0] ""
|
msgstr[0] ""
|
||||||
msgstr[1] ""
|
msgstr[1] ""
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1171
|
#. translators: %d: number of errors
|
||||||
|
#: src/Admin/AdminController.php:1182
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "%d error."
|
msgid "%d error."
|
||||||
msgid_plural "%d errors."
|
msgid_plural "%d errors."
|
||||||
msgstr[0] ""
|
msgstr[0] ""
|
||||||
msgstr[1] ""
|
msgstr[1] ""
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1192
|
#: src/Admin/AdminController.php:1203
|
||||||
msgid "Export CSV"
|
msgid "Export CSV"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1196
|
#: src/Admin/AdminController.php:1207
|
||||||
msgid "Import CSV"
|
msgid "Import CSV"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1211
|
#: src/Admin/AdminController.php:1222
|
||||||
msgid "Search Licenses"
|
msgid "Search Licenses"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1213
|
#: src/Admin/AdminController.php:1224
|
||||||
msgid "Search license key or domain..."
|
msgid "Search license key or domain..."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1214
|
#: src/Admin/AdminController.php:1225
|
||||||
msgid "Search"
|
msgid "Search"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1220
|
#: src/Admin/AdminController.php:1231
|
||||||
msgid "All Statuses"
|
msgid "All Statuses"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1228
|
#: src/Admin/AdminController.php:1239
|
||||||
msgid "All Products"
|
msgid "All Products"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1234
|
#: src/Admin/AdminController.php:1245
|
||||||
msgid "Filter"
|
msgid "Filter"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1237
|
#: src/Admin/AdminController.php:1248
|
||||||
msgid "Clear"
|
msgid "Clear"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1242
|
#: src/Admin/AdminController.php:1253
|
||||||
msgid "item"
|
msgid "item"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1242
|
#: src/Admin/AdminController.php:1253
|
||||||
msgid "items"
|
msgid "items"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1248
|
#: src/Admin/AdminController.php:1259
|
||||||
msgid "Showing"
|
msgid "Showing"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1248
|
#: src/Admin/AdminController.php:1259
|
||||||
msgid "license"
|
msgid "license"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1248
|
#: src/Admin/AdminController.php:1259
|
||||||
msgid "licenses"
|
msgid "licenses"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1250
|
#: src/Admin/AdminController.php:1261
|
||||||
msgid "filtered"
|
msgid "filtered"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1252
|
#: src/Admin/AdminController.php:1263
|
||||||
msgid "View Dashboard"
|
msgid "View Dashboard"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1261 src/Admin/AdminController.php:1446
|
#: src/Admin/AdminController.php:1272 src/Admin/AdminController.php:1457
|
||||||
msgid "Bulk Actions"
|
msgid "Bulk Actions"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1262 src/Admin/AdminController.php:1447
|
#: src/Admin/AdminController.php:1273 src/Admin/AdminController.php:1458
|
||||||
#: src/Admin/VersionAdminController.php:188
|
#: src/Admin/VersionAdminController.php:188
|
||||||
#: src/Admin/VersionAdminController.php:419
|
#: src/Admin/VersionAdminController.php:419
|
||||||
msgid "Activate"
|
msgid "Activate"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1263 src/Admin/AdminController.php:1448
|
#: src/Admin/AdminController.php:1274 src/Admin/AdminController.php:1459
|
||||||
#: src/Admin/VersionAdminController.php:188
|
#: src/Admin/VersionAdminController.php:188
|
||||||
#: src/Admin/VersionAdminController.php:419
|
#: src/Admin/VersionAdminController.php:419
|
||||||
msgid "Deactivate"
|
msgid "Deactivate"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1264 src/Admin/AdminController.php:1408
|
#: src/Admin/AdminController.php:1275 src/Admin/AdminController.php:1419
|
||||||
#: src/Admin/AdminController.php:1449
|
#: src/Admin/AdminController.php:1460
|
||||||
msgid "Revoke"
|
msgid "Revoke"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1265 src/Admin/AdminController.php:1450
|
#: src/Admin/AdminController.php:1276 src/Admin/AdminController.php:1461
|
||||||
msgid "Extend 30 days"
|
msgid "Extend 30 days"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1266 src/Admin/AdminController.php:1451
|
#: src/Admin/AdminController.php:1277 src/Admin/AdminController.php:1462
|
||||||
msgid "Extend 90 days"
|
msgid "Extend 90 days"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1267 src/Admin/AdminController.php:1452
|
#: src/Admin/AdminController.php:1278 src/Admin/AdminController.php:1463
|
||||||
msgid "Extend 1 year"
|
msgid "Extend 1 year"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1268 src/Admin/AdminController.php:1417
|
#: src/Admin/AdminController.php:1279 src/Admin/AdminController.php:1428
|
||||||
#: src/Admin/AdminController.php:1453 src/Admin/VersionAdminController.php:191
|
#: src/Admin/AdminController.php:1464 src/Admin/VersionAdminController.php:191
|
||||||
#: src/Admin/VersionAdminController.php:422
|
#: src/Admin/VersionAdminController.php:422
|
||||||
msgid "Delete"
|
msgid "Delete"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1270 src/Admin/AdminController.php:1455
|
#: src/Admin/AdminController.php:1281 src/Admin/AdminController.php:1466
|
||||||
msgid "Apply"
|
msgid "Apply"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1282 src/Admin/AdminController.php:1433
|
#: src/Admin/AdminController.php:1293 src/Admin/AdminController.php:1444
|
||||||
#: src/Email/LicenseExpirationEmail.php:104
|
#: src/Email/LicenseExpirationEmail.php:104
|
||||||
#: src/Email/LicenseExpiredEmail.php:96
|
#: src/Email/LicenseExpiredEmail.php:96
|
||||||
msgid "Customer"
|
msgid "Customer"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1285 src/Admin/AdminController.php:1436
|
#: src/Admin/AdminController.php:1296 src/Admin/AdminController.php:1447
|
||||||
msgid "Created"
|
msgid "Created"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1293
|
#: src/Admin/AdminController.php:1304
|
||||||
msgid "No licenses found."
|
msgid "No licenses found."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1303 src/Frontend/AccountController.php:194
|
#: src/Admin/AdminController.php:1314 src/Frontend/AccountController.php:194
|
||||||
msgid "Copy to clipboard"
|
msgid "Copy to clipboard"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1369
|
#: src/Admin/AdminController.php:1380
|
||||||
msgid "Leave empty for lifetime"
|
msgid "Leave empty for lifetime"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1372 src/Admin/AdminController.php:1401
|
#: src/Admin/AdminController.php:1383 src/Admin/AdminController.php:1412
|
||||||
msgid "Set to lifetime"
|
msgid "Set to lifetime"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1382
|
#: src/Admin/AdminController.php:1393
|
||||||
msgid "Test license against API"
|
msgid "Test license against API"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1382
|
#: src/Admin/AdminController.php:1393
|
||||||
msgid "Test"
|
msgid "Test"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1389 src/Frontend/AccountController.php:207
|
#: src/Admin/AdminController.php:1400 src/Frontend/AccountController.php:207
|
||||||
msgid "Transfer to new domain"
|
msgid "Transfer to new domain"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1389 src/Frontend/AccountController.php:209
|
#: src/Admin/AdminController.php:1400 src/Frontend/AccountController.php:209
|
||||||
msgid "Transfer"
|
msgid "Transfer"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1395
|
#: src/Admin/AdminController.php:1406
|
||||||
msgid "Extend by 30 days"
|
msgid "Extend by 30 days"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1407
|
#: src/Admin/AdminController.php:1418
|
||||||
msgid "Are you sure?"
|
msgid "Are you sure?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1416
|
#: src/Admin/AdminController.php:1427
|
||||||
msgid "Are you sure you want to delete this license?"
|
msgid "Are you sure you want to delete this license?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1476
|
#: src/Admin/AdminController.php:1487
|
||||||
msgid "License Validation Test"
|
msgid "License Validation Test"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1491
|
#: src/Admin/AdminController.php:1502
|
||||||
msgid "Testing license..."
|
msgid "Testing license..."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1497 src/Frontend/AccountController.php:249
|
#: src/Admin/AdminController.php:1508 src/Frontend/AccountController.php:249
|
||||||
msgid "Close"
|
msgid "Close"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1506 src/Frontend/AccountController.php:250
|
#: src/Admin/AdminController.php:1517 src/Frontend/AccountController.php:250
|
||||||
msgid "Transfer License to New Domain"
|
msgid "Transfer License to New Domain"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1513 src/Frontend/AccountController.php:255
|
#: src/Admin/AdminController.php:1524 src/Frontend/AccountController.php:255
|
||||||
msgid "Current Domain"
|
msgid "Current Domain"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1517 src/Frontend/AccountController.php:260
|
#: src/Admin/AdminController.php:1528 src/Frontend/AccountController.php:260
|
||||||
msgid "New Domain"
|
msgid "New Domain"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1520 src/Frontend/AccountController.php:264
|
#: src/Admin/AdminController.php:1531 src/Frontend/AccountController.php:264
|
||||||
msgid "Enter the new domain without http:// or www."
|
msgid "Enter the new domain without http:// or www."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1525 src/Frontend/AccountController.php:269
|
#: src/Admin/AdminController.php:1536 src/Frontend/AccountController.php:269
|
||||||
msgid "Transfer License"
|
msgid "Transfer License"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1595
|
#: src/Admin/AdminController.php:1606
|
||||||
msgid "License is VALID"
|
msgid "License is VALID"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1598 src/Admin/VersionAdminController.php:81
|
#: src/Admin/AdminController.php:1609 src/Admin/VersionAdminController.php:81
|
||||||
#: src/Admin/VersionAdminController.php:136
|
#: src/Admin/VersionAdminController.php:136
|
||||||
msgid "Version"
|
msgid "Version"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1606
|
#: src/Admin/AdminController.php:1617
|
||||||
msgid "License is INVALID"
|
msgid "License is INVALID"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1608
|
#: src/Admin/AdminController.php:1619
|
||||||
msgid "Error Code"
|
msgid "Error Code"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1609
|
#: src/Admin/AdminController.php:1620
|
||||||
msgid "Message"
|
msgid "Message"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1622
|
#: src/Admin/AdminController.php:1633
|
||||||
msgid "Failed to test license. Please try again."
|
msgid "Failed to test license. Please try again."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1660 src/Admin/AdminController.php:1753
|
#: src/Admin/AdminController.php:1671 src/Admin/AdminController.php:1764
|
||||||
msgid "Import Licenses"
|
msgid "Import Licenses"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1662
|
#: src/Admin/AdminController.php:1673
|
||||||
msgid "Back to Licenses"
|
msgid "Back to Licenses"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1672
|
#: src/Admin/AdminController.php:1683
|
||||||
msgid "Error uploading file. Please try again."
|
msgid "Error uploading file. Please try again."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1675
|
#: src/Admin/AdminController.php:1686
|
||||||
msgid "Invalid file type. Please upload a CSV file."
|
msgid "Invalid file type. Please upload a CSV file."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1678
|
#: src/Admin/AdminController.php:1689
|
||||||
msgid "Error reading file. Please check the file format."
|
msgid "Error reading file. Please check the file format."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1681
|
#: src/Admin/AdminController.php:1692
|
||||||
msgid "An error occurred during import."
|
msgid "An error occurred during import."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1689
|
#: src/Admin/AdminController.php:1700
|
||||||
msgid "Import Licenses from CSV"
|
msgid "Import Licenses from CSV"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1692
|
#: src/Admin/AdminController.php:1703
|
||||||
msgid ""
|
msgid ""
|
||||||
"Upload a CSV file to import licenses. You can use the exported CSV format or "
|
"Upload a CSV file to import licenses. You can use the exported CSV format or "
|
||||||
"a simplified format."
|
"a simplified format."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1695
|
#: src/Admin/AdminController.php:1706
|
||||||
msgid "CSV Format"
|
msgid "CSV Format"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1697
|
#: src/Admin/AdminController.php:1708
|
||||||
msgid "The CSV file should contain the following columns:"
|
msgid "The CSV file should contain the following columns:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1701
|
#: src/Admin/AdminController.php:1712
|
||||||
msgid "Full Format (from Export):"
|
msgid "Full Format (from Export):"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1704
|
#: src/Admin/AdminController.php:1715
|
||||||
msgid "Simplified Format:"
|
msgid "Simplified Format:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1709
|
#: src/Admin/AdminController.php:1720
|
||||||
msgid "Notes:"
|
msgid "Notes:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1710
|
#: src/Admin/AdminController.php:1721
|
||||||
msgid "Leave License Key empty to auto-generate."
|
msgid "Leave License Key empty to auto-generate."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1711
|
#: src/Admin/AdminController.php:1722
|
||||||
msgid "Status can be: active, inactive, expired, revoked (defaults to active)."
|
msgid "Status can be: active, inactive, expired, revoked (defaults to active)."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1712
|
#: src/Admin/AdminController.php:1723
|
||||||
msgid "Expires At should be in YYYY-MM-DD format or \"Lifetime\"."
|
msgid "Expires At should be in YYYY-MM-DD format or \"Lifetime\"."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1724
|
#: src/Admin/AdminController.php:1735
|
||||||
msgid "CSV File"
|
msgid "CSV File"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1728
|
#: src/Admin/AdminController.php:1739
|
||||||
msgid "Select a CSV file to import."
|
msgid "Select a CSV file to import."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1732
|
#: src/Admin/AdminController.php:1743
|
||||||
msgid "Options"
|
msgid "Options"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1736
|
#: src/Admin/AdminController.php:1747
|
||||||
msgid "Skip first row (header row)"
|
msgid "Skip first row (header row)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1741
|
#: src/Admin/AdminController.php:1752
|
||||||
msgid "Update existing licenses (by license key)"
|
msgid "Update existing licenses (by license key)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1744
|
#: src/Admin/AdminController.php:1755
|
||||||
msgid ""
|
msgid ""
|
||||||
"If enabled, licenses with matching keys will be updated instead of skipped."
|
"If enabled, licenses with matching keys will be updated instead of skipped."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1771
|
#: src/Admin/AdminController.php:1782
|
||||||
msgid "License"
|
msgid "License"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Admin/AdminController.php:1830
|
#: src/Admin/AdminController.php:1841
|
||||||
msgid "No domain specified"
|
msgid "No domain specified"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -1171,28 +1183,28 @@ msgstr ""
|
|||||||
msgid "Too many requests. Please try again later."
|
msgid "Too many requests. Please try again later."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Api/RestApiController.php:222 src/Api/RestApiController.php:255
|
#: src/Api/RestApiController.php:345 src/Api/RestApiController.php:378
|
||||||
#: src/License/LicenseManager.php:357
|
#: src/License/LicenseManager.php:357
|
||||||
msgid "License key not found."
|
msgid "License key not found."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Api/RestApiController.php:263
|
#: src/Api/RestApiController.php:386
|
||||||
msgid "This license is not valid."
|
msgid "This license is not valid."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Api/RestApiController.php:273
|
#: src/Api/RestApiController.php:396
|
||||||
msgid "License is already activated for this domain."
|
msgid "License is already activated for this domain."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Api/RestApiController.php:282
|
#: src/Api/RestApiController.php:405
|
||||||
msgid "Maximum number of activations reached."
|
msgid "Maximum number of activations reached."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Api/RestApiController.php:293
|
#: src/Api/RestApiController.php:416
|
||||||
msgid "Failed to activate license."
|
msgid "Failed to activate license."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Api/RestApiController.php:299
|
#: src/Api/RestApiController.php:422
|
||||||
msgid "License activated successfully."
|
msgid "License activated successfully."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -1238,6 +1250,14 @@ msgstr ""
|
|||||||
msgid "Domain for license activation"
|
msgid "Domain for license activation"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/License/PluginLicenseChecker.php:117
|
||||||
|
msgid "License settings not configured."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/License/PluginLicenseChecker.php:153
|
||||||
|
msgid "Could not connect to license server."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/License/LicenseManager.php:366
|
#: src/License/LicenseManager.php:366
|
||||||
msgid "This license has been revoked."
|
msgid "This license has been revoked."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -1260,18 +1280,11 @@ msgstr ""
|
|||||||
msgid "Unknown Product"
|
msgid "Unknown Product"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/License/PluginLicenseChecker.php:117
|
|
||||||
msgid "License settings not configured."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/License/PluginLicenseChecker.php:153
|
|
||||||
msgid "Could not connect to license server."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/Product/VersionManager.php:166
|
#: src/Product/VersionManager.php:166
|
||||||
msgid "Attachment file not found."
|
msgid "Attachment file not found."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#. translators: 1: provided hash, 2: calculated hash
|
||||||
#: src/Product/VersionManager.php:177
|
#: src/Product/VersionManager.php:177
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "File checksum does not match. Expected: %1$s, Got: %2$s"
|
msgid "File checksum does not match. Expected: %1$s, Got: %2$s"
|
||||||
@@ -1290,6 +1303,7 @@ msgstr ""
|
|||||||
msgid "%d days"
|
msgid "%d days"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#. translators: %s: URL to settings page
|
||||||
#: src/Product/LicensedProductType.php:119
|
#: src/Product/LicensedProductType.php:119
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "Leave fields empty to use default settings from %s."
|
msgid "Leave fields empty to use default settings from %s."
|
||||||
@@ -1303,6 +1317,7 @@ msgstr ""
|
|||||||
msgid "Max Activations"
|
msgid "Max Activations"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#. translators: %d: default max activations value
|
||||||
#: src/Product/LicensedProductType.php:131
|
#: src/Product/LicensedProductType.php:131
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "Maximum number of domain activations per license. Default: %d"
|
msgid "Maximum number of domain activations per license. Default: %d"
|
||||||
@@ -1312,6 +1327,7 @@ msgstr ""
|
|||||||
msgid "License Validity (Days)"
|
msgid "License Validity (Days)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#. translators: %s: default validity value
|
||||||
#: src/Product/LicensedProductType.php:149
|
#: src/Product/LicensedProductType.php:149
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "Number of days the license is valid. Leave empty for default (%s)."
|
msgid "Number of days the license is valid. Leave empty for default (%s)."
|
||||||
@@ -1321,6 +1337,7 @@ msgstr ""
|
|||||||
msgid "Bind to Major Version"
|
msgid "Bind to Major Version"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#. translators: %s: default bind to version value (Yes/No)
|
||||||
#: src/Product/LicensedProductType.php:167
|
#: src/Product/LicensedProductType.php:167
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid ""
|
msgid ""
|
||||||
@@ -1400,11 +1417,11 @@ msgid "You have no licenses yet."
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Frontend/AccountController.php:190
|
#: src/Frontend/AccountController.php:190
|
||||||
|
#: src/Email/LicenseExpirationEmail.php:207
|
||||||
|
#: src/Email/LicenseExpirationEmail.php:270
|
||||||
#: src/Email/LicenseEmailController.php:212
|
#: src/Email/LicenseEmailController.php:212
|
||||||
#: src/Email/LicenseEmailController.php:216
|
#: src/Email/LicenseEmailController.php:216
|
||||||
#: src/Email/LicenseEmailController.php:320
|
#: src/Email/LicenseEmailController.php:320
|
||||||
#: src/Email/LicenseExpirationEmail.php:207
|
|
||||||
#: src/Email/LicenseExpirationEmail.php:270
|
|
||||||
#: src/Email/LicenseExpiredEmail.php:191 src/Email/LicenseExpiredEmail.php:256
|
#: src/Email/LicenseExpiredEmail.php:191 src/Email/LicenseExpiredEmail.php:256
|
||||||
msgid "License Key:"
|
msgid "License Key:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -1417,9 +1434,9 @@ msgid "Domain:"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Frontend/AccountController.php:213
|
#: src/Frontend/AccountController.php:213
|
||||||
#: src/Email/LicenseEmailController.php:323
|
|
||||||
#: src/Email/LicenseExpirationEmail.php:219
|
#: src/Email/LicenseExpirationEmail.php:219
|
||||||
#: src/Email/LicenseExpirationEmail.php:272
|
#: src/Email/LicenseExpirationEmail.php:272
|
||||||
|
#: src/Email/LicenseEmailController.php:323
|
||||||
msgid "Expires:"
|
msgid "Expires:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -1481,24 +1498,6 @@ msgstr ""
|
|||||||
msgid "Failed to transfer license. Please try again."
|
msgid "Failed to transfer license. Please try again."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Email/LicenseEmailController.php:256
|
|
||||||
msgid "Your License Keys"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/Email/LicenseEmailController.php:260
|
|
||||||
#: src/Email/LicenseEmailController.php:315
|
|
||||||
msgid "Licensed Domain:"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/Email/LicenseEmailController.php:296
|
|
||||||
#: src/Email/LicenseEmailController.php:330
|
|
||||||
msgid "You can also view your licenses in your account under \"Licenses\"."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/Email/LicenseEmailController.php:311
|
|
||||||
msgid "YOUR LICENSE KEYS"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/Email/LicenseExpirationEmail.php:55
|
#: src/Email/LicenseExpirationEmail.php:55
|
||||||
msgid "License Expiration Warning"
|
msgid "License Expiration Warning"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -1561,6 +1560,7 @@ msgid ""
|
|||||||
"expiration date."
|
"expiration date."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#. translators: %s: list of placeholders
|
||||||
#: src/Email/LicenseExpirationEmail.php:301
|
#: src/Email/LicenseExpirationEmail.php:301
|
||||||
#: src/Email/LicenseExpiredEmail.php:288
|
#: src/Email/LicenseExpiredEmail.php:288
|
||||||
#, php-format
|
#, php-format
|
||||||
@@ -1607,6 +1607,24 @@ msgstr ""
|
|||||||
msgid "Choose which format of email to send."
|
msgid "Choose which format of email to send."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/Email/LicenseEmailController.php:256
|
||||||
|
msgid "Your License Keys"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/Email/LicenseEmailController.php:260
|
||||||
|
#: src/Email/LicenseEmailController.php:315
|
||||||
|
msgid "Licensed Domain:"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/Email/LicenseEmailController.php:296
|
||||||
|
#: src/Email/LicenseEmailController.php:330
|
||||||
|
msgid "You can also view your licenses in your account under \"Licenses\"."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/Email/LicenseEmailController.php:311
|
||||||
|
msgid "YOUR LICENSE KEYS"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/Email/LicenseExpiredEmail.php:50 src/Email/LicenseExpiredEmail.php:76
|
#: src/Email/LicenseExpiredEmail.php:50 src/Email/LicenseExpiredEmail.php:76
|
||||||
msgid "License Expired"
|
msgid "License Expired"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -1648,19 +1666,20 @@ msgstr ""
|
|||||||
msgid "To continue using this product, please renew your license."
|
msgid "To continue using this product, please renew your license."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Plugin.php:257
|
#: src/Plugin.php:258
|
||||||
msgid "WC Licensed Product"
|
msgid "WC Licensed Product"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Plugin.php:258
|
#: src/Plugin.php:259
|
||||||
msgid ""
|
msgid ""
|
||||||
"Plugin license is not configured or invalid. Frontend features are disabled."
|
"Plugin license is not configured or invalid. Frontend features are disabled."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Plugin.php:259
|
#: src/Plugin.php:260
|
||||||
msgid "Configure License"
|
msgid "Configure License"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#. translators: %s: WooCommerce plugin name
|
||||||
#: wc-licensed-product.php:61
|
#: wc-licensed-product.php:61
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "%s requires WooCommerce to be installed and active."
|
msgid "%s requires WooCommerce to be installed and active."
|
||||||
|
|||||||
@@ -572,6 +572,11 @@ final class AdminController
|
|||||||
*/
|
*/
|
||||||
private function handleCsvExport(): void
|
private function handleCsvExport(): void
|
||||||
{
|
{
|
||||||
|
// Verify nonce for CSRF protection
|
||||||
|
if (!wp_verify_nonce($_GET['_wpnonce'] ?? '', 'export_licenses_csv')) {
|
||||||
|
wp_die(__('Security check failed.', 'wc-licensed-product'));
|
||||||
|
}
|
||||||
|
|
||||||
if (!current_user_can('manage_woocommerce')) {
|
if (!current_user_can('manage_woocommerce')) {
|
||||||
wp_die(__('You do not have permission to export licenses.', 'wc-licensed-product'));
|
wp_die(__('You do not have permission to export licenses.', 'wc-licensed-product'));
|
||||||
}
|
}
|
||||||
@@ -954,7 +959,7 @@ final class AdminController
|
|||||||
<span class="dashicons dashicons-admin-network"></span>
|
<span class="dashicons dashicons-admin-network"></span>
|
||||||
<?php esc_html_e('Manage Licenses', 'wc-licensed-product'); ?>
|
<?php esc_html_e('Manage Licenses', 'wc-licensed-product'); ?>
|
||||||
</a>
|
</a>
|
||||||
<a href="<?php echo esc_url(admin_url('admin.php?page=wc-licenses&action=export_csv')); ?>" class="button">
|
<a href="<?php echo esc_url(wp_nonce_url(admin_url('admin.php?page=wc-licenses&action=export_csv'), 'export_licenses_csv')); ?>" class="button">
|
||||||
<span class="dashicons dashicons-download"></span>
|
<span class="dashicons dashicons-download"></span>
|
||||||
<?php esc_html_e('Export to CSV', 'wc-licensed-product'); ?>
|
<?php esc_html_e('Export to CSV', 'wc-licensed-product'); ?>
|
||||||
</a>
|
</a>
|
||||||
@@ -1048,6 +1053,12 @@ final class AdminController
|
|||||||
$this->twig->addFunction(new \Twig\TwigFunction('transfer_nonce', function (): string {
|
$this->twig->addFunction(new \Twig\TwigFunction('transfer_nonce', function (): string {
|
||||||
return wp_create_nonce('transfer_license');
|
return wp_create_nonce('transfer_license');
|
||||||
}));
|
}));
|
||||||
|
$this->twig->addFunction(new \Twig\TwigFunction('export_csv_url', function (): string {
|
||||||
|
return wp_nonce_url(
|
||||||
|
admin_url('admin.php?page=wc-licenses&action=export_csv'),
|
||||||
|
'export_licenses_csv'
|
||||||
|
);
|
||||||
|
}));
|
||||||
|
|
||||||
try {
|
try {
|
||||||
echo $this->twig->render('admin/licenses.html.twig', [
|
echo $this->twig->render('admin/licenses.html.twig', [
|
||||||
@@ -1187,7 +1198,7 @@ final class AdminController
|
|||||||
?>
|
?>
|
||||||
<div class="wrap">
|
<div class="wrap">
|
||||||
<h1 class="wp-heading-inline"><?php esc_html_e('Licenses', 'wc-licensed-product'); ?></h1>
|
<h1 class="wp-heading-inline"><?php esc_html_e('Licenses', 'wc-licensed-product'); ?></h1>
|
||||||
<a href="<?php echo esc_url(admin_url('admin.php?page=wc-licenses&action=export_csv')); ?>" class="page-title-action">
|
<a href="<?php echo esc_url(wp_nonce_url(admin_url('admin.php?page=wc-licenses&action=export_csv'), 'export_licenses_csv')); ?>" class="page-title-action">
|
||||||
<span class="dashicons dashicons-download" style="vertical-align: middle;"></span>
|
<span class="dashicons dashicons-download" style="vertical-align: middle;"></span>
|
||||||
<?php esc_html_e('Export CSV', 'wc-licensed-product'); ?>
|
<?php esc_html_e('Export CSV', 'wc-licensed-product'); ?>
|
||||||
</a>
|
</a>
|
||||||
|
|||||||
@@ -94,8 +94,8 @@ final class ResponseSigner
|
|||||||
$timestamp = time();
|
$timestamp = time();
|
||||||
$signingKey = $this->deriveKey($licenseKey);
|
$signingKey = $this->deriveKey($licenseKey);
|
||||||
|
|
||||||
// Sort keys for consistent ordering
|
// Recursively sort keys for consistent ordering (required by client implementation)
|
||||||
ksort($data);
|
$data = $this->recursiveKeySort($data);
|
||||||
|
|
||||||
// Build signature payload
|
// Build signature payload
|
||||||
$payload = $timestamp . ':' . json_encode(
|
$payload = $timestamp . ':' . json_encode(
|
||||||
@@ -109,6 +109,33 @@ final class ResponseSigner
|
|||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Recursively sort array keys alphabetically
|
||||||
|
*
|
||||||
|
* @param mixed $data The data to sort
|
||||||
|
* @return mixed The sorted data
|
||||||
|
*/
|
||||||
|
private function recursiveKeySort(mixed $data): mixed
|
||||||
|
{
|
||||||
|
if (!is_array($data)) {
|
||||||
|
return $data;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check if array is associative (has string keys)
|
||||||
|
$isAssociative = array_keys($data) !== range(0, count($data) - 1);
|
||||||
|
|
||||||
|
if ($isAssociative) {
|
||||||
|
ksort($data);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Recursively sort nested arrays
|
||||||
|
foreach ($data as $key => $value) {
|
||||||
|
$data[$key] = $this->recursiveKeySort($value);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $data;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Derive a unique signing key for a license
|
* Derive a unique signing key for a license
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -95,29 +95,152 @@ final class RestApiController
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Get client IP address
|
* Get client IP address
|
||||||
|
*
|
||||||
|
* Security note: Only trust proxy headers when explicitly configured.
|
||||||
|
* Set WC_LICENSE_TRUSTED_PROXIES constant or configure trusted_proxies
|
||||||
|
* in wp-config.php to enable proxy header support.
|
||||||
|
*
|
||||||
|
* @return string Client IP address
|
||||||
*/
|
*/
|
||||||
private function getClientIp(): string
|
private function getClientIp(): string
|
||||||
{
|
{
|
||||||
|
// Get the direct connection IP first
|
||||||
|
$remoteAddr = $_SERVER['REMOTE_ADDR'] ?? '0.0.0.0';
|
||||||
|
|
||||||
|
// Only check proxy headers if we're behind a trusted proxy
|
||||||
|
if ($this->isTrustedProxy($remoteAddr)) {
|
||||||
|
// Check headers in order of trust preference
|
||||||
$headers = [
|
$headers = [
|
||||||
'HTTP_CF_CONNECTING_IP', // Cloudflare
|
'HTTP_CF_CONNECTING_IP', // Cloudflare
|
||||||
'HTTP_X_FORWARDED_FOR',
|
'HTTP_X_FORWARDED_FOR',
|
||||||
'HTTP_X_REAL_IP',
|
'HTTP_X_REAL_IP',
|
||||||
'REMOTE_ADDR',
|
|
||||||
];
|
];
|
||||||
|
|
||||||
foreach ($headers as $header) {
|
foreach ($headers as $header) {
|
||||||
if (!empty($_SERVER[$header])) {
|
if (!empty($_SERVER[$header])) {
|
||||||
$ips = explode(',', $_SERVER[$header]);
|
$ips = explode(',', $_SERVER[$header]);
|
||||||
$ip = trim($ips[0]);
|
$ip = trim($ips[0]);
|
||||||
if (filter_var($ip, FILTER_VALIDATE_IP)) {
|
if (filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE)) {
|
||||||
return $ip;
|
return $ip;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Validate and return direct connection IP
|
||||||
|
if (filter_var($remoteAddr, FILTER_VALIDATE_IP)) {
|
||||||
|
return $remoteAddr;
|
||||||
|
}
|
||||||
|
|
||||||
return '0.0.0.0';
|
return '0.0.0.0';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check if the given IP is a trusted proxy
|
||||||
|
*
|
||||||
|
* @param string $ip The IP address to check
|
||||||
|
* @return bool Whether the IP is a trusted proxy
|
||||||
|
*/
|
||||||
|
private function isTrustedProxy(string $ip): bool
|
||||||
|
{
|
||||||
|
// Check if trusted proxies are configured
|
||||||
|
if (!defined('WC_LICENSE_TRUSTED_PROXIES')) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
$trustedProxies = WC_LICENSE_TRUSTED_PROXIES;
|
||||||
|
|
||||||
|
// Handle string constant (comma-separated list)
|
||||||
|
if (is_string($trustedProxies)) {
|
||||||
|
$trustedProxies = array_map('trim', explode(',', $trustedProxies));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!is_array($trustedProxies)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check for special keywords
|
||||||
|
if (in_array('CLOUDFLARE', $trustedProxies, true)) {
|
||||||
|
// Cloudflare IP ranges (simplified - in production, fetch from Cloudflare API)
|
||||||
|
if ($this->isCloudflareIp($ip)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check direct IP match or CIDR notation
|
||||||
|
foreach ($trustedProxies as $proxy) {
|
||||||
|
if ($proxy === $ip) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Support CIDR notation
|
||||||
|
if (str_contains($proxy, '/') && $this->ipMatchesCidr($ip, $proxy)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check if IP is in Cloudflare range
|
||||||
|
*
|
||||||
|
* @param string $ip The IP to check
|
||||||
|
* @return bool Whether IP belongs to Cloudflare
|
||||||
|
*/
|
||||||
|
private function isCloudflareIp(string $ip): bool
|
||||||
|
{
|
||||||
|
// Cloudflare IPv4 ranges (as of 2024)
|
||||||
|
$cloudflareRanges = [
|
||||||
|
'173.245.48.0/20',
|
||||||
|
'103.21.244.0/22',
|
||||||
|
'103.22.200.0/22',
|
||||||
|
'103.31.4.0/22',
|
||||||
|
'141.101.64.0/18',
|
||||||
|
'108.162.192.0/18',
|
||||||
|
'190.93.240.0/20',
|
||||||
|
'188.114.96.0/20',
|
||||||
|
'197.234.240.0/22',
|
||||||
|
'198.41.128.0/17',
|
||||||
|
'162.158.0.0/15',
|
||||||
|
'104.16.0.0/13',
|
||||||
|
'104.24.0.0/14',
|
||||||
|
'172.64.0.0/13',
|
||||||
|
'131.0.72.0/22',
|
||||||
|
];
|
||||||
|
|
||||||
|
foreach ($cloudflareRanges as $range) {
|
||||||
|
if ($this->ipMatchesCidr($ip, $range)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check if an IP matches a CIDR range
|
||||||
|
*
|
||||||
|
* @param string $ip The IP to check
|
||||||
|
* @param string $cidr The CIDR range (e.g., "192.168.1.0/24")
|
||||||
|
* @return bool Whether the IP matches the CIDR range
|
||||||
|
*/
|
||||||
|
private function ipMatchesCidr(string $ip, string $cidr): bool
|
||||||
|
{
|
||||||
|
[$subnet, $bits] = explode('/', $cidr);
|
||||||
|
|
||||||
|
if (!filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4) ||
|
||||||
|
!filter_var($subnet, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
$ipLong = ip2long($ip);
|
||||||
|
$subnetLong = ip2long($subnet);
|
||||||
|
$mask = -1 << (32 - (int) $bits);
|
||||||
|
|
||||||
|
return ($ipLong & $mask) === ($subnetLong & $mask);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Register REST API routes
|
* Register REST API routes
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -98,6 +98,7 @@ final class Plugin
|
|||||||
$this->twig = new Environment($loader, [
|
$this->twig = new Environment($loader, [
|
||||||
'cache' => WP_CONTENT_DIR . '/cache/wc-licensed-product/twig',
|
'cache' => WP_CONTENT_DIR . '/cache/wc-licensed-product/twig',
|
||||||
'auto_reload' => true, // Always check for template changes
|
'auto_reload' => true, // Always check for template changes
|
||||||
|
'autoescape' => 'html', // Explicitly enable HTML autoescape for XSS protection
|
||||||
]);
|
]);
|
||||||
|
|
||||||
// Add WordPress functions as Twig functions
|
// Add WordPress functions as Twig functions
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<div class="wrap">
|
<div class="wrap">
|
||||||
<h1 class="wp-heading-inline">{{ __('Licenses') }}</h1>
|
<h1 class="wp-heading-inline">{{ __('Licenses') }}</h1>
|
||||||
<a href="{{ admin_url }}?action=export_csv" class="page-title-action">
|
<a href="{{ export_csv_url() }}" class="page-title-action">
|
||||||
<span class="dashicons dashicons-download" style="vertical-align: middle;"></span>
|
<span class="dashicons dashicons-download" style="vertical-align: middle;"></span>
|
||||||
{{ __('Export CSV') }}
|
{{ __('Export CSV') }}
|
||||||
</a>
|
</a>
|
||||||
@@ -143,8 +143,8 @@
|
|||||||
</td>
|
</td>
|
||||||
<td class="wclp-editable-cell" data-field="status" data-license-id="{{ item.license.id }}">
|
<td class="wclp-editable-cell" data-field="status" data-license-id="{{ item.license.id }}">
|
||||||
<span class="wclp-display-value">
|
<span class="wclp-display-value">
|
||||||
<span class="license-status license-status-{{ item.license.status }}">
|
<span class="license-status license-status-{{ esc_attr(item.license.status) }}">
|
||||||
{{ item.license.status|capitalize }}
|
{{ esc_html(item.license.status)|capitalize }}
|
||||||
</span>
|
</span>
|
||||||
</span>
|
</span>
|
||||||
<button type="button" class="wclp-edit-btn button-link" title="{{ __('Edit') }}">
|
<button type="button" class="wclp-edit-btn button-link" title="{{ __('Edit') }}">
|
||||||
|
|||||||
@@ -12,8 +12,8 @@
|
|||||||
{{ esc_html(item.product_name) }}
|
{{ esc_html(item.product_name) }}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</h3>
|
</h3>
|
||||||
<span class="license-status license-status-{{ item.license.status }}">
|
<span class="license-status license-status-{{ esc_attr(item.license.status) }}">
|
||||||
{{ item.license.status|capitalize }}
|
{{ esc_html(item.license.status)|capitalize }}
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
* Plugin Name: WooCommerce Licensed Product
|
* Plugin Name: WooCommerce Licensed Product
|
||||||
* Plugin URI: https://src.bundespruefstelle.ch/magdev/wc-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.
|
* Description: WooCommerce plugin to sell software products using license keys with domain-based validation.
|
||||||
* Version: 0.3.5
|
* Version: 0.3.6
|
||||||
* Author: Marco Graetsch
|
* Author: Marco Graetsch
|
||||||
* Author URI: https://src.bundespruefstelle.ch/magdev
|
* Author URI: https://src.bundespruefstelle.ch/magdev
|
||||||
* License: GPL-2.0-or-later
|
* License: GPL-2.0-or-later
|
||||||
@@ -28,7 +28,7 @@ if (!defined('ABSPATH')) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Plugin constants
|
// Plugin constants
|
||||||
define('WC_LICENSED_PRODUCT_VERSION', '0.3.5');
|
define('WC_LICENSED_PRODUCT_VERSION', '0.3.6');
|
||||||
define('WC_LICENSED_PRODUCT_PLUGIN_FILE', __FILE__);
|
define('WC_LICENSED_PRODUCT_PLUGIN_FILE', __FILE__);
|
||||||
define('WC_LICENSED_PRODUCT_PLUGIN_DIR', plugin_dir_path(__FILE__));
|
define('WC_LICENSED_PRODUCT_PLUGIN_DIR', plugin_dir_path(__FILE__));
|
||||||
define('WC_LICENSED_PRODUCT_PLUGIN_URL', plugin_dir_url(__FILE__));
|
define('WC_LICENSED_PRODUCT_PLUGIN_URL', plugin_dir_url(__FILE__));
|
||||||
|
|||||||
Reference in New Issue
Block a user