You've already forked wc-licensed-product
Compare commits
6 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| f7490de69b | |||
| d2bf9aa330 | |||
| d00a2235ef | |||
| 27c9a22739 | |||
| fc2fe70576 | |||
| f5a1e55710 |
37
CHANGELOG.md
37
CHANGELOG.md
@@ -7,6 +7,39 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
||||
|
||||
## [Unreleased]
|
||||
|
||||
## [0.2.2] - 2026-01-22
|
||||
|
||||
### Added
|
||||
|
||||
- SHA256 checksum column in admin product versions table
|
||||
- File hash display in customer account downloads section
|
||||
- Visual indicators for file integrity verification
|
||||
|
||||
### Changed
|
||||
|
||||
- Checksum file upload field now styled consistently with package upload field
|
||||
- Download list items now show truncated hash with full hash on hover
|
||||
|
||||
### Technical Details
|
||||
|
||||
- ProductVersion `getFileHash()` method now exposed in admin and frontend views
|
||||
- Frontend CSS extended with `.download-hash` styles
|
||||
- Admin CSS extended with `.file-hash` styles
|
||||
|
||||
## [0.2.1] - 2026-01-22
|
||||
|
||||
### Changed
|
||||
|
||||
- SHA256 hash input changed from text field to file upload field
|
||||
- Checksum files (.sha256 or .txt) can now be uploaded directly
|
||||
- Improved user experience for version integrity verification
|
||||
|
||||
### Technical Details
|
||||
|
||||
- Added `readChecksumFile()` JavaScript function using FileReader API with Promise support
|
||||
- Checksum file format supports both "hash filename" and plain "hash" formats
|
||||
- Added localized error messages for checksum file validation
|
||||
|
||||
## [0.2.0] - 2026-01-22
|
||||
|
||||
### Added
|
||||
@@ -340,7 +373,9 @@ define('WC_LICENSE_SERVER_SECRET', 'your-secure-random-string-min-32-chars');
|
||||
- WordPress REST API integration
|
||||
- Custom WooCommerce product type extending WC_Product
|
||||
|
||||
[Unreleased]: https://src.bundespruefstelle.ch/magdev/wc-licensed-product/compare/v0.2.0...HEAD
|
||||
[Unreleased]: https://src.bundespruefstelle.ch/magdev/wc-licensed-product/compare/v0.2.2...HEAD
|
||||
[0.2.2]: https://src.bundespruefstelle.ch/magdev/wc-licensed-product/compare/v0.2.1...v0.2.2
|
||||
[0.2.1]: https://src.bundespruefstelle.ch/magdev/wc-licensed-product/compare/v0.2.0...v0.2.1
|
||||
[0.2.0]: https://src.bundespruefstelle.ch/magdev/wc-licensed-product/compare/v0.1.0...v0.2.0
|
||||
[0.1.0]: https://src.bundespruefstelle.ch/magdev/wc-licensed-product/compare/v0.0.11...v0.1.0
|
||||
[0.0.11]: https://src.bundespruefstelle.ch/magdev/wc-licensed-product/compare/v0.0.10...v0.0.11
|
||||
|
||||
@@ -34,9 +34,13 @@ This project is proudly **"vibe-coded"** using Claude.AI - the entire codebase w
|
||||
|
||||
### Known Bugs
|
||||
|
||||
No known bugs at the moment
|
||||
No known bugs at the moment.
|
||||
|
||||
No planned features at this time. See Session History for completed work.
|
||||
### Version 0.3.0
|
||||
|
||||
- Implement License check using the composer package `magdev/wc-licensed-product-client` located in the local folder `/home/magdev/workspaces/php/wc-licensed-product-client`
|
||||
- Add license configuration to the plugins settings page
|
||||
- Hide frontend parts if no valid license is provided
|
||||
|
||||
## Technical Stack
|
||||
|
||||
|
||||
@@ -43,6 +43,13 @@
|
||||
font-size: 0.9em;
|
||||
}
|
||||
|
||||
/* File Hash */
|
||||
code.file-hash {
|
||||
cursor: help;
|
||||
font-size: 0.85em;
|
||||
color: #666;
|
||||
}
|
||||
|
||||
/* License Product Tab */
|
||||
#woocommerce-product-data .show_if_licensed {
|
||||
display: block !important;
|
||||
|
||||
@@ -247,6 +247,30 @@
|
||||
margin-left: auto;
|
||||
}
|
||||
|
||||
.download-hash {
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
gap: 0.25em;
|
||||
font-size: 0.8em;
|
||||
color: #666;
|
||||
}
|
||||
|
||||
.download-hash .dashicons {
|
||||
font-size: 14px;
|
||||
width: 14px;
|
||||
height: 14px;
|
||||
color: #28a745;
|
||||
}
|
||||
|
||||
.download-hash code {
|
||||
font-family: 'SF Mono', Monaco, Consolas, monospace;
|
||||
background: #f5f5f5;
|
||||
padding: 0.2em 0.4em;
|
||||
border-radius: 3px;
|
||||
font-size: 0.9em;
|
||||
color: #666;
|
||||
}
|
||||
|
||||
/* Domain Field */
|
||||
#licensed-product-domain-field {
|
||||
margin-top: 2em;
|
||||
|
||||
@@ -23,6 +23,11 @@
|
||||
$('#upload-version-file-btn').on('click', this.openMediaUploader.bind(this));
|
||||
$('#remove-version-file-btn').on('click', this.removeSelectedFile);
|
||||
|
||||
// Checksum file events
|
||||
$('#select-checksum-file-btn').on('click', this.triggerChecksumFileSelect);
|
||||
$('#new_checksum_file').on('change', this.onChecksumFileSelected);
|
||||
$('#remove-checksum-file-btn').on('click', this.removeChecksumFile);
|
||||
|
||||
// Listen for product type changes
|
||||
$('#product-type').on('change', this.onProductTypeChange);
|
||||
|
||||
@@ -101,9 +106,72 @@
|
||||
$('#selected_file_name').text('');
|
||||
$('#remove-version-file-btn').hide();
|
||||
|
||||
// Hide and clear SHA256 hash field
|
||||
// Hide and clear checksum file field
|
||||
$('#sha256-hash-row').hide();
|
||||
$('#new_file_hash').val('');
|
||||
$('#new_checksum_file').val('');
|
||||
$('#selected_checksum_name').text('');
|
||||
$('#remove-checksum-file-btn').hide();
|
||||
},
|
||||
|
||||
/**
|
||||
* Trigger checksum file input click
|
||||
*/
|
||||
triggerChecksumFileSelect: function(e) {
|
||||
e.preventDefault();
|
||||
$('#new_checksum_file').trigger('click');
|
||||
},
|
||||
|
||||
/**
|
||||
* Handle checksum file selection
|
||||
*/
|
||||
onChecksumFileSelected: function(e) {
|
||||
var file = e.target.files[0];
|
||||
if (file) {
|
||||
$('#selected_checksum_name').text(file.name);
|
||||
$('#remove-checksum-file-btn').show();
|
||||
} else {
|
||||
$('#selected_checksum_name').text('');
|
||||
$('#remove-checksum-file-btn').hide();
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* Remove selected checksum file
|
||||
*/
|
||||
removeChecksumFile: function(e) {
|
||||
e.preventDefault();
|
||||
$('#new_checksum_file').val('');
|
||||
$('#selected_checksum_name').text('');
|
||||
$('#remove-checksum-file-btn').hide();
|
||||
},
|
||||
|
||||
/**
|
||||
* Read checksum from uploaded file
|
||||
* Supports formats: "hash filename" or just "hash"
|
||||
*/
|
||||
readChecksumFile: function(file) {
|
||||
return new Promise(function(resolve, reject) {
|
||||
if (!file) {
|
||||
resolve('');
|
||||
return;
|
||||
}
|
||||
|
||||
var reader = new FileReader();
|
||||
reader.onload = function(e) {
|
||||
var content = e.target.result.trim();
|
||||
// Extract hash from content (format: "hash filename" or just "hash")
|
||||
var match = content.match(/^([a-fA-F0-9]{64})/);
|
||||
if (match) {
|
||||
resolve(match[1].toLowerCase());
|
||||
} else {
|
||||
reject(new Error(wcLicensedProductVersions.strings.invalidChecksumFile || 'Invalid checksum file format'));
|
||||
}
|
||||
};
|
||||
reader.onerror = function() {
|
||||
reject(new Error(wcLicensedProductVersions.strings.checksumReadError || 'Failed to read checksum file'));
|
||||
};
|
||||
reader.readAsText(file);
|
||||
});
|
||||
},
|
||||
|
||||
/**
|
||||
@@ -134,13 +202,14 @@
|
||||
addVersion: function(e) {
|
||||
e.preventDefault();
|
||||
|
||||
var self = WCLicensedProductVersions;
|
||||
var $btn = $(this);
|
||||
var $spinner = $btn.siblings('.spinner');
|
||||
var productId = $btn.data('product-id');
|
||||
var version = $('#new_version').val().trim();
|
||||
var releaseNotes = $('#new_release_notes').val().trim();
|
||||
var attachmentId = $('#new_attachment_id').val();
|
||||
var fileHash = $('#new_file_hash').val().trim();
|
||||
var checksumFile = $('#new_checksum_file')[0].files[0];
|
||||
|
||||
// Validate version
|
||||
if (!version) {
|
||||
@@ -156,6 +225,8 @@
|
||||
$btn.prop('disabled', true);
|
||||
$spinner.addClass('is-active');
|
||||
|
||||
// Read checksum file if provided, then submit
|
||||
self.readChecksumFile(checksumFile).then(function(fileHash) {
|
||||
$.ajax({
|
||||
url: wcLicensedProductVersions.ajaxUrl,
|
||||
type: 'POST',
|
||||
@@ -183,7 +254,9 @@
|
||||
$('#selected_file_name').text('');
|
||||
$('#remove-version-file-btn').hide();
|
||||
$('#sha256-hash-row').hide();
|
||||
$('#new_file_hash').val('');
|
||||
$('#new_checksum_file').val('');
|
||||
$('#selected_checksum_name').text('');
|
||||
$('#remove-checksum-file-btn').hide();
|
||||
} else {
|
||||
alert(response.data.message || wcLicensedProductVersions.strings.error);
|
||||
}
|
||||
@@ -196,6 +269,11 @@
|
||||
$spinner.removeClass('is-active');
|
||||
}
|
||||
});
|
||||
}).catch(function(error) {
|
||||
alert(error.message);
|
||||
$btn.prop('disabled', false);
|
||||
$spinner.removeClass('is-active');
|
||||
});
|
||||
},
|
||||
|
||||
deleteVersion: function(e) {
|
||||
|
||||
Binary file not shown.
@@ -3,10 +3,10 @@
|
||||
# This file is distributed under the GPL-2.0-or-later.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: WC Licensed Product 0.2.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-01-22 11:52+0100\n"
|
||||
"PO-Revision-Date: 2026-01-21T00:00:00+00:00\n"
|
||||
"Project-Id-Version: WC Licensed Product 0.2.1\n"
|
||||
"Report-Msgid-Bugs-To: magdev3.0@gmail.com\n"
|
||||
"POT-Creation-Date: 2026-01-22 17:32+0100\n"
|
||||
"PO-Revision-Date: 2026-01-22T17:15:00+00:00\n"
|
||||
"Last-Translator: Marco Graetsch <magdev3.0@gmail.com>\n"
|
||||
"Language-Team: German (Switzerland) <de_CH@li.org>\n"
|
||||
"Language: de_CH\n"
|
||||
@@ -15,7 +15,6 @@ msgstr ""
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#. translators: %s: WooCommerce plugin name
|
||||
#: wc-licensed-product.php:61
|
||||
#, php-format
|
||||
msgid "%s requires WooCommerce to be installed and active."
|
||||
@@ -82,7 +81,7 @@ msgstr "Bearbeiten"
|
||||
#: src/Admin/AdminController.php:146 src/Admin/AdminController.php:1303
|
||||
#: src/Admin/AdminController.php:1323 src/Admin/AdminController.php:1344
|
||||
#: src/Admin/OrderLicenseController.php:185
|
||||
#: src/Frontend/AccountController.php:270
|
||||
#: src/Frontend/AccountController.php:271
|
||||
msgid "Cancel"
|
||||
msgstr "Abbrechen"
|
||||
|
||||
@@ -100,25 +99,25 @@ msgstr "Speichern"
|
||||
msgid "Lifetime"
|
||||
msgstr "Lebenslang"
|
||||
|
||||
#: src/Admin/AdminController.php:149 src/Frontend/AccountController.php:308
|
||||
#: src/Admin/AdminController.php:149 src/Frontend/AccountController.php:309
|
||||
msgid "Copied!"
|
||||
msgstr "Kopiert!"
|
||||
|
||||
#: src/Admin/AdminController.php:150 src/Frontend/AccountController.php:309
|
||||
#: src/Admin/AdminController.php:150 src/Frontend/AccountController.php:310
|
||||
msgid "Copy failed"
|
||||
msgstr "Kopieren fehlgeschlagen"
|
||||
|
||||
#: src/Admin/AdminController.php:153 src/Admin/AdminController.php:875
|
||||
#: src/Admin/AdminController.php:1194 src/Admin/AdminController.php:1317
|
||||
#: src/Admin/VersionAdminController.php:165
|
||||
#: src/Admin/VersionAdminController.php:381
|
||||
#: src/Admin/VersionAdminController.php:180
|
||||
#: src/Admin/VersionAdminController.php:409
|
||||
msgid "Active"
|
||||
msgstr "Aktiv"
|
||||
|
||||
#: src/Admin/AdminController.php:154 src/Admin/AdminController.php:882
|
||||
#: src/Admin/AdminController.php:1195 src/Admin/AdminController.php:1318
|
||||
#: src/Admin/VersionAdminController.php:165
|
||||
#: src/Admin/VersionAdminController.php:381
|
||||
#: src/Admin/VersionAdminController.php:180
|
||||
#: src/Admin/VersionAdminController.php:409
|
||||
msgid "Inactive"
|
||||
msgstr "Inaktiv"
|
||||
|
||||
@@ -136,9 +135,9 @@ msgstr "Widerrufen"
|
||||
#: src/Admin/AdminController.php:246 src/Admin/AdminController.php:298
|
||||
#: src/Admin/AdminController.php:336 src/Admin/OrderLicenseController.php:301
|
||||
#: src/Admin/OrderLicenseController.php:340
|
||||
#: src/Admin/VersionAdminController.php:240
|
||||
#: src/Admin/VersionAdminController.php:305
|
||||
#: src/Admin/VersionAdminController.php:331
|
||||
#: src/Admin/VersionAdminController.php:257
|
||||
#: src/Admin/VersionAdminController.php:326
|
||||
#: src/Admin/VersionAdminController.php:352
|
||||
msgid "Permission denied."
|
||||
msgstr "Zugriff verweigert."
|
||||
|
||||
@@ -209,7 +208,7 @@ msgstr "Lizenz konnte nicht widerrufen werden."
|
||||
#: src/Admin/AdminController.php:466 src/Admin/AdminController.php:484
|
||||
#: src/Admin/AdminController.php:504 src/Admin/AdminController.php:522
|
||||
#: src/Admin/AdminController.php:589 src/Admin/AdminController.php:779
|
||||
#: src/Frontend/AccountController.php:325
|
||||
#: src/Frontend/AccountController.php:326
|
||||
msgid "Security check failed."
|
||||
msgstr "Sicherheitsüberprüfung fehlgeschlagen."
|
||||
|
||||
@@ -285,7 +284,6 @@ msgstr "Lizenz erfolgreich verlängert."
|
||||
msgid "License set to lifetime successfully."
|
||||
msgstr "Lizenz erfolgreich auf lebenslang gesetzt."
|
||||
|
||||
#. translators: %d: number of licenses
|
||||
#: src/Admin/AdminController.php:1068
|
||||
#, php-format
|
||||
msgid "%d license activated."
|
||||
@@ -293,7 +291,6 @@ msgid_plural "%d licenses activated."
|
||||
msgstr[0] "%d Lizenz aktiviert."
|
||||
msgstr[1] "%d Lizenzen aktiviert."
|
||||
|
||||
#. translators: %d: number of licenses
|
||||
#: src/Admin/AdminController.php:1076
|
||||
#, php-format
|
||||
msgid "%d license deactivated."
|
||||
@@ -301,7 +298,6 @@ msgid_plural "%d licenses deactivated."
|
||||
msgstr[0] "%d Lizenz deaktiviert."
|
||||
msgstr[1] "%d Lizenzen deaktiviert."
|
||||
|
||||
#. translators: %d: number of licenses
|
||||
#: src/Admin/AdminController.php:1084
|
||||
#, php-format
|
||||
msgid "%d license revoked."
|
||||
@@ -309,7 +305,6 @@ msgid_plural "%d licenses revoked."
|
||||
msgstr[0] "%d Lizenz widerrufen."
|
||||
msgstr[1] "%d Lizenzen widerrufen."
|
||||
|
||||
#. translators: %d: number of licenses
|
||||
#: src/Admin/AdminController.php:1092
|
||||
#, php-format
|
||||
msgid "%d license deleted."
|
||||
@@ -317,7 +312,6 @@ msgid_plural "%d licenses deleted."
|
||||
msgstr[0] "%d Lizenz gelöscht."
|
||||
msgstr[1] "%d Lizenzen gelöscht."
|
||||
|
||||
#. translators: %d: number of licenses
|
||||
#: src/Admin/AdminController.php:1100
|
||||
#, php-format
|
||||
msgid "%d license extended."
|
||||
@@ -339,7 +333,6 @@ msgstr ""
|
||||
msgid "No licenses to export."
|
||||
msgstr "Keine Lizenzen zum Exportieren."
|
||||
|
||||
#. translators: %d: number of licenses imported
|
||||
#: src/Admin/AdminController.php:1121
|
||||
#, php-format
|
||||
msgid "%d license imported."
|
||||
@@ -347,7 +340,6 @@ msgid_plural "%d licenses imported."
|
||||
msgstr[0] "%d Lizenz importiert."
|
||||
msgstr[1] "%d Lizenzen importiert."
|
||||
|
||||
#. translators: %d: number of licenses updated
|
||||
#: src/Admin/AdminController.php:1128
|
||||
#, php-format
|
||||
msgid "%d updated."
|
||||
@@ -355,7 +347,6 @@ msgid_plural "%d updated."
|
||||
msgstr[0] "%d aktualisiert."
|
||||
msgstr[1] "%d aktualisiert."
|
||||
|
||||
#. translators: %d: number of licenses skipped
|
||||
#: src/Admin/AdminController.php:1136
|
||||
#, php-format
|
||||
msgid "%d skipped."
|
||||
@@ -363,7 +354,6 @@ msgid_plural "%d skipped."
|
||||
msgstr[0] "%d übersprungen."
|
||||
msgstr[1] "%d übersprungen."
|
||||
|
||||
#. translators: %d: number of errors
|
||||
#: src/Admin/AdminController.php:1144
|
||||
#, php-format
|
||||
msgid "%d error."
|
||||
@@ -440,14 +430,14 @@ msgid "Bulk Actions"
|
||||
msgstr "Massenaktionen"
|
||||
|
||||
#: src/Admin/AdminController.php:1235 src/Admin/AdminController.php:1407
|
||||
#: src/Admin/VersionAdminController.php:171
|
||||
#: src/Admin/VersionAdminController.php:387
|
||||
#: src/Admin/VersionAdminController.php:186
|
||||
#: src/Admin/VersionAdminController.php:415
|
||||
msgid "Activate"
|
||||
msgstr "Aktivieren"
|
||||
|
||||
#: src/Admin/AdminController.php:1236 src/Admin/AdminController.php:1408
|
||||
#: src/Admin/VersionAdminController.php:171
|
||||
#: src/Admin/VersionAdminController.php:387
|
||||
#: src/Admin/VersionAdminController.php:186
|
||||
#: src/Admin/VersionAdminController.php:415
|
||||
msgid "Deactivate"
|
||||
msgstr "Deaktivieren"
|
||||
|
||||
@@ -469,8 +459,8 @@ msgid "Extend 1 year"
|
||||
msgstr "1 Jahr verlängern"
|
||||
|
||||
#: src/Admin/AdminController.php:1241 src/Admin/AdminController.php:1377
|
||||
#: src/Admin/AdminController.php:1413 src/Admin/VersionAdminController.php:174
|
||||
#: src/Admin/VersionAdminController.php:390
|
||||
#: src/Admin/AdminController.php:1413 src/Admin/VersionAdminController.php:189
|
||||
#: src/Admin/VersionAdminController.php:418
|
||||
msgid "Delete"
|
||||
msgstr "Löschen"
|
||||
|
||||
@@ -502,7 +492,7 @@ msgstr "Domain"
|
||||
|
||||
#: src/Admin/AdminController.php:1257 src/Admin/AdminController.php:1395
|
||||
#: src/Admin/OrderLicenseController.php:147
|
||||
#: src/Admin/VersionAdminController.php:132
|
||||
#: src/Admin/VersionAdminController.php:140
|
||||
msgid "Status"
|
||||
msgstr "Status"
|
||||
|
||||
@@ -518,7 +508,7 @@ msgstr "Läuft ab"
|
||||
|
||||
#: src/Admin/AdminController.php:1260 src/Admin/AdminController.php:1398
|
||||
#: src/Admin/OrderLicenseController.php:149
|
||||
#: src/Admin/VersionAdminController.php:134
|
||||
#: src/Admin/VersionAdminController.php:142
|
||||
msgid "Actions"
|
||||
msgstr "Aktionen"
|
||||
|
||||
@@ -526,7 +516,7 @@ msgstr "Aktionen"
|
||||
msgid "No licenses found."
|
||||
msgstr "Keine Lizenzen gefunden."
|
||||
|
||||
#: src/Admin/AdminController.php:1276 src/Frontend/AccountController.php:193
|
||||
#: src/Admin/AdminController.php:1276 src/Frontend/AccountController.php:194
|
||||
msgid "Copy to clipboard"
|
||||
msgstr "In Zwischenablage kopieren"
|
||||
|
||||
@@ -680,8 +670,8 @@ msgstr ""
|
||||
"automatisch bestehende Lizenz-Domains."
|
||||
|
||||
#: src/Admin/OrderLicenseController.php:116
|
||||
#: src/Checkout/CheckoutController.php:89
|
||||
#: src/Checkout/CheckoutBlocksIntegration.php:102
|
||||
#: src/Checkout/CheckoutController.php:89
|
||||
msgid "example.com"
|
||||
msgstr "beispiel.ch"
|
||||
|
||||
@@ -712,7 +702,6 @@ msgstr "Domain bearbeiten"
|
||||
msgid "View in Licenses"
|
||||
msgstr "In Lizenzen anzeigen"
|
||||
|
||||
#. translators: %s: Link to licenses page
|
||||
#: src/Admin/OrderLicenseController.php:221
|
||||
#, php-format
|
||||
msgid "For more actions (revoke, extend, delete), go to the %s page."
|
||||
@@ -729,8 +718,8 @@ msgid "Error saving. Please try again."
|
||||
msgstr "Fehler beim Speichern. Bitte versuchen Sie es erneut."
|
||||
|
||||
#: src/Admin/OrderLicenseController.php:288
|
||||
#: src/Frontend/AccountController.php:313
|
||||
#: src/Frontend/AccountController.php:345
|
||||
#: src/Frontend/AccountController.php:314
|
||||
#: src/Frontend/AccountController.php:346
|
||||
msgid "Please enter a valid domain."
|
||||
msgstr "Bitte geben Sie eine gültige Domain ein."
|
||||
|
||||
@@ -748,7 +737,7 @@ msgid "Order domain updated."
|
||||
msgstr "Bestellungs-Domain aktualisiert."
|
||||
|
||||
#: src/Admin/OrderLicenseController.php:363
|
||||
#: src/Frontend/AccountController.php:351
|
||||
#: src/Frontend/AccountController.php:352
|
||||
#: src/Frontend/DownloadController.php:105
|
||||
msgid "License not found."
|
||||
msgstr "Lizenz nicht gefunden."
|
||||
@@ -813,7 +802,6 @@ msgstr ""
|
||||
msgid "Expiration Warning Schedule"
|
||||
msgstr "Ablaufwarnung Zeitplan"
|
||||
|
||||
#. translators: %s: URL to WooCommerce email settings
|
||||
#: src/Admin/SettingsController.php:101
|
||||
#, php-format
|
||||
msgid ""
|
||||
@@ -856,7 +844,7 @@ msgid "Add New Version"
|
||||
msgstr "Neue Version hinzufügen"
|
||||
|
||||
#: src/Admin/VersionAdminController.php:81
|
||||
#: src/Admin/VersionAdminController.php:129
|
||||
#: src/Admin/VersionAdminController.php:136
|
||||
msgid "Version"
|
||||
msgstr "Version"
|
||||
|
||||
@@ -865,7 +853,7 @@ msgid "Use semantic versioning (e.g., 1.0.0)"
|
||||
msgstr "Verwenden Sie semantische Versionierung (z.B. 1.0.0)"
|
||||
|
||||
#: src/Admin/VersionAdminController.php:88
|
||||
#: src/Admin/VersionAdminController.php:130
|
||||
#: src/Admin/VersionAdminController.php:137
|
||||
msgid "Download File"
|
||||
msgstr "Download-Datei"
|
||||
|
||||
@@ -874,6 +862,7 @@ msgid "Select File"
|
||||
msgstr "Datei auswählen"
|
||||
|
||||
#: src/Admin/VersionAdminController.php:96
|
||||
#: src/Admin/VersionAdminController.php:110
|
||||
msgid "Remove"
|
||||
msgstr "Entfernen"
|
||||
|
||||
@@ -886,119 +875,138 @@ msgstr ""
|
||||
"Version wird automatisch aus dem Dateinamen erkannt (z.B. plugin-v1.2.3.zip)."
|
||||
|
||||
#: src/Admin/VersionAdminController.php:102
|
||||
msgid "Or External URL"
|
||||
msgstr "Oder externe URL"
|
||||
msgid "Checksum File"
|
||||
msgstr "Prüfsummendatei"
|
||||
|
||||
#: src/Admin/VersionAdminController.php:105
|
||||
#: src/Admin/VersionAdminController.php:107
|
||||
msgid "Select Checksum File"
|
||||
msgstr "Prüfsummendatei auswählen"
|
||||
|
||||
#: src/Admin/VersionAdminController.php:112
|
||||
msgid ""
|
||||
"Alternative: Enter an external download URL instead of uploading a file."
|
||||
"Upload a SHA256 checksum file (.sha256 or .txt) to verify file integrity."
|
||||
msgstr ""
|
||||
"Alternativ: Geben Sie eine externe Download-URL ein, anstatt eine Datei "
|
||||
"hochzuladen."
|
||||
"Laden Sie eine SHA256-Prüfsummendatei (.sha256 oder .txt) hoch, um die "
|
||||
"Dateiintegrität zu überprüfen."
|
||||
|
||||
#: src/Admin/VersionAdminController.php:109
|
||||
#: src/Admin/VersionAdminController.php:131
|
||||
#: src/Admin/VersionAdminController.php:116
|
||||
#: src/Admin/VersionAdminController.php:139
|
||||
msgid "Release Notes"
|
||||
msgstr "Versionshinweise"
|
||||
|
||||
#: src/Admin/VersionAdminController.php:117
|
||||
#: src/Admin/VersionAdminController.php:124
|
||||
msgid "Add Version"
|
||||
msgstr "Version hinzufügen"
|
||||
|
||||
#: src/Admin/VersionAdminController.php:125
|
||||
#: src/Admin/VersionAdminController.php:132
|
||||
msgid "Existing Versions"
|
||||
msgstr "Vorhandene Versionen"
|
||||
|
||||
#: src/Admin/VersionAdminController.php:133
|
||||
#: src/Admin/VersionAdminController.php:138
|
||||
msgid "SHA256"
|
||||
msgstr "SHA256"
|
||||
|
||||
#: src/Admin/VersionAdminController.php:141
|
||||
msgid "Released"
|
||||
msgstr "Veröffentlicht"
|
||||
|
||||
#: src/Admin/VersionAdminController.php:140
|
||||
#: src/Admin/VersionAdminController.php:148
|
||||
msgid "No versions found. Add your first version above."
|
||||
msgstr "Keine Versionen gefunden. Fügen Sie Ihre erste Version oben hinzu."
|
||||
|
||||
#: src/Admin/VersionAdminController.php:156
|
||||
#: src/Admin/VersionAdminController.php:372
|
||||
#: src/Admin/VersionAdminController.php:164
|
||||
#: src/Admin/VersionAdminController.php:393
|
||||
msgid "Uploaded file"
|
||||
msgstr "Hochgeladene Datei"
|
||||
|
||||
#: src/Admin/VersionAdminController.php:159
|
||||
#: src/Admin/VersionAdminController.php:375
|
||||
#: src/Admin/VersionAdminController.php:167
|
||||
#: src/Admin/VersionAdminController.php:396
|
||||
msgid "No download file"
|
||||
msgstr "Keine Download-Datei"
|
||||
|
||||
#: src/Admin/VersionAdminController.php:215
|
||||
#: src/Admin/VersionAdminController.php:230
|
||||
msgid "Are you sure you want to delete this version?"
|
||||
msgstr "Sind Sie sicher, dass Sie diese Version löschen möchten?"
|
||||
|
||||
#: src/Admin/VersionAdminController.php:216
|
||||
#: src/Admin/VersionAdminController.php:231
|
||||
msgid "Please enter a version number."
|
||||
msgstr "Bitte geben Sie eine Versionsnummer ein."
|
||||
|
||||
#: src/Admin/VersionAdminController.php:217
|
||||
#: src/Admin/VersionAdminController.php:232
|
||||
msgid "Please enter a valid version number (e.g., 1.0.0)."
|
||||
msgstr "Bitte geben Sie eine gültige Versionsnummer ein (z.B. 1.0.0)."
|
||||
|
||||
#: src/Admin/VersionAdminController.php:218
|
||||
#: src/Admin/VersionAdminController.php:233
|
||||
msgid "An error occurred. Please try again."
|
||||
msgstr "Ein Fehler ist aufgetreten. Bitte versuchen Sie es erneut."
|
||||
|
||||
#: src/Admin/VersionAdminController.php:219
|
||||
#: src/Admin/VersionAdminController.php:234
|
||||
msgid "Select Download File"
|
||||
msgstr "Download-Datei auswählen"
|
||||
|
||||
#: src/Admin/VersionAdminController.php:220
|
||||
#: src/Admin/VersionAdminController.php:235
|
||||
msgid "Use this file"
|
||||
msgstr "Diese Datei verwenden"
|
||||
|
||||
#: src/Admin/VersionAdminController.php:250
|
||||
#: src/Admin/VersionAdminController.php:236
|
||||
msgid ""
|
||||
"Invalid checksum file format. File must contain a 64-character SHA256 hash."
|
||||
msgstr ""
|
||||
"Ungültiges Prüfsummendateiformat. Die Datei muss einen 64-stelligen SHA256-"
|
||||
"Hash enthalten."
|
||||
|
||||
#: src/Admin/VersionAdminController.php:237
|
||||
msgid "Failed to read checksum file."
|
||||
msgstr "Prüfsummendatei konnte nicht gelesen werden."
|
||||
|
||||
#: src/Admin/VersionAdminController.php:267
|
||||
msgid "Product ID and version are required."
|
||||
msgstr "Produkt-ID und Version sind erforderlich."
|
||||
|
||||
#: src/Admin/VersionAdminController.php:255
|
||||
#: src/Admin/VersionAdminController.php:272
|
||||
msgid "Invalid version format. Use semantic versioning (e.g., 1.0.0)."
|
||||
msgstr ""
|
||||
"Ungültiges Versionsformat. Verwenden Sie semantische Versionierung (z.B. "
|
||||
"1.0.0)."
|
||||
|
||||
#: src/Admin/VersionAdminController.php:260
|
||||
#: src/Admin/VersionAdminController.php:277
|
||||
msgid "This version already exists."
|
||||
msgstr "Diese Version existiert bereits."
|
||||
|
||||
#: src/Admin/VersionAdminController.php:266
|
||||
#: src/Admin/VersionAdminController.php:283
|
||||
msgid "Product not found."
|
||||
msgstr "Produkt nicht gefunden."
|
||||
|
||||
#: src/Admin/VersionAdminController.php:270
|
||||
#: src/Admin/VersionAdminController.php:287
|
||||
msgid "This product is not a licensed product."
|
||||
msgstr "Dieses Produkt ist kein lizensiertes Produkt."
|
||||
|
||||
#: src/Admin/VersionAdminController.php:283
|
||||
#: src/Admin/VersionAdminController.php:304
|
||||
msgid "Failed to create version."
|
||||
msgstr "Version konnte nicht erstellt werden."
|
||||
|
||||
#: src/Admin/VersionAdminController.php:291
|
||||
#: src/Admin/VersionAdminController.php:312
|
||||
msgid "Version added successfully."
|
||||
msgstr "Version erfolgreich hinzugefügt."
|
||||
|
||||
#: src/Admin/VersionAdminController.php:311
|
||||
#: src/Admin/VersionAdminController.php:338
|
||||
#: src/Admin/VersionAdminController.php:332
|
||||
#: src/Admin/VersionAdminController.php:359
|
||||
msgid "Version ID is required."
|
||||
msgstr "Versions-ID ist erforderlich."
|
||||
|
||||
#: src/Admin/VersionAdminController.php:317
|
||||
#: src/Admin/VersionAdminController.php:338
|
||||
msgid "Failed to delete version."
|
||||
msgstr "Version konnte nicht gelöscht werden."
|
||||
|
||||
#: src/Admin/VersionAdminController.php:320
|
||||
#: src/Admin/VersionAdminController.php:341
|
||||
msgid "Version deleted successfully."
|
||||
msgstr "Version erfolgreich gelöscht."
|
||||
|
||||
#: src/Admin/VersionAdminController.php:344
|
||||
#: src/Admin/VersionAdminController.php:365
|
||||
msgid "Failed to update version."
|
||||
msgstr "Version konnte nicht aktualisiert werden."
|
||||
|
||||
#: src/Admin/VersionAdminController.php:348
|
||||
#: src/Admin/VersionAdminController.php:369
|
||||
msgid "Version updated successfully."
|
||||
msgstr "Version erfolgreich aktualisiert."
|
||||
|
||||
@@ -1031,28 +1039,32 @@ msgstr "Lizenz konnte nicht aktiviert werden."
|
||||
msgid "License activated successfully."
|
||||
msgstr "Lizenz erfolgreich aktiviert."
|
||||
|
||||
#: src/Checkout/CheckoutController.php:78
|
||||
#: src/Checkout/CheckoutBlocksIntegration.php:104
|
||||
msgid "License Domain"
|
||||
msgstr "Lizenz-Domain"
|
||||
|
||||
#: src/Checkout/CheckoutController.php:81
|
||||
#: src/Checkout/CheckoutBlocksIntegration.php:101
|
||||
#: src/Checkout/CheckoutController.php:81
|
||||
msgid "Domain for License Activation"
|
||||
msgstr "Domain für Lizenz-Aktivierung"
|
||||
|
||||
#: src/Checkout/CheckoutController.php:82
|
||||
msgid "required"
|
||||
msgstr "erforderlich"
|
||||
|
||||
#: src/Checkout/CheckoutController.php:93
|
||||
#: src/Checkout/CheckoutBlocksIntegration.php:103
|
||||
#: src/Checkout/CheckoutController.php:93
|
||||
msgid ""
|
||||
"Enter the domain where you will use this license (without http:// or www)."
|
||||
msgstr ""
|
||||
"Geben Sie die Domain ein, auf der Sie diese Lizenz verwenden möchten (ohne "
|
||||
"http:// oder www)."
|
||||
|
||||
#: src/Checkout/CheckoutBlocksIntegration.php:104
|
||||
#: src/Checkout/CheckoutController.php:78
|
||||
msgid "License Domain"
|
||||
msgstr "Lizenz-Domain"
|
||||
|
||||
#: src/Checkout/CheckoutBlocksIntegration.php:105
|
||||
msgid "Please enter a valid domain for your license activation."
|
||||
msgstr "Bitte geben Sie eine gültige Domain für Ihre Lizenz-Aktivierung ein."
|
||||
|
||||
#: src/Checkout/CheckoutController.php:82
|
||||
msgid "required"
|
||||
msgstr "erforderlich"
|
||||
|
||||
#: src/Checkout/CheckoutController.php:115
|
||||
msgid "Please enter a domain for your license activation."
|
||||
msgstr "Bitte geben Sie eine Domain für Ihre Lizenz-Aktivierung ein."
|
||||
@@ -1067,10 +1079,6 @@ msgstr "Bitte geben Sie einen gültigen Domain-Namen ein."
|
||||
msgid "License Domain:"
|
||||
msgstr "Lizenz-Domain:"
|
||||
|
||||
#: src/Checkout/CheckoutBlocksIntegration.php:105
|
||||
msgid "Please enter a valid domain for your license activation."
|
||||
msgstr "Bitte geben Sie eine gültige Domain für Ihre Lizenz-Aktivierung ein."
|
||||
|
||||
#: src/Checkout/StoreApiExtension.php:85
|
||||
msgid "Domain for license activation"
|
||||
msgstr "Domain für Lizenz-Aktivierung"
|
||||
@@ -1080,7 +1088,7 @@ msgstr "Domain für Lizenz-Aktivierung"
|
||||
#: src/Email/LicenseEmailController.php:281
|
||||
#: src/Email/LicenseExpirationEmail.php:207
|
||||
#: src/Email/LicenseExpirationEmail.php:270
|
||||
#: src/Frontend/AccountController.php:189
|
||||
#: src/Frontend/AccountController.php:190
|
||||
msgid "License Key:"
|
||||
msgstr "Lizenzschlüssel:"
|
||||
|
||||
@@ -1095,7 +1103,7 @@ msgstr "Lizensierte Domain:"
|
||||
|
||||
#: src/Email/LicenseEmailController.php:248
|
||||
#: src/Email/LicenseEmailController.php:287
|
||||
#: src/Frontend/AccountController.php:217
|
||||
#: src/Frontend/AccountController.php:218
|
||||
msgid "Never"
|
||||
msgstr "Nie"
|
||||
|
||||
@@ -1112,7 +1120,7 @@ msgstr "IHRE LIZENZSCHLÜSSEL"
|
||||
#: src/Email/LicenseEmailController.php:284
|
||||
#: src/Email/LicenseExpirationEmail.php:219
|
||||
#: src/Email/LicenseExpirationEmail.php:272
|
||||
#: src/Frontend/AccountController.php:212
|
||||
#: src/Frontend/AccountController.php:213
|
||||
msgid "Expires:"
|
||||
msgstr "Läuft ab:"
|
||||
|
||||
@@ -1141,7 +1149,7 @@ msgid "License Expiration Notice"
|
||||
msgstr "Lizenzablauf-Benachrichtigung"
|
||||
|
||||
#: src/Email/LicenseExpirationEmail.php:107
|
||||
#: src/Frontend/AccountController.php:139 src/License/LicenseManager.php:760
|
||||
#: src/Frontend/AccountController.php:140 src/License/LicenseManager.php:760
|
||||
msgid "Unknown Product"
|
||||
msgstr "Unbekanntes Produkt"
|
||||
|
||||
@@ -1175,7 +1183,7 @@ msgstr "Produkt:"
|
||||
|
||||
#: src/Email/LicenseExpirationEmail.php:215
|
||||
#: src/Email/LicenseExpirationEmail.php:271
|
||||
#: src/Frontend/AccountController.php:200
|
||||
#: src/Frontend/AccountController.php:201
|
||||
msgid "Domain:"
|
||||
msgstr "Domain:"
|
||||
|
||||
@@ -1192,7 +1200,6 @@ msgstr ""
|
||||
"Um dieses Produkt weiterhin zu nutzen, verlängern Sie bitte Ihre Lizenz vor "
|
||||
"dem Ablaufdatum."
|
||||
|
||||
#. translators: %s: list of placeholders
|
||||
#: src/Email/LicenseExpirationEmail.php:301
|
||||
#, php-format
|
||||
msgid "Available placeholders: %s"
|
||||
@@ -1234,61 +1241,61 @@ msgstr "Wählen Sie, welches E-Mail-Format gesendet werden soll."
|
||||
msgid "Please log in to view your licenses."
|
||||
msgstr "Bitte melden Sie sich an, um Ihre Lizenzen zu sehen."
|
||||
|
||||
#: src/Frontend/AccountController.php:164
|
||||
#: src/Frontend/AccountController.php:165
|
||||
msgid "You have no licenses yet."
|
||||
msgstr "Sie haben noch keine Lizenzen."
|
||||
|
||||
#: src/Frontend/AccountController.php:206
|
||||
#: src/Frontend/AccountController.php:207
|
||||
msgid "Transfer to new domain"
|
||||
msgstr "Auf neue Domain übertragen"
|
||||
|
||||
#: src/Frontend/AccountController.php:208
|
||||
#: src/Frontend/AccountController.php:209
|
||||
msgid "Transfer"
|
||||
msgstr "Übertragen"
|
||||
|
||||
#: src/Frontend/AccountController.php:225
|
||||
#: src/Frontend/AccountController.php:226
|
||||
msgid "Available Downloads"
|
||||
msgstr "Verfügbare Downloads"
|
||||
|
||||
#: src/Frontend/AccountController.php:231
|
||||
#: src/Frontend/AccountController.php:232
|
||||
#, php-format
|
||||
msgid "Version %s"
|
||||
msgstr "Version %s"
|
||||
|
||||
#: src/Frontend/AccountController.php:248
|
||||
#: src/Frontend/AccountController.php:249
|
||||
msgid "Close"
|
||||
msgstr "Schliessen"
|
||||
|
||||
#: src/Frontend/AccountController.php:249
|
||||
#: src/Frontend/AccountController.php:250
|
||||
msgid "Transfer License to New Domain"
|
||||
msgstr "Lizenz auf neue Domain übertragen"
|
||||
|
||||
#: src/Frontend/AccountController.php:254
|
||||
#: src/Frontend/AccountController.php:255
|
||||
msgid "Current Domain"
|
||||
msgstr "Aktuelle Domain"
|
||||
|
||||
#: src/Frontend/AccountController.php:259
|
||||
#: src/Frontend/AccountController.php:260
|
||||
msgid "New Domain"
|
||||
msgstr "Neue Domain"
|
||||
|
||||
#: src/Frontend/AccountController.php:263
|
||||
#: src/Frontend/AccountController.php:264
|
||||
msgid "Enter the new domain without http:// or www."
|
||||
msgstr "Geben Sie die neue Domain ohne http:// oder www ein."
|
||||
|
||||
#: src/Frontend/AccountController.php:268
|
||||
#: src/Frontend/AccountController.php:269
|
||||
msgid "Transfer License"
|
||||
msgstr "Lizenz übertragen"
|
||||
|
||||
#: src/Frontend/AccountController.php:310
|
||||
#: src/Frontend/AccountController.php:377
|
||||
#: src/Frontend/AccountController.php:311
|
||||
#: src/Frontend/AccountController.php:378
|
||||
msgid "License transferred successfully!"
|
||||
msgstr "Lizenz erfolgreich übertragen!"
|
||||
|
||||
#: src/Frontend/AccountController.php:311
|
||||
#: src/Frontend/AccountController.php:312
|
||||
msgid "Transfer failed. Please try again."
|
||||
msgstr "Übertragung fehlgeschlagen. Bitte versuchen Sie es erneut."
|
||||
|
||||
#: src/Frontend/AccountController.php:312
|
||||
#: src/Frontend/AccountController.php:313
|
||||
msgid ""
|
||||
"Are you sure you want to transfer this license to a new domain? This action "
|
||||
"cannot be undone."
|
||||
@@ -1296,31 +1303,31 @@ msgstr ""
|
||||
"Sind Sie sicher, dass Sie diese Lizenz auf eine neue Domain übertragen "
|
||||
"möchten? Diese Aktion kann nicht rückgängig gemacht werden."
|
||||
|
||||
#: src/Frontend/AccountController.php:331
|
||||
#: src/Frontend/AccountController.php:332
|
||||
msgid "Please log in to transfer a license."
|
||||
msgstr "Bitte melden Sie sich an, um eine Lizenz zu übertragen."
|
||||
|
||||
#: src/Frontend/AccountController.php:337
|
||||
#: src/Frontend/AccountController.php:338
|
||||
msgid "Invalid license."
|
||||
msgstr "Ungültige Lizenz."
|
||||
|
||||
#: src/Frontend/AccountController.php:355
|
||||
#: src/Frontend/AccountController.php:356
|
||||
msgid "You do not have permission to transfer this license."
|
||||
msgstr "Sie haben keine Berechtigung, diese Lizenz zu übertragen."
|
||||
|
||||
#: src/Frontend/AccountController.php:360
|
||||
#: src/Frontend/AccountController.php:361
|
||||
msgid "Revoked licenses cannot be transferred."
|
||||
msgstr "Widerrufene Lizenzen können nicht übertragen werden."
|
||||
|
||||
#: src/Frontend/AccountController.php:364
|
||||
#: src/Frontend/AccountController.php:365
|
||||
msgid "Expired licenses cannot be transferred."
|
||||
msgstr "Abgelaufene Lizenzen können nicht übertragen werden."
|
||||
|
||||
#: src/Frontend/AccountController.php:369
|
||||
#: src/Frontend/AccountController.php:370
|
||||
msgid "The new domain is the same as the current domain."
|
||||
msgstr "Die neue Domain ist dieselbe wie die aktuelle Domain."
|
||||
|
||||
#: src/Frontend/AccountController.php:381
|
||||
#: src/Frontend/AccountController.php:382
|
||||
msgid "Failed to transfer license. Please try again."
|
||||
msgstr "Lizenzübertragung fehlgeschlagen. Bitte versuchen Sie es erneut."
|
||||
|
||||
@@ -1404,7 +1411,6 @@ msgstr "Lizenz-Einstellungen"
|
||||
msgid "%d days"
|
||||
msgstr "%d Tage"
|
||||
|
||||
#. translators: %s: URL to settings page
|
||||
#: src/Product/LicensedProductType.php:113
|
||||
#, php-format
|
||||
msgid "Leave fields empty to use default settings from %s."
|
||||
@@ -1418,7 +1424,6 @@ msgstr "WooCommerce > Einstellungen > Lizensierte Produkte"
|
||||
msgid "Max Activations"
|
||||
msgstr "Max. Aktivierungen"
|
||||
|
||||
#. translators: %d: default max activations value
|
||||
#: src/Product/LicensedProductType.php:125
|
||||
#, php-format
|
||||
msgid "Maximum number of domain activations per license. Default: %d"
|
||||
@@ -1428,7 +1433,6 @@ msgstr "Maximale Anzahl der Domain-Aktivierungen pro Lizenz. Standard: %d"
|
||||
msgid "License Validity (Days)"
|
||||
msgstr "Lizenz-Gültigkeit (Tage)"
|
||||
|
||||
#. translators: %s: default validity value
|
||||
#: src/Product/LicensedProductType.php:143
|
||||
#, php-format
|
||||
msgid "Number of days the license is valid. Leave empty for default (%s)."
|
||||
@@ -1438,7 +1442,6 @@ msgstr "Anzahl Tage, die die Lizenz gültig ist. Leer lassen für Standard (%s).
|
||||
msgid "Bind to Major Version"
|
||||
msgstr "An Hauptversion binden"
|
||||
|
||||
#. translators: %s: default bind to version value (Yes/No)
|
||||
#: src/Product/LicensedProductType.php:161
|
||||
#, php-format
|
||||
msgid ""
|
||||
@@ -1456,32 +1459,34 @@ msgstr "Ja"
|
||||
msgid "No"
|
||||
msgstr "Nein"
|
||||
|
||||
#: src/Admin/VersionAdminController.php:101
|
||||
msgid "SHA256 Hash"
|
||||
msgstr "SHA256 Prüfsumme"
|
||||
|
||||
#: src/Admin/VersionAdminController.php:103
|
||||
msgid "Enter SHA256 checksum..."
|
||||
msgstr "SHA256 Prüfsumme eingeben..."
|
||||
|
||||
#: src/Admin/VersionAdminController.php:104
|
||||
msgid ""
|
||||
"SHA256 checksum of the uploaded file (optional but recommended for integrity "
|
||||
"verification)."
|
||||
msgstr ""
|
||||
"SHA256 Prüfsumme der hochgeladenen Datei (optional, aber empfohlen zur "
|
||||
"Integritätsprüfung)."
|
||||
|
||||
#: src/Product/VersionManager.php:67
|
||||
#: src/Product/VersionManager.php:166
|
||||
msgid "Attachment file not found."
|
||||
msgstr "Anhangs-Datei nicht gefunden."
|
||||
|
||||
#. translators: 1: provided hash, 2: calculated hash
|
||||
#: src/Product/VersionManager.php:73
|
||||
#: src/Product/VersionManager.php:177
|
||||
#, php-format
|
||||
msgid "File checksum does not match. Expected: %1$s, Got: %2$s"
|
||||
msgstr "Datei-Prüfsumme stimmt nicht überein. Erwartet: %1$s, Erhalten: %2$s"
|
||||
|
||||
#~ msgid "Or External URL"
|
||||
#~ msgstr "Oder externe URL"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "Alternative: Enter an external download URL instead of uploading a file."
|
||||
#~ msgstr ""
|
||||
#~ "Alternativ: Geben Sie eine externe Download-URL ein, anstatt eine Datei "
|
||||
#~ "hochzuladen."
|
||||
|
||||
#~ msgid "Enter SHA256 checksum..."
|
||||
#~ msgstr "SHA256 Prüfsumme eingeben..."
|
||||
|
||||
#~ msgid ""
|
||||
#~ "SHA256 checksum of the uploaded file (optional but recommended for "
|
||||
#~ "integrity verification)."
|
||||
#~ msgstr ""
|
||||
#~ "SHA256 Prüfsumme der hochgeladenen Datei (optional, aber empfohlen zur "
|
||||
#~ "Integritätsprüfung)."
|
||||
|
||||
#~ msgid "Maximum number of domain activations per license. Default: 1"
|
||||
#~ msgstr "Maximale Anzahl der Domain-Aktivierungen pro Lizenz. Standard: 1"
|
||||
|
||||
|
||||
@@ -6,9 +6,9 @@
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: WooCommerce Licensed Product 0.2.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-01-22 11:52+0100\n"
|
||||
"Project-Id-Version: WooCommerce Licensed Product 0.2.2\n"
|
||||
"Report-Msgid-Bugs-To: magdev3.0@gmail.com\n"
|
||||
"POT-Creation-Date: 2026-01-22 17:32+0100\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
@@ -18,7 +18,6 @@ msgstr ""
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
|
||||
|
||||
#. translators: %s: WooCommerce plugin name
|
||||
#: wc-licensed-product.php:61
|
||||
#, php-format
|
||||
msgid "%s requires WooCommerce to be installed and active."
|
||||
@@ -81,7 +80,7 @@ msgstr ""
|
||||
#: src/Admin/AdminController.php:146 src/Admin/AdminController.php:1303
|
||||
#: src/Admin/AdminController.php:1323 src/Admin/AdminController.php:1344
|
||||
#: src/Admin/OrderLicenseController.php:185
|
||||
#: src/Frontend/AccountController.php:270
|
||||
#: src/Frontend/AccountController.php:271
|
||||
msgid "Cancel"
|
||||
msgstr ""
|
||||
|
||||
@@ -99,25 +98,25 @@ msgstr ""
|
||||
msgid "Lifetime"
|
||||
msgstr ""
|
||||
|
||||
#: src/Admin/AdminController.php:149 src/Frontend/AccountController.php:308
|
||||
#: src/Admin/AdminController.php:149 src/Frontend/AccountController.php:309
|
||||
msgid "Copied!"
|
||||
msgstr ""
|
||||
|
||||
#: src/Admin/AdminController.php:150 src/Frontend/AccountController.php:309
|
||||
#: src/Admin/AdminController.php:150 src/Frontend/AccountController.php:310
|
||||
msgid "Copy failed"
|
||||
msgstr ""
|
||||
|
||||
#: src/Admin/AdminController.php:153 src/Admin/AdminController.php:875
|
||||
#: src/Admin/AdminController.php:1194 src/Admin/AdminController.php:1317
|
||||
#: src/Admin/VersionAdminController.php:165
|
||||
#: src/Admin/VersionAdminController.php:381
|
||||
#: src/Admin/VersionAdminController.php:180
|
||||
#: src/Admin/VersionAdminController.php:409
|
||||
msgid "Active"
|
||||
msgstr ""
|
||||
|
||||
#: src/Admin/AdminController.php:154 src/Admin/AdminController.php:882
|
||||
#: src/Admin/AdminController.php:1195 src/Admin/AdminController.php:1318
|
||||
#: src/Admin/VersionAdminController.php:165
|
||||
#: src/Admin/VersionAdminController.php:381
|
||||
#: src/Admin/VersionAdminController.php:180
|
||||
#: src/Admin/VersionAdminController.php:409
|
||||
msgid "Inactive"
|
||||
msgstr ""
|
||||
|
||||
@@ -135,9 +134,9 @@ msgstr ""
|
||||
#: src/Admin/AdminController.php:246 src/Admin/AdminController.php:298
|
||||
#: src/Admin/AdminController.php:336 src/Admin/OrderLicenseController.php:301
|
||||
#: src/Admin/OrderLicenseController.php:340
|
||||
#: src/Admin/VersionAdminController.php:240
|
||||
#: src/Admin/VersionAdminController.php:305
|
||||
#: src/Admin/VersionAdminController.php:331
|
||||
#: src/Admin/VersionAdminController.php:257
|
||||
#: src/Admin/VersionAdminController.php:326
|
||||
#: src/Admin/VersionAdminController.php:352
|
||||
msgid "Permission denied."
|
||||
msgstr ""
|
||||
|
||||
@@ -208,7 +207,7 @@ msgstr ""
|
||||
#: src/Admin/AdminController.php:466 src/Admin/AdminController.php:484
|
||||
#: src/Admin/AdminController.php:504 src/Admin/AdminController.php:522
|
||||
#: src/Admin/AdminController.php:589 src/Admin/AdminController.php:779
|
||||
#: src/Frontend/AccountController.php:325
|
||||
#: src/Frontend/AccountController.php:326
|
||||
msgid "Security check failed."
|
||||
msgstr ""
|
||||
|
||||
@@ -284,7 +283,6 @@ msgstr ""
|
||||
msgid "License set to lifetime successfully."
|
||||
msgstr ""
|
||||
|
||||
#. translators: %d: number of licenses
|
||||
#: src/Admin/AdminController.php:1068
|
||||
#, php-format
|
||||
msgid "%d license activated."
|
||||
@@ -292,7 +290,6 @@ msgid_plural "%d licenses activated."
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
|
||||
#. translators: %d: number of licenses
|
||||
#: src/Admin/AdminController.php:1076
|
||||
#, php-format
|
||||
msgid "%d license deactivated."
|
||||
@@ -300,7 +297,6 @@ msgid_plural "%d licenses deactivated."
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
|
||||
#. translators: %d: number of licenses
|
||||
#: src/Admin/AdminController.php:1084
|
||||
#, php-format
|
||||
msgid "%d license revoked."
|
||||
@@ -308,7 +304,6 @@ msgid_plural "%d licenses revoked."
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
|
||||
#. translators: %d: number of licenses
|
||||
#: src/Admin/AdminController.php:1092
|
||||
#, php-format
|
||||
msgid "%d license deleted."
|
||||
@@ -316,7 +311,6 @@ msgid_plural "%d licenses deleted."
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
|
||||
#. translators: %d: number of licenses
|
||||
#: src/Admin/AdminController.php:1100
|
||||
#, php-format
|
||||
msgid "%d license extended."
|
||||
@@ -336,7 +330,6 @@ msgstr ""
|
||||
msgid "No licenses to export."
|
||||
msgstr ""
|
||||
|
||||
#. translators: %d: number of licenses imported
|
||||
#: src/Admin/AdminController.php:1121
|
||||
#, php-format
|
||||
msgid "%d license imported."
|
||||
@@ -344,7 +337,6 @@ msgid_plural "%d licenses imported."
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
|
||||
#. translators: %d: number of licenses updated
|
||||
#: src/Admin/AdminController.php:1128
|
||||
#, php-format
|
||||
msgid "%d updated."
|
||||
@@ -352,7 +344,6 @@ msgid_plural "%d updated."
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
|
||||
#. translators: %d: number of licenses skipped
|
||||
#: src/Admin/AdminController.php:1136
|
||||
#, php-format
|
||||
msgid "%d skipped."
|
||||
@@ -360,7 +351,6 @@ msgid_plural "%d skipped."
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
|
||||
#. translators: %d: number of errors
|
||||
#: src/Admin/AdminController.php:1144
|
||||
#, php-format
|
||||
msgid "%d error."
|
||||
@@ -437,14 +427,14 @@ msgid "Bulk Actions"
|
||||
msgstr ""
|
||||
|
||||
#: src/Admin/AdminController.php:1235 src/Admin/AdminController.php:1407
|
||||
#: src/Admin/VersionAdminController.php:171
|
||||
#: src/Admin/VersionAdminController.php:387
|
||||
#: src/Admin/VersionAdminController.php:186
|
||||
#: src/Admin/VersionAdminController.php:415
|
||||
msgid "Activate"
|
||||
msgstr ""
|
||||
|
||||
#: src/Admin/AdminController.php:1236 src/Admin/AdminController.php:1408
|
||||
#: src/Admin/VersionAdminController.php:171
|
||||
#: src/Admin/VersionAdminController.php:387
|
||||
#: src/Admin/VersionAdminController.php:186
|
||||
#: src/Admin/VersionAdminController.php:415
|
||||
msgid "Deactivate"
|
||||
msgstr ""
|
||||
|
||||
@@ -466,8 +456,8 @@ msgid "Extend 1 year"
|
||||
msgstr ""
|
||||
|
||||
#: src/Admin/AdminController.php:1241 src/Admin/AdminController.php:1377
|
||||
#: src/Admin/AdminController.php:1413 src/Admin/VersionAdminController.php:174
|
||||
#: src/Admin/VersionAdminController.php:390
|
||||
#: src/Admin/AdminController.php:1413 src/Admin/VersionAdminController.php:189
|
||||
#: src/Admin/VersionAdminController.php:418
|
||||
msgid "Delete"
|
||||
msgstr ""
|
||||
|
||||
@@ -499,7 +489,7 @@ msgstr ""
|
||||
|
||||
#: src/Admin/AdminController.php:1257 src/Admin/AdminController.php:1395
|
||||
#: src/Admin/OrderLicenseController.php:147
|
||||
#: src/Admin/VersionAdminController.php:132
|
||||
#: src/Admin/VersionAdminController.php:140
|
||||
msgid "Status"
|
||||
msgstr ""
|
||||
|
||||
@@ -515,7 +505,7 @@ msgstr ""
|
||||
|
||||
#: src/Admin/AdminController.php:1260 src/Admin/AdminController.php:1398
|
||||
#: src/Admin/OrderLicenseController.php:149
|
||||
#: src/Admin/VersionAdminController.php:134
|
||||
#: src/Admin/VersionAdminController.php:142
|
||||
msgid "Actions"
|
||||
msgstr ""
|
||||
|
||||
@@ -523,7 +513,7 @@ msgstr ""
|
||||
msgid "No licenses found."
|
||||
msgstr ""
|
||||
|
||||
#: src/Admin/AdminController.php:1276 src/Frontend/AccountController.php:193
|
||||
#: src/Admin/AdminController.php:1276 src/Frontend/AccountController.php:194
|
||||
msgid "Copy to clipboard"
|
||||
msgstr ""
|
||||
|
||||
@@ -670,8 +660,8 @@ msgid ""
|
||||
msgstr ""
|
||||
|
||||
#: src/Admin/OrderLicenseController.php:116
|
||||
#: src/Checkout/CheckoutController.php:89
|
||||
#: src/Checkout/CheckoutBlocksIntegration.php:102
|
||||
#: src/Checkout/CheckoutController.php:89
|
||||
msgid "example.com"
|
||||
msgstr ""
|
||||
|
||||
@@ -697,7 +687,6 @@ msgstr ""
|
||||
msgid "View in Licenses"
|
||||
msgstr ""
|
||||
|
||||
#. translators: %s: Link to licenses page
|
||||
#: src/Admin/OrderLicenseController.php:221
|
||||
#, php-format
|
||||
msgid "For more actions (revoke, extend, delete), go to the %s page."
|
||||
@@ -712,8 +701,8 @@ msgid "Error saving. Please try again."
|
||||
msgstr ""
|
||||
|
||||
#: src/Admin/OrderLicenseController.php:288
|
||||
#: src/Frontend/AccountController.php:313
|
||||
#: src/Frontend/AccountController.php:345
|
||||
#: src/Frontend/AccountController.php:314
|
||||
#: src/Frontend/AccountController.php:346
|
||||
msgid "Please enter a valid domain."
|
||||
msgstr ""
|
||||
|
||||
@@ -731,7 +720,7 @@ msgid "Order domain updated."
|
||||
msgstr ""
|
||||
|
||||
#: src/Admin/OrderLicenseController.php:363
|
||||
#: src/Frontend/AccountController.php:351
|
||||
#: src/Frontend/AccountController.php:352
|
||||
#: src/Frontend/DownloadController.php:105
|
||||
msgid "License not found."
|
||||
msgstr ""
|
||||
@@ -790,7 +779,6 @@ msgstr ""
|
||||
msgid "Expiration Warning Schedule"
|
||||
msgstr ""
|
||||
|
||||
#. translators: %s: URL to WooCommerce email settings
|
||||
#: src/Admin/SettingsController.php:101
|
||||
#, php-format
|
||||
msgid ""
|
||||
@@ -828,7 +816,7 @@ msgid "Add New Version"
|
||||
msgstr ""
|
||||
|
||||
#: src/Admin/VersionAdminController.php:81
|
||||
#: src/Admin/VersionAdminController.php:129
|
||||
#: src/Admin/VersionAdminController.php:136
|
||||
msgid "Version"
|
||||
msgstr ""
|
||||
|
||||
@@ -837,7 +825,7 @@ msgid "Use semantic versioning (e.g., 1.0.0)"
|
||||
msgstr ""
|
||||
|
||||
#: src/Admin/VersionAdminController.php:88
|
||||
#: src/Admin/VersionAdminController.php:130
|
||||
#: src/Admin/VersionAdminController.php:137
|
||||
msgid "Download File"
|
||||
msgstr ""
|
||||
|
||||
@@ -846,6 +834,7 @@ msgid "Select File"
|
||||
msgstr ""
|
||||
|
||||
#: src/Admin/VersionAdminController.php:96
|
||||
#: src/Admin/VersionAdminController.php:110
|
||||
msgid "Remove"
|
||||
msgstr ""
|
||||
|
||||
@@ -856,115 +845,132 @@ msgid ""
|
||||
msgstr ""
|
||||
|
||||
#: src/Admin/VersionAdminController.php:102
|
||||
msgid "Or External URL"
|
||||
msgid "Checksum File"
|
||||
msgstr ""
|
||||
|
||||
#: src/Admin/VersionAdminController.php:105
|
||||
#: src/Admin/VersionAdminController.php:107
|
||||
msgid "Select Checksum File"
|
||||
msgstr ""
|
||||
|
||||
#: src/Admin/VersionAdminController.php:112
|
||||
msgid ""
|
||||
"Alternative: Enter an external download URL instead of uploading a file."
|
||||
"Upload a SHA256 checksum file (.sha256 or .txt) to verify file integrity."
|
||||
msgstr ""
|
||||
|
||||
#: src/Admin/VersionAdminController.php:109
|
||||
#: src/Admin/VersionAdminController.php:131
|
||||
#: src/Admin/VersionAdminController.php:116
|
||||
#: src/Admin/VersionAdminController.php:139
|
||||
msgid "Release Notes"
|
||||
msgstr ""
|
||||
|
||||
#: src/Admin/VersionAdminController.php:117
|
||||
#: src/Admin/VersionAdminController.php:124
|
||||
msgid "Add Version"
|
||||
msgstr ""
|
||||
|
||||
#: src/Admin/VersionAdminController.php:125
|
||||
#: src/Admin/VersionAdminController.php:132
|
||||
msgid "Existing Versions"
|
||||
msgstr ""
|
||||
|
||||
#: src/Admin/VersionAdminController.php:133
|
||||
#: src/Admin/VersionAdminController.php:138
|
||||
msgid "SHA256"
|
||||
msgstr ""
|
||||
|
||||
#: src/Admin/VersionAdminController.php:141
|
||||
msgid "Released"
|
||||
msgstr ""
|
||||
|
||||
#: src/Admin/VersionAdminController.php:140
|
||||
#: src/Admin/VersionAdminController.php:148
|
||||
msgid "No versions found. Add your first version above."
|
||||
msgstr ""
|
||||
|
||||
#: src/Admin/VersionAdminController.php:156
|
||||
#: src/Admin/VersionAdminController.php:372
|
||||
#: src/Admin/VersionAdminController.php:164
|
||||
#: src/Admin/VersionAdminController.php:393
|
||||
msgid "Uploaded file"
|
||||
msgstr ""
|
||||
|
||||
#: src/Admin/VersionAdminController.php:159
|
||||
#: src/Admin/VersionAdminController.php:375
|
||||
#: src/Admin/VersionAdminController.php:167
|
||||
#: src/Admin/VersionAdminController.php:396
|
||||
msgid "No download file"
|
||||
msgstr ""
|
||||
|
||||
#: src/Admin/VersionAdminController.php:215
|
||||
#: src/Admin/VersionAdminController.php:230
|
||||
msgid "Are you sure you want to delete this version?"
|
||||
msgstr ""
|
||||
|
||||
#: src/Admin/VersionAdminController.php:216
|
||||
#: src/Admin/VersionAdminController.php:231
|
||||
msgid "Please enter a version number."
|
||||
msgstr ""
|
||||
|
||||
#: src/Admin/VersionAdminController.php:217
|
||||
#: src/Admin/VersionAdminController.php:232
|
||||
msgid "Please enter a valid version number (e.g., 1.0.0)."
|
||||
msgstr ""
|
||||
|
||||
#: src/Admin/VersionAdminController.php:218
|
||||
#: src/Admin/VersionAdminController.php:233
|
||||
msgid "An error occurred. Please try again."
|
||||
msgstr ""
|
||||
|
||||
#: src/Admin/VersionAdminController.php:219
|
||||
#: src/Admin/VersionAdminController.php:234
|
||||
msgid "Select Download File"
|
||||
msgstr ""
|
||||
|
||||
#: src/Admin/VersionAdminController.php:220
|
||||
#: src/Admin/VersionAdminController.php:235
|
||||
msgid "Use this file"
|
||||
msgstr ""
|
||||
|
||||
#: src/Admin/VersionAdminController.php:250
|
||||
#: src/Admin/VersionAdminController.php:236
|
||||
msgid ""
|
||||
"Invalid checksum file format. File must contain a 64-character SHA256 hash."
|
||||
msgstr ""
|
||||
|
||||
#: src/Admin/VersionAdminController.php:237
|
||||
msgid "Failed to read checksum file."
|
||||
msgstr ""
|
||||
|
||||
#: src/Admin/VersionAdminController.php:267
|
||||
msgid "Product ID and version are required."
|
||||
msgstr ""
|
||||
|
||||
#: src/Admin/VersionAdminController.php:255
|
||||
#: src/Admin/VersionAdminController.php:272
|
||||
msgid "Invalid version format. Use semantic versioning (e.g., 1.0.0)."
|
||||
msgstr ""
|
||||
|
||||
#: src/Admin/VersionAdminController.php:260
|
||||
#: src/Admin/VersionAdminController.php:277
|
||||
msgid "This version already exists."
|
||||
msgstr ""
|
||||
|
||||
#: src/Admin/VersionAdminController.php:266
|
||||
#: src/Admin/VersionAdminController.php:283
|
||||
msgid "Product not found."
|
||||
msgstr ""
|
||||
|
||||
#: src/Admin/VersionAdminController.php:270
|
||||
#: src/Admin/VersionAdminController.php:287
|
||||
msgid "This product is not a licensed product."
|
||||
msgstr ""
|
||||
|
||||
#: src/Admin/VersionAdminController.php:283
|
||||
#: src/Admin/VersionAdminController.php:304
|
||||
msgid "Failed to create version."
|
||||
msgstr ""
|
||||
|
||||
#: src/Admin/VersionAdminController.php:291
|
||||
#: src/Admin/VersionAdminController.php:312
|
||||
msgid "Version added successfully."
|
||||
msgstr ""
|
||||
|
||||
#: src/Admin/VersionAdminController.php:311
|
||||
#: src/Admin/VersionAdminController.php:338
|
||||
#: src/Admin/VersionAdminController.php:332
|
||||
#: src/Admin/VersionAdminController.php:359
|
||||
msgid "Version ID is required."
|
||||
msgstr ""
|
||||
|
||||
#: src/Admin/VersionAdminController.php:317
|
||||
#: src/Admin/VersionAdminController.php:338
|
||||
msgid "Failed to delete version."
|
||||
msgstr ""
|
||||
|
||||
#: src/Admin/VersionAdminController.php:320
|
||||
#: src/Admin/VersionAdminController.php:341
|
||||
msgid "Version deleted successfully."
|
||||
msgstr ""
|
||||
|
||||
#: src/Admin/VersionAdminController.php:344
|
||||
#: src/Admin/VersionAdminController.php:365
|
||||
msgid "Failed to update version."
|
||||
msgstr ""
|
||||
|
||||
#: src/Admin/VersionAdminController.php:348
|
||||
#: src/Admin/VersionAdminController.php:369
|
||||
msgid "Version updated successfully."
|
||||
msgstr ""
|
||||
|
||||
@@ -997,26 +1003,30 @@ msgstr ""
|
||||
msgid "License activated successfully."
|
||||
msgstr ""
|
||||
|
||||
#: src/Checkout/CheckoutController.php:78
|
||||
#: src/Checkout/CheckoutBlocksIntegration.php:101
|
||||
#: src/Checkout/CheckoutController.php:81
|
||||
msgid "Domain for License Activation"
|
||||
msgstr ""
|
||||
|
||||
#: src/Checkout/CheckoutBlocksIntegration.php:103
|
||||
#: src/Checkout/CheckoutController.php:93
|
||||
msgid ""
|
||||
"Enter the domain where you will use this license (without http:// or www)."
|
||||
msgstr ""
|
||||
|
||||
#: src/Checkout/CheckoutBlocksIntegration.php:104
|
||||
#: src/Checkout/CheckoutController.php:78
|
||||
msgid "License Domain"
|
||||
msgstr ""
|
||||
|
||||
#: src/Checkout/CheckoutController.php:81
|
||||
#: src/Checkout/CheckoutBlocksIntegration.php:101
|
||||
msgid "Domain for License Activation"
|
||||
#: src/Checkout/CheckoutBlocksIntegration.php:105
|
||||
msgid "Please enter a valid domain for your license activation."
|
||||
msgstr ""
|
||||
|
||||
#: src/Checkout/CheckoutController.php:82
|
||||
msgid "required"
|
||||
msgstr ""
|
||||
|
||||
#: src/Checkout/CheckoutController.php:93
|
||||
#: src/Checkout/CheckoutBlocksIntegration.php:103
|
||||
msgid ""
|
||||
"Enter the domain where you will use this license (without http:// or www)."
|
||||
msgstr ""
|
||||
|
||||
#: src/Checkout/CheckoutController.php:115
|
||||
msgid "Please enter a domain for your license activation."
|
||||
msgstr ""
|
||||
@@ -1031,10 +1041,6 @@ msgstr ""
|
||||
msgid "License Domain:"
|
||||
msgstr ""
|
||||
|
||||
#: src/Checkout/CheckoutBlocksIntegration.php:105
|
||||
msgid "Please enter a valid domain for your license activation."
|
||||
msgstr ""
|
||||
|
||||
#: src/Checkout/StoreApiExtension.php:85
|
||||
msgid "Domain for license activation"
|
||||
msgstr ""
|
||||
@@ -1044,7 +1050,7 @@ msgstr ""
|
||||
#: src/Email/LicenseEmailController.php:281
|
||||
#: src/Email/LicenseExpirationEmail.php:207
|
||||
#: src/Email/LicenseExpirationEmail.php:270
|
||||
#: src/Frontend/AccountController.php:189
|
||||
#: src/Frontend/AccountController.php:190
|
||||
msgid "License Key:"
|
||||
msgstr ""
|
||||
|
||||
@@ -1059,7 +1065,7 @@ msgstr ""
|
||||
|
||||
#: src/Email/LicenseEmailController.php:248
|
||||
#: src/Email/LicenseEmailController.php:287
|
||||
#: src/Frontend/AccountController.php:217
|
||||
#: src/Frontend/AccountController.php:218
|
||||
msgid "Never"
|
||||
msgstr ""
|
||||
|
||||
@@ -1075,7 +1081,7 @@ msgstr ""
|
||||
#: src/Email/LicenseEmailController.php:284
|
||||
#: src/Email/LicenseExpirationEmail.php:219
|
||||
#: src/Email/LicenseExpirationEmail.php:272
|
||||
#: src/Frontend/AccountController.php:212
|
||||
#: src/Frontend/AccountController.php:213
|
||||
msgid "Expires:"
|
||||
msgstr ""
|
||||
|
||||
@@ -1100,7 +1106,7 @@ msgid "License Expiration Notice"
|
||||
msgstr ""
|
||||
|
||||
#: src/Email/LicenseExpirationEmail.php:107
|
||||
#: src/Frontend/AccountController.php:139 src/License/LicenseManager.php:760
|
||||
#: src/Frontend/AccountController.php:140 src/License/LicenseManager.php:760
|
||||
msgid "Unknown Product"
|
||||
msgstr ""
|
||||
|
||||
@@ -1134,7 +1140,7 @@ msgstr ""
|
||||
|
||||
#: src/Email/LicenseExpirationEmail.php:215
|
||||
#: src/Email/LicenseExpirationEmail.php:271
|
||||
#: src/Frontend/AccountController.php:200
|
||||
#: src/Frontend/AccountController.php:201
|
||||
msgid "Domain:"
|
||||
msgstr ""
|
||||
|
||||
@@ -1149,7 +1155,6 @@ msgid ""
|
||||
"expiration date."
|
||||
msgstr ""
|
||||
|
||||
#. translators: %s: list of placeholders
|
||||
#: src/Email/LicenseExpirationEmail.php:301
|
||||
#, php-format
|
||||
msgid "Available placeholders: %s"
|
||||
@@ -1191,91 +1196,91 @@ msgstr ""
|
||||
msgid "Please log in to view your licenses."
|
||||
msgstr ""
|
||||
|
||||
#: src/Frontend/AccountController.php:164
|
||||
#: src/Frontend/AccountController.php:165
|
||||
msgid "You have no licenses yet."
|
||||
msgstr ""
|
||||
|
||||
#: src/Frontend/AccountController.php:206
|
||||
#: src/Frontend/AccountController.php:207
|
||||
msgid "Transfer to new domain"
|
||||
msgstr ""
|
||||
|
||||
#: src/Frontend/AccountController.php:208
|
||||
#: src/Frontend/AccountController.php:209
|
||||
msgid "Transfer"
|
||||
msgstr ""
|
||||
|
||||
#: src/Frontend/AccountController.php:225
|
||||
#: src/Frontend/AccountController.php:226
|
||||
msgid "Available Downloads"
|
||||
msgstr ""
|
||||
|
||||
#: src/Frontend/AccountController.php:231
|
||||
#: src/Frontend/AccountController.php:232
|
||||
#, php-format
|
||||
msgid "Version %s"
|
||||
msgstr ""
|
||||
|
||||
#: src/Frontend/AccountController.php:248
|
||||
#: src/Frontend/AccountController.php:249
|
||||
msgid "Close"
|
||||
msgstr ""
|
||||
|
||||
#: src/Frontend/AccountController.php:249
|
||||
#: src/Frontend/AccountController.php:250
|
||||
msgid "Transfer License to New Domain"
|
||||
msgstr ""
|
||||
|
||||
#: src/Frontend/AccountController.php:254
|
||||
#: src/Frontend/AccountController.php:255
|
||||
msgid "Current Domain"
|
||||
msgstr ""
|
||||
|
||||
#: src/Frontend/AccountController.php:259
|
||||
#: src/Frontend/AccountController.php:260
|
||||
msgid "New Domain"
|
||||
msgstr ""
|
||||
|
||||
#: src/Frontend/AccountController.php:263
|
||||
#: src/Frontend/AccountController.php:264
|
||||
msgid "Enter the new domain without http:// or www."
|
||||
msgstr ""
|
||||
|
||||
#: src/Frontend/AccountController.php:268
|
||||
#: src/Frontend/AccountController.php:269
|
||||
msgid "Transfer License"
|
||||
msgstr ""
|
||||
|
||||
#: src/Frontend/AccountController.php:310
|
||||
#: src/Frontend/AccountController.php:377
|
||||
#: src/Frontend/AccountController.php:311
|
||||
#: src/Frontend/AccountController.php:378
|
||||
msgid "License transferred successfully!"
|
||||
msgstr ""
|
||||
|
||||
#: src/Frontend/AccountController.php:311
|
||||
#: src/Frontend/AccountController.php:312
|
||||
msgid "Transfer failed. Please try again."
|
||||
msgstr ""
|
||||
|
||||
#: src/Frontend/AccountController.php:312
|
||||
#: src/Frontend/AccountController.php:313
|
||||
msgid ""
|
||||
"Are you sure you want to transfer this license to a new domain? This action "
|
||||
"cannot be undone."
|
||||
msgstr ""
|
||||
|
||||
#: src/Frontend/AccountController.php:331
|
||||
#: src/Frontend/AccountController.php:332
|
||||
msgid "Please log in to transfer a license."
|
||||
msgstr ""
|
||||
|
||||
#: src/Frontend/AccountController.php:337
|
||||
#: src/Frontend/AccountController.php:338
|
||||
msgid "Invalid license."
|
||||
msgstr ""
|
||||
|
||||
#: src/Frontend/AccountController.php:355
|
||||
#: src/Frontend/AccountController.php:356
|
||||
msgid "You do not have permission to transfer this license."
|
||||
msgstr ""
|
||||
|
||||
#: src/Frontend/AccountController.php:360
|
||||
#: src/Frontend/AccountController.php:361
|
||||
msgid "Revoked licenses cannot be transferred."
|
||||
msgstr ""
|
||||
|
||||
#: src/Frontend/AccountController.php:364
|
||||
#: src/Frontend/AccountController.php:365
|
||||
msgid "Expired licenses cannot be transferred."
|
||||
msgstr ""
|
||||
|
||||
#: src/Frontend/AccountController.php:369
|
||||
#: src/Frontend/AccountController.php:370
|
||||
msgid "The new domain is the same as the current domain."
|
||||
msgstr ""
|
||||
|
||||
#: src/Frontend/AccountController.php:381
|
||||
#: src/Frontend/AccountController.php:382
|
||||
msgid "Failed to transfer license. Please try again."
|
||||
msgstr ""
|
||||
|
||||
@@ -1359,7 +1364,6 @@ msgstr ""
|
||||
msgid "%d days"
|
||||
msgstr ""
|
||||
|
||||
#. translators: %s: URL to settings page
|
||||
#: src/Product/LicensedProductType.php:113
|
||||
#, php-format
|
||||
msgid "Leave fields empty to use default settings from %s."
|
||||
@@ -1373,7 +1377,6 @@ msgstr ""
|
||||
msgid "Max Activations"
|
||||
msgstr ""
|
||||
|
||||
#. translators: %d: default max activations value
|
||||
#: src/Product/LicensedProductType.php:125
|
||||
#, php-format
|
||||
msgid "Maximum number of domain activations per license. Default: %d"
|
||||
@@ -1383,7 +1386,6 @@ msgstr ""
|
||||
msgid "License Validity (Days)"
|
||||
msgstr ""
|
||||
|
||||
#. translators: %s: default validity value
|
||||
#: src/Product/LicensedProductType.php:143
|
||||
#, php-format
|
||||
msgid "Number of days the license is valid. Leave empty for default (%s)."
|
||||
@@ -1393,7 +1395,6 @@ msgstr ""
|
||||
msgid "Bind to Major Version"
|
||||
msgstr ""
|
||||
|
||||
#. translators: %s: default bind to version value (Yes/No)
|
||||
#: src/Product/LicensedProductType.php:161
|
||||
#, php-format
|
||||
msgid ""
|
||||
@@ -1409,24 +1410,11 @@ msgstr ""
|
||||
msgid "No"
|
||||
msgstr ""
|
||||
|
||||
#: src/Admin/VersionAdminController.php:101
|
||||
msgid "SHA256 Hash"
|
||||
msgstr ""
|
||||
|
||||
#: src/Admin/VersionAdminController.php:103
|
||||
msgid "Enter SHA256 checksum..."
|
||||
msgstr ""
|
||||
|
||||
#: src/Admin/VersionAdminController.php:104
|
||||
msgid "SHA256 checksum of the uploaded file (optional but recommended for integrity verification)."
|
||||
msgstr ""
|
||||
|
||||
#: src/Product/VersionManager.php:67
|
||||
#: src/Product/VersionManager.php:166
|
||||
msgid "Attachment file not found."
|
||||
msgstr ""
|
||||
|
||||
#. translators: 1: provided hash, 2: calculated hash
|
||||
#: src/Product/VersionManager.php:73
|
||||
#: src/Product/VersionManager.php:177
|
||||
#, php-format
|
||||
msgid "File checksum does not match. Expected: %1$s, Got: %2$s"
|
||||
msgstr ""
|
||||
|
||||
1
releases/wc-licensed-product-0.2.0.sha256
Normal file
1
releases/wc-licensed-product-0.2.0.sha256
Normal file
@@ -0,0 +1 @@
|
||||
20d90f61721b4579cb979cd19b0262f3286c3510dcb0345fe5e8da2703e3836f wc-licensed-product-0.2.0.zip
|
||||
BIN
releases/wc-licensed-product-0.2.0.zip
Normal file
BIN
releases/wc-licensed-product-0.2.0.zip
Normal file
Binary file not shown.
BIN
releases/wc-licensed-product-0.2.1.zip
Normal file
BIN
releases/wc-licensed-product-0.2.1.zip
Normal file
Binary file not shown.
1
releases/wc-licensed-product-0.2.1.zip.sha256
Normal file
1
releases/wc-licensed-product-0.2.1.zip.sha256
Normal file
@@ -0,0 +1 @@
|
||||
7b895090538f9063fac1509b6f7a40a2b71dc9958b3a255cbfcc60d0320ae5e5 releases/wc-licensed-product-0.2.1.zip
|
||||
@@ -99,10 +99,17 @@ final class VersionAdminController
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="sha256-hash-row" style="display: none;">
|
||||
<th><label for="new_file_hash"><?php esc_html_e('SHA256 Hash', 'wc-licensed-product'); ?></label></th>
|
||||
<th><label for="new_checksum_file"><?php esc_html_e('Checksum File', 'wc-licensed-product'); ?></label></th>
|
||||
<td>
|
||||
<input type="text" id="new_file_hash" name="new_file_hash" class="large-text" placeholder="<?php esc_attr_e('Enter SHA256 checksum...', 'wc-licensed-product'); ?>" pattern="[a-fA-F0-9]{64}" />
|
||||
<p class="description"><?php esc_html_e('SHA256 checksum of the uploaded file (optional but recommended for integrity verification).', 'wc-licensed-product'); ?></p>
|
||||
<input type="file" id="new_checksum_file" name="new_checksum_file" accept=".sha256,.txt" style="display: none;" />
|
||||
<span id="selected_checksum_name" class="selected-file-name"></span>
|
||||
<button type="button" class="button" id="select-checksum-file-btn">
|
||||
<?php esc_html_e('Select Checksum File', 'wc-licensed-product'); ?>
|
||||
</button>
|
||||
<button type="button" class="button" id="remove-checksum-file-btn" style="display: none;">
|
||||
<?php esc_html_e('Remove', 'wc-licensed-product'); ?>
|
||||
</button>
|
||||
<p class="description"><?php esc_html_e('Upload a SHA256 checksum file (.sha256 or .txt) to verify file integrity.', 'wc-licensed-product'); ?></p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
@@ -128,6 +135,7 @@ final class VersionAdminController
|
||||
<tr>
|
||||
<th><?php esc_html_e('Version', 'wc-licensed-product'); ?></th>
|
||||
<th><?php esc_html_e('Download File', 'wc-licensed-product'); ?></th>
|
||||
<th><?php esc_html_e('SHA256', 'wc-licensed-product'); ?></th>
|
||||
<th><?php esc_html_e('Release Notes', 'wc-licensed-product'); ?></th>
|
||||
<th><?php esc_html_e('Status', 'wc-licensed-product'); ?></th>
|
||||
<th><?php esc_html_e('Released', 'wc-licensed-product'); ?></th>
|
||||
@@ -137,7 +145,7 @@ final class VersionAdminController
|
||||
<tbody>
|
||||
<?php if (empty($versions)): ?>
|
||||
<tr class="no-versions">
|
||||
<td colspan="6"><?php esc_html_e('No versions found. Add your first version above.', 'wc-licensed-product'); ?></td>
|
||||
<td colspan="7"><?php esc_html_e('No versions found. Add your first version above.', 'wc-licensed-product'); ?></td>
|
||||
</tr>
|
||||
<?php else: ?>
|
||||
<?php foreach ($versions as $version): ?>
|
||||
@@ -159,6 +167,13 @@ final class VersionAdminController
|
||||
<em><?php esc_html_e('No download file', 'wc-licensed-product'); ?></em>
|
||||
<?php endif; ?>
|
||||
</td>
|
||||
<td>
|
||||
<?php if ($version->getFileHash()): ?>
|
||||
<code class="file-hash" title="<?php echo esc_attr($version->getFileHash()); ?>"><?php echo esc_html(substr($version->getFileHash(), 0, 12)); ?>...</code>
|
||||
<?php else: ?>
|
||||
<em>—</em>
|
||||
<?php endif; ?>
|
||||
</td>
|
||||
<td><?php echo esc_html($version->getReleaseNotes() ? wp_trim_words($version->getReleaseNotes(), 10) : '—'); ?></td>
|
||||
<td>
|
||||
<span class="version-status version-status-<?php echo $version->isActive() ? 'active' : 'inactive'; ?>">
|
||||
@@ -218,6 +233,8 @@ final class VersionAdminController
|
||||
'error' => __('An error occurred. Please try again.', 'wc-licensed-product'),
|
||||
'selectFile' => __('Select Download File', 'wc-licensed-product'),
|
||||
'useThisFile' => __('Use this file', 'wc-licensed-product'),
|
||||
'invalidChecksumFile' => __('Invalid checksum file format. File must contain a 64-character SHA256 hash.', 'wc-licensed-product'),
|
||||
'checksumReadError' => __('Failed to read checksum file.', 'wc-licensed-product'),
|
||||
],
|
||||
]);
|
||||
|
||||
@@ -379,6 +396,13 @@ final class VersionAdminController
|
||||
<em><?php esc_html_e('No download file', 'wc-licensed-product'); ?></em>
|
||||
<?php endif; ?>
|
||||
</td>
|
||||
<td>
|
||||
<?php if ($version->getFileHash()): ?>
|
||||
<code class="file-hash" title="<?php echo esc_attr($version->getFileHash()); ?>"><?php echo esc_html(substr($version->getFileHash(), 0, 12)); ?>...</code>
|
||||
<?php else: ?>
|
||||
<em>—</em>
|
||||
<?php endif; ?>
|
||||
</td>
|
||||
<td><?php echo esc_html($version->getReleaseNotes() ? wp_trim_words($version->getReleaseNotes(), 10) : '—'); ?></td>
|
||||
<td>
|
||||
<span class="version-status version-status-<?php echo $version->isActive() ? 'active' : 'inactive'; ?>">
|
||||
|
||||
@@ -129,6 +129,7 @@ final class AccountController
|
||||
),
|
||||
'release_notes' => $version->getReleaseNotes(),
|
||||
'released_at' => $version->getReleasedAt()->format(get_option('date_format')),
|
||||
'file_hash' => $version->getFileHash(),
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -64,6 +64,12 @@
|
||||
</a>
|
||||
<span class="download-version">v{{ esc_html(download.version) }}</span>
|
||||
<span class="download-date">{{ esc_html(download.released_at) }}</span>
|
||||
{% if download.file_hash %}
|
||||
<span class="download-hash" title="{{ esc_attr(download.file_hash) }}">
|
||||
<span class="dashicons dashicons-shield"></span>
|
||||
<code>{{ download.file_hash[:12] }}...</code>
|
||||
</span>
|
||||
{% endif %}
|
||||
</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
* Plugin Name: WooCommerce Licensed Product
|
||||
* Plugin URI: https://src.bundespruefstelle.ch/magdev/wc-licensed-product
|
||||
* Description: WooCommerce plugin to sell software products using license keys with domain-based validation.
|
||||
* Version: 0.2.0
|
||||
* Version: 0.2.2
|
||||
* Author: Marco Graetsch
|
||||
* Author URI: https://src.bundespruefstelle.ch/magdev
|
||||
* License: GPL-2.0-or-later
|
||||
@@ -28,7 +28,7 @@ if (!defined('ABSPATH')) {
|
||||
}
|
||||
|
||||
// Plugin constants
|
||||
define('WC_LICENSED_PRODUCT_VERSION', '0.2.0');
|
||||
define('WC_LICENSED_PRODUCT_VERSION', '0.2.2');
|
||||
define('WC_LICENSED_PRODUCT_PLUGIN_FILE', __FILE__);
|
||||
define('WC_LICENSED_PRODUCT_PLUGIN_DIR', plugin_dir_path(__FILE__));
|
||||
define('WC_LICENSED_PRODUCT_PLUGIN_URL', plugin_dir_url(__FILE__));
|
||||
|
||||
Reference in New Issue
Block a user