From fb47cc6fbc2842b872269430b5b54a01b25b93ae Mon Sep 17 00:00:00 2001 From: Haim Barad Date: Sun, 10 May 2026 19:03:54 +0300 Subject: [PATCH 1/4] =?UTF-8?q?feat(wordpress):=20full=20reconciliation=20?= =?UTF-8?q?of=20WP=20plugin=20.pot=20=E2=86=92=20wordpress=20namespace?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Closes the gap between the WP plugin's PHP-side translatable strings and this repo's wordpress namespace bookkeeping. Prior state: 46 keys under wordpress.* covering Phase 2 admin + widget surfaces only. Many post-Phase-2 sprints (SWE-447, SWE-448, SWE-453, SWE-453, SWE-488, SWE-499, SWE-504, SWE-507, SWE-510, SWE-511) added strings to the WP plugin's .pot without a matching record here. This commit syncs the plugin's `languages/loyaltydog.pot` (post- regeneration on `loyaltydog/loyaltydog-wordpress-ecommerce@PR #128`) against the existing wordpress namespace and adds 570 new keys grouped by source-file area: admin.activation admin.connection admin.credentials admin.dashboard admin.diagnostics admin.encryptionKeyNotice admin.help admin.menu admin.notices admin.program admin.settings admin.settingsSync admin.subscriptionLapse admin.systemInfo admin.testConnection admin.trialNotices admin.widget admin.wizard compliance earning emails frontend.account frontend.checkout frontend.checkoutService frontend.customerExport frontend.elementor frontend.points frontend.redeem misc plugin privacy program rateLimiter webhooks.stripe Naming algorithm: take the first 4-6 words of each msgid, drop placeholder tokens (%s/%d), camelCase, dedupe with numeric suffix on collision. Scoping: `wordpress..`. Non-deterministic to revisit — keys are mechanically generated, not curated. Translators can refine paths in a follow-up; the bookkeeping role is the priority. Conflict checks performed: - Path collisions with existing wordpress.* paths in this repo (across common.json, errors.json, wordpress.json): 3 found. * 2 skipped as semantic dupes (case / placeholder syntax only). * 1 renamed with `Wp` suffix to disambiguate. - Value overlaps with non-wordpress namespaces: 52 found, ALLOWED per the established pattern (each integration namespace is self- contained for translators; e.g. `wordpress.admin.widget.save` coexists with `common.actions.save`). All 8 hyphen-form locale dirs (en-US, en-GB, es-ES, es-MX, fr, it, pt-BR, pt-PT) seeded with English values. Crowdin will translate on next sync. en-US is source of truth. Final leaf count per locale wordpress.json: 616 (was 46). Source ref: loyaltydog-wordpress-ecommerce PR #128 (.pot regeneration post-sprint; merged 2026-05-10). --- packages/i18n/locales/en-GB/wordpress.json | 630 ++++++++++++++++++++- packages/i18n/locales/en-US/wordpress.json | 630 ++++++++++++++++++++- packages/i18n/locales/es-ES/wordpress.json | 630 ++++++++++++++++++++- packages/i18n/locales/es-MX/wordpress.json | 630 ++++++++++++++++++++- packages/i18n/locales/fr/wordpress.json | 630 ++++++++++++++++++++- packages/i18n/locales/it/wordpress.json | 630 ++++++++++++++++++++- packages/i18n/locales/pt-BR/wordpress.json | 630 ++++++++++++++++++++- packages/i18n/locales/pt-PT/wordpress.json | 630 ++++++++++++++++++++- 8 files changed, 5008 insertions(+), 32 deletions(-) diff --git a/packages/i18n/locales/en-GB/wordpress.json b/packages/i18n/locales/en-GB/wordpress.json index 9948383..12e67b2 100644 --- a/packages/i18n/locales/en-GB/wordpress.json +++ b/packages/i18n/locales/en-GB/wordpress.json @@ -8,7 +8,21 @@ "program": "Programme", "noProgramSelected": "No programme selected", "openDashboard": "Open LoyaltyDog Dashboard", - "connectStore": "Connect Your Store" + "connectStore": "Connect Your Store", + "atAGlanceStatusOfYour": "At-a-glance status of your LoyaltyDog program. Detailed analytics live in the portal.", + "programSummaryMetrics": "Program summary metrics", + "connectionStatus": "Connection status", + "connection": "Connection", + "programWp": "Program: %s", + "pointsIssuedInTheLast30": "Points issued in the last 30 days", + "pointsIssued30d": "Points issued (30d)", + "valueNotYetAvailable": "Value not yet available", + "viewInPortal": "View in portal", + "totalMembersEnrolled": "Total members enrolled", + "members": "Members", + "latestActivity": "Latest activity", + "latestTransaction": "Latest transaction", + "noActivityYet": "No activity yet" }, "connection": { "title": "LoyaltyDog Connection", @@ -26,7 +40,14 @@ "apiKeyNotConfigured": "API key not configured", "httpError": "HTTP {{code}} from API", "connectionSuccessful": "Connection successful", - "unauthorized": "Unauthorised" + "unauthorized": "Unauthorised", + "youDoNotHavePermissionTo": "You do not have permission to access this page.", + "programId": "Program ID", + "php1sOrNewerIsRequired": "PHP %1$s or newer is required. This site is running PHP %2$s. Please ask your hosting provider to upgrade PHP before configuring LoyaltyDog.", + "wordpress1sOrNewerIsRequired": "WordPress %1$s or newer is required. This site is running WordPress %2$s.", + "woocommerceIsRequiredButIsNot": "WooCommerce is required but is not installed or activated.", + "woocommerce1sOrNewerIsRequired": "WooCommerce %1$s or newer is required. This site is running WooCommerce %2$s.", + "httpFromApi": "HTTP %d from API" }, "widget": { "title": "LoyaltyDog Widget", @@ -40,7 +61,28 @@ "save": "Save", "settingsSaved": "Settings saved.", "preview": "Preview", - "previewPlaceholder": "[LoyaltyDog widget renders here for logged-in customers]" + "previewPlaceholder": "[LoyaltyDog widget renders here for logged-in customers]", + "couldNotSaveSettingsToLoyaltydog": "Could not save settings to LoyaltyDog: %s", + "joinWidget": "Join Widget", + "shownToGuestVisitorsAndCustomers": "Shown to guest visitors and customers not yet in your loyalty program.", + "signupUrl": "Signup URL", + "theShareJoinUrlFromYour": "The share/join URL from your loyalty program dashboard. Opens in a new tab.", + "qrCode": "QR Code", + "showQrCodeAlongsideJoinText": "Show QR code alongside join text", + "customersCanScanWithTheirPhone": "Customers can scan with their phone to open the signup form directly.", + "checkoutRedemption": "Checkout Redemption", + "allowCustomersToAutomaticallyRedeemLoyalty": "Allow customers to automatically redeem loyalty points as a discount at checkout.", + "enableRedemption": "Enable Redemption", + "applyLoyaltyPointsAsACart": "Apply loyalty points as a cart discount at checkout", + "whenEnabledAllAvailablePointsAre": "When enabled, all available points are automatically applied as a discount. Customers can see this in their cart.", + "pointsValue": "Points Value", + "currencyPerPoint": "currency per point", + "eG001Means100": "e.g. 0.01 means 100 points = $1.00 discount. Range: 0.001–1.0.", + "emailNotifications": "Email Notifications", + "controlWhichTransactionalEmailsCustomersReceive": "Control which transactional emails customers receive from your loyalty program.", + "tierChangeEmails": "Tier Change Emails", + "sendANotificationWhenACustomer": "Send a notification when a customer moves between loyalty tiers", + "customersCanAlsoOptOutIndividually": "Customers can also opt out individually under My Account → Loyalty." }, "systemInfo": { "title": "LoyaltyDog System Info", @@ -51,12 +93,592 @@ "woocommerceVersion": "WooCommerce Version", "pluginVersion": "Plugin Version", "pendingActions": "Pending AS Actions", - "notActive": "Not active" + "notActive": "Not active", + "systemInformation": "System Information", + "compatibilityStatus": "Compatibility Status", + "yourPlatformMeetsAllRequirements": "Your platform meets all requirements", + "somePlatformRequirementsAreNotMet": "Some platform requirements are not met", + "wordpress": "WordPress", + "version": "Version:", + "language": "Language:", + "timezone": "Timezone:", + "multisite": "Multisite:", + "yes": "Yes", + "no": "No", + "woocommerce": "WooCommerce", + "status": "Status:", + "active": "Active", + "currency": "Currency:", + "restApi": "REST API:", + "enabled": "Enabled", + "disabled": "Disabled", + "php": "PHP", + "sapi": "SAPI:", + "maxInputVars": "Max Input Vars:", + "postMaxSize": "Post Max Size:", + "uploadMaxSize": "Upload Max Size:", + "phpExtensions": "PHP Extensions", + "required": "Required", + "loaded": "Loaded", + "missing": "Missing", + "optional": "Optional", + "serverResources": "Server Resources", + "memoryLimit": "Memory Limit:", + "currentMemoryUsage": "Current Memory Usage:", + "maxExecutionTime": "Max Execution Time:", + "serverSoftware": "Server Software:", + "wpDebug": "WP Debug:" + }, + "credentials": { + "securityCheckFailed": "Security check failed", + "invalidCredentialKey": "Invalid credential key", + "credentialValueIsRequired": "Credential value is required", + "invalidCredentialFormat": "Invalid credential format", + "failedToStoreCredentialPleaseTry": "Failed to store credential. Please try again.", + "credentialUpdatedSuccessfully": "Credential updated successfully", + "failedToDeleteCredentialPleaseTry": "Failed to delete credential. Please try again.", + "credentialDeletedSuccessfully": "Credential deleted successfully", + "noCredentialsToExport": "No credentials to export", + "noFileProvided": "No file provided", + "fileUploadFailed": "File upload failed", + "invalidFileTypePleaseUploadA": "Invalid file type. Please upload a JSON file.", + "invalidImportFileFormat": "Invalid import file format", + "noCredentialsWereImported": "No credentials were imported", + "credentialsImportedSuccessfully": "%d credentials imported successfully" + }, + "settings": { + "loyaltydogCredentials": "LoyaltyDog Credentials", + "manageYourApiKeysAndIntegration": "Manage your API keys and integration credentials.", + "status": "Status", + "stripe": "Stripe", + "coreApi": "Core API", + "auditLog": "Audit Log", + "backup": "Backup", + "stripeSecretKey": "Stripe Secret Key", + "stripeWebhookSecret": "Stripe Webhook Secret", + "stripePublicKey": "Stripe Public Key", + "stripePriceId": "Stripe Price ID", + "credentialStatus": "Credential Status", + "credential": "Credential", + "type": "Type", + "lastUpdated": "Last Updated", + "actions": "Actions", + "notConfigured": "Not Configured", + "encrypted": "Encrypted", + "plainText": "Plain text", + "edit": "Edit", + "delete": "Delete", + "configure": "Configure", + "stripeConfiguration": "Stripe Configuration", + "secretKey": "Secret Key", + "findInStripeDashboardDevelopers": "Find in Stripe Dashboard → Developers → API Keys", + "configured": "Configured: ", + "update": "Update", + "clear": "Clear", + "publishableKey": "Publishable Key", + "webhookSigningSecret": "Webhook Signing Secret", + "findInStripeDashboardDevelopers2": "Find in Stripe Dashboard → Developers → Webhooks → Show signing secret", + "monthlyPriceId": "Monthly Price ID", + "stripePriceIdFor29Month": "Stripe price ID for $29/month subscription", + "loyaltydogApiCredentials": "LoyaltyDog API Credentials", + "oauthStyleCredentialsGeneratedDuringAccount": "OAuth-style credentials generated during account registration. These credentials are auto-generated and cannot be manually edited.", + "notConnected": "Not Connected", + "clickTheButtonBelowToConnect": "Click the button below to connect your WordPress store to LoyaltyDog.", + "connectToLoyaltydog": "Connect to LoyaltyDog", + "registrationStatus": "Registration Status", + "apiKeyIsSecurelyEncryptedIn": "API key is securely encrypted in storage.", + "webhookSecret": "Webhook Secret", + "webhookSecretIsSecurelyEncryptedIn": "Webhook secret is securely encrypted in storage and never displayed.", + "rotateWebhookSecret": "Rotate Webhook Secret", + "generateANewWebhookSecretFor": "Generate a new webhook secret for security purposes. Old secret remains valid for 7 days.", + "howToReconfigure": "How to reconfigure:", + "toResetOrChangeYourLoyaltydog": "To reset or change your LoyaltyDog integration, contact support or delete the plugin and reinstall to re-run the account setup wizard.", + "detailedAuditLogOfAllCredential": "Detailed audit log of all credential operations is available in WordPress error logs.", + "checkYourWordpressDebugLogFile": "Check your WordPress debug log file for detailed audit information: %s", + "recentOperations": "Recent Operations:", + "allCredentialUpdatesAreLoggedAutomatically": "All credential updates are logged automatically", + "allCredentialDeletionsAreLoggedAutomatically": "All credential deletions are logged automatically", + "allCredentialAccessIsLoggedRead": "All credential access is logged (read, decrypt)", + "logsIncludeUserTimestampAndAction": "Logs include user, timestamp, and action type", + "credentialValuesAreNeverLoggedSanitized": "Credential values are never logged (sanitized)", + "backupRestore": "Backup & Restore", + "exportCredentials": "Export Credentials", + "exportYourEncryptedCredentialsAsA": "Export your encrypted credentials as a backup. Keep this file secure.", + "exportCredentialsEncrypted": "Export Credentials (Encrypted)", + "importCredentials": "Import Credentials", + "restoreCredentialsFromAPreviouslyExported": "Restore credentials from a previously exported backup.", + "warning": "Warning:", + "importedCredentialsWillOverwriteExistingCredentials": "Imported credentials will overwrite existing credentials. Back up before importing." + }, + "encryptionKeyNotice": { + "yourAes256EncryptionKeyCurrently": "Your AES-256 encryption key currently lives in wp_options alongside the credentials it protects. A stolen database backup would give an attacker both halves at once. Add the line below to wp-config.php (above the \\\"/* That's all, stop editing! */\\\" comment) to separate the key from the data, then delete the loyaltydog_encryption_key option.", + "thisNoticeDisappearsOnceTheConstant": "This notice disappears once the constant is in place. The plugin keeps reading from wp_options until you remove that entry, so existing encrypted credentials stay readable throughout the migration." + }, + "notices": { + "loyaltydogV2MigrationCompletedAutomatically": "LoyaltyDog v2 migration completed automatically", + "yourLoyaltyDataWasMigratedWithout": "Your loyalty data was migrated without a coordinated maintenance window. Please contact support so we can verify your totals against our backend.", + "contactSupportLoyaltyDog": "Contact support.loyalty.dog", + "loyaltydogUpgradedToV203": "LoyaltyDog upgraded to v2.0.3", + "yourExistingProgramSettingsAndMember": "Your existing program settings and member point balances were carried over automatically.", + "reviewConnection": "Review Connection", + "dismiss": "Dismiss", + "loyaltydogV1V2MigrationFailed": "LoyaltyDog v1 → v2 migration failed.", + "error": "Error: %s", + "recoveryGuide": "Recovery guide", + "thePluginWillRetryAutomaticallyOn": "The plugin will retry automatically on the next admin pageload." + }, + "subscriptionLapse": { + "yourLoyaltydogWordpressAddOnPayment": "Your LoyaltyDog WordPress add-on payment failed.", + "loyaltyOperationsContinueForNowStripe": "Loyalty operations continue for now. Stripe will retry the payment automatically; if it fails, your subscription will be canceled and the loyalty program will pause until a new payment method is added.", + "updatePaymentMethod": "Update payment method", + "remindMeTomorrow": "Remind me tomorrow", + "yourLoyaltydogWordpressAddOnSubscription": "Your LoyaltyDog WordPress add-on subscription is canceled.", + "loyaltyOperationsArePausedExistingCustomer": "Loyalty operations are paused. Existing customer point balances remain intact. Resubscribe to resume earning and redemption.", + "resubscribe": "Resubscribe" + }, + "trialNotices": { + "trialExpired": "Trial expired", + "trialDayRemaining": "Trial: %d day remaining", + "welcomeToLoyaltydog": "Welcome to LoyaltyDog.", + "signUpForAFree30": "Sign up for a free 30-day trial to activate your points program. No credit card required.", + "startYourFreeTrial": "Start your free trial", + "yourLoyaltydogTrialEndsInDay": "Your LoyaltyDog trial ends in %d day.", + "upgradeNowToKeepAwardingPoints": "Upgrade now to keep awarding points after the trial ends.", + "upgradeNow": "Upgrade now", + "remindMeLater": "Remind me later", + "yourLoyaltydogTrialHasEnded": "Your LoyaltyDog trial has ended.", + "yourStorefrontContinuesToWorkBut": "Your storefront continues to work, but new points will not be awarded until you upgrade. Existing balances remain intact." + }, + "activation": { + "securityCheckFailed": "Security check failed.", + "insufficientPermissions": "Insufficient permissions.", + "invalidActivationKey": "Invalid activation key.", + "unableToReachLoyaltydogRightNow": "Unable to reach LoyaltyDog right now. Please try again shortly.", + "thisActivationLinkHasExpiredPlease": "This activation link has expired. Please return to LoyaltyDog to generate a new one.", + "tooManyAttemptsPleaseWaitA": "Too many attempts. Please wait a few minutes and try again.", + "somethingWentWrongDuringActivationPlease": "Something went wrong during activation. Please try again or contact support.", + "unableToStoreCredentialsSecurelyPlease": "Unable to store credentials securely. Please try again.", + "accountActivatedSuccessfully": "Account activated successfully!" + }, + "testConnection": { + "invalidRequest": "Invalid request", + "connectionTestFailed": "Connection test failed", + "yourWordpressPluginIsSuccessfullyConnected": "Your WordPress plugin is successfully connected to the Core API." + }, + "help": { + "gettingStarted": "Getting Started", + "settings": "Settings", + "pointsRules": "Points & Rules", + "shortcodes": "Shortcodes", + "gettingStartedWithLoyaltydog": "Getting Started with LoyaltyDog", + "loyaltydogAddsADigitalLoyaltyProgram": "LoyaltyDog adds a digital loyalty program to your WooCommerce store. Customers earn points on purchases and redeem them for rewards.", + "enterYour1sprogramId2sAnd1sapi": "Enter your %1$sProgram ID%2$s and %1$sAPI Key%2$s in Settings. Get these from your LoyaltyDog dashboard.", + "configureThePointsConversionRateE": "Configure the points conversion rate (e.g., 1 point per $1 spent).", + "setUpOfferMessagesThatCustomers": "Set up offer messages that customers see when they have rewards.", + "optionallyConfigureCategoryMultipliersCampaignsAnd": "Optionally configure category multipliers, campaigns, and referral rewards.", + "customersWillSeeTheirPointsBalance": "Customers will see their points balance in My Account > Loyalty Points, and on the cart/checkout pages.", + "settingsReference": "Settings Reference", + "yourUniqueLoyaltydogProgramIdentifierFound": "Your unique LoyaltyDog program identifier. Found in Dashboard > Settings > API.", + "secretKeyForApiAuthenticationNever": "Secret key for API authentication. Never share this publicly.", + "earnPointsWhen": "Earn Points When", + "controlsWhenPointsAreAwardedProcessing": "Controls when points are awarded. \\\"Processing\\\" is recommended for most stores.", + "pointsConversionRate": "Points Conversion Rate", + "howSpendingConvertsToPoints1": "How spending converts to points. \\\"1:1\\\" means 1 point per currency unit.", + "pointsRulesEngine": "Points & Rules Engine", + "categoryMultipliers": "Category Multipliers", + "awardBonusPointsForSpecificProduct": "Award bonus points for specific product categories. Enter one per line:", + "thisGives2xPointsForElectronics": "This gives 2x points for electronics and 1.5x for clothing. Use category slugs.", + "minimumSpend": "Minimum Spend", + "setAMinimumOrderTotalRequired": "Set a minimum order total required to earn any points. Orders below this amount earn 0 points.", + "timeLimitedCampaigns": "Time-Limited Campaigns", + "runPromotionalPeriodsWithBonusPoint": "Run promotional periods with bonus point multipliers. Enter one per line:", + "formatMultiplierstartdateenddatelabelLinesStartingWith": "Format: multiplier|start_date|end_date|label. Lines starting with # are ignored.", + "productLevelOverrides": "Product-Level Overrides", + "setAFixedPointValueFor": "Set a fixed point value for specific products using the %s custom field on the product edit page.", + "availableShortcodes": "Available Shortcodes", + "displayTheLoggedInCustomerS": "Display the logged-in customer's points balance inline. Returns empty for guests.", + "displayTheCustomerSReferralLink": "Display the customer's referral link. Requires the referral program to be configured.", + "resources": "Resources", + "supportCenter": "Support Center", + "configureLoyaltydog": "Configure LoyaltyDog", + "setUpYourLoyaltyProgramBy": "Set up your loyalty program by entering your Program ID and API Key in the LoyaltyDog settings.", + "hooksReference": "Hooks Reference" + }, + "menu": { + "manage": "Manage", + "strongLoyaltydogStrongIsAlmostReady": "LoyaltyDog is almost ready. To get started, %sset your LoyaltyDog account keys%s.", + "strongLoyaltydogStrongRequiresCouponsTo": "LoyaltyDog requires coupons to be %senabled%s in order to function properly and allow customers to redeem offer during checkout.", + "sendPushNotifications": "Send Push Notifications", + "message": "Message", + "pushNotificationsAreCompliantWithEu": "Push notifications are compliant with EU GDPR.", + "send": "Send", + "enableTheLoggingOfApiRequest": "Enable the logging of API request.", + "1sviewLog2s": "%1$sView Log%2$s", + "loyaltydogApi": "LoyaltyDog API", + "enterWithYourProgramId": "Enter with your program ID.", + "enterWithYourLoyaltydogApiKey": "Enter with your LoyaltyDog API key.", + "debugLog": "Debug Log", + "thisShouldBeCheckedOnlyIf": "This should be checked only if LoyaltyDog support suggests it to be checked.", + "pointsConversion": "Points Conversion", + "earnPointsWhenOrderStatusIs": "Earn Points When Order Status Is", + "behaviorHowPointsAreEarnedAnd": "Behavior how points are earned and rewards are redeemed.", + "pendingPayment": "Pending Payment", + "processing": "Processing", + "onHold": "On Hold", + "completed": "Completed", + "earnPointsConversionRate": "Earn Points Conversion Rate", + "setTheNumberOfPointsAwarded": "Set the number of points awarded based on the product price.", + "earnPointsRoundingMode": "Earn Points Rounding Mode", + "setHowPointsShouldBeRounded": "Set how points should be rounded.", + "roundToNearestInteger": "Round to nearest integer", + "alwaysRoundDown": "Always round down", + "alwaysRoundUp": "Always round up", + "offerMessages": "Offer Messages", + "adjustTheMessageByUsing1s": "Adjust the message by using %1$s{friendlyNameToBeAdded}%2$s, %1$s{friendlyName}%2$s, %1$s{name}%2$s, %1$s{value}%2$s, %1$s{currency}%2$s to represent the redeemed / available offer.", + "availableOfferMessage": "Available Offer Message", + "addAnOptionalMessageWhenUser": "Add an optional message when user have a active Loyalty offer. Limited HTML is allowed. Leave blank to disable.", + "strongActiveLoyaltyOfferStrongFriendlynametobeadded": "Active Loyalty Offer: {friendlyNameToBeAdded}.
You can add some products to redeem this offer.", + "redeemOfferMessage": "Redeem Offer Message", + "displayedOnTheCartAndCheckout": "Displayed on the cart and checkout page when cart is not empty and user have active offer. Limited HTML is allowed.", + "strongLoyaltyRewardStrongFriendlynametobeadded": "Loyalty Reward: {friendlyNameToBeAdded}", + "pointsEarnedForActions": "Points Earned for Actions", + "customersCanAlsoEarnPointsFor": "Customers can also earn points for actions like creating an account or writing a product review. You can enter the amount of points the customer will earn for each action in this section.", + "isRequired": "%s is required.", + "points": "Points", + "isInvalid": "%s is invalid.", + "messageCanNotBeBlank": "Message can not be blank.", + "messageHaveBeenSent": "Message have been sent." + }, + "wizard": { + "loyaltydogSetup": "LoyaltyDog Setup", + "loyaltyRewardsForYourWoocommerceStore": "Loyalty rewards for your WooCommerce store", + "setupSteps": "Setup steps", + "connect": "Connect", + "ready": "Ready", + "connectYourAccount": "Connect Your Account", + "accountType": "Account type", + "iHaveALoyaltydogAccount": "I have a LoyaltyDog account", + "connectAnExistingProgramIncludingPos": "Connect an existing program (including POS accounts)", + "iMNewCreateAn": "I'm new — create an account", + "signUpAndStartANew": "Sign up and start a new loyalty program", + "connectionMethod": "Connection method", + "iReceivedAnActivationKeyBy": "I received an activation key by email", + "pasteTheOneTimeKeyFrom": "Paste the one-time key from your subscription email.", + "iHaveAProgramIdAnd": "I have a Program ID and API Key", + "forLegacyV1Customers": "For legacy v1 customers.", + "activationKey": "Activation key", + "pasteTheKeyFromYourEmail": "Paste the key from your email", + "sentToYourInboxAfterSubscribing": "Sent to your inbox after subscribing at loyalty.dog.", + "activate": "Activate", + "enterYourProgramIdAndApi": "Enter your Program ID and API Key from your %1$sLoyaltyDog dashboard%2$s.", + "eG507f1f77bcf86cd799439011": "e.g., 507f1f77bcf86cd799439011", + "foundInYourLoyaltydogDashboardUnder": "Found in your LoyaltyDog dashboard under Settings > API.", + "yourApiKey": "Your API key", + "keepThisSecretNeverShareYour": "Keep this secret. Never share your API key publicly.", + "validateampContinue": "Validate & Continue", + "createANewLoyaltydogAccountYour": "Create a new LoyaltyDog account. Your site URL will be pre-filled to speed up signup.", + "createAccountAtDashLoyaltyDog": "Create Account at dash.loyalty.dog", + "afterCreatingYourAccountReturnHere": "After creating your account, return here and select \\\"I have a LoyaltyDog account\\\" to connect.", + "configurePoints": "Configure Points", + "chooseAPresetOrSetUp": "Choose a preset or set up your own earning rate. You can always change these later in Settings.", + "pointsPreset": "Points preset", + "simple": "Simple", + "easyToUnderstandForCustomers": "Easy to understand for customers.", + "recommended": "Recommended", + "generous": "Generous", + "greatForBuildingEngagementFast": "Great for building engagement fast.", + "custom": "Custom", + "setYourOwnRate": "Set your own rate", + "fullControlOverEarningRules": "Full control over earning rules.", + "earnRate": "Earn rate", + "pointsForEvery": "points for every", + "currencyAmount": "Currency amount", + "spent": "spent", + "bonusPointsForSignup": "Bonus points for signup", + "pointsAwardedWhenANewCustomer": "Points awarded when a new customer creates an account. Set to 0 to disable.", + "earnPointsWhenOrderStatusIs": "Earn points when order status is:", + "processing": "Processing", + "completed": "Completed", + "onHold": "On Hold", + "back": "Back", + "saveampFinish": "Save & Finish", + "youReAllSet": "You're All Set!", + "yourLoyaltyProgramIsNowActive": "Your loyalty program is now active. Customers will start earning points on their next purchase.", + "checkingConnection": "Checking connection...", + "whatSNext": "What's next?", + "customizeYourPass": "Customize your pass", + "designYourDigitalLoyaltyPassIn": "Design your digital loyalty pass in the portal.", + "readTheDocs": "Read the docs", + "learnHowToConfigureRulesCampaigns": "Learn how to configure rules, campaigns, and more.", + "testItYourself": "Test it yourself", + "viewTheCustomerFacingLoyaltyPage": "View the customer-facing loyalty page on your store.", + "goToSettings": "Go to Settings", + "goToDashboard": "Go to Dashboard", + "permissionDenied": "Permission denied.", + "bothProgramIdAndApiKey": "Both Program ID and API Key are required.", + "invalidApiKeyPleaseCheckYour": "Invalid API Key. Please check your credentials.", + "programNotFoundPleaseCheckYour": "Program not found. Please check your Program ID.", + "connectionFailedHttpPleaseTryAgain": "Connection failed (HTTP %s). Please try again.", + "connectionSuccessful": "Connection successful!", + "credentialsAreRequired": "Credentials are required.", + "setupComplete": "Setup complete!", + "apiUnreachableHttp": "API unreachable (HTTP %s)", + "activationKeyLooksMalformedPasteThe": "Activation key looks malformed. Paste the key exactly as it appears in your email.", + "activating": "Activating…", + "connectedContinuingToConfiguration": "Connected. Continuing to configuration…", + "activationFailedPleaseTryAgain": "Activation failed. Please try again.", + "networkErrorPleaseTryAgain": "Network error. Please try again.", + "pleaseEnterBothProgramIdAnd": "Please enter both Program ID and API Key.", + "validating": "Validating...", + "validateContinue": "Validate & Continue", + "program": "Program:", + "saving": "Saving...", + "saveFinish": "Save & Finish", + "connectionIssue": "Connection issue" + }, + "program": { + "loyaltyPrograms": "Loyalty Programs", + "createNewProgram": "Create New Program", + "programName": "Program Name", + "thisNameWillAppearToYour": "This name will appear to your customers", + "createProgram": "Create Program", + "cancel": "Cancel", + "failedToLoadPrograms": "Failed to load programs", + "failedToLoadProgramsPleaseTry": "Failed to load programs. Please try again.", + "noProgramsYet": "No programs yet", + "createYourFirstProgram": "Create Your First Program", + "created": "Created", + "failedToCreateProgramPleaseTry": "Failed to create program. Please try again." + }, + "diagnostics": { + "pluginWonTActivate": "Plugin won't activate", + "checkPhpVersionRequires74": "Check PHP version (requires 7.4+)", + "verifyMysqlVersionRequires57": "Verify MySQL version (requires 5.7+)", + "checkErrorLogsForSpecificErrors": "Check error logs for specific errors", + "disableOtherPluginsAndTryAgain": "Disable other plugins and try again", + "productsNotSyncing": "Products not syncing", + "verifyWoocommerceIsInstalled": "Verify WooCommerce is installed", + "checkSyncLogsForErrors": "Check sync logs for errors", + "manualSyncGoToSettingsSync": "Manual sync: Go to Settings > Sync Status", + "checkDatabasePermissions": "Check database permissions", + "webhookFailures": "Webhook failures", + "verifyWebhookUrlIsAccessible": "Verify webhook URL is accessible", + "checkSslCertificateValidity": "Check SSL certificate validity", + "reviewWebhookEventLogs": "Review webhook event logs", + "testWithManualWebhookDispatch": "Test with manual webhook dispatch", + "ticketCreatedWeLlRespondWithin": "Ticket %s created. We'll respond within 4 hours." + }, + "settingsSync": { + "serverReturnedAnUnexpectedResponseShape": "Server returned an unexpected response shape." } }, "widget": { "joinCta": "Join our loyalty programme", "loginPrompt": "Please log in to view your loyalty programme." + }, + "plugin": { + "loyaltydog": "LoyaltyDog", + "httpsLoyaltydogIoWordpress": "https://loyaltydog.io/wordpress", + "pointsTiersAndRewardRedemptionFor": "Points, tiers, and reward redemption for WooCommerce. Live balance widget for shortcode, Gutenberg, Elementor, and the WC My Account page.", + "loyaltydogInc": "LoyaltyDog Inc.", + "httpsLoyaltyDog": "https://loyalty.dog", + "loyaltydogRequiresWordpress69Or": "LoyaltyDog requires WordPress 6.9 or newer.", + "youAreCurrentlyRunningWordpress": "You are currently running WordPress %s.", + "loyaltydogRequiresPhp80Or": "LoyaltyDog requires PHP 8.0 or newer.", + "youAreCurrentlyRunningPhp": "You are currently running PHP %s.", + "loyaltydogRequiresWoocommerceToBeInstalled": "LoyaltyDog requires WooCommerce to be installed and activated.", + "loyaltydogRequiresWoocommerce70Or": "LoyaltyDog requires WooCommerce 7.0 or newer.", + "youAreCurrentlyRunningWoocommerce": "You are currently running WooCommerce %s.", + "loyaltydogActivationFailedSystemRequirementsNot": "LoyaltyDog activation failed: system requirements not met." + }, + "misc": { + "invalidProgram": "Invalid program", + "emailOrPhoneIsRequired": "Email or phone is required", + "customerNotFound": "Customer not found", + "invalidParameters": "Invalid parameters", + "memberNotFound": "Member not found", + "memberEmailMissing": "Member email missing", + "oauthCredentialsNotConfigured": "OAuth credentials not configured", + "registrationIdNotFound": "Registration ID not found", + "backendUrlNotConfigured": "Backend URL not configured", + "failedToRotateSecretPleaseTry": "Failed to rotate secret. Please try again later.", + "coreApiReturnedAnError": "Core API returned an error", + "invalidResponseFromCoreApi": "Invalid response from Core API", + "failedToStoreNewSecret": "Failed to store new secret", + "webhookSecretRotatedSuccessfully": "Webhook secret rotated successfully", + "loyaltydogCredentialsAreNotConfigured": "LoyaltyDog credentials are not configured.", + "apiKeyIsRequired": "API key is required.", + "thatLooksLikeASessionJwt": "That looks like a session JWT (short-lived dashboard token), not a long-lived API key. Get the long-lived API key from your LoyaltyDog dashboard or via the plugin Connection page.", + "apiKeyContainsInvalidCharactersAllowed": "API key contains invalid characters. Allowed: letters, digits, underscore, hyphen, period.", + "apiKeyLengthIsOutOf": "API key length is out of range (10–256 characters).", + "apiKeyMustStartWithLoyaltydogpk": "API key must start with \\\"loyaltydog_pk_\\\". Get one from your LoyaltyDog dashboard.", + "profileNotFound": "Profile not found", + "tooManyRequestsPleaseTryAgain": "Too many requests. Please try again later.", + "pointsEarnedForAccountSignup": "Points earned for account signup", + "enterTheAmountOfPointsEarned": "Enter the amount of points earned when a customer signs up for an account.", + "pointsEarnedForWritingAReview": "Points earned for writing a review", + "enterTheAmountOfPointsEarned2": "Enter the amount of points earned when a customer first reviews a product.", + "currentLoyaltyPointsBalance": "Current loyalty points balance.", + "whetherTheCustomerIsEnrolledIn": "Whether the customer is enrolled in the loyalty program.", + "estimatedPointsTheCustomerWillEarn": "Estimated points the customer will earn from this order.", + "loyaltyReward": "Loyalty Reward", + "redeem": "REDEEM", + "redeemedSuccessfully": "Redeemed Successfully", + "xPointsBonusActive": "%sx points bonus active!", + "minimumSpendForPoints": "Minimum spend for points", + "minimumOrderTotalRequiredToEarn": "Minimum order total required to earn points. Leave empty to disable.", + "categoryPointMultipliers": "Category point multipliers", + "onePerLineCategoryslugMultiplierE": "One per line: category_slug:multiplier (e.g., electronics:2 for double points). If a product is in multiple categories, the highest multiplier applies.", + "timeLimitedCampaigns": "Time-limited campaigns", + "onePerLineMultiplierstartdateenddatelabelEG": "One per line: multiplier|start_date|end_date|label (e.g., 2|2026-03-01|2026-03-31|Double Points March). The highest active campaign multiplier applies to all orders. Lines starting with # are ignored.", + "welcomeTo1s2s": "Welcome to %1$s %2$s", + "loading": "Loading...", + "dashboard": "Dashboard", + "widget": "Widget", + "systemInfo": "System Info", + "allSetTakingYouToYour": "All set! Taking you to your dashboard…", + "activationFailed": "Activation failed.", + "loyaltyDiscount": "Loyalty Discount", + "nameFree": "{name} (FREE)", + "nameValueCurrency": "{name} ({value}{currency})", + "nameValueCurrency2": "{name} (-{value}{currency})", + "unableToGenerateASecureSession": "Unable to generate a secure session token. Please try again.", + "activatingYourLoyaltydogAccountHold": "Activating your LoyaltyDog account — hold on tight!", + "activationFailedSessionExpiredPlease": "Activation failed — session expired. Please try again.", + "tryAgain": "Try Again", + "connectYourLoyaltyProgramToWoocommerce": "Connect your loyalty program to WooCommerce.", + "pasteYourActivationKeyHere": "Paste your activation key here", + "activateLoyaltydog": "Activate LoyaltyDog", + "havingTroubleContactSupport": "Having trouble? Contact support", + "accountLinkedSuccessfully": "Account Linked Successfully!", + "yourLoyaltydogAccountIsNowConnected": "Your %s LoyaltyDog account is now connected to your WordPress store.", + "dashboardImplementationComingInFutureUpdates": "Dashboard implementation coming in future updates.", + "increasePointMultiplierForTopSelling": "Increase point multiplier for top-selling category (Electronics) to boost engagement", + "createAWinBackCampaignFor": "Create a win-back campaign for 120 inactive members who spent $1000+ lifetime", + "reduceTierAdvancementRequirementsToIncrease": "Reduce tier advancement requirements to increase Gold tier members by 20%", + "highValueSpent100095Engagement": "High-Value: Spent $1000+, 95% engagement", + "regularSpent100100070Engagement": "Regular: Spent $100-1000, 70% engagement", + "occasionalSpent10030Engagement": "Occasional: Spent <$100, 30% engagement", + "inactiveNoPurchasesIn60Days": "Inactive: No purchases in 60 days", + "createWinBackCampaignForInactive": "Create win-back campaign for inactive members", + "criticalIssues": "Critical Issues", + "warnings": "Warnings", + "webhookSecretNotConfigured": "Webhook secret not configured", + "missingStripeSignatureHeader": "Missing Stripe-Signature header", + "malformedStripeSignatureHeader": "Malformed Stripe-Signature header", + "stripeSignatureTimestampIsNotNumeric": "Stripe-Signature timestamp is not numeric", + "webhookSignatureTimestampOutsideToleranceWindow": "Webhook signature timestamp outside tolerance window", + "webhookSignatureVerificationFailed": "Webhook signature verification failed", + "invalidWebhookPayload": "Invalid webhook payload", + "dependsOnTheLastVersionOf": "depends on the last version of WooCommerce to work!", + "activeWoocommerce": "Active WooCommerce", + "installWoocommerce": "Install WooCommerce", + "youHave": "You have ", + "pointsEarn": " points. Earn ", + "moreWithThisOrder": " more with this order.", + "loyaltyPoints": " loyalty points." + }, + "frontend": { + "points": { + "loyaltyPoints": "Loyalty Points", + "youAreNotYetEnrolledIn": "You are not yet enrolled in our loyalty program. Points are earned automatically when you make purchases.", + "yourPointsBalance": "Your Points Balance", + "points": "points", + "tier": "Tier: %s", + "activeReward": "Active Reward", + "addItemsToYourCartTo": "Add items to your cart to redeem this reward at checkout.", + "viewCart": "View cart", + "howToEarnPoints": "How to Earn Points", + "earn1sPointsForEvery2s": "Earn %1$s points for every %2$s spent", + "pointsForCreatingAnAccount": "%s points for creating an account", + "pointsForWritingAProductReview": "%s points for writing a product review", + "pointsForReferringAFriend": "%s points for referring a friend", + "strongLoyaltyPointsStrongYouHave": "Loyalty Points: You have %s points.", + "viewDetails": "View details", + "points2": "%s points" + }, + "customerExport": { + "youMustBeLoggedInTo": "You must be logged in to export your loyalty data.", + "securityCheckFailedPleaseReloadAnd": "Security check failed. Please reload and try again.", + "youCanRequestOneLoyaltyData": "You can request one loyalty-data export per 24 hours. Please try again tomorrow.", + "weCouldNotPrepareYourExport": "We could not prepare your export right now. Please try again later or contact support." + }, + "account": { + "loyaltyProgram": "Loyalty Program", + "downloadMyLoyaltyData": "Download my loyalty data", + "notificationPreferences": "Notification preferences", + "yourNotificationPreferencesHaveBeenSaved": "Your notification preferences have been saved.", + "emailMeWhenMyLoyaltyTier": "Email me when my loyalty tier changes", + "savePreferences": "Save preferences" + }, + "checkout": { + "loadingLoyaltyInformation": "Loading loyalty information...", + "identifyingCustomer": "Identifying customer...", + "errorLoadingLoyaltyProgramPleaseTry": "Error loading loyalty program. Please try again.", + "emailOrPhone": "Email or Phone", + "enterEmailOrPhone": "Enter email or phone", + "findAccount": "Find Account", + "welcome": "Welcome", + "pointsBalance": "Points Balance:", + "availableRewards": "Available Rewards", + "selectAReward": "--- Select a reward ---", + "applyReward": "Apply Reward", + "appliedLoyaltyDiscounts": "Applied Loyalty Discounts" + }, + "redeem": { + "loyaltydogReward": "LoyaltyDog Reward" + }, + "checkoutService": { + "networkErrorWhileApplyingRewardPlease": "Network error while applying reward. Please try again.", + "youDoNotHaveEnoughPoints": "You do not have enough points for this reward.", + "rewardNotFoundOrNoLonger": "Reward not found or no longer available.", + "failedToApplyReward": "Failed to apply reward.", + "rewardApplied": "Reward applied." + }, + "blocks": { + "displayTheLoyaltydogLoyaltyWidgetFor": "Display the LoyaltyDog loyalty widget for logged-in customers.", + "loyalty": "loyalty", + "points": "points", + "rewards": "rewards", + "loyaltydog": "loyaltydog" + } + }, + "emails": { + "invalidEmailAddress": "Invalid email address", + "invalidVerificationCodeFormat": "Invalid verification code format", + "emailServiceNotConfigured": "Email service not configured", + "loyaltydogAccountVerification": "LoyaltyDog Account Verification", + "failedToSendEmailViaSendgrid": "Failed to send email via SendGrid", + "verifyYourEmail": "Verify Your Email", + "thankYouForSigningUpFor": "Thank you for signing up for LoyaltyDog! To complete your account setup, please verify your email address using the code below:", + "yourVerificationCode": "Your verification code:", + "thisCodeWillExpireIn10": "This code will expire in 10 minutes", + "securityNotice": "Security Notice:", + "neverShareThisCodeWithAnyone": "Never share this code with anyone. We will never ask for it.", + "ifYouDidNotSignUp": "If you did not sign up for a LoyaltyDog account, please ignore this email.", + "allRightsReserved": "All rights reserved.", + "thisIsAnAutomatedEmailPlease": "This is an automated email. Please do not reply.", + "passwordIsRequired": "Password is required", + "welcomeToLoyaltydogYourAccountIs": "Welcome to LoyaltyDog - Your Account Is Ready", + "welcomeToLoyaltydog": "Welcome to LoyaltyDog!", + "yourLoyaltydogAccountForHasBeen": "Your LoyaltyDog account for %s has been created successfully.", + "yourLoyaltydogAccountHasBeenCreated": "Your LoyaltyDog account has been created successfully.", + "belowAreYourLoginCredentialsYou": "Below are your login credentials. You can use these to access your LoyaltyDog dashboard:", + "email": "Email", + "password": "Password", + "keepThisPasswordSafeAndDo": "Keep this password safe and do not share it with anyone. You can change your password after logging in.", + "ifYouDidNotCreateThis": "If you did not create this account, please contact our support team immediately." + }, + "privacy": { + "loyaltydogLoyaltyProgram": "LoyaltyDog loyalty program", + "firstName": "First name", + "lastName": "Last name", + "phone": "Phone", + "pointsBalance": "Points balance", + "tier": "Tier", + "enrollmentStatus": "Enrollment status", + "enrolledAt": "Enrolled at", + "whenYouUseLoyaltydogYourEmail": "When you use LoyaltyDog, your email address and order totals are sent to the LoyaltyDog cloud service (api.loyalty.dog) to calculate and store loyalty points. Loyalty transaction history may be retained locally in de-identified form (linked only to an internal member ID) after an erasure request. See loyalty.dog/privacy for details." } } } diff --git a/packages/i18n/locales/en-US/wordpress.json b/packages/i18n/locales/en-US/wordpress.json index d96c86b..3e84f25 100644 --- a/packages/i18n/locales/en-US/wordpress.json +++ b/packages/i18n/locales/en-US/wordpress.json @@ -8,7 +8,21 @@ "program": "Program", "noProgramSelected": "No program selected", "openDashboard": "Open LoyaltyDog Dashboard", - "connectStore": "Connect Your Store" + "connectStore": "Connect Your Store", + "atAGlanceStatusOfYour": "At-a-glance status of your LoyaltyDog program. Detailed analytics live in the portal.", + "programSummaryMetrics": "Program summary metrics", + "connectionStatus": "Connection status", + "connection": "Connection", + "programWp": "Program: %s", + "pointsIssuedInTheLast30": "Points issued in the last 30 days", + "pointsIssued30d": "Points issued (30d)", + "valueNotYetAvailable": "Value not yet available", + "viewInPortal": "View in portal", + "totalMembersEnrolled": "Total members enrolled", + "members": "Members", + "latestActivity": "Latest activity", + "latestTransaction": "Latest transaction", + "noActivityYet": "No activity yet" }, "connection": { "title": "LoyaltyDog Connection", @@ -26,7 +40,14 @@ "apiKeyNotConfigured": "API key not configured", "httpError": "HTTP {{code}} from API", "connectionSuccessful": "Connection successful", - "unauthorized": "Unauthorized" + "unauthorized": "Unauthorized", + "youDoNotHavePermissionTo": "You do not have permission to access this page.", + "programId": "Program ID", + "php1sOrNewerIsRequired": "PHP %1$s or newer is required. This site is running PHP %2$s. Please ask your hosting provider to upgrade PHP before configuring LoyaltyDog.", + "wordpress1sOrNewerIsRequired": "WordPress %1$s or newer is required. This site is running WordPress %2$s.", + "woocommerceIsRequiredButIsNot": "WooCommerce is required but is not installed or activated.", + "woocommerce1sOrNewerIsRequired": "WooCommerce %1$s or newer is required. This site is running WooCommerce %2$s.", + "httpFromApi": "HTTP %d from API" }, "widget": { "title": "LoyaltyDog Widget", @@ -40,7 +61,28 @@ "save": "Save", "settingsSaved": "Settings saved.", "preview": "Preview", - "previewPlaceholder": "[LoyaltyDog widget renders here for logged-in customers]" + "previewPlaceholder": "[LoyaltyDog widget renders here for logged-in customers]", + "couldNotSaveSettingsToLoyaltydog": "Could not save settings to LoyaltyDog: %s", + "joinWidget": "Join Widget", + "shownToGuestVisitorsAndCustomers": "Shown to guest visitors and customers not yet in your loyalty program.", + "signupUrl": "Signup URL", + "theShareJoinUrlFromYour": "The share/join URL from your loyalty program dashboard. Opens in a new tab.", + "qrCode": "QR Code", + "showQrCodeAlongsideJoinText": "Show QR code alongside join text", + "customersCanScanWithTheirPhone": "Customers can scan with their phone to open the signup form directly.", + "checkoutRedemption": "Checkout Redemption", + "allowCustomersToAutomaticallyRedeemLoyalty": "Allow customers to automatically redeem loyalty points as a discount at checkout.", + "enableRedemption": "Enable Redemption", + "applyLoyaltyPointsAsACart": "Apply loyalty points as a cart discount at checkout", + "whenEnabledAllAvailablePointsAre": "When enabled, all available points are automatically applied as a discount. Customers can see this in their cart.", + "pointsValue": "Points Value", + "currencyPerPoint": "currency per point", + "eG001Means100": "e.g. 0.01 means 100 points = $1.00 discount. Range: 0.001–1.0.", + "emailNotifications": "Email Notifications", + "controlWhichTransactionalEmailsCustomersReceive": "Control which transactional emails customers receive from your loyalty program.", + "tierChangeEmails": "Tier Change Emails", + "sendANotificationWhenACustomer": "Send a notification when a customer moves between loyalty tiers", + "customersCanAlsoOptOutIndividually": "Customers can also opt out individually under My Account → Loyalty." }, "systemInfo": { "title": "LoyaltyDog System Info", @@ -51,12 +93,592 @@ "woocommerceVersion": "WooCommerce Version", "pluginVersion": "Plugin Version", "pendingActions": "Pending AS Actions", - "notActive": "Not active" + "notActive": "Not active", + "systemInformation": "System Information", + "compatibilityStatus": "Compatibility Status", + "yourPlatformMeetsAllRequirements": "Your platform meets all requirements", + "somePlatformRequirementsAreNotMet": "Some platform requirements are not met", + "wordpress": "WordPress", + "version": "Version:", + "language": "Language:", + "timezone": "Timezone:", + "multisite": "Multisite:", + "yes": "Yes", + "no": "No", + "woocommerce": "WooCommerce", + "status": "Status:", + "active": "Active", + "currency": "Currency:", + "restApi": "REST API:", + "enabled": "Enabled", + "disabled": "Disabled", + "php": "PHP", + "sapi": "SAPI:", + "maxInputVars": "Max Input Vars:", + "postMaxSize": "Post Max Size:", + "uploadMaxSize": "Upload Max Size:", + "phpExtensions": "PHP Extensions", + "required": "Required", + "loaded": "Loaded", + "missing": "Missing", + "optional": "Optional", + "serverResources": "Server Resources", + "memoryLimit": "Memory Limit:", + "currentMemoryUsage": "Current Memory Usage:", + "maxExecutionTime": "Max Execution Time:", + "serverSoftware": "Server Software:", + "wpDebug": "WP Debug:" + }, + "credentials": { + "securityCheckFailed": "Security check failed", + "invalidCredentialKey": "Invalid credential key", + "credentialValueIsRequired": "Credential value is required", + "invalidCredentialFormat": "Invalid credential format", + "failedToStoreCredentialPleaseTry": "Failed to store credential. Please try again.", + "credentialUpdatedSuccessfully": "Credential updated successfully", + "failedToDeleteCredentialPleaseTry": "Failed to delete credential. Please try again.", + "credentialDeletedSuccessfully": "Credential deleted successfully", + "noCredentialsToExport": "No credentials to export", + "noFileProvided": "No file provided", + "fileUploadFailed": "File upload failed", + "invalidFileTypePleaseUploadA": "Invalid file type. Please upload a JSON file.", + "invalidImportFileFormat": "Invalid import file format", + "noCredentialsWereImported": "No credentials were imported", + "credentialsImportedSuccessfully": "%d credentials imported successfully" + }, + "settings": { + "loyaltydogCredentials": "LoyaltyDog Credentials", + "manageYourApiKeysAndIntegration": "Manage your API keys and integration credentials.", + "status": "Status", + "stripe": "Stripe", + "coreApi": "Core API", + "auditLog": "Audit Log", + "backup": "Backup", + "stripeSecretKey": "Stripe Secret Key", + "stripeWebhookSecret": "Stripe Webhook Secret", + "stripePublicKey": "Stripe Public Key", + "stripePriceId": "Stripe Price ID", + "credentialStatus": "Credential Status", + "credential": "Credential", + "type": "Type", + "lastUpdated": "Last Updated", + "actions": "Actions", + "notConfigured": "Not Configured", + "encrypted": "Encrypted", + "plainText": "Plain text", + "edit": "Edit", + "delete": "Delete", + "configure": "Configure", + "stripeConfiguration": "Stripe Configuration", + "secretKey": "Secret Key", + "findInStripeDashboardDevelopers": "Find in Stripe Dashboard → Developers → API Keys", + "configured": "Configured: ", + "update": "Update", + "clear": "Clear", + "publishableKey": "Publishable Key", + "webhookSigningSecret": "Webhook Signing Secret", + "findInStripeDashboardDevelopers2": "Find in Stripe Dashboard → Developers → Webhooks → Show signing secret", + "monthlyPriceId": "Monthly Price ID", + "stripePriceIdFor29Month": "Stripe price ID for $29/month subscription", + "loyaltydogApiCredentials": "LoyaltyDog API Credentials", + "oauthStyleCredentialsGeneratedDuringAccount": "OAuth-style credentials generated during account registration. These credentials are auto-generated and cannot be manually edited.", + "notConnected": "Not Connected", + "clickTheButtonBelowToConnect": "Click the button below to connect your WordPress store to LoyaltyDog.", + "connectToLoyaltydog": "Connect to LoyaltyDog", + "registrationStatus": "Registration Status", + "apiKeyIsSecurelyEncryptedIn": "API key is securely encrypted in storage.", + "webhookSecret": "Webhook Secret", + "webhookSecretIsSecurelyEncryptedIn": "Webhook secret is securely encrypted in storage and never displayed.", + "rotateWebhookSecret": "Rotate Webhook Secret", + "generateANewWebhookSecretFor": "Generate a new webhook secret for security purposes. Old secret remains valid for 7 days.", + "howToReconfigure": "How to reconfigure:", + "toResetOrChangeYourLoyaltydog": "To reset or change your LoyaltyDog integration, contact support or delete the plugin and reinstall to re-run the account setup wizard.", + "detailedAuditLogOfAllCredential": "Detailed audit log of all credential operations is available in WordPress error logs.", + "checkYourWordpressDebugLogFile": "Check your WordPress debug log file for detailed audit information: %s", + "recentOperations": "Recent Operations:", + "allCredentialUpdatesAreLoggedAutomatically": "All credential updates are logged automatically", + "allCredentialDeletionsAreLoggedAutomatically": "All credential deletions are logged automatically", + "allCredentialAccessIsLoggedRead": "All credential access is logged (read, decrypt)", + "logsIncludeUserTimestampAndAction": "Logs include user, timestamp, and action type", + "credentialValuesAreNeverLoggedSanitized": "Credential values are never logged (sanitized)", + "backupRestore": "Backup & Restore", + "exportCredentials": "Export Credentials", + "exportYourEncryptedCredentialsAsA": "Export your encrypted credentials as a backup. Keep this file secure.", + "exportCredentialsEncrypted": "Export Credentials (Encrypted)", + "importCredentials": "Import Credentials", + "restoreCredentialsFromAPreviouslyExported": "Restore credentials from a previously exported backup.", + "warning": "Warning:", + "importedCredentialsWillOverwriteExistingCredentials": "Imported credentials will overwrite existing credentials. Back up before importing." + }, + "encryptionKeyNotice": { + "yourAes256EncryptionKeyCurrently": "Your AES-256 encryption key currently lives in wp_options alongside the credentials it protects. A stolen database backup would give an attacker both halves at once. Add the line below to wp-config.php (above the \\\"/* That's all, stop editing! */\\\" comment) to separate the key from the data, then delete the loyaltydog_encryption_key option.", + "thisNoticeDisappearsOnceTheConstant": "This notice disappears once the constant is in place. The plugin keeps reading from wp_options until you remove that entry, so existing encrypted credentials stay readable throughout the migration." + }, + "notices": { + "loyaltydogV2MigrationCompletedAutomatically": "LoyaltyDog v2 migration completed automatically", + "yourLoyaltyDataWasMigratedWithout": "Your loyalty data was migrated without a coordinated maintenance window. Please contact support so we can verify your totals against our backend.", + "contactSupportLoyaltyDog": "Contact support.loyalty.dog", + "loyaltydogUpgradedToV203": "LoyaltyDog upgraded to v2.0.3", + "yourExistingProgramSettingsAndMember": "Your existing program settings and member point balances were carried over automatically.", + "reviewConnection": "Review Connection", + "dismiss": "Dismiss", + "loyaltydogV1V2MigrationFailed": "LoyaltyDog v1 → v2 migration failed.", + "error": "Error: %s", + "recoveryGuide": "Recovery guide", + "thePluginWillRetryAutomaticallyOn": "The plugin will retry automatically on the next admin pageload." + }, + "subscriptionLapse": { + "yourLoyaltydogWordpressAddOnPayment": "Your LoyaltyDog WordPress add-on payment failed.", + "loyaltyOperationsContinueForNowStripe": "Loyalty operations continue for now. Stripe will retry the payment automatically; if it fails, your subscription will be canceled and the loyalty program will pause until a new payment method is added.", + "updatePaymentMethod": "Update payment method", + "remindMeTomorrow": "Remind me tomorrow", + "yourLoyaltydogWordpressAddOnSubscription": "Your LoyaltyDog WordPress add-on subscription is canceled.", + "loyaltyOperationsArePausedExistingCustomer": "Loyalty operations are paused. Existing customer point balances remain intact. Resubscribe to resume earning and redemption.", + "resubscribe": "Resubscribe" + }, + "trialNotices": { + "trialExpired": "Trial expired", + "trialDayRemaining": "Trial: %d day remaining", + "welcomeToLoyaltydog": "Welcome to LoyaltyDog.", + "signUpForAFree30": "Sign up for a free 30-day trial to activate your points program. No credit card required.", + "startYourFreeTrial": "Start your free trial", + "yourLoyaltydogTrialEndsInDay": "Your LoyaltyDog trial ends in %d day.", + "upgradeNowToKeepAwardingPoints": "Upgrade now to keep awarding points after the trial ends.", + "upgradeNow": "Upgrade now", + "remindMeLater": "Remind me later", + "yourLoyaltydogTrialHasEnded": "Your LoyaltyDog trial has ended.", + "yourStorefrontContinuesToWorkBut": "Your storefront continues to work, but new points will not be awarded until you upgrade. Existing balances remain intact." + }, + "activation": { + "securityCheckFailed": "Security check failed.", + "insufficientPermissions": "Insufficient permissions.", + "invalidActivationKey": "Invalid activation key.", + "unableToReachLoyaltydogRightNow": "Unable to reach LoyaltyDog right now. Please try again shortly.", + "thisActivationLinkHasExpiredPlease": "This activation link has expired. Please return to LoyaltyDog to generate a new one.", + "tooManyAttemptsPleaseWaitA": "Too many attempts. Please wait a few minutes and try again.", + "somethingWentWrongDuringActivationPlease": "Something went wrong during activation. Please try again or contact support.", + "unableToStoreCredentialsSecurelyPlease": "Unable to store credentials securely. Please try again.", + "accountActivatedSuccessfully": "Account activated successfully!" + }, + "testConnection": { + "invalidRequest": "Invalid request", + "connectionTestFailed": "Connection test failed", + "yourWordpressPluginIsSuccessfullyConnected": "Your WordPress plugin is successfully connected to the Core API." + }, + "help": { + "gettingStarted": "Getting Started", + "settings": "Settings", + "pointsRules": "Points & Rules", + "shortcodes": "Shortcodes", + "gettingStartedWithLoyaltydog": "Getting Started with LoyaltyDog", + "loyaltydogAddsADigitalLoyaltyProgram": "LoyaltyDog adds a digital loyalty program to your WooCommerce store. Customers earn points on purchases and redeem them for rewards.", + "enterYour1sprogramId2sAnd1sapi": "Enter your %1$sProgram ID%2$s and %1$sAPI Key%2$s in Settings. Get these from your LoyaltyDog dashboard.", + "configureThePointsConversionRateE": "Configure the points conversion rate (e.g., 1 point per $1 spent).", + "setUpOfferMessagesThatCustomers": "Set up offer messages that customers see when they have rewards.", + "optionallyConfigureCategoryMultipliersCampaignsAnd": "Optionally configure category multipliers, campaigns, and referral rewards.", + "customersWillSeeTheirPointsBalance": "Customers will see their points balance in My Account > Loyalty Points, and on the cart/checkout pages.", + "settingsReference": "Settings Reference", + "yourUniqueLoyaltydogProgramIdentifierFound": "Your unique LoyaltyDog program identifier. Found in Dashboard > Settings > API.", + "secretKeyForApiAuthenticationNever": "Secret key for API authentication. Never share this publicly.", + "earnPointsWhen": "Earn Points When", + "controlsWhenPointsAreAwardedProcessing": "Controls when points are awarded. \\\"Processing\\\" is recommended for most stores.", + "pointsConversionRate": "Points Conversion Rate", + "howSpendingConvertsToPoints1": "How spending converts to points. \\\"1:1\\\" means 1 point per currency unit.", + "pointsRulesEngine": "Points & Rules Engine", + "categoryMultipliers": "Category Multipliers", + "awardBonusPointsForSpecificProduct": "Award bonus points for specific product categories. Enter one per line:", + "thisGives2xPointsForElectronics": "This gives 2x points for electronics and 1.5x for clothing. Use category slugs.", + "minimumSpend": "Minimum Spend", + "setAMinimumOrderTotalRequired": "Set a minimum order total required to earn any points. Orders below this amount earn 0 points.", + "timeLimitedCampaigns": "Time-Limited Campaigns", + "runPromotionalPeriodsWithBonusPoint": "Run promotional periods with bonus point multipliers. Enter one per line:", + "formatMultiplierstartdateenddatelabelLinesStartingWith": "Format: multiplier|start_date|end_date|label. Lines starting with # are ignored.", + "productLevelOverrides": "Product-Level Overrides", + "setAFixedPointValueFor": "Set a fixed point value for specific products using the %s custom field on the product edit page.", + "availableShortcodes": "Available Shortcodes", + "displayTheLoggedInCustomerS": "Display the logged-in customer's points balance inline. Returns empty for guests.", + "displayTheCustomerSReferralLink": "Display the customer's referral link. Requires the referral program to be configured.", + "resources": "Resources", + "supportCenter": "Support Center", + "configureLoyaltydog": "Configure LoyaltyDog", + "setUpYourLoyaltyProgramBy": "Set up your loyalty program by entering your Program ID and API Key in the LoyaltyDog settings.", + "hooksReference": "Hooks Reference" + }, + "menu": { + "manage": "Manage", + "strongLoyaltydogStrongIsAlmostReady": "LoyaltyDog is almost ready. To get started, %sset your LoyaltyDog account keys%s.", + "strongLoyaltydogStrongRequiresCouponsTo": "LoyaltyDog requires coupons to be %senabled%s in order to function properly and allow customers to redeem offer during checkout.", + "sendPushNotifications": "Send Push Notifications", + "message": "Message", + "pushNotificationsAreCompliantWithEu": "Push notifications are compliant with EU GDPR.", + "send": "Send", + "enableTheLoggingOfApiRequest": "Enable the logging of API request.", + "1sviewLog2s": "%1$sView Log%2$s", + "loyaltydogApi": "LoyaltyDog API", + "enterWithYourProgramId": "Enter with your program ID.", + "enterWithYourLoyaltydogApiKey": "Enter with your LoyaltyDog API key.", + "debugLog": "Debug Log", + "thisShouldBeCheckedOnlyIf": "This should be checked only if LoyaltyDog support suggests it to be checked.", + "pointsConversion": "Points Conversion", + "earnPointsWhenOrderStatusIs": "Earn Points When Order Status Is", + "behaviorHowPointsAreEarnedAnd": "Behavior how points are earned and rewards are redeemed.", + "pendingPayment": "Pending Payment", + "processing": "Processing", + "onHold": "On Hold", + "completed": "Completed", + "earnPointsConversionRate": "Earn Points Conversion Rate", + "setTheNumberOfPointsAwarded": "Set the number of points awarded based on the product price.", + "earnPointsRoundingMode": "Earn Points Rounding Mode", + "setHowPointsShouldBeRounded": "Set how points should be rounded.", + "roundToNearestInteger": "Round to nearest integer", + "alwaysRoundDown": "Always round down", + "alwaysRoundUp": "Always round up", + "offerMessages": "Offer Messages", + "adjustTheMessageByUsing1s": "Adjust the message by using %1$s{friendlyNameToBeAdded}%2$s, %1$s{friendlyName}%2$s, %1$s{name}%2$s, %1$s{value}%2$s, %1$s{currency}%2$s to represent the redeemed / available offer.", + "availableOfferMessage": "Available Offer Message", + "addAnOptionalMessageWhenUser": "Add an optional message when user have a active Loyalty offer. Limited HTML is allowed. Leave blank to disable.", + "strongActiveLoyaltyOfferStrongFriendlynametobeadded": "Active Loyalty Offer: {friendlyNameToBeAdded}.
You can add some products to redeem this offer.", + "redeemOfferMessage": "Redeem Offer Message", + "displayedOnTheCartAndCheckout": "Displayed on the cart and checkout page when cart is not empty and user have active offer. Limited HTML is allowed.", + "strongLoyaltyRewardStrongFriendlynametobeadded": "Loyalty Reward: {friendlyNameToBeAdded}", + "pointsEarnedForActions": "Points Earned for Actions", + "customersCanAlsoEarnPointsFor": "Customers can also earn points for actions like creating an account or writing a product review. You can enter the amount of points the customer will earn for each action in this section.", + "isRequired": "%s is required.", + "points": "Points", + "isInvalid": "%s is invalid.", + "messageCanNotBeBlank": "Message can not be blank.", + "messageHaveBeenSent": "Message have been sent." + }, + "wizard": { + "loyaltydogSetup": "LoyaltyDog Setup", + "loyaltyRewardsForYourWoocommerceStore": "Loyalty rewards for your WooCommerce store", + "setupSteps": "Setup steps", + "connect": "Connect", + "ready": "Ready", + "connectYourAccount": "Connect Your Account", + "accountType": "Account type", + "iHaveALoyaltydogAccount": "I have a LoyaltyDog account", + "connectAnExistingProgramIncludingPos": "Connect an existing program (including POS accounts)", + "iMNewCreateAn": "I'm new — create an account", + "signUpAndStartANew": "Sign up and start a new loyalty program", + "connectionMethod": "Connection method", + "iReceivedAnActivationKeyBy": "I received an activation key by email", + "pasteTheOneTimeKeyFrom": "Paste the one-time key from your subscription email.", + "iHaveAProgramIdAnd": "I have a Program ID and API Key", + "forLegacyV1Customers": "For legacy v1 customers.", + "activationKey": "Activation key", + "pasteTheKeyFromYourEmail": "Paste the key from your email", + "sentToYourInboxAfterSubscribing": "Sent to your inbox after subscribing at loyalty.dog.", + "activate": "Activate", + "enterYourProgramIdAndApi": "Enter your Program ID and API Key from your %1$sLoyaltyDog dashboard%2$s.", + "eG507f1f77bcf86cd799439011": "e.g., 507f1f77bcf86cd799439011", + "foundInYourLoyaltydogDashboardUnder": "Found in your LoyaltyDog dashboard under Settings > API.", + "yourApiKey": "Your API key", + "keepThisSecretNeverShareYour": "Keep this secret. Never share your API key publicly.", + "validateampContinue": "Validate & Continue", + "createANewLoyaltydogAccountYour": "Create a new LoyaltyDog account. Your site URL will be pre-filled to speed up signup.", + "createAccountAtDashLoyaltyDog": "Create Account at dash.loyalty.dog", + "afterCreatingYourAccountReturnHere": "After creating your account, return here and select \\\"I have a LoyaltyDog account\\\" to connect.", + "configurePoints": "Configure Points", + "chooseAPresetOrSetUp": "Choose a preset or set up your own earning rate. You can always change these later in Settings.", + "pointsPreset": "Points preset", + "simple": "Simple", + "easyToUnderstandForCustomers": "Easy to understand for customers.", + "recommended": "Recommended", + "generous": "Generous", + "greatForBuildingEngagementFast": "Great for building engagement fast.", + "custom": "Custom", + "setYourOwnRate": "Set your own rate", + "fullControlOverEarningRules": "Full control over earning rules.", + "earnRate": "Earn rate", + "pointsForEvery": "points for every", + "currencyAmount": "Currency amount", + "spent": "spent", + "bonusPointsForSignup": "Bonus points for signup", + "pointsAwardedWhenANewCustomer": "Points awarded when a new customer creates an account. Set to 0 to disable.", + "earnPointsWhenOrderStatusIs": "Earn points when order status is:", + "processing": "Processing", + "completed": "Completed", + "onHold": "On Hold", + "back": "Back", + "saveampFinish": "Save & Finish", + "youReAllSet": "You're All Set!", + "yourLoyaltyProgramIsNowActive": "Your loyalty program is now active. Customers will start earning points on their next purchase.", + "checkingConnection": "Checking connection...", + "whatSNext": "What's next?", + "customizeYourPass": "Customize your pass", + "designYourDigitalLoyaltyPassIn": "Design your digital loyalty pass in the portal.", + "readTheDocs": "Read the docs", + "learnHowToConfigureRulesCampaigns": "Learn how to configure rules, campaigns, and more.", + "testItYourself": "Test it yourself", + "viewTheCustomerFacingLoyaltyPage": "View the customer-facing loyalty page on your store.", + "goToSettings": "Go to Settings", + "goToDashboard": "Go to Dashboard", + "permissionDenied": "Permission denied.", + "bothProgramIdAndApiKey": "Both Program ID and API Key are required.", + "invalidApiKeyPleaseCheckYour": "Invalid API Key. Please check your credentials.", + "programNotFoundPleaseCheckYour": "Program not found. Please check your Program ID.", + "connectionFailedHttpPleaseTryAgain": "Connection failed (HTTP %s). Please try again.", + "connectionSuccessful": "Connection successful!", + "credentialsAreRequired": "Credentials are required.", + "setupComplete": "Setup complete!", + "apiUnreachableHttp": "API unreachable (HTTP %s)", + "activationKeyLooksMalformedPasteThe": "Activation key looks malformed. Paste the key exactly as it appears in your email.", + "activating": "Activating…", + "connectedContinuingToConfiguration": "Connected. Continuing to configuration…", + "activationFailedPleaseTryAgain": "Activation failed. Please try again.", + "networkErrorPleaseTryAgain": "Network error. Please try again.", + "pleaseEnterBothProgramIdAnd": "Please enter both Program ID and API Key.", + "validating": "Validating...", + "validateContinue": "Validate & Continue", + "program": "Program:", + "saving": "Saving...", + "saveFinish": "Save & Finish", + "connectionIssue": "Connection issue" + }, + "program": { + "loyaltyPrograms": "Loyalty Programs", + "createNewProgram": "Create New Program", + "programName": "Program Name", + "thisNameWillAppearToYour": "This name will appear to your customers", + "createProgram": "Create Program", + "cancel": "Cancel", + "failedToLoadPrograms": "Failed to load programs", + "failedToLoadProgramsPleaseTry": "Failed to load programs. Please try again.", + "noProgramsYet": "No programs yet", + "createYourFirstProgram": "Create Your First Program", + "created": "Created", + "failedToCreateProgramPleaseTry": "Failed to create program. Please try again." + }, + "diagnostics": { + "pluginWonTActivate": "Plugin won't activate", + "checkPhpVersionRequires74": "Check PHP version (requires 7.4+)", + "verifyMysqlVersionRequires57": "Verify MySQL version (requires 5.7+)", + "checkErrorLogsForSpecificErrors": "Check error logs for specific errors", + "disableOtherPluginsAndTryAgain": "Disable other plugins and try again", + "productsNotSyncing": "Products not syncing", + "verifyWoocommerceIsInstalled": "Verify WooCommerce is installed", + "checkSyncLogsForErrors": "Check sync logs for errors", + "manualSyncGoToSettingsSync": "Manual sync: Go to Settings > Sync Status", + "checkDatabasePermissions": "Check database permissions", + "webhookFailures": "Webhook failures", + "verifyWebhookUrlIsAccessible": "Verify webhook URL is accessible", + "checkSslCertificateValidity": "Check SSL certificate validity", + "reviewWebhookEventLogs": "Review webhook event logs", + "testWithManualWebhookDispatch": "Test with manual webhook dispatch", + "ticketCreatedWeLlRespondWithin": "Ticket %s created. We'll respond within 4 hours." + }, + "settingsSync": { + "serverReturnedAnUnexpectedResponseShape": "Server returned an unexpected response shape." } }, "widget": { "joinCta": "Join our loyalty program", "loginPrompt": "Please log in to view your loyalty program." + }, + "plugin": { + "loyaltydog": "LoyaltyDog", + "httpsLoyaltydogIoWordpress": "https://loyaltydog.io/wordpress", + "pointsTiersAndRewardRedemptionFor": "Points, tiers, and reward redemption for WooCommerce. Live balance widget for shortcode, Gutenberg, Elementor, and the WC My Account page.", + "loyaltydogInc": "LoyaltyDog Inc.", + "httpsLoyaltyDog": "https://loyalty.dog", + "loyaltydogRequiresWordpress69Or": "LoyaltyDog requires WordPress 6.9 or newer.", + "youAreCurrentlyRunningWordpress": "You are currently running WordPress %s.", + "loyaltydogRequiresPhp80Or": "LoyaltyDog requires PHP 8.0 or newer.", + "youAreCurrentlyRunningPhp": "You are currently running PHP %s.", + "loyaltydogRequiresWoocommerceToBeInstalled": "LoyaltyDog requires WooCommerce to be installed and activated.", + "loyaltydogRequiresWoocommerce70Or": "LoyaltyDog requires WooCommerce 7.0 or newer.", + "youAreCurrentlyRunningWoocommerce": "You are currently running WooCommerce %s.", + "loyaltydogActivationFailedSystemRequirementsNot": "LoyaltyDog activation failed: system requirements not met." + }, + "misc": { + "invalidProgram": "Invalid program", + "emailOrPhoneIsRequired": "Email or phone is required", + "customerNotFound": "Customer not found", + "invalidParameters": "Invalid parameters", + "memberNotFound": "Member not found", + "memberEmailMissing": "Member email missing", + "oauthCredentialsNotConfigured": "OAuth credentials not configured", + "registrationIdNotFound": "Registration ID not found", + "backendUrlNotConfigured": "Backend URL not configured", + "failedToRotateSecretPleaseTry": "Failed to rotate secret. Please try again later.", + "coreApiReturnedAnError": "Core API returned an error", + "invalidResponseFromCoreApi": "Invalid response from Core API", + "failedToStoreNewSecret": "Failed to store new secret", + "webhookSecretRotatedSuccessfully": "Webhook secret rotated successfully", + "loyaltydogCredentialsAreNotConfigured": "LoyaltyDog credentials are not configured.", + "apiKeyIsRequired": "API key is required.", + "thatLooksLikeASessionJwt": "That looks like a session JWT (short-lived dashboard token), not a long-lived API key. Get the long-lived API key from your LoyaltyDog dashboard or via the plugin Connection page.", + "apiKeyContainsInvalidCharactersAllowed": "API key contains invalid characters. Allowed: letters, digits, underscore, hyphen, period.", + "apiKeyLengthIsOutOf": "API key length is out of range (10–256 characters).", + "apiKeyMustStartWithLoyaltydogpk": "API key must start with \\\"loyaltydog_pk_\\\". Get one from your LoyaltyDog dashboard.", + "profileNotFound": "Profile not found", + "tooManyRequestsPleaseTryAgain": "Too many requests. Please try again later.", + "pointsEarnedForAccountSignup": "Points earned for account signup", + "enterTheAmountOfPointsEarned": "Enter the amount of points earned when a customer signs up for an account.", + "pointsEarnedForWritingAReview": "Points earned for writing a review", + "enterTheAmountOfPointsEarned2": "Enter the amount of points earned when a customer first reviews a product.", + "currentLoyaltyPointsBalance": "Current loyalty points balance.", + "whetherTheCustomerIsEnrolledIn": "Whether the customer is enrolled in the loyalty program.", + "estimatedPointsTheCustomerWillEarn": "Estimated points the customer will earn from this order.", + "loyaltyReward": "Loyalty Reward", + "redeem": "REDEEM", + "redeemedSuccessfully": "Redeemed Successfully", + "xPointsBonusActive": "%sx points bonus active!", + "minimumSpendForPoints": "Minimum spend for points", + "minimumOrderTotalRequiredToEarn": "Minimum order total required to earn points. Leave empty to disable.", + "categoryPointMultipliers": "Category point multipliers", + "onePerLineCategoryslugMultiplierE": "One per line: category_slug:multiplier (e.g., electronics:2 for double points). If a product is in multiple categories, the highest multiplier applies.", + "timeLimitedCampaigns": "Time-limited campaigns", + "onePerLineMultiplierstartdateenddatelabelEG": "One per line: multiplier|start_date|end_date|label (e.g., 2|2026-03-01|2026-03-31|Double Points March). The highest active campaign multiplier applies to all orders. Lines starting with # are ignored.", + "welcomeTo1s2s": "Welcome to %1$s %2$s", + "loading": "Loading...", + "dashboard": "Dashboard", + "widget": "Widget", + "systemInfo": "System Info", + "allSetTakingYouToYour": "All set! Taking you to your dashboard…", + "activationFailed": "Activation failed.", + "loyaltyDiscount": "Loyalty Discount", + "nameFree": "{name} (FREE)", + "nameValueCurrency": "{name} ({value}{currency})", + "nameValueCurrency2": "{name} (-{value}{currency})", + "unableToGenerateASecureSession": "Unable to generate a secure session token. Please try again.", + "activatingYourLoyaltydogAccountHold": "Activating your LoyaltyDog account — hold on tight!", + "activationFailedSessionExpiredPlease": "Activation failed — session expired. Please try again.", + "tryAgain": "Try Again", + "connectYourLoyaltyProgramToWoocommerce": "Connect your loyalty program to WooCommerce.", + "pasteYourActivationKeyHere": "Paste your activation key here", + "activateLoyaltydog": "Activate LoyaltyDog", + "havingTroubleContactSupport": "Having trouble? Contact support", + "accountLinkedSuccessfully": "Account Linked Successfully!", + "yourLoyaltydogAccountIsNowConnected": "Your %s LoyaltyDog account is now connected to your WordPress store.", + "dashboardImplementationComingInFutureUpdates": "Dashboard implementation coming in future updates.", + "increasePointMultiplierForTopSelling": "Increase point multiplier for top-selling category (Electronics) to boost engagement", + "createAWinBackCampaignFor": "Create a win-back campaign for 120 inactive members who spent $1000+ lifetime", + "reduceTierAdvancementRequirementsToIncrease": "Reduce tier advancement requirements to increase Gold tier members by 20%", + "highValueSpent100095Engagement": "High-Value: Spent $1000+, 95% engagement", + "regularSpent100100070Engagement": "Regular: Spent $100-1000, 70% engagement", + "occasionalSpent10030Engagement": "Occasional: Spent <$100, 30% engagement", + "inactiveNoPurchasesIn60Days": "Inactive: No purchases in 60 days", + "createWinBackCampaignForInactive": "Create win-back campaign for inactive members", + "criticalIssues": "Critical Issues", + "warnings": "Warnings", + "webhookSecretNotConfigured": "Webhook secret not configured", + "missingStripeSignatureHeader": "Missing Stripe-Signature header", + "malformedStripeSignatureHeader": "Malformed Stripe-Signature header", + "stripeSignatureTimestampIsNotNumeric": "Stripe-Signature timestamp is not numeric", + "webhookSignatureTimestampOutsideToleranceWindow": "Webhook signature timestamp outside tolerance window", + "webhookSignatureVerificationFailed": "Webhook signature verification failed", + "invalidWebhookPayload": "Invalid webhook payload", + "dependsOnTheLastVersionOf": "depends on the last version of WooCommerce to work!", + "activeWoocommerce": "Active WooCommerce", + "installWoocommerce": "Install WooCommerce", + "youHave": "You have ", + "pointsEarn": " points. Earn ", + "moreWithThisOrder": " more with this order.", + "loyaltyPoints": " loyalty points." + }, + "frontend": { + "points": { + "loyaltyPoints": "Loyalty Points", + "youAreNotYetEnrolledIn": "You are not yet enrolled in our loyalty program. Points are earned automatically when you make purchases.", + "yourPointsBalance": "Your Points Balance", + "points": "points", + "tier": "Tier: %s", + "activeReward": "Active Reward", + "addItemsToYourCartTo": "Add items to your cart to redeem this reward at checkout.", + "viewCart": "View cart", + "howToEarnPoints": "How to Earn Points", + "earn1sPointsForEvery2s": "Earn %1$s points for every %2$s spent", + "pointsForCreatingAnAccount": "%s points for creating an account", + "pointsForWritingAProductReview": "%s points for writing a product review", + "pointsForReferringAFriend": "%s points for referring a friend", + "strongLoyaltyPointsStrongYouHave": "Loyalty Points: You have %s points.", + "viewDetails": "View details", + "points2": "%s points" + }, + "customerExport": { + "youMustBeLoggedInTo": "You must be logged in to export your loyalty data.", + "securityCheckFailedPleaseReloadAnd": "Security check failed. Please reload and try again.", + "youCanRequestOneLoyaltyData": "You can request one loyalty-data export per 24 hours. Please try again tomorrow.", + "weCouldNotPrepareYourExport": "We could not prepare your export right now. Please try again later or contact support." + }, + "account": { + "loyaltyProgram": "Loyalty Program", + "downloadMyLoyaltyData": "Download my loyalty data", + "notificationPreferences": "Notification preferences", + "yourNotificationPreferencesHaveBeenSaved": "Your notification preferences have been saved.", + "emailMeWhenMyLoyaltyTier": "Email me when my loyalty tier changes", + "savePreferences": "Save preferences" + }, + "checkout": { + "loadingLoyaltyInformation": "Loading loyalty information...", + "identifyingCustomer": "Identifying customer...", + "errorLoadingLoyaltyProgramPleaseTry": "Error loading loyalty program. Please try again.", + "emailOrPhone": "Email or Phone", + "enterEmailOrPhone": "Enter email or phone", + "findAccount": "Find Account", + "welcome": "Welcome", + "pointsBalance": "Points Balance:", + "availableRewards": "Available Rewards", + "selectAReward": "--- Select a reward ---", + "applyReward": "Apply Reward", + "appliedLoyaltyDiscounts": "Applied Loyalty Discounts" + }, + "redeem": { + "loyaltydogReward": "LoyaltyDog Reward" + }, + "checkoutService": { + "networkErrorWhileApplyingRewardPlease": "Network error while applying reward. Please try again.", + "youDoNotHaveEnoughPoints": "You do not have enough points for this reward.", + "rewardNotFoundOrNoLonger": "Reward not found or no longer available.", + "failedToApplyReward": "Failed to apply reward.", + "rewardApplied": "Reward applied." + }, + "blocks": { + "displayTheLoyaltydogLoyaltyWidgetFor": "Display the LoyaltyDog loyalty widget for logged-in customers.", + "loyalty": "loyalty", + "points": "points", + "rewards": "rewards", + "loyaltydog": "loyaltydog" + } + }, + "emails": { + "invalidEmailAddress": "Invalid email address", + "invalidVerificationCodeFormat": "Invalid verification code format", + "emailServiceNotConfigured": "Email service not configured", + "loyaltydogAccountVerification": "LoyaltyDog Account Verification", + "failedToSendEmailViaSendgrid": "Failed to send email via SendGrid", + "verifyYourEmail": "Verify Your Email", + "thankYouForSigningUpFor": "Thank you for signing up for LoyaltyDog! To complete your account setup, please verify your email address using the code below:", + "yourVerificationCode": "Your verification code:", + "thisCodeWillExpireIn10": "This code will expire in 10 minutes", + "securityNotice": "Security Notice:", + "neverShareThisCodeWithAnyone": "Never share this code with anyone. We will never ask for it.", + "ifYouDidNotSignUp": "If you did not sign up for a LoyaltyDog account, please ignore this email.", + "allRightsReserved": "All rights reserved.", + "thisIsAnAutomatedEmailPlease": "This is an automated email. Please do not reply.", + "passwordIsRequired": "Password is required", + "welcomeToLoyaltydogYourAccountIs": "Welcome to LoyaltyDog - Your Account Is Ready", + "welcomeToLoyaltydog": "Welcome to LoyaltyDog!", + "yourLoyaltydogAccountForHasBeen": "Your LoyaltyDog account for %s has been created successfully.", + "yourLoyaltydogAccountHasBeenCreated": "Your LoyaltyDog account has been created successfully.", + "belowAreYourLoginCredentialsYou": "Below are your login credentials. You can use these to access your LoyaltyDog dashboard:", + "email": "Email", + "password": "Password", + "keepThisPasswordSafeAndDo": "Keep this password safe and do not share it with anyone. You can change your password after logging in.", + "ifYouDidNotCreateThis": "If you did not create this account, please contact our support team immediately." + }, + "privacy": { + "loyaltydogLoyaltyProgram": "LoyaltyDog loyalty program", + "firstName": "First name", + "lastName": "Last name", + "phone": "Phone", + "pointsBalance": "Points balance", + "tier": "Tier", + "enrollmentStatus": "Enrollment status", + "enrolledAt": "Enrolled at", + "whenYouUseLoyaltydogYourEmail": "When you use LoyaltyDog, your email address and order totals are sent to the LoyaltyDog cloud service (api.loyalty.dog) to calculate and store loyalty points. Loyalty transaction history may be retained locally in de-identified form (linked only to an internal member ID) after an erasure request. See loyalty.dog/privacy for details." } } } diff --git a/packages/i18n/locales/es-ES/wordpress.json b/packages/i18n/locales/es-ES/wordpress.json index 3fc8d32..d822e76 100644 --- a/packages/i18n/locales/es-ES/wordpress.json +++ b/packages/i18n/locales/es-ES/wordpress.json @@ -8,7 +8,21 @@ "program": "Programa", "noProgramSelected": "Ningún programa seleccionado", "openDashboard": "Abrir el Panel de LoyaltyDog", - "connectStore": "Conectar su tienda" + "connectStore": "Conectar su tienda", + "atAGlanceStatusOfYour": "At-a-glance status of your LoyaltyDog program. Detailed analytics live in the portal.", + "programSummaryMetrics": "Program summary metrics", + "connectionStatus": "Connection status", + "connection": "Connection", + "programWp": "Program: %s", + "pointsIssuedInTheLast30": "Points issued in the last 30 days", + "pointsIssued30d": "Points issued (30d)", + "valueNotYetAvailable": "Value not yet available", + "viewInPortal": "View in portal", + "totalMembersEnrolled": "Total members enrolled", + "members": "Members", + "latestActivity": "Latest activity", + "latestTransaction": "Latest transaction", + "noActivityYet": "No activity yet" }, "connection": { "title": "Conexión de LoyaltyDog", @@ -26,7 +40,14 @@ "apiKeyNotConfigured": "Clave API no configurada", "httpError": "HTTP {{code}} de la API", "connectionSuccessful": "Conexión exitosa", - "unauthorized": "No autorizado" + "unauthorized": "No autorizado", + "youDoNotHavePermissionTo": "You do not have permission to access this page.", + "programId": "Program ID", + "php1sOrNewerIsRequired": "PHP %1$s or newer is required. This site is running PHP %2$s. Please ask your hosting provider to upgrade PHP before configuring LoyaltyDog.", + "wordpress1sOrNewerIsRequired": "WordPress %1$s or newer is required. This site is running WordPress %2$s.", + "woocommerceIsRequiredButIsNot": "WooCommerce is required but is not installed or activated.", + "woocommerce1sOrNewerIsRequired": "WooCommerce %1$s or newer is required. This site is running WooCommerce %2$s.", + "httpFromApi": "HTTP %d from API" }, "widget": { "title": "Widget de LoyaltyDog", @@ -40,7 +61,28 @@ "save": "Guardar", "settingsSaved": "Ajustes guardados.", "preview": "Vista previa", - "previewPlaceholder": "[El widget de LoyaltyDog se muestra aquí para clientes conectados]" + "previewPlaceholder": "[El widget de LoyaltyDog se muestra aquí para clientes conectados]", + "couldNotSaveSettingsToLoyaltydog": "Could not save settings to LoyaltyDog: %s", + "joinWidget": "Join Widget", + "shownToGuestVisitorsAndCustomers": "Shown to guest visitors and customers not yet in your loyalty program.", + "signupUrl": "Signup URL", + "theShareJoinUrlFromYour": "The share/join URL from your loyalty program dashboard. Opens in a new tab.", + "qrCode": "QR Code", + "showQrCodeAlongsideJoinText": "Show QR code alongside join text", + "customersCanScanWithTheirPhone": "Customers can scan with their phone to open the signup form directly.", + "checkoutRedemption": "Checkout Redemption", + "allowCustomersToAutomaticallyRedeemLoyalty": "Allow customers to automatically redeem loyalty points as a discount at checkout.", + "enableRedemption": "Enable Redemption", + "applyLoyaltyPointsAsACart": "Apply loyalty points as a cart discount at checkout", + "whenEnabledAllAvailablePointsAre": "When enabled, all available points are automatically applied as a discount. Customers can see this in their cart.", + "pointsValue": "Points Value", + "currencyPerPoint": "currency per point", + "eG001Means100": "e.g. 0.01 means 100 points = $1.00 discount. Range: 0.001–1.0.", + "emailNotifications": "Email Notifications", + "controlWhichTransactionalEmailsCustomersReceive": "Control which transactional emails customers receive from your loyalty program.", + "tierChangeEmails": "Tier Change Emails", + "sendANotificationWhenACustomer": "Send a notification when a customer moves between loyalty tiers", + "customersCanAlsoOptOutIndividually": "Customers can also opt out individually under My Account → Loyalty." }, "systemInfo": { "title": "Información del sistema LoyaltyDog", @@ -51,12 +93,592 @@ "woocommerceVersion": "Versión de WooCommerce", "pluginVersion": "Versión del plugin", "pendingActions": "Acciones AS pendientes", - "notActive": "No activo" + "notActive": "No activo", + "systemInformation": "System Information", + "compatibilityStatus": "Compatibility Status", + "yourPlatformMeetsAllRequirements": "Your platform meets all requirements", + "somePlatformRequirementsAreNotMet": "Some platform requirements are not met", + "wordpress": "WordPress", + "version": "Version:", + "language": "Language:", + "timezone": "Timezone:", + "multisite": "Multisite:", + "yes": "Yes", + "no": "No", + "woocommerce": "WooCommerce", + "status": "Status:", + "active": "Active", + "currency": "Currency:", + "restApi": "REST API:", + "enabled": "Enabled", + "disabled": "Disabled", + "php": "PHP", + "sapi": "SAPI:", + "maxInputVars": "Max Input Vars:", + "postMaxSize": "Post Max Size:", + "uploadMaxSize": "Upload Max Size:", + "phpExtensions": "PHP Extensions", + "required": "Required", + "loaded": "Loaded", + "missing": "Missing", + "optional": "Optional", + "serverResources": "Server Resources", + "memoryLimit": "Memory Limit:", + "currentMemoryUsage": "Current Memory Usage:", + "maxExecutionTime": "Max Execution Time:", + "serverSoftware": "Server Software:", + "wpDebug": "WP Debug:" + }, + "credentials": { + "securityCheckFailed": "Security check failed", + "invalidCredentialKey": "Invalid credential key", + "credentialValueIsRequired": "Credential value is required", + "invalidCredentialFormat": "Invalid credential format", + "failedToStoreCredentialPleaseTry": "Failed to store credential. Please try again.", + "credentialUpdatedSuccessfully": "Credential updated successfully", + "failedToDeleteCredentialPleaseTry": "Failed to delete credential. Please try again.", + "credentialDeletedSuccessfully": "Credential deleted successfully", + "noCredentialsToExport": "No credentials to export", + "noFileProvided": "No file provided", + "fileUploadFailed": "File upload failed", + "invalidFileTypePleaseUploadA": "Invalid file type. Please upload a JSON file.", + "invalidImportFileFormat": "Invalid import file format", + "noCredentialsWereImported": "No credentials were imported", + "credentialsImportedSuccessfully": "%d credentials imported successfully" + }, + "settings": { + "loyaltydogCredentials": "LoyaltyDog Credentials", + "manageYourApiKeysAndIntegration": "Manage your API keys and integration credentials.", + "status": "Status", + "stripe": "Stripe", + "coreApi": "Core API", + "auditLog": "Audit Log", + "backup": "Backup", + "stripeSecretKey": "Stripe Secret Key", + "stripeWebhookSecret": "Stripe Webhook Secret", + "stripePublicKey": "Stripe Public Key", + "stripePriceId": "Stripe Price ID", + "credentialStatus": "Credential Status", + "credential": "Credential", + "type": "Type", + "lastUpdated": "Last Updated", + "actions": "Actions", + "notConfigured": "Not Configured", + "encrypted": "Encrypted", + "plainText": "Plain text", + "edit": "Edit", + "delete": "Delete", + "configure": "Configure", + "stripeConfiguration": "Stripe Configuration", + "secretKey": "Secret Key", + "findInStripeDashboardDevelopers": "Find in Stripe Dashboard → Developers → API Keys", + "configured": "Configured: ", + "update": "Update", + "clear": "Clear", + "publishableKey": "Publishable Key", + "webhookSigningSecret": "Webhook Signing Secret", + "findInStripeDashboardDevelopers2": "Find in Stripe Dashboard → Developers → Webhooks → Show signing secret", + "monthlyPriceId": "Monthly Price ID", + "stripePriceIdFor29Month": "Stripe price ID for $29/month subscription", + "loyaltydogApiCredentials": "LoyaltyDog API Credentials", + "oauthStyleCredentialsGeneratedDuringAccount": "OAuth-style credentials generated during account registration. These credentials are auto-generated and cannot be manually edited.", + "notConnected": "Not Connected", + "clickTheButtonBelowToConnect": "Click the button below to connect your WordPress store to LoyaltyDog.", + "connectToLoyaltydog": "Connect to LoyaltyDog", + "registrationStatus": "Registration Status", + "apiKeyIsSecurelyEncryptedIn": "API key is securely encrypted in storage.", + "webhookSecret": "Webhook Secret", + "webhookSecretIsSecurelyEncryptedIn": "Webhook secret is securely encrypted in storage and never displayed.", + "rotateWebhookSecret": "Rotate Webhook Secret", + "generateANewWebhookSecretFor": "Generate a new webhook secret for security purposes. Old secret remains valid for 7 days.", + "howToReconfigure": "How to reconfigure:", + "toResetOrChangeYourLoyaltydog": "To reset or change your LoyaltyDog integration, contact support or delete the plugin and reinstall to re-run the account setup wizard.", + "detailedAuditLogOfAllCredential": "Detailed audit log of all credential operations is available in WordPress error logs.", + "checkYourWordpressDebugLogFile": "Check your WordPress debug log file for detailed audit information: %s", + "recentOperations": "Recent Operations:", + "allCredentialUpdatesAreLoggedAutomatically": "All credential updates are logged automatically", + "allCredentialDeletionsAreLoggedAutomatically": "All credential deletions are logged automatically", + "allCredentialAccessIsLoggedRead": "All credential access is logged (read, decrypt)", + "logsIncludeUserTimestampAndAction": "Logs include user, timestamp, and action type", + "credentialValuesAreNeverLoggedSanitized": "Credential values are never logged (sanitized)", + "backupRestore": "Backup & Restore", + "exportCredentials": "Export Credentials", + "exportYourEncryptedCredentialsAsA": "Export your encrypted credentials as a backup. Keep this file secure.", + "exportCredentialsEncrypted": "Export Credentials (Encrypted)", + "importCredentials": "Import Credentials", + "restoreCredentialsFromAPreviouslyExported": "Restore credentials from a previously exported backup.", + "warning": "Warning:", + "importedCredentialsWillOverwriteExistingCredentials": "Imported credentials will overwrite existing credentials. Back up before importing." + }, + "encryptionKeyNotice": { + "yourAes256EncryptionKeyCurrently": "Your AES-256 encryption key currently lives in wp_options alongside the credentials it protects. A stolen database backup would give an attacker both halves at once. Add the line below to wp-config.php (above the \\\"/* That's all, stop editing! */\\\" comment) to separate the key from the data, then delete the loyaltydog_encryption_key option.", + "thisNoticeDisappearsOnceTheConstant": "This notice disappears once the constant is in place. The plugin keeps reading from wp_options until you remove that entry, so existing encrypted credentials stay readable throughout the migration." + }, + "notices": { + "loyaltydogV2MigrationCompletedAutomatically": "LoyaltyDog v2 migration completed automatically", + "yourLoyaltyDataWasMigratedWithout": "Your loyalty data was migrated without a coordinated maintenance window. Please contact support so we can verify your totals against our backend.", + "contactSupportLoyaltyDog": "Contact support.loyalty.dog", + "loyaltydogUpgradedToV203": "LoyaltyDog upgraded to v2.0.3", + "yourExistingProgramSettingsAndMember": "Your existing program settings and member point balances were carried over automatically.", + "reviewConnection": "Review Connection", + "dismiss": "Dismiss", + "loyaltydogV1V2MigrationFailed": "LoyaltyDog v1 → v2 migration failed.", + "error": "Error: %s", + "recoveryGuide": "Recovery guide", + "thePluginWillRetryAutomaticallyOn": "The plugin will retry automatically on the next admin pageload." + }, + "subscriptionLapse": { + "yourLoyaltydogWordpressAddOnPayment": "Your LoyaltyDog WordPress add-on payment failed.", + "loyaltyOperationsContinueForNowStripe": "Loyalty operations continue for now. Stripe will retry the payment automatically; if it fails, your subscription will be canceled and the loyalty program will pause until a new payment method is added.", + "updatePaymentMethod": "Update payment method", + "remindMeTomorrow": "Remind me tomorrow", + "yourLoyaltydogWordpressAddOnSubscription": "Your LoyaltyDog WordPress add-on subscription is canceled.", + "loyaltyOperationsArePausedExistingCustomer": "Loyalty operations are paused. Existing customer point balances remain intact. Resubscribe to resume earning and redemption.", + "resubscribe": "Resubscribe" + }, + "trialNotices": { + "trialExpired": "Trial expired", + "trialDayRemaining": "Trial: %d day remaining", + "welcomeToLoyaltydog": "Welcome to LoyaltyDog.", + "signUpForAFree30": "Sign up for a free 30-day trial to activate your points program. No credit card required.", + "startYourFreeTrial": "Start your free trial", + "yourLoyaltydogTrialEndsInDay": "Your LoyaltyDog trial ends in %d day.", + "upgradeNowToKeepAwardingPoints": "Upgrade now to keep awarding points after the trial ends.", + "upgradeNow": "Upgrade now", + "remindMeLater": "Remind me later", + "yourLoyaltydogTrialHasEnded": "Your LoyaltyDog trial has ended.", + "yourStorefrontContinuesToWorkBut": "Your storefront continues to work, but new points will not be awarded until you upgrade. Existing balances remain intact." + }, + "activation": { + "securityCheckFailed": "Security check failed.", + "insufficientPermissions": "Insufficient permissions.", + "invalidActivationKey": "Invalid activation key.", + "unableToReachLoyaltydogRightNow": "Unable to reach LoyaltyDog right now. Please try again shortly.", + "thisActivationLinkHasExpiredPlease": "This activation link has expired. Please return to LoyaltyDog to generate a new one.", + "tooManyAttemptsPleaseWaitA": "Too many attempts. Please wait a few minutes and try again.", + "somethingWentWrongDuringActivationPlease": "Something went wrong during activation. Please try again or contact support.", + "unableToStoreCredentialsSecurelyPlease": "Unable to store credentials securely. Please try again.", + "accountActivatedSuccessfully": "Account activated successfully!" + }, + "testConnection": { + "invalidRequest": "Invalid request", + "connectionTestFailed": "Connection test failed", + "yourWordpressPluginIsSuccessfullyConnected": "Your WordPress plugin is successfully connected to the Core API." + }, + "help": { + "gettingStarted": "Getting Started", + "settings": "Settings", + "pointsRules": "Points & Rules", + "shortcodes": "Shortcodes", + "gettingStartedWithLoyaltydog": "Getting Started with LoyaltyDog", + "loyaltydogAddsADigitalLoyaltyProgram": "LoyaltyDog adds a digital loyalty program to your WooCommerce store. Customers earn points on purchases and redeem them for rewards.", + "enterYour1sprogramId2sAnd1sapi": "Enter your %1$sProgram ID%2$s and %1$sAPI Key%2$s in Settings. Get these from your LoyaltyDog dashboard.", + "configureThePointsConversionRateE": "Configure the points conversion rate (e.g., 1 point per $1 spent).", + "setUpOfferMessagesThatCustomers": "Set up offer messages that customers see when they have rewards.", + "optionallyConfigureCategoryMultipliersCampaignsAnd": "Optionally configure category multipliers, campaigns, and referral rewards.", + "customersWillSeeTheirPointsBalance": "Customers will see their points balance in My Account > Loyalty Points, and on the cart/checkout pages.", + "settingsReference": "Settings Reference", + "yourUniqueLoyaltydogProgramIdentifierFound": "Your unique LoyaltyDog program identifier. Found in Dashboard > Settings > API.", + "secretKeyForApiAuthenticationNever": "Secret key for API authentication. Never share this publicly.", + "earnPointsWhen": "Earn Points When", + "controlsWhenPointsAreAwardedProcessing": "Controls when points are awarded. \\\"Processing\\\" is recommended for most stores.", + "pointsConversionRate": "Points Conversion Rate", + "howSpendingConvertsToPoints1": "How spending converts to points. \\\"1:1\\\" means 1 point per currency unit.", + "pointsRulesEngine": "Points & Rules Engine", + "categoryMultipliers": "Category Multipliers", + "awardBonusPointsForSpecificProduct": "Award bonus points for specific product categories. Enter one per line:", + "thisGives2xPointsForElectronics": "This gives 2x points for electronics and 1.5x for clothing. Use category slugs.", + "minimumSpend": "Minimum Spend", + "setAMinimumOrderTotalRequired": "Set a minimum order total required to earn any points. Orders below this amount earn 0 points.", + "timeLimitedCampaigns": "Time-Limited Campaigns", + "runPromotionalPeriodsWithBonusPoint": "Run promotional periods with bonus point multipliers. Enter one per line:", + "formatMultiplierstartdateenddatelabelLinesStartingWith": "Format: multiplier|start_date|end_date|label. Lines starting with # are ignored.", + "productLevelOverrides": "Product-Level Overrides", + "setAFixedPointValueFor": "Set a fixed point value for specific products using the %s custom field on the product edit page.", + "availableShortcodes": "Available Shortcodes", + "displayTheLoggedInCustomerS": "Display the logged-in customer's points balance inline. Returns empty for guests.", + "displayTheCustomerSReferralLink": "Display the customer's referral link. Requires the referral program to be configured.", + "resources": "Resources", + "supportCenter": "Support Center", + "configureLoyaltydog": "Configure LoyaltyDog", + "setUpYourLoyaltyProgramBy": "Set up your loyalty program by entering your Program ID and API Key in the LoyaltyDog settings.", + "hooksReference": "Hooks Reference" + }, + "menu": { + "manage": "Manage", + "strongLoyaltydogStrongIsAlmostReady": "LoyaltyDog is almost ready. To get started, %sset your LoyaltyDog account keys%s.", + "strongLoyaltydogStrongRequiresCouponsTo": "LoyaltyDog requires coupons to be %senabled%s in order to function properly and allow customers to redeem offer during checkout.", + "sendPushNotifications": "Send Push Notifications", + "message": "Message", + "pushNotificationsAreCompliantWithEu": "Push notifications are compliant with EU GDPR.", + "send": "Send", + "enableTheLoggingOfApiRequest": "Enable the logging of API request.", + "1sviewLog2s": "%1$sView Log%2$s", + "loyaltydogApi": "LoyaltyDog API", + "enterWithYourProgramId": "Enter with your program ID.", + "enterWithYourLoyaltydogApiKey": "Enter with your LoyaltyDog API key.", + "debugLog": "Debug Log", + "thisShouldBeCheckedOnlyIf": "This should be checked only if LoyaltyDog support suggests it to be checked.", + "pointsConversion": "Points Conversion", + "earnPointsWhenOrderStatusIs": "Earn Points When Order Status Is", + "behaviorHowPointsAreEarnedAnd": "Behavior how points are earned and rewards are redeemed.", + "pendingPayment": "Pending Payment", + "processing": "Processing", + "onHold": "On Hold", + "completed": "Completed", + "earnPointsConversionRate": "Earn Points Conversion Rate", + "setTheNumberOfPointsAwarded": "Set the number of points awarded based on the product price.", + "earnPointsRoundingMode": "Earn Points Rounding Mode", + "setHowPointsShouldBeRounded": "Set how points should be rounded.", + "roundToNearestInteger": "Round to nearest integer", + "alwaysRoundDown": "Always round down", + "alwaysRoundUp": "Always round up", + "offerMessages": "Offer Messages", + "adjustTheMessageByUsing1s": "Adjust the message by using %1$s{friendlyNameToBeAdded}%2$s, %1$s{friendlyName}%2$s, %1$s{name}%2$s, %1$s{value}%2$s, %1$s{currency}%2$s to represent the redeemed / available offer.", + "availableOfferMessage": "Available Offer Message", + "addAnOptionalMessageWhenUser": "Add an optional message when user have a active Loyalty offer. Limited HTML is allowed. Leave blank to disable.", + "strongActiveLoyaltyOfferStrongFriendlynametobeadded": "Active Loyalty Offer: {friendlyNameToBeAdded}.
You can add some products to redeem this offer.", + "redeemOfferMessage": "Redeem Offer Message", + "displayedOnTheCartAndCheckout": "Displayed on the cart and checkout page when cart is not empty and user have active offer. Limited HTML is allowed.", + "strongLoyaltyRewardStrongFriendlynametobeadded": "Loyalty Reward: {friendlyNameToBeAdded}", + "pointsEarnedForActions": "Points Earned for Actions", + "customersCanAlsoEarnPointsFor": "Customers can also earn points for actions like creating an account or writing a product review. You can enter the amount of points the customer will earn for each action in this section.", + "isRequired": "%s is required.", + "points": "Points", + "isInvalid": "%s is invalid.", + "messageCanNotBeBlank": "Message can not be blank.", + "messageHaveBeenSent": "Message have been sent." + }, + "wizard": { + "loyaltydogSetup": "LoyaltyDog Setup", + "loyaltyRewardsForYourWoocommerceStore": "Loyalty rewards for your WooCommerce store", + "setupSteps": "Setup steps", + "connect": "Connect", + "ready": "Ready", + "connectYourAccount": "Connect Your Account", + "accountType": "Account type", + "iHaveALoyaltydogAccount": "I have a LoyaltyDog account", + "connectAnExistingProgramIncludingPos": "Connect an existing program (including POS accounts)", + "iMNewCreateAn": "I'm new — create an account", + "signUpAndStartANew": "Sign up and start a new loyalty program", + "connectionMethod": "Connection method", + "iReceivedAnActivationKeyBy": "I received an activation key by email", + "pasteTheOneTimeKeyFrom": "Paste the one-time key from your subscription email.", + "iHaveAProgramIdAnd": "I have a Program ID and API Key", + "forLegacyV1Customers": "For legacy v1 customers.", + "activationKey": "Activation key", + "pasteTheKeyFromYourEmail": "Paste the key from your email", + "sentToYourInboxAfterSubscribing": "Sent to your inbox after subscribing at loyalty.dog.", + "activate": "Activate", + "enterYourProgramIdAndApi": "Enter your Program ID and API Key from your %1$sLoyaltyDog dashboard%2$s.", + "eG507f1f77bcf86cd799439011": "e.g., 507f1f77bcf86cd799439011", + "foundInYourLoyaltydogDashboardUnder": "Found in your LoyaltyDog dashboard under Settings > API.", + "yourApiKey": "Your API key", + "keepThisSecretNeverShareYour": "Keep this secret. Never share your API key publicly.", + "validateampContinue": "Validate & Continue", + "createANewLoyaltydogAccountYour": "Create a new LoyaltyDog account. Your site URL will be pre-filled to speed up signup.", + "createAccountAtDashLoyaltyDog": "Create Account at dash.loyalty.dog", + "afterCreatingYourAccountReturnHere": "After creating your account, return here and select \\\"I have a LoyaltyDog account\\\" to connect.", + "configurePoints": "Configure Points", + "chooseAPresetOrSetUp": "Choose a preset or set up your own earning rate. You can always change these later in Settings.", + "pointsPreset": "Points preset", + "simple": "Simple", + "easyToUnderstandForCustomers": "Easy to understand for customers.", + "recommended": "Recommended", + "generous": "Generous", + "greatForBuildingEngagementFast": "Great for building engagement fast.", + "custom": "Custom", + "setYourOwnRate": "Set your own rate", + "fullControlOverEarningRules": "Full control over earning rules.", + "earnRate": "Earn rate", + "pointsForEvery": "points for every", + "currencyAmount": "Currency amount", + "spent": "spent", + "bonusPointsForSignup": "Bonus points for signup", + "pointsAwardedWhenANewCustomer": "Points awarded when a new customer creates an account. Set to 0 to disable.", + "earnPointsWhenOrderStatusIs": "Earn points when order status is:", + "processing": "Processing", + "completed": "Completed", + "onHold": "On Hold", + "back": "Back", + "saveampFinish": "Save & Finish", + "youReAllSet": "You're All Set!", + "yourLoyaltyProgramIsNowActive": "Your loyalty program is now active. Customers will start earning points on their next purchase.", + "checkingConnection": "Checking connection...", + "whatSNext": "What's next?", + "customizeYourPass": "Customize your pass", + "designYourDigitalLoyaltyPassIn": "Design your digital loyalty pass in the portal.", + "readTheDocs": "Read the docs", + "learnHowToConfigureRulesCampaigns": "Learn how to configure rules, campaigns, and more.", + "testItYourself": "Test it yourself", + "viewTheCustomerFacingLoyaltyPage": "View the customer-facing loyalty page on your store.", + "goToSettings": "Go to Settings", + "goToDashboard": "Go to Dashboard", + "permissionDenied": "Permission denied.", + "bothProgramIdAndApiKey": "Both Program ID and API Key are required.", + "invalidApiKeyPleaseCheckYour": "Invalid API Key. Please check your credentials.", + "programNotFoundPleaseCheckYour": "Program not found. Please check your Program ID.", + "connectionFailedHttpPleaseTryAgain": "Connection failed (HTTP %s). Please try again.", + "connectionSuccessful": "Connection successful!", + "credentialsAreRequired": "Credentials are required.", + "setupComplete": "Setup complete!", + "apiUnreachableHttp": "API unreachable (HTTP %s)", + "activationKeyLooksMalformedPasteThe": "Activation key looks malformed. Paste the key exactly as it appears in your email.", + "activating": "Activating…", + "connectedContinuingToConfiguration": "Connected. Continuing to configuration…", + "activationFailedPleaseTryAgain": "Activation failed. Please try again.", + "networkErrorPleaseTryAgain": "Network error. Please try again.", + "pleaseEnterBothProgramIdAnd": "Please enter both Program ID and API Key.", + "validating": "Validating...", + "validateContinue": "Validate & Continue", + "program": "Program:", + "saving": "Saving...", + "saveFinish": "Save & Finish", + "connectionIssue": "Connection issue" + }, + "program": { + "loyaltyPrograms": "Loyalty Programs", + "createNewProgram": "Create New Program", + "programName": "Program Name", + "thisNameWillAppearToYour": "This name will appear to your customers", + "createProgram": "Create Program", + "cancel": "Cancel", + "failedToLoadPrograms": "Failed to load programs", + "failedToLoadProgramsPleaseTry": "Failed to load programs. Please try again.", + "noProgramsYet": "No programs yet", + "createYourFirstProgram": "Create Your First Program", + "created": "Created", + "failedToCreateProgramPleaseTry": "Failed to create program. Please try again." + }, + "diagnostics": { + "pluginWonTActivate": "Plugin won't activate", + "checkPhpVersionRequires74": "Check PHP version (requires 7.4+)", + "verifyMysqlVersionRequires57": "Verify MySQL version (requires 5.7+)", + "checkErrorLogsForSpecificErrors": "Check error logs for specific errors", + "disableOtherPluginsAndTryAgain": "Disable other plugins and try again", + "productsNotSyncing": "Products not syncing", + "verifyWoocommerceIsInstalled": "Verify WooCommerce is installed", + "checkSyncLogsForErrors": "Check sync logs for errors", + "manualSyncGoToSettingsSync": "Manual sync: Go to Settings > Sync Status", + "checkDatabasePermissions": "Check database permissions", + "webhookFailures": "Webhook failures", + "verifyWebhookUrlIsAccessible": "Verify webhook URL is accessible", + "checkSslCertificateValidity": "Check SSL certificate validity", + "reviewWebhookEventLogs": "Review webhook event logs", + "testWithManualWebhookDispatch": "Test with manual webhook dispatch", + "ticketCreatedWeLlRespondWithin": "Ticket %s created. We'll respond within 4 hours." + }, + "settingsSync": { + "serverReturnedAnUnexpectedResponseShape": "Server returned an unexpected response shape." } }, "widget": { "joinCta": "Únase a nuestro programa de fidelidad", "loginPrompt": "Por favor, inicie sesión para ver su programa de fidelidad." + }, + "plugin": { + "loyaltydog": "LoyaltyDog", + "httpsLoyaltydogIoWordpress": "https://loyaltydog.io/wordpress", + "pointsTiersAndRewardRedemptionFor": "Points, tiers, and reward redemption for WooCommerce. Live balance widget for shortcode, Gutenberg, Elementor, and the WC My Account page.", + "loyaltydogInc": "LoyaltyDog Inc.", + "httpsLoyaltyDog": "https://loyalty.dog", + "loyaltydogRequiresWordpress69Or": "LoyaltyDog requires WordPress 6.9 or newer.", + "youAreCurrentlyRunningWordpress": "You are currently running WordPress %s.", + "loyaltydogRequiresPhp80Or": "LoyaltyDog requires PHP 8.0 or newer.", + "youAreCurrentlyRunningPhp": "You are currently running PHP %s.", + "loyaltydogRequiresWoocommerceToBeInstalled": "LoyaltyDog requires WooCommerce to be installed and activated.", + "loyaltydogRequiresWoocommerce70Or": "LoyaltyDog requires WooCommerce 7.0 or newer.", + "youAreCurrentlyRunningWoocommerce": "You are currently running WooCommerce %s.", + "loyaltydogActivationFailedSystemRequirementsNot": "LoyaltyDog activation failed: system requirements not met." + }, + "misc": { + "invalidProgram": "Invalid program", + "emailOrPhoneIsRequired": "Email or phone is required", + "customerNotFound": "Customer not found", + "invalidParameters": "Invalid parameters", + "memberNotFound": "Member not found", + "memberEmailMissing": "Member email missing", + "oauthCredentialsNotConfigured": "OAuth credentials not configured", + "registrationIdNotFound": "Registration ID not found", + "backendUrlNotConfigured": "Backend URL not configured", + "failedToRotateSecretPleaseTry": "Failed to rotate secret. Please try again later.", + "coreApiReturnedAnError": "Core API returned an error", + "invalidResponseFromCoreApi": "Invalid response from Core API", + "failedToStoreNewSecret": "Failed to store new secret", + "webhookSecretRotatedSuccessfully": "Webhook secret rotated successfully", + "loyaltydogCredentialsAreNotConfigured": "LoyaltyDog credentials are not configured.", + "apiKeyIsRequired": "API key is required.", + "thatLooksLikeASessionJwt": "That looks like a session JWT (short-lived dashboard token), not a long-lived API key. Get the long-lived API key from your LoyaltyDog dashboard or via the plugin Connection page.", + "apiKeyContainsInvalidCharactersAllowed": "API key contains invalid characters. Allowed: letters, digits, underscore, hyphen, period.", + "apiKeyLengthIsOutOf": "API key length is out of range (10–256 characters).", + "apiKeyMustStartWithLoyaltydogpk": "API key must start with \\\"loyaltydog_pk_\\\". Get one from your LoyaltyDog dashboard.", + "profileNotFound": "Profile not found", + "tooManyRequestsPleaseTryAgain": "Too many requests. Please try again later.", + "pointsEarnedForAccountSignup": "Points earned for account signup", + "enterTheAmountOfPointsEarned": "Enter the amount of points earned when a customer signs up for an account.", + "pointsEarnedForWritingAReview": "Points earned for writing a review", + "enterTheAmountOfPointsEarned2": "Enter the amount of points earned when a customer first reviews a product.", + "currentLoyaltyPointsBalance": "Current loyalty points balance.", + "whetherTheCustomerIsEnrolledIn": "Whether the customer is enrolled in the loyalty program.", + "estimatedPointsTheCustomerWillEarn": "Estimated points the customer will earn from this order.", + "loyaltyReward": "Loyalty Reward", + "redeem": "REDEEM", + "redeemedSuccessfully": "Redeemed Successfully", + "xPointsBonusActive": "%sx points bonus active!", + "minimumSpendForPoints": "Minimum spend for points", + "minimumOrderTotalRequiredToEarn": "Minimum order total required to earn points. Leave empty to disable.", + "categoryPointMultipliers": "Category point multipliers", + "onePerLineCategoryslugMultiplierE": "One per line: category_slug:multiplier (e.g., electronics:2 for double points). If a product is in multiple categories, the highest multiplier applies.", + "timeLimitedCampaigns": "Time-limited campaigns", + "onePerLineMultiplierstartdateenddatelabelEG": "One per line: multiplier|start_date|end_date|label (e.g., 2|2026-03-01|2026-03-31|Double Points March). The highest active campaign multiplier applies to all orders. Lines starting with # are ignored.", + "welcomeTo1s2s": "Welcome to %1$s %2$s", + "loading": "Loading...", + "dashboard": "Dashboard", + "widget": "Widget", + "systemInfo": "System Info", + "allSetTakingYouToYour": "All set! Taking you to your dashboard…", + "activationFailed": "Activation failed.", + "loyaltyDiscount": "Loyalty Discount", + "nameFree": "{name} (FREE)", + "nameValueCurrency": "{name} ({value}{currency})", + "nameValueCurrency2": "{name} (-{value}{currency})", + "unableToGenerateASecureSession": "Unable to generate a secure session token. Please try again.", + "activatingYourLoyaltydogAccountHold": "Activating your LoyaltyDog account — hold on tight!", + "activationFailedSessionExpiredPlease": "Activation failed — session expired. Please try again.", + "tryAgain": "Try Again", + "connectYourLoyaltyProgramToWoocommerce": "Connect your loyalty program to WooCommerce.", + "pasteYourActivationKeyHere": "Paste your activation key here", + "activateLoyaltydog": "Activate LoyaltyDog", + "havingTroubleContactSupport": "Having trouble? Contact support", + "accountLinkedSuccessfully": "Account Linked Successfully!", + "yourLoyaltydogAccountIsNowConnected": "Your %s LoyaltyDog account is now connected to your WordPress store.", + "dashboardImplementationComingInFutureUpdates": "Dashboard implementation coming in future updates.", + "increasePointMultiplierForTopSelling": "Increase point multiplier for top-selling category (Electronics) to boost engagement", + "createAWinBackCampaignFor": "Create a win-back campaign for 120 inactive members who spent $1000+ lifetime", + "reduceTierAdvancementRequirementsToIncrease": "Reduce tier advancement requirements to increase Gold tier members by 20%", + "highValueSpent100095Engagement": "High-Value: Spent $1000+, 95% engagement", + "regularSpent100100070Engagement": "Regular: Spent $100-1000, 70% engagement", + "occasionalSpent10030Engagement": "Occasional: Spent <$100, 30% engagement", + "inactiveNoPurchasesIn60Days": "Inactive: No purchases in 60 days", + "createWinBackCampaignForInactive": "Create win-back campaign for inactive members", + "criticalIssues": "Critical Issues", + "warnings": "Warnings", + "webhookSecretNotConfigured": "Webhook secret not configured", + "missingStripeSignatureHeader": "Missing Stripe-Signature header", + "malformedStripeSignatureHeader": "Malformed Stripe-Signature header", + "stripeSignatureTimestampIsNotNumeric": "Stripe-Signature timestamp is not numeric", + "webhookSignatureTimestampOutsideToleranceWindow": "Webhook signature timestamp outside tolerance window", + "webhookSignatureVerificationFailed": "Webhook signature verification failed", + "invalidWebhookPayload": "Invalid webhook payload", + "dependsOnTheLastVersionOf": "depends on the last version of WooCommerce to work!", + "activeWoocommerce": "Active WooCommerce", + "installWoocommerce": "Install WooCommerce", + "youHave": "You have ", + "pointsEarn": " points. Earn ", + "moreWithThisOrder": " more with this order.", + "loyaltyPoints": " loyalty points." + }, + "frontend": { + "points": { + "loyaltyPoints": "Loyalty Points", + "youAreNotYetEnrolledIn": "You are not yet enrolled in our loyalty program. Points are earned automatically when you make purchases.", + "yourPointsBalance": "Your Points Balance", + "points": "points", + "tier": "Tier: %s", + "activeReward": "Active Reward", + "addItemsToYourCartTo": "Add items to your cart to redeem this reward at checkout.", + "viewCart": "View cart", + "howToEarnPoints": "How to Earn Points", + "earn1sPointsForEvery2s": "Earn %1$s points for every %2$s spent", + "pointsForCreatingAnAccount": "%s points for creating an account", + "pointsForWritingAProductReview": "%s points for writing a product review", + "pointsForReferringAFriend": "%s points for referring a friend", + "strongLoyaltyPointsStrongYouHave": "Loyalty Points: You have %s points.", + "viewDetails": "View details", + "points2": "%s points" + }, + "customerExport": { + "youMustBeLoggedInTo": "You must be logged in to export your loyalty data.", + "securityCheckFailedPleaseReloadAnd": "Security check failed. Please reload and try again.", + "youCanRequestOneLoyaltyData": "You can request one loyalty-data export per 24 hours. Please try again tomorrow.", + "weCouldNotPrepareYourExport": "We could not prepare your export right now. Please try again later or contact support." + }, + "account": { + "loyaltyProgram": "Loyalty Program", + "downloadMyLoyaltyData": "Download my loyalty data", + "notificationPreferences": "Notification preferences", + "yourNotificationPreferencesHaveBeenSaved": "Your notification preferences have been saved.", + "emailMeWhenMyLoyaltyTier": "Email me when my loyalty tier changes", + "savePreferences": "Save preferences" + }, + "checkout": { + "loadingLoyaltyInformation": "Loading loyalty information...", + "identifyingCustomer": "Identifying customer...", + "errorLoadingLoyaltyProgramPleaseTry": "Error loading loyalty program. Please try again.", + "emailOrPhone": "Email or Phone", + "enterEmailOrPhone": "Enter email or phone", + "findAccount": "Find Account", + "welcome": "Welcome", + "pointsBalance": "Points Balance:", + "availableRewards": "Available Rewards", + "selectAReward": "--- Select a reward ---", + "applyReward": "Apply Reward", + "appliedLoyaltyDiscounts": "Applied Loyalty Discounts" + }, + "redeem": { + "loyaltydogReward": "LoyaltyDog Reward" + }, + "checkoutService": { + "networkErrorWhileApplyingRewardPlease": "Network error while applying reward. Please try again.", + "youDoNotHaveEnoughPoints": "You do not have enough points for this reward.", + "rewardNotFoundOrNoLonger": "Reward not found or no longer available.", + "failedToApplyReward": "Failed to apply reward.", + "rewardApplied": "Reward applied." + }, + "blocks": { + "displayTheLoyaltydogLoyaltyWidgetFor": "Display the LoyaltyDog loyalty widget for logged-in customers.", + "loyalty": "loyalty", + "points": "points", + "rewards": "rewards", + "loyaltydog": "loyaltydog" + } + }, + "emails": { + "invalidEmailAddress": "Invalid email address", + "invalidVerificationCodeFormat": "Invalid verification code format", + "emailServiceNotConfigured": "Email service not configured", + "loyaltydogAccountVerification": "LoyaltyDog Account Verification", + "failedToSendEmailViaSendgrid": "Failed to send email via SendGrid", + "verifyYourEmail": "Verify Your Email", + "thankYouForSigningUpFor": "Thank you for signing up for LoyaltyDog! To complete your account setup, please verify your email address using the code below:", + "yourVerificationCode": "Your verification code:", + "thisCodeWillExpireIn10": "This code will expire in 10 minutes", + "securityNotice": "Security Notice:", + "neverShareThisCodeWithAnyone": "Never share this code with anyone. We will never ask for it.", + "ifYouDidNotSignUp": "If you did not sign up for a LoyaltyDog account, please ignore this email.", + "allRightsReserved": "All rights reserved.", + "thisIsAnAutomatedEmailPlease": "This is an automated email. Please do not reply.", + "passwordIsRequired": "Password is required", + "welcomeToLoyaltydogYourAccountIs": "Welcome to LoyaltyDog - Your Account Is Ready", + "welcomeToLoyaltydog": "Welcome to LoyaltyDog!", + "yourLoyaltydogAccountForHasBeen": "Your LoyaltyDog account for %s has been created successfully.", + "yourLoyaltydogAccountHasBeenCreated": "Your LoyaltyDog account has been created successfully.", + "belowAreYourLoginCredentialsYou": "Below are your login credentials. You can use these to access your LoyaltyDog dashboard:", + "email": "Email", + "password": "Password", + "keepThisPasswordSafeAndDo": "Keep this password safe and do not share it with anyone. You can change your password after logging in.", + "ifYouDidNotCreateThis": "If you did not create this account, please contact our support team immediately." + }, + "privacy": { + "loyaltydogLoyaltyProgram": "LoyaltyDog loyalty program", + "firstName": "First name", + "lastName": "Last name", + "phone": "Phone", + "pointsBalance": "Points balance", + "tier": "Tier", + "enrollmentStatus": "Enrollment status", + "enrolledAt": "Enrolled at", + "whenYouUseLoyaltydogYourEmail": "When you use LoyaltyDog, your email address and order totals are sent to the LoyaltyDog cloud service (api.loyalty.dog) to calculate and store loyalty points. Loyalty transaction history may be retained locally in de-identified form (linked only to an internal member ID) after an erasure request. See loyalty.dog/privacy for details." } } } diff --git a/packages/i18n/locales/es-MX/wordpress.json b/packages/i18n/locales/es-MX/wordpress.json index 6eea4f8..68f6c9e 100644 --- a/packages/i18n/locales/es-MX/wordpress.json +++ b/packages/i18n/locales/es-MX/wordpress.json @@ -8,7 +8,21 @@ "program": "Programa", "noProgramSelected": "Ningún programa seleccionado", "openDashboard": "Abrir el Panel de LoyaltyDog", - "connectStore": "Conectar tu tienda" + "connectStore": "Conectar tu tienda", + "atAGlanceStatusOfYour": "At-a-glance status of your LoyaltyDog program. Detailed analytics live in the portal.", + "programSummaryMetrics": "Program summary metrics", + "connectionStatus": "Connection status", + "connection": "Connection", + "programWp": "Program: %s", + "pointsIssuedInTheLast30": "Points issued in the last 30 days", + "pointsIssued30d": "Points issued (30d)", + "valueNotYetAvailable": "Value not yet available", + "viewInPortal": "View in portal", + "totalMembersEnrolled": "Total members enrolled", + "members": "Members", + "latestActivity": "Latest activity", + "latestTransaction": "Latest transaction", + "noActivityYet": "No activity yet" }, "connection": { "title": "Conexión de LoyaltyDog", @@ -26,7 +40,14 @@ "apiKeyNotConfigured": "Clave API no configurada", "httpError": "HTTP {{code}} de la API", "connectionSuccessful": "Conexión exitosa", - "unauthorized": "No autorizado" + "unauthorized": "No autorizado", + "youDoNotHavePermissionTo": "You do not have permission to access this page.", + "programId": "Program ID", + "php1sOrNewerIsRequired": "PHP %1$s or newer is required. This site is running PHP %2$s. Please ask your hosting provider to upgrade PHP before configuring LoyaltyDog.", + "wordpress1sOrNewerIsRequired": "WordPress %1$s or newer is required. This site is running WordPress %2$s.", + "woocommerceIsRequiredButIsNot": "WooCommerce is required but is not installed or activated.", + "woocommerce1sOrNewerIsRequired": "WooCommerce %1$s or newer is required. This site is running WooCommerce %2$s.", + "httpFromApi": "HTTP %d from API" }, "widget": { "title": "Widget de LoyaltyDog", @@ -40,7 +61,28 @@ "save": "Guardar", "settingsSaved": "Ajustes guardados.", "preview": "Vista previa", - "previewPlaceholder": "[El widget de LoyaltyDog se muestra aquí para clientes conectados]" + "previewPlaceholder": "[El widget de LoyaltyDog se muestra aquí para clientes conectados]", + "couldNotSaveSettingsToLoyaltydog": "Could not save settings to LoyaltyDog: %s", + "joinWidget": "Join Widget", + "shownToGuestVisitorsAndCustomers": "Shown to guest visitors and customers not yet in your loyalty program.", + "signupUrl": "Signup URL", + "theShareJoinUrlFromYour": "The share/join URL from your loyalty program dashboard. Opens in a new tab.", + "qrCode": "QR Code", + "showQrCodeAlongsideJoinText": "Show QR code alongside join text", + "customersCanScanWithTheirPhone": "Customers can scan with their phone to open the signup form directly.", + "checkoutRedemption": "Checkout Redemption", + "allowCustomersToAutomaticallyRedeemLoyalty": "Allow customers to automatically redeem loyalty points as a discount at checkout.", + "enableRedemption": "Enable Redemption", + "applyLoyaltyPointsAsACart": "Apply loyalty points as a cart discount at checkout", + "whenEnabledAllAvailablePointsAre": "When enabled, all available points are automatically applied as a discount. Customers can see this in their cart.", + "pointsValue": "Points Value", + "currencyPerPoint": "currency per point", + "eG001Means100": "e.g. 0.01 means 100 points = $1.00 discount. Range: 0.001–1.0.", + "emailNotifications": "Email Notifications", + "controlWhichTransactionalEmailsCustomersReceive": "Control which transactional emails customers receive from your loyalty program.", + "tierChangeEmails": "Tier Change Emails", + "sendANotificationWhenACustomer": "Send a notification when a customer moves between loyalty tiers", + "customersCanAlsoOptOutIndividually": "Customers can also opt out individually under My Account → Loyalty." }, "systemInfo": { "title": "Información del sistema LoyaltyDog", @@ -51,12 +93,592 @@ "woocommerceVersion": "Versión de WooCommerce", "pluginVersion": "Versión del plugin", "pendingActions": "Acciones AS pendientes", - "notActive": "No activo" + "notActive": "No activo", + "systemInformation": "System Information", + "compatibilityStatus": "Compatibility Status", + "yourPlatformMeetsAllRequirements": "Your platform meets all requirements", + "somePlatformRequirementsAreNotMet": "Some platform requirements are not met", + "wordpress": "WordPress", + "version": "Version:", + "language": "Language:", + "timezone": "Timezone:", + "multisite": "Multisite:", + "yes": "Yes", + "no": "No", + "woocommerce": "WooCommerce", + "status": "Status:", + "active": "Active", + "currency": "Currency:", + "restApi": "REST API:", + "enabled": "Enabled", + "disabled": "Disabled", + "php": "PHP", + "sapi": "SAPI:", + "maxInputVars": "Max Input Vars:", + "postMaxSize": "Post Max Size:", + "uploadMaxSize": "Upload Max Size:", + "phpExtensions": "PHP Extensions", + "required": "Required", + "loaded": "Loaded", + "missing": "Missing", + "optional": "Optional", + "serverResources": "Server Resources", + "memoryLimit": "Memory Limit:", + "currentMemoryUsage": "Current Memory Usage:", + "maxExecutionTime": "Max Execution Time:", + "serverSoftware": "Server Software:", + "wpDebug": "WP Debug:" + }, + "credentials": { + "securityCheckFailed": "Security check failed", + "invalidCredentialKey": "Invalid credential key", + "credentialValueIsRequired": "Credential value is required", + "invalidCredentialFormat": "Invalid credential format", + "failedToStoreCredentialPleaseTry": "Failed to store credential. Please try again.", + "credentialUpdatedSuccessfully": "Credential updated successfully", + "failedToDeleteCredentialPleaseTry": "Failed to delete credential. Please try again.", + "credentialDeletedSuccessfully": "Credential deleted successfully", + "noCredentialsToExport": "No credentials to export", + "noFileProvided": "No file provided", + "fileUploadFailed": "File upload failed", + "invalidFileTypePleaseUploadA": "Invalid file type. Please upload a JSON file.", + "invalidImportFileFormat": "Invalid import file format", + "noCredentialsWereImported": "No credentials were imported", + "credentialsImportedSuccessfully": "%d credentials imported successfully" + }, + "settings": { + "loyaltydogCredentials": "LoyaltyDog Credentials", + "manageYourApiKeysAndIntegration": "Manage your API keys and integration credentials.", + "status": "Status", + "stripe": "Stripe", + "coreApi": "Core API", + "auditLog": "Audit Log", + "backup": "Backup", + "stripeSecretKey": "Stripe Secret Key", + "stripeWebhookSecret": "Stripe Webhook Secret", + "stripePublicKey": "Stripe Public Key", + "stripePriceId": "Stripe Price ID", + "credentialStatus": "Credential Status", + "credential": "Credential", + "type": "Type", + "lastUpdated": "Last Updated", + "actions": "Actions", + "notConfigured": "Not Configured", + "encrypted": "Encrypted", + "plainText": "Plain text", + "edit": "Edit", + "delete": "Delete", + "configure": "Configure", + "stripeConfiguration": "Stripe Configuration", + "secretKey": "Secret Key", + "findInStripeDashboardDevelopers": "Find in Stripe Dashboard → Developers → API Keys", + "configured": "Configured: ", + "update": "Update", + "clear": "Clear", + "publishableKey": "Publishable Key", + "webhookSigningSecret": "Webhook Signing Secret", + "findInStripeDashboardDevelopers2": "Find in Stripe Dashboard → Developers → Webhooks → Show signing secret", + "monthlyPriceId": "Monthly Price ID", + "stripePriceIdFor29Month": "Stripe price ID for $29/month subscription", + "loyaltydogApiCredentials": "LoyaltyDog API Credentials", + "oauthStyleCredentialsGeneratedDuringAccount": "OAuth-style credentials generated during account registration. These credentials are auto-generated and cannot be manually edited.", + "notConnected": "Not Connected", + "clickTheButtonBelowToConnect": "Click the button below to connect your WordPress store to LoyaltyDog.", + "connectToLoyaltydog": "Connect to LoyaltyDog", + "registrationStatus": "Registration Status", + "apiKeyIsSecurelyEncryptedIn": "API key is securely encrypted in storage.", + "webhookSecret": "Webhook Secret", + "webhookSecretIsSecurelyEncryptedIn": "Webhook secret is securely encrypted in storage and never displayed.", + "rotateWebhookSecret": "Rotate Webhook Secret", + "generateANewWebhookSecretFor": "Generate a new webhook secret for security purposes. Old secret remains valid for 7 days.", + "howToReconfigure": "How to reconfigure:", + "toResetOrChangeYourLoyaltydog": "To reset or change your LoyaltyDog integration, contact support or delete the plugin and reinstall to re-run the account setup wizard.", + "detailedAuditLogOfAllCredential": "Detailed audit log of all credential operations is available in WordPress error logs.", + "checkYourWordpressDebugLogFile": "Check your WordPress debug log file for detailed audit information: %s", + "recentOperations": "Recent Operations:", + "allCredentialUpdatesAreLoggedAutomatically": "All credential updates are logged automatically", + "allCredentialDeletionsAreLoggedAutomatically": "All credential deletions are logged automatically", + "allCredentialAccessIsLoggedRead": "All credential access is logged (read, decrypt)", + "logsIncludeUserTimestampAndAction": "Logs include user, timestamp, and action type", + "credentialValuesAreNeverLoggedSanitized": "Credential values are never logged (sanitized)", + "backupRestore": "Backup & Restore", + "exportCredentials": "Export Credentials", + "exportYourEncryptedCredentialsAsA": "Export your encrypted credentials as a backup. Keep this file secure.", + "exportCredentialsEncrypted": "Export Credentials (Encrypted)", + "importCredentials": "Import Credentials", + "restoreCredentialsFromAPreviouslyExported": "Restore credentials from a previously exported backup.", + "warning": "Warning:", + "importedCredentialsWillOverwriteExistingCredentials": "Imported credentials will overwrite existing credentials. Back up before importing." + }, + "encryptionKeyNotice": { + "yourAes256EncryptionKeyCurrently": "Your AES-256 encryption key currently lives in wp_options alongside the credentials it protects. A stolen database backup would give an attacker both halves at once. Add the line below to wp-config.php (above the \\\"/* That's all, stop editing! */\\\" comment) to separate the key from the data, then delete the loyaltydog_encryption_key option.", + "thisNoticeDisappearsOnceTheConstant": "This notice disappears once the constant is in place. The plugin keeps reading from wp_options until you remove that entry, so existing encrypted credentials stay readable throughout the migration." + }, + "notices": { + "loyaltydogV2MigrationCompletedAutomatically": "LoyaltyDog v2 migration completed automatically", + "yourLoyaltyDataWasMigratedWithout": "Your loyalty data was migrated without a coordinated maintenance window. Please contact support so we can verify your totals against our backend.", + "contactSupportLoyaltyDog": "Contact support.loyalty.dog", + "loyaltydogUpgradedToV203": "LoyaltyDog upgraded to v2.0.3", + "yourExistingProgramSettingsAndMember": "Your existing program settings and member point balances were carried over automatically.", + "reviewConnection": "Review Connection", + "dismiss": "Dismiss", + "loyaltydogV1V2MigrationFailed": "LoyaltyDog v1 → v2 migration failed.", + "error": "Error: %s", + "recoveryGuide": "Recovery guide", + "thePluginWillRetryAutomaticallyOn": "The plugin will retry automatically on the next admin pageload." + }, + "subscriptionLapse": { + "yourLoyaltydogWordpressAddOnPayment": "Your LoyaltyDog WordPress add-on payment failed.", + "loyaltyOperationsContinueForNowStripe": "Loyalty operations continue for now. Stripe will retry the payment automatically; if it fails, your subscription will be canceled and the loyalty program will pause until a new payment method is added.", + "updatePaymentMethod": "Update payment method", + "remindMeTomorrow": "Remind me tomorrow", + "yourLoyaltydogWordpressAddOnSubscription": "Your LoyaltyDog WordPress add-on subscription is canceled.", + "loyaltyOperationsArePausedExistingCustomer": "Loyalty operations are paused. Existing customer point balances remain intact. Resubscribe to resume earning and redemption.", + "resubscribe": "Resubscribe" + }, + "trialNotices": { + "trialExpired": "Trial expired", + "trialDayRemaining": "Trial: %d day remaining", + "welcomeToLoyaltydog": "Welcome to LoyaltyDog.", + "signUpForAFree30": "Sign up for a free 30-day trial to activate your points program. No credit card required.", + "startYourFreeTrial": "Start your free trial", + "yourLoyaltydogTrialEndsInDay": "Your LoyaltyDog trial ends in %d day.", + "upgradeNowToKeepAwardingPoints": "Upgrade now to keep awarding points after the trial ends.", + "upgradeNow": "Upgrade now", + "remindMeLater": "Remind me later", + "yourLoyaltydogTrialHasEnded": "Your LoyaltyDog trial has ended.", + "yourStorefrontContinuesToWorkBut": "Your storefront continues to work, but new points will not be awarded until you upgrade. Existing balances remain intact." + }, + "activation": { + "securityCheckFailed": "Security check failed.", + "insufficientPermissions": "Insufficient permissions.", + "invalidActivationKey": "Invalid activation key.", + "unableToReachLoyaltydogRightNow": "Unable to reach LoyaltyDog right now. Please try again shortly.", + "thisActivationLinkHasExpiredPlease": "This activation link has expired. Please return to LoyaltyDog to generate a new one.", + "tooManyAttemptsPleaseWaitA": "Too many attempts. Please wait a few minutes and try again.", + "somethingWentWrongDuringActivationPlease": "Something went wrong during activation. Please try again or contact support.", + "unableToStoreCredentialsSecurelyPlease": "Unable to store credentials securely. Please try again.", + "accountActivatedSuccessfully": "Account activated successfully!" + }, + "testConnection": { + "invalidRequest": "Invalid request", + "connectionTestFailed": "Connection test failed", + "yourWordpressPluginIsSuccessfullyConnected": "Your WordPress plugin is successfully connected to the Core API." + }, + "help": { + "gettingStarted": "Getting Started", + "settings": "Settings", + "pointsRules": "Points & Rules", + "shortcodes": "Shortcodes", + "gettingStartedWithLoyaltydog": "Getting Started with LoyaltyDog", + "loyaltydogAddsADigitalLoyaltyProgram": "LoyaltyDog adds a digital loyalty program to your WooCommerce store. Customers earn points on purchases and redeem them for rewards.", + "enterYour1sprogramId2sAnd1sapi": "Enter your %1$sProgram ID%2$s and %1$sAPI Key%2$s in Settings. Get these from your LoyaltyDog dashboard.", + "configureThePointsConversionRateE": "Configure the points conversion rate (e.g., 1 point per $1 spent).", + "setUpOfferMessagesThatCustomers": "Set up offer messages that customers see when they have rewards.", + "optionallyConfigureCategoryMultipliersCampaignsAnd": "Optionally configure category multipliers, campaigns, and referral rewards.", + "customersWillSeeTheirPointsBalance": "Customers will see their points balance in My Account > Loyalty Points, and on the cart/checkout pages.", + "settingsReference": "Settings Reference", + "yourUniqueLoyaltydogProgramIdentifierFound": "Your unique LoyaltyDog program identifier. Found in Dashboard > Settings > API.", + "secretKeyForApiAuthenticationNever": "Secret key for API authentication. Never share this publicly.", + "earnPointsWhen": "Earn Points When", + "controlsWhenPointsAreAwardedProcessing": "Controls when points are awarded. \\\"Processing\\\" is recommended for most stores.", + "pointsConversionRate": "Points Conversion Rate", + "howSpendingConvertsToPoints1": "How spending converts to points. \\\"1:1\\\" means 1 point per currency unit.", + "pointsRulesEngine": "Points & Rules Engine", + "categoryMultipliers": "Category Multipliers", + "awardBonusPointsForSpecificProduct": "Award bonus points for specific product categories. Enter one per line:", + "thisGives2xPointsForElectronics": "This gives 2x points for electronics and 1.5x for clothing. Use category slugs.", + "minimumSpend": "Minimum Spend", + "setAMinimumOrderTotalRequired": "Set a minimum order total required to earn any points. Orders below this amount earn 0 points.", + "timeLimitedCampaigns": "Time-Limited Campaigns", + "runPromotionalPeriodsWithBonusPoint": "Run promotional periods with bonus point multipliers. Enter one per line:", + "formatMultiplierstartdateenddatelabelLinesStartingWith": "Format: multiplier|start_date|end_date|label. Lines starting with # are ignored.", + "productLevelOverrides": "Product-Level Overrides", + "setAFixedPointValueFor": "Set a fixed point value for specific products using the %s custom field on the product edit page.", + "availableShortcodes": "Available Shortcodes", + "displayTheLoggedInCustomerS": "Display the logged-in customer's points balance inline. Returns empty for guests.", + "displayTheCustomerSReferralLink": "Display the customer's referral link. Requires the referral program to be configured.", + "resources": "Resources", + "supportCenter": "Support Center", + "configureLoyaltydog": "Configure LoyaltyDog", + "setUpYourLoyaltyProgramBy": "Set up your loyalty program by entering your Program ID and API Key in the LoyaltyDog settings.", + "hooksReference": "Hooks Reference" + }, + "menu": { + "manage": "Manage", + "strongLoyaltydogStrongIsAlmostReady": "LoyaltyDog is almost ready. To get started, %sset your LoyaltyDog account keys%s.", + "strongLoyaltydogStrongRequiresCouponsTo": "LoyaltyDog requires coupons to be %senabled%s in order to function properly and allow customers to redeem offer during checkout.", + "sendPushNotifications": "Send Push Notifications", + "message": "Message", + "pushNotificationsAreCompliantWithEu": "Push notifications are compliant with EU GDPR.", + "send": "Send", + "enableTheLoggingOfApiRequest": "Enable the logging of API request.", + "1sviewLog2s": "%1$sView Log%2$s", + "loyaltydogApi": "LoyaltyDog API", + "enterWithYourProgramId": "Enter with your program ID.", + "enterWithYourLoyaltydogApiKey": "Enter with your LoyaltyDog API key.", + "debugLog": "Debug Log", + "thisShouldBeCheckedOnlyIf": "This should be checked only if LoyaltyDog support suggests it to be checked.", + "pointsConversion": "Points Conversion", + "earnPointsWhenOrderStatusIs": "Earn Points When Order Status Is", + "behaviorHowPointsAreEarnedAnd": "Behavior how points are earned and rewards are redeemed.", + "pendingPayment": "Pending Payment", + "processing": "Processing", + "onHold": "On Hold", + "completed": "Completed", + "earnPointsConversionRate": "Earn Points Conversion Rate", + "setTheNumberOfPointsAwarded": "Set the number of points awarded based on the product price.", + "earnPointsRoundingMode": "Earn Points Rounding Mode", + "setHowPointsShouldBeRounded": "Set how points should be rounded.", + "roundToNearestInteger": "Round to nearest integer", + "alwaysRoundDown": "Always round down", + "alwaysRoundUp": "Always round up", + "offerMessages": "Offer Messages", + "adjustTheMessageByUsing1s": "Adjust the message by using %1$s{friendlyNameToBeAdded}%2$s, %1$s{friendlyName}%2$s, %1$s{name}%2$s, %1$s{value}%2$s, %1$s{currency}%2$s to represent the redeemed / available offer.", + "availableOfferMessage": "Available Offer Message", + "addAnOptionalMessageWhenUser": "Add an optional message when user have a active Loyalty offer. Limited HTML is allowed. Leave blank to disable.", + "strongActiveLoyaltyOfferStrongFriendlynametobeadded": "Active Loyalty Offer: {friendlyNameToBeAdded}.
You can add some products to redeem this offer.", + "redeemOfferMessage": "Redeem Offer Message", + "displayedOnTheCartAndCheckout": "Displayed on the cart and checkout page when cart is not empty and user have active offer. Limited HTML is allowed.", + "strongLoyaltyRewardStrongFriendlynametobeadded": "Loyalty Reward: {friendlyNameToBeAdded}", + "pointsEarnedForActions": "Points Earned for Actions", + "customersCanAlsoEarnPointsFor": "Customers can also earn points for actions like creating an account or writing a product review. You can enter the amount of points the customer will earn for each action in this section.", + "isRequired": "%s is required.", + "points": "Points", + "isInvalid": "%s is invalid.", + "messageCanNotBeBlank": "Message can not be blank.", + "messageHaveBeenSent": "Message have been sent." + }, + "wizard": { + "loyaltydogSetup": "LoyaltyDog Setup", + "loyaltyRewardsForYourWoocommerceStore": "Loyalty rewards for your WooCommerce store", + "setupSteps": "Setup steps", + "connect": "Connect", + "ready": "Ready", + "connectYourAccount": "Connect Your Account", + "accountType": "Account type", + "iHaveALoyaltydogAccount": "I have a LoyaltyDog account", + "connectAnExistingProgramIncludingPos": "Connect an existing program (including POS accounts)", + "iMNewCreateAn": "I'm new — create an account", + "signUpAndStartANew": "Sign up and start a new loyalty program", + "connectionMethod": "Connection method", + "iReceivedAnActivationKeyBy": "I received an activation key by email", + "pasteTheOneTimeKeyFrom": "Paste the one-time key from your subscription email.", + "iHaveAProgramIdAnd": "I have a Program ID and API Key", + "forLegacyV1Customers": "For legacy v1 customers.", + "activationKey": "Activation key", + "pasteTheKeyFromYourEmail": "Paste the key from your email", + "sentToYourInboxAfterSubscribing": "Sent to your inbox after subscribing at loyalty.dog.", + "activate": "Activate", + "enterYourProgramIdAndApi": "Enter your Program ID and API Key from your %1$sLoyaltyDog dashboard%2$s.", + "eG507f1f77bcf86cd799439011": "e.g., 507f1f77bcf86cd799439011", + "foundInYourLoyaltydogDashboardUnder": "Found in your LoyaltyDog dashboard under Settings > API.", + "yourApiKey": "Your API key", + "keepThisSecretNeverShareYour": "Keep this secret. Never share your API key publicly.", + "validateampContinue": "Validate & Continue", + "createANewLoyaltydogAccountYour": "Create a new LoyaltyDog account. Your site URL will be pre-filled to speed up signup.", + "createAccountAtDashLoyaltyDog": "Create Account at dash.loyalty.dog", + "afterCreatingYourAccountReturnHere": "After creating your account, return here and select \\\"I have a LoyaltyDog account\\\" to connect.", + "configurePoints": "Configure Points", + "chooseAPresetOrSetUp": "Choose a preset or set up your own earning rate. You can always change these later in Settings.", + "pointsPreset": "Points preset", + "simple": "Simple", + "easyToUnderstandForCustomers": "Easy to understand for customers.", + "recommended": "Recommended", + "generous": "Generous", + "greatForBuildingEngagementFast": "Great for building engagement fast.", + "custom": "Custom", + "setYourOwnRate": "Set your own rate", + "fullControlOverEarningRules": "Full control over earning rules.", + "earnRate": "Earn rate", + "pointsForEvery": "points for every", + "currencyAmount": "Currency amount", + "spent": "spent", + "bonusPointsForSignup": "Bonus points for signup", + "pointsAwardedWhenANewCustomer": "Points awarded when a new customer creates an account. Set to 0 to disable.", + "earnPointsWhenOrderStatusIs": "Earn points when order status is:", + "processing": "Processing", + "completed": "Completed", + "onHold": "On Hold", + "back": "Back", + "saveampFinish": "Save & Finish", + "youReAllSet": "You're All Set!", + "yourLoyaltyProgramIsNowActive": "Your loyalty program is now active. Customers will start earning points on their next purchase.", + "checkingConnection": "Checking connection...", + "whatSNext": "What's next?", + "customizeYourPass": "Customize your pass", + "designYourDigitalLoyaltyPassIn": "Design your digital loyalty pass in the portal.", + "readTheDocs": "Read the docs", + "learnHowToConfigureRulesCampaigns": "Learn how to configure rules, campaigns, and more.", + "testItYourself": "Test it yourself", + "viewTheCustomerFacingLoyaltyPage": "View the customer-facing loyalty page on your store.", + "goToSettings": "Go to Settings", + "goToDashboard": "Go to Dashboard", + "permissionDenied": "Permission denied.", + "bothProgramIdAndApiKey": "Both Program ID and API Key are required.", + "invalidApiKeyPleaseCheckYour": "Invalid API Key. Please check your credentials.", + "programNotFoundPleaseCheckYour": "Program not found. Please check your Program ID.", + "connectionFailedHttpPleaseTryAgain": "Connection failed (HTTP %s). Please try again.", + "connectionSuccessful": "Connection successful!", + "credentialsAreRequired": "Credentials are required.", + "setupComplete": "Setup complete!", + "apiUnreachableHttp": "API unreachable (HTTP %s)", + "activationKeyLooksMalformedPasteThe": "Activation key looks malformed. Paste the key exactly as it appears in your email.", + "activating": "Activating…", + "connectedContinuingToConfiguration": "Connected. Continuing to configuration…", + "activationFailedPleaseTryAgain": "Activation failed. Please try again.", + "networkErrorPleaseTryAgain": "Network error. Please try again.", + "pleaseEnterBothProgramIdAnd": "Please enter both Program ID and API Key.", + "validating": "Validating...", + "validateContinue": "Validate & Continue", + "program": "Program:", + "saving": "Saving...", + "saveFinish": "Save & Finish", + "connectionIssue": "Connection issue" + }, + "program": { + "loyaltyPrograms": "Loyalty Programs", + "createNewProgram": "Create New Program", + "programName": "Program Name", + "thisNameWillAppearToYour": "This name will appear to your customers", + "createProgram": "Create Program", + "cancel": "Cancel", + "failedToLoadPrograms": "Failed to load programs", + "failedToLoadProgramsPleaseTry": "Failed to load programs. Please try again.", + "noProgramsYet": "No programs yet", + "createYourFirstProgram": "Create Your First Program", + "created": "Created", + "failedToCreateProgramPleaseTry": "Failed to create program. Please try again." + }, + "diagnostics": { + "pluginWonTActivate": "Plugin won't activate", + "checkPhpVersionRequires74": "Check PHP version (requires 7.4+)", + "verifyMysqlVersionRequires57": "Verify MySQL version (requires 5.7+)", + "checkErrorLogsForSpecificErrors": "Check error logs for specific errors", + "disableOtherPluginsAndTryAgain": "Disable other plugins and try again", + "productsNotSyncing": "Products not syncing", + "verifyWoocommerceIsInstalled": "Verify WooCommerce is installed", + "checkSyncLogsForErrors": "Check sync logs for errors", + "manualSyncGoToSettingsSync": "Manual sync: Go to Settings > Sync Status", + "checkDatabasePermissions": "Check database permissions", + "webhookFailures": "Webhook failures", + "verifyWebhookUrlIsAccessible": "Verify webhook URL is accessible", + "checkSslCertificateValidity": "Check SSL certificate validity", + "reviewWebhookEventLogs": "Review webhook event logs", + "testWithManualWebhookDispatch": "Test with manual webhook dispatch", + "ticketCreatedWeLlRespondWithin": "Ticket %s created. We'll respond within 4 hours." + }, + "settingsSync": { + "serverReturnedAnUnexpectedResponseShape": "Server returned an unexpected response shape." } }, "widget": { "joinCta": "Únete a nuestro programa de lealtad", "loginPrompt": "Por favor, inicia sesión para ver tu programa de lealtad." + }, + "plugin": { + "loyaltydog": "LoyaltyDog", + "httpsLoyaltydogIoWordpress": "https://loyaltydog.io/wordpress", + "pointsTiersAndRewardRedemptionFor": "Points, tiers, and reward redemption for WooCommerce. Live balance widget for shortcode, Gutenberg, Elementor, and the WC My Account page.", + "loyaltydogInc": "LoyaltyDog Inc.", + "httpsLoyaltyDog": "https://loyalty.dog", + "loyaltydogRequiresWordpress69Or": "LoyaltyDog requires WordPress 6.9 or newer.", + "youAreCurrentlyRunningWordpress": "You are currently running WordPress %s.", + "loyaltydogRequiresPhp80Or": "LoyaltyDog requires PHP 8.0 or newer.", + "youAreCurrentlyRunningPhp": "You are currently running PHP %s.", + "loyaltydogRequiresWoocommerceToBeInstalled": "LoyaltyDog requires WooCommerce to be installed and activated.", + "loyaltydogRequiresWoocommerce70Or": "LoyaltyDog requires WooCommerce 7.0 or newer.", + "youAreCurrentlyRunningWoocommerce": "You are currently running WooCommerce %s.", + "loyaltydogActivationFailedSystemRequirementsNot": "LoyaltyDog activation failed: system requirements not met." + }, + "misc": { + "invalidProgram": "Invalid program", + "emailOrPhoneIsRequired": "Email or phone is required", + "customerNotFound": "Customer not found", + "invalidParameters": "Invalid parameters", + "memberNotFound": "Member not found", + "memberEmailMissing": "Member email missing", + "oauthCredentialsNotConfigured": "OAuth credentials not configured", + "registrationIdNotFound": "Registration ID not found", + "backendUrlNotConfigured": "Backend URL not configured", + "failedToRotateSecretPleaseTry": "Failed to rotate secret. Please try again later.", + "coreApiReturnedAnError": "Core API returned an error", + "invalidResponseFromCoreApi": "Invalid response from Core API", + "failedToStoreNewSecret": "Failed to store new secret", + "webhookSecretRotatedSuccessfully": "Webhook secret rotated successfully", + "loyaltydogCredentialsAreNotConfigured": "LoyaltyDog credentials are not configured.", + "apiKeyIsRequired": "API key is required.", + "thatLooksLikeASessionJwt": "That looks like a session JWT (short-lived dashboard token), not a long-lived API key. Get the long-lived API key from your LoyaltyDog dashboard or via the plugin Connection page.", + "apiKeyContainsInvalidCharactersAllowed": "API key contains invalid characters. Allowed: letters, digits, underscore, hyphen, period.", + "apiKeyLengthIsOutOf": "API key length is out of range (10–256 characters).", + "apiKeyMustStartWithLoyaltydogpk": "API key must start with \\\"loyaltydog_pk_\\\". Get one from your LoyaltyDog dashboard.", + "profileNotFound": "Profile not found", + "tooManyRequestsPleaseTryAgain": "Too many requests. Please try again later.", + "pointsEarnedForAccountSignup": "Points earned for account signup", + "enterTheAmountOfPointsEarned": "Enter the amount of points earned when a customer signs up for an account.", + "pointsEarnedForWritingAReview": "Points earned for writing a review", + "enterTheAmountOfPointsEarned2": "Enter the amount of points earned when a customer first reviews a product.", + "currentLoyaltyPointsBalance": "Current loyalty points balance.", + "whetherTheCustomerIsEnrolledIn": "Whether the customer is enrolled in the loyalty program.", + "estimatedPointsTheCustomerWillEarn": "Estimated points the customer will earn from this order.", + "loyaltyReward": "Loyalty Reward", + "redeem": "REDEEM", + "redeemedSuccessfully": "Redeemed Successfully", + "xPointsBonusActive": "%sx points bonus active!", + "minimumSpendForPoints": "Minimum spend for points", + "minimumOrderTotalRequiredToEarn": "Minimum order total required to earn points. Leave empty to disable.", + "categoryPointMultipliers": "Category point multipliers", + "onePerLineCategoryslugMultiplierE": "One per line: category_slug:multiplier (e.g., electronics:2 for double points). If a product is in multiple categories, the highest multiplier applies.", + "timeLimitedCampaigns": "Time-limited campaigns", + "onePerLineMultiplierstartdateenddatelabelEG": "One per line: multiplier|start_date|end_date|label (e.g., 2|2026-03-01|2026-03-31|Double Points March). The highest active campaign multiplier applies to all orders. Lines starting with # are ignored.", + "welcomeTo1s2s": "Welcome to %1$s %2$s", + "loading": "Loading...", + "dashboard": "Dashboard", + "widget": "Widget", + "systemInfo": "System Info", + "allSetTakingYouToYour": "All set! Taking you to your dashboard…", + "activationFailed": "Activation failed.", + "loyaltyDiscount": "Loyalty Discount", + "nameFree": "{name} (FREE)", + "nameValueCurrency": "{name} ({value}{currency})", + "nameValueCurrency2": "{name} (-{value}{currency})", + "unableToGenerateASecureSession": "Unable to generate a secure session token. Please try again.", + "activatingYourLoyaltydogAccountHold": "Activating your LoyaltyDog account — hold on tight!", + "activationFailedSessionExpiredPlease": "Activation failed — session expired. Please try again.", + "tryAgain": "Try Again", + "connectYourLoyaltyProgramToWoocommerce": "Connect your loyalty program to WooCommerce.", + "pasteYourActivationKeyHere": "Paste your activation key here", + "activateLoyaltydog": "Activate LoyaltyDog", + "havingTroubleContactSupport": "Having trouble? Contact support", + "accountLinkedSuccessfully": "Account Linked Successfully!", + "yourLoyaltydogAccountIsNowConnected": "Your %s LoyaltyDog account is now connected to your WordPress store.", + "dashboardImplementationComingInFutureUpdates": "Dashboard implementation coming in future updates.", + "increasePointMultiplierForTopSelling": "Increase point multiplier for top-selling category (Electronics) to boost engagement", + "createAWinBackCampaignFor": "Create a win-back campaign for 120 inactive members who spent $1000+ lifetime", + "reduceTierAdvancementRequirementsToIncrease": "Reduce tier advancement requirements to increase Gold tier members by 20%", + "highValueSpent100095Engagement": "High-Value: Spent $1000+, 95% engagement", + "regularSpent100100070Engagement": "Regular: Spent $100-1000, 70% engagement", + "occasionalSpent10030Engagement": "Occasional: Spent <$100, 30% engagement", + "inactiveNoPurchasesIn60Days": "Inactive: No purchases in 60 days", + "createWinBackCampaignForInactive": "Create win-back campaign for inactive members", + "criticalIssues": "Critical Issues", + "warnings": "Warnings", + "webhookSecretNotConfigured": "Webhook secret not configured", + "missingStripeSignatureHeader": "Missing Stripe-Signature header", + "malformedStripeSignatureHeader": "Malformed Stripe-Signature header", + "stripeSignatureTimestampIsNotNumeric": "Stripe-Signature timestamp is not numeric", + "webhookSignatureTimestampOutsideToleranceWindow": "Webhook signature timestamp outside tolerance window", + "webhookSignatureVerificationFailed": "Webhook signature verification failed", + "invalidWebhookPayload": "Invalid webhook payload", + "dependsOnTheLastVersionOf": "depends on the last version of WooCommerce to work!", + "activeWoocommerce": "Active WooCommerce", + "installWoocommerce": "Install WooCommerce", + "youHave": "You have ", + "pointsEarn": " points. Earn ", + "moreWithThisOrder": " more with this order.", + "loyaltyPoints": " loyalty points." + }, + "frontend": { + "points": { + "loyaltyPoints": "Loyalty Points", + "youAreNotYetEnrolledIn": "You are not yet enrolled in our loyalty program. Points are earned automatically when you make purchases.", + "yourPointsBalance": "Your Points Balance", + "points": "points", + "tier": "Tier: %s", + "activeReward": "Active Reward", + "addItemsToYourCartTo": "Add items to your cart to redeem this reward at checkout.", + "viewCart": "View cart", + "howToEarnPoints": "How to Earn Points", + "earn1sPointsForEvery2s": "Earn %1$s points for every %2$s spent", + "pointsForCreatingAnAccount": "%s points for creating an account", + "pointsForWritingAProductReview": "%s points for writing a product review", + "pointsForReferringAFriend": "%s points for referring a friend", + "strongLoyaltyPointsStrongYouHave": "Loyalty Points: You have %s points.", + "viewDetails": "View details", + "points2": "%s points" + }, + "customerExport": { + "youMustBeLoggedInTo": "You must be logged in to export your loyalty data.", + "securityCheckFailedPleaseReloadAnd": "Security check failed. Please reload and try again.", + "youCanRequestOneLoyaltyData": "You can request one loyalty-data export per 24 hours. Please try again tomorrow.", + "weCouldNotPrepareYourExport": "We could not prepare your export right now. Please try again later or contact support." + }, + "account": { + "loyaltyProgram": "Loyalty Program", + "downloadMyLoyaltyData": "Download my loyalty data", + "notificationPreferences": "Notification preferences", + "yourNotificationPreferencesHaveBeenSaved": "Your notification preferences have been saved.", + "emailMeWhenMyLoyaltyTier": "Email me when my loyalty tier changes", + "savePreferences": "Save preferences" + }, + "checkout": { + "loadingLoyaltyInformation": "Loading loyalty information...", + "identifyingCustomer": "Identifying customer...", + "errorLoadingLoyaltyProgramPleaseTry": "Error loading loyalty program. Please try again.", + "emailOrPhone": "Email or Phone", + "enterEmailOrPhone": "Enter email or phone", + "findAccount": "Find Account", + "welcome": "Welcome", + "pointsBalance": "Points Balance:", + "availableRewards": "Available Rewards", + "selectAReward": "--- Select a reward ---", + "applyReward": "Apply Reward", + "appliedLoyaltyDiscounts": "Applied Loyalty Discounts" + }, + "redeem": { + "loyaltydogReward": "LoyaltyDog Reward" + }, + "checkoutService": { + "networkErrorWhileApplyingRewardPlease": "Network error while applying reward. Please try again.", + "youDoNotHaveEnoughPoints": "You do not have enough points for this reward.", + "rewardNotFoundOrNoLonger": "Reward not found or no longer available.", + "failedToApplyReward": "Failed to apply reward.", + "rewardApplied": "Reward applied." + }, + "blocks": { + "displayTheLoyaltydogLoyaltyWidgetFor": "Display the LoyaltyDog loyalty widget for logged-in customers.", + "loyalty": "loyalty", + "points": "points", + "rewards": "rewards", + "loyaltydog": "loyaltydog" + } + }, + "emails": { + "invalidEmailAddress": "Invalid email address", + "invalidVerificationCodeFormat": "Invalid verification code format", + "emailServiceNotConfigured": "Email service not configured", + "loyaltydogAccountVerification": "LoyaltyDog Account Verification", + "failedToSendEmailViaSendgrid": "Failed to send email via SendGrid", + "verifyYourEmail": "Verify Your Email", + "thankYouForSigningUpFor": "Thank you for signing up for LoyaltyDog! To complete your account setup, please verify your email address using the code below:", + "yourVerificationCode": "Your verification code:", + "thisCodeWillExpireIn10": "This code will expire in 10 minutes", + "securityNotice": "Security Notice:", + "neverShareThisCodeWithAnyone": "Never share this code with anyone. We will never ask for it.", + "ifYouDidNotSignUp": "If you did not sign up for a LoyaltyDog account, please ignore this email.", + "allRightsReserved": "All rights reserved.", + "thisIsAnAutomatedEmailPlease": "This is an automated email. Please do not reply.", + "passwordIsRequired": "Password is required", + "welcomeToLoyaltydogYourAccountIs": "Welcome to LoyaltyDog - Your Account Is Ready", + "welcomeToLoyaltydog": "Welcome to LoyaltyDog!", + "yourLoyaltydogAccountForHasBeen": "Your LoyaltyDog account for %s has been created successfully.", + "yourLoyaltydogAccountHasBeenCreated": "Your LoyaltyDog account has been created successfully.", + "belowAreYourLoginCredentialsYou": "Below are your login credentials. You can use these to access your LoyaltyDog dashboard:", + "email": "Email", + "password": "Password", + "keepThisPasswordSafeAndDo": "Keep this password safe and do not share it with anyone. You can change your password after logging in.", + "ifYouDidNotCreateThis": "If you did not create this account, please contact our support team immediately." + }, + "privacy": { + "loyaltydogLoyaltyProgram": "LoyaltyDog loyalty program", + "firstName": "First name", + "lastName": "Last name", + "phone": "Phone", + "pointsBalance": "Points balance", + "tier": "Tier", + "enrollmentStatus": "Enrollment status", + "enrolledAt": "Enrolled at", + "whenYouUseLoyaltydogYourEmail": "When you use LoyaltyDog, your email address and order totals are sent to the LoyaltyDog cloud service (api.loyalty.dog) to calculate and store loyalty points. Loyalty transaction history may be retained locally in de-identified form (linked only to an internal member ID) after an erasure request. See loyalty.dog/privacy for details." } } } diff --git a/packages/i18n/locales/fr/wordpress.json b/packages/i18n/locales/fr/wordpress.json index 972db55..e4a6230 100644 --- a/packages/i18n/locales/fr/wordpress.json +++ b/packages/i18n/locales/fr/wordpress.json @@ -8,7 +8,21 @@ "program": "Programme", "noProgramSelected": "Aucun programme sélectionné", "openDashboard": "Ouvrir le tableau de bord LoyaltyDog", - "connectStore": "Connecter votre boutique" + "connectStore": "Connecter votre boutique", + "atAGlanceStatusOfYour": "At-a-glance status of your LoyaltyDog program. Detailed analytics live in the portal.", + "programSummaryMetrics": "Program summary metrics", + "connectionStatus": "Connection status", + "connection": "Connection", + "programWp": "Program: %s", + "pointsIssuedInTheLast30": "Points issued in the last 30 days", + "pointsIssued30d": "Points issued (30d)", + "valueNotYetAvailable": "Value not yet available", + "viewInPortal": "View in portal", + "totalMembersEnrolled": "Total members enrolled", + "members": "Members", + "latestActivity": "Latest activity", + "latestTransaction": "Latest transaction", + "noActivityYet": "No activity yet" }, "connection": { "title": "Connexion LoyaltyDog", @@ -26,7 +40,14 @@ "apiKeyNotConfigured": "Clé API non configurée", "httpError": "HTTP {{code}} de l'API", "connectionSuccessful": "Connexion réussie", - "unauthorized": "Non autorisé" + "unauthorized": "Non autorisé", + "youDoNotHavePermissionTo": "You do not have permission to access this page.", + "programId": "Program ID", + "php1sOrNewerIsRequired": "PHP %1$s or newer is required. This site is running PHP %2$s. Please ask your hosting provider to upgrade PHP before configuring LoyaltyDog.", + "wordpress1sOrNewerIsRequired": "WordPress %1$s or newer is required. This site is running WordPress %2$s.", + "woocommerceIsRequiredButIsNot": "WooCommerce is required but is not installed or activated.", + "woocommerce1sOrNewerIsRequired": "WooCommerce %1$s or newer is required. This site is running WooCommerce %2$s.", + "httpFromApi": "HTTP %d from API" }, "widget": { "title": "Widget LoyaltyDog", @@ -40,7 +61,28 @@ "save": "Enregistrer", "settingsSaved": "Paramètres enregistrés.", "preview": "Aperçu", - "previewPlaceholder": "[Le widget LoyaltyDog s'affiche ici pour les clients connectés]" + "previewPlaceholder": "[Le widget LoyaltyDog s'affiche ici pour les clients connectés]", + "couldNotSaveSettingsToLoyaltydog": "Could not save settings to LoyaltyDog: %s", + "joinWidget": "Join Widget", + "shownToGuestVisitorsAndCustomers": "Shown to guest visitors and customers not yet in your loyalty program.", + "signupUrl": "Signup URL", + "theShareJoinUrlFromYour": "The share/join URL from your loyalty program dashboard. Opens in a new tab.", + "qrCode": "QR Code", + "showQrCodeAlongsideJoinText": "Show QR code alongside join text", + "customersCanScanWithTheirPhone": "Customers can scan with their phone to open the signup form directly.", + "checkoutRedemption": "Checkout Redemption", + "allowCustomersToAutomaticallyRedeemLoyalty": "Allow customers to automatically redeem loyalty points as a discount at checkout.", + "enableRedemption": "Enable Redemption", + "applyLoyaltyPointsAsACart": "Apply loyalty points as a cart discount at checkout", + "whenEnabledAllAvailablePointsAre": "When enabled, all available points are automatically applied as a discount. Customers can see this in their cart.", + "pointsValue": "Points Value", + "currencyPerPoint": "currency per point", + "eG001Means100": "e.g. 0.01 means 100 points = $1.00 discount. Range: 0.001–1.0.", + "emailNotifications": "Email Notifications", + "controlWhichTransactionalEmailsCustomersReceive": "Control which transactional emails customers receive from your loyalty program.", + "tierChangeEmails": "Tier Change Emails", + "sendANotificationWhenACustomer": "Send a notification when a customer moves between loyalty tiers", + "customersCanAlsoOptOutIndividually": "Customers can also opt out individually under My Account → Loyalty." }, "systemInfo": { "title": "Informations système LoyaltyDog", @@ -51,12 +93,592 @@ "woocommerceVersion": "Version WooCommerce", "pluginVersion": "Version du plugin", "pendingActions": "Actions AS en attente", - "notActive": "Inactif" + "notActive": "Inactif", + "systemInformation": "System Information", + "compatibilityStatus": "Compatibility Status", + "yourPlatformMeetsAllRequirements": "Your platform meets all requirements", + "somePlatformRequirementsAreNotMet": "Some platform requirements are not met", + "wordpress": "WordPress", + "version": "Version:", + "language": "Language:", + "timezone": "Timezone:", + "multisite": "Multisite:", + "yes": "Yes", + "no": "No", + "woocommerce": "WooCommerce", + "status": "Status:", + "active": "Active", + "currency": "Currency:", + "restApi": "REST API:", + "enabled": "Enabled", + "disabled": "Disabled", + "php": "PHP", + "sapi": "SAPI:", + "maxInputVars": "Max Input Vars:", + "postMaxSize": "Post Max Size:", + "uploadMaxSize": "Upload Max Size:", + "phpExtensions": "PHP Extensions", + "required": "Required", + "loaded": "Loaded", + "missing": "Missing", + "optional": "Optional", + "serverResources": "Server Resources", + "memoryLimit": "Memory Limit:", + "currentMemoryUsage": "Current Memory Usage:", + "maxExecutionTime": "Max Execution Time:", + "serverSoftware": "Server Software:", + "wpDebug": "WP Debug:" + }, + "credentials": { + "securityCheckFailed": "Security check failed", + "invalidCredentialKey": "Invalid credential key", + "credentialValueIsRequired": "Credential value is required", + "invalidCredentialFormat": "Invalid credential format", + "failedToStoreCredentialPleaseTry": "Failed to store credential. Please try again.", + "credentialUpdatedSuccessfully": "Credential updated successfully", + "failedToDeleteCredentialPleaseTry": "Failed to delete credential. Please try again.", + "credentialDeletedSuccessfully": "Credential deleted successfully", + "noCredentialsToExport": "No credentials to export", + "noFileProvided": "No file provided", + "fileUploadFailed": "File upload failed", + "invalidFileTypePleaseUploadA": "Invalid file type. Please upload a JSON file.", + "invalidImportFileFormat": "Invalid import file format", + "noCredentialsWereImported": "No credentials were imported", + "credentialsImportedSuccessfully": "%d credentials imported successfully" + }, + "settings": { + "loyaltydogCredentials": "LoyaltyDog Credentials", + "manageYourApiKeysAndIntegration": "Manage your API keys and integration credentials.", + "status": "Status", + "stripe": "Stripe", + "coreApi": "Core API", + "auditLog": "Audit Log", + "backup": "Backup", + "stripeSecretKey": "Stripe Secret Key", + "stripeWebhookSecret": "Stripe Webhook Secret", + "stripePublicKey": "Stripe Public Key", + "stripePriceId": "Stripe Price ID", + "credentialStatus": "Credential Status", + "credential": "Credential", + "type": "Type", + "lastUpdated": "Last Updated", + "actions": "Actions", + "notConfigured": "Not Configured", + "encrypted": "Encrypted", + "plainText": "Plain text", + "edit": "Edit", + "delete": "Delete", + "configure": "Configure", + "stripeConfiguration": "Stripe Configuration", + "secretKey": "Secret Key", + "findInStripeDashboardDevelopers": "Find in Stripe Dashboard → Developers → API Keys", + "configured": "Configured: ", + "update": "Update", + "clear": "Clear", + "publishableKey": "Publishable Key", + "webhookSigningSecret": "Webhook Signing Secret", + "findInStripeDashboardDevelopers2": "Find in Stripe Dashboard → Developers → Webhooks → Show signing secret", + "monthlyPriceId": "Monthly Price ID", + "stripePriceIdFor29Month": "Stripe price ID for $29/month subscription", + "loyaltydogApiCredentials": "LoyaltyDog API Credentials", + "oauthStyleCredentialsGeneratedDuringAccount": "OAuth-style credentials generated during account registration. These credentials are auto-generated and cannot be manually edited.", + "notConnected": "Not Connected", + "clickTheButtonBelowToConnect": "Click the button below to connect your WordPress store to LoyaltyDog.", + "connectToLoyaltydog": "Connect to LoyaltyDog", + "registrationStatus": "Registration Status", + "apiKeyIsSecurelyEncryptedIn": "API key is securely encrypted in storage.", + "webhookSecret": "Webhook Secret", + "webhookSecretIsSecurelyEncryptedIn": "Webhook secret is securely encrypted in storage and never displayed.", + "rotateWebhookSecret": "Rotate Webhook Secret", + "generateANewWebhookSecretFor": "Generate a new webhook secret for security purposes. Old secret remains valid for 7 days.", + "howToReconfigure": "How to reconfigure:", + "toResetOrChangeYourLoyaltydog": "To reset or change your LoyaltyDog integration, contact support or delete the plugin and reinstall to re-run the account setup wizard.", + "detailedAuditLogOfAllCredential": "Detailed audit log of all credential operations is available in WordPress error logs.", + "checkYourWordpressDebugLogFile": "Check your WordPress debug log file for detailed audit information: %s", + "recentOperations": "Recent Operations:", + "allCredentialUpdatesAreLoggedAutomatically": "All credential updates are logged automatically", + "allCredentialDeletionsAreLoggedAutomatically": "All credential deletions are logged automatically", + "allCredentialAccessIsLoggedRead": "All credential access is logged (read, decrypt)", + "logsIncludeUserTimestampAndAction": "Logs include user, timestamp, and action type", + "credentialValuesAreNeverLoggedSanitized": "Credential values are never logged (sanitized)", + "backupRestore": "Backup & Restore", + "exportCredentials": "Export Credentials", + "exportYourEncryptedCredentialsAsA": "Export your encrypted credentials as a backup. Keep this file secure.", + "exportCredentialsEncrypted": "Export Credentials (Encrypted)", + "importCredentials": "Import Credentials", + "restoreCredentialsFromAPreviouslyExported": "Restore credentials from a previously exported backup.", + "warning": "Warning:", + "importedCredentialsWillOverwriteExistingCredentials": "Imported credentials will overwrite existing credentials. Back up before importing." + }, + "encryptionKeyNotice": { + "yourAes256EncryptionKeyCurrently": "Your AES-256 encryption key currently lives in wp_options alongside the credentials it protects. A stolen database backup would give an attacker both halves at once. Add the line below to wp-config.php (above the \\\"/* That's all, stop editing! */\\\" comment) to separate the key from the data, then delete the loyaltydog_encryption_key option.", + "thisNoticeDisappearsOnceTheConstant": "This notice disappears once the constant is in place. The plugin keeps reading from wp_options until you remove that entry, so existing encrypted credentials stay readable throughout the migration." + }, + "notices": { + "loyaltydogV2MigrationCompletedAutomatically": "LoyaltyDog v2 migration completed automatically", + "yourLoyaltyDataWasMigratedWithout": "Your loyalty data was migrated without a coordinated maintenance window. Please contact support so we can verify your totals against our backend.", + "contactSupportLoyaltyDog": "Contact support.loyalty.dog", + "loyaltydogUpgradedToV203": "LoyaltyDog upgraded to v2.0.3", + "yourExistingProgramSettingsAndMember": "Your existing program settings and member point balances were carried over automatically.", + "reviewConnection": "Review Connection", + "dismiss": "Dismiss", + "loyaltydogV1V2MigrationFailed": "LoyaltyDog v1 → v2 migration failed.", + "error": "Error: %s", + "recoveryGuide": "Recovery guide", + "thePluginWillRetryAutomaticallyOn": "The plugin will retry automatically on the next admin pageload." + }, + "subscriptionLapse": { + "yourLoyaltydogWordpressAddOnPayment": "Your LoyaltyDog WordPress add-on payment failed.", + "loyaltyOperationsContinueForNowStripe": "Loyalty operations continue for now. Stripe will retry the payment automatically; if it fails, your subscription will be canceled and the loyalty program will pause until a new payment method is added.", + "updatePaymentMethod": "Update payment method", + "remindMeTomorrow": "Remind me tomorrow", + "yourLoyaltydogWordpressAddOnSubscription": "Your LoyaltyDog WordPress add-on subscription is canceled.", + "loyaltyOperationsArePausedExistingCustomer": "Loyalty operations are paused. Existing customer point balances remain intact. Resubscribe to resume earning and redemption.", + "resubscribe": "Resubscribe" + }, + "trialNotices": { + "trialExpired": "Trial expired", + "trialDayRemaining": "Trial: %d day remaining", + "welcomeToLoyaltydog": "Welcome to LoyaltyDog.", + "signUpForAFree30": "Sign up for a free 30-day trial to activate your points program. No credit card required.", + "startYourFreeTrial": "Start your free trial", + "yourLoyaltydogTrialEndsInDay": "Your LoyaltyDog trial ends in %d day.", + "upgradeNowToKeepAwardingPoints": "Upgrade now to keep awarding points after the trial ends.", + "upgradeNow": "Upgrade now", + "remindMeLater": "Remind me later", + "yourLoyaltydogTrialHasEnded": "Your LoyaltyDog trial has ended.", + "yourStorefrontContinuesToWorkBut": "Your storefront continues to work, but new points will not be awarded until you upgrade. Existing balances remain intact." + }, + "activation": { + "securityCheckFailed": "Security check failed.", + "insufficientPermissions": "Insufficient permissions.", + "invalidActivationKey": "Invalid activation key.", + "unableToReachLoyaltydogRightNow": "Unable to reach LoyaltyDog right now. Please try again shortly.", + "thisActivationLinkHasExpiredPlease": "This activation link has expired. Please return to LoyaltyDog to generate a new one.", + "tooManyAttemptsPleaseWaitA": "Too many attempts. Please wait a few minutes and try again.", + "somethingWentWrongDuringActivationPlease": "Something went wrong during activation. Please try again or contact support.", + "unableToStoreCredentialsSecurelyPlease": "Unable to store credentials securely. Please try again.", + "accountActivatedSuccessfully": "Account activated successfully!" + }, + "testConnection": { + "invalidRequest": "Invalid request", + "connectionTestFailed": "Connection test failed", + "yourWordpressPluginIsSuccessfullyConnected": "Your WordPress plugin is successfully connected to the Core API." + }, + "help": { + "gettingStarted": "Getting Started", + "settings": "Settings", + "pointsRules": "Points & Rules", + "shortcodes": "Shortcodes", + "gettingStartedWithLoyaltydog": "Getting Started with LoyaltyDog", + "loyaltydogAddsADigitalLoyaltyProgram": "LoyaltyDog adds a digital loyalty program to your WooCommerce store. Customers earn points on purchases and redeem them for rewards.", + "enterYour1sprogramId2sAnd1sapi": "Enter your %1$sProgram ID%2$s and %1$sAPI Key%2$s in Settings. Get these from your LoyaltyDog dashboard.", + "configureThePointsConversionRateE": "Configure the points conversion rate (e.g., 1 point per $1 spent).", + "setUpOfferMessagesThatCustomers": "Set up offer messages that customers see when they have rewards.", + "optionallyConfigureCategoryMultipliersCampaignsAnd": "Optionally configure category multipliers, campaigns, and referral rewards.", + "customersWillSeeTheirPointsBalance": "Customers will see their points balance in My Account > Loyalty Points, and on the cart/checkout pages.", + "settingsReference": "Settings Reference", + "yourUniqueLoyaltydogProgramIdentifierFound": "Your unique LoyaltyDog program identifier. Found in Dashboard > Settings > API.", + "secretKeyForApiAuthenticationNever": "Secret key for API authentication. Never share this publicly.", + "earnPointsWhen": "Earn Points When", + "controlsWhenPointsAreAwardedProcessing": "Controls when points are awarded. \\\"Processing\\\" is recommended for most stores.", + "pointsConversionRate": "Points Conversion Rate", + "howSpendingConvertsToPoints1": "How spending converts to points. \\\"1:1\\\" means 1 point per currency unit.", + "pointsRulesEngine": "Points & Rules Engine", + "categoryMultipliers": "Category Multipliers", + "awardBonusPointsForSpecificProduct": "Award bonus points for specific product categories. Enter one per line:", + "thisGives2xPointsForElectronics": "This gives 2x points for electronics and 1.5x for clothing. Use category slugs.", + "minimumSpend": "Minimum Spend", + "setAMinimumOrderTotalRequired": "Set a minimum order total required to earn any points. Orders below this amount earn 0 points.", + "timeLimitedCampaigns": "Time-Limited Campaigns", + "runPromotionalPeriodsWithBonusPoint": "Run promotional periods with bonus point multipliers. Enter one per line:", + "formatMultiplierstartdateenddatelabelLinesStartingWith": "Format: multiplier|start_date|end_date|label. Lines starting with # are ignored.", + "productLevelOverrides": "Product-Level Overrides", + "setAFixedPointValueFor": "Set a fixed point value for specific products using the %s custom field on the product edit page.", + "availableShortcodes": "Available Shortcodes", + "displayTheLoggedInCustomerS": "Display the logged-in customer's points balance inline. Returns empty for guests.", + "displayTheCustomerSReferralLink": "Display the customer's referral link. Requires the referral program to be configured.", + "resources": "Resources", + "supportCenter": "Support Center", + "configureLoyaltydog": "Configure LoyaltyDog", + "setUpYourLoyaltyProgramBy": "Set up your loyalty program by entering your Program ID and API Key in the LoyaltyDog settings.", + "hooksReference": "Hooks Reference" + }, + "menu": { + "manage": "Manage", + "strongLoyaltydogStrongIsAlmostReady": "LoyaltyDog is almost ready. To get started, %sset your LoyaltyDog account keys%s.", + "strongLoyaltydogStrongRequiresCouponsTo": "LoyaltyDog requires coupons to be %senabled%s in order to function properly and allow customers to redeem offer during checkout.", + "sendPushNotifications": "Send Push Notifications", + "message": "Message", + "pushNotificationsAreCompliantWithEu": "Push notifications are compliant with EU GDPR.", + "send": "Send", + "enableTheLoggingOfApiRequest": "Enable the logging of API request.", + "1sviewLog2s": "%1$sView Log%2$s", + "loyaltydogApi": "LoyaltyDog API", + "enterWithYourProgramId": "Enter with your program ID.", + "enterWithYourLoyaltydogApiKey": "Enter with your LoyaltyDog API key.", + "debugLog": "Debug Log", + "thisShouldBeCheckedOnlyIf": "This should be checked only if LoyaltyDog support suggests it to be checked.", + "pointsConversion": "Points Conversion", + "earnPointsWhenOrderStatusIs": "Earn Points When Order Status Is", + "behaviorHowPointsAreEarnedAnd": "Behavior how points are earned and rewards are redeemed.", + "pendingPayment": "Pending Payment", + "processing": "Processing", + "onHold": "On Hold", + "completed": "Completed", + "earnPointsConversionRate": "Earn Points Conversion Rate", + "setTheNumberOfPointsAwarded": "Set the number of points awarded based on the product price.", + "earnPointsRoundingMode": "Earn Points Rounding Mode", + "setHowPointsShouldBeRounded": "Set how points should be rounded.", + "roundToNearestInteger": "Round to nearest integer", + "alwaysRoundDown": "Always round down", + "alwaysRoundUp": "Always round up", + "offerMessages": "Offer Messages", + "adjustTheMessageByUsing1s": "Adjust the message by using %1$s{friendlyNameToBeAdded}%2$s, %1$s{friendlyName}%2$s, %1$s{name}%2$s, %1$s{value}%2$s, %1$s{currency}%2$s to represent the redeemed / available offer.", + "availableOfferMessage": "Available Offer Message", + "addAnOptionalMessageWhenUser": "Add an optional message when user have a active Loyalty offer. Limited HTML is allowed. Leave blank to disable.", + "strongActiveLoyaltyOfferStrongFriendlynametobeadded": "Active Loyalty Offer: {friendlyNameToBeAdded}.
You can add some products to redeem this offer.", + "redeemOfferMessage": "Redeem Offer Message", + "displayedOnTheCartAndCheckout": "Displayed on the cart and checkout page when cart is not empty and user have active offer. Limited HTML is allowed.", + "strongLoyaltyRewardStrongFriendlynametobeadded": "Loyalty Reward: {friendlyNameToBeAdded}", + "pointsEarnedForActions": "Points Earned for Actions", + "customersCanAlsoEarnPointsFor": "Customers can also earn points for actions like creating an account or writing a product review. You can enter the amount of points the customer will earn for each action in this section.", + "isRequired": "%s is required.", + "points": "Points", + "isInvalid": "%s is invalid.", + "messageCanNotBeBlank": "Message can not be blank.", + "messageHaveBeenSent": "Message have been sent." + }, + "wizard": { + "loyaltydogSetup": "LoyaltyDog Setup", + "loyaltyRewardsForYourWoocommerceStore": "Loyalty rewards for your WooCommerce store", + "setupSteps": "Setup steps", + "connect": "Connect", + "ready": "Ready", + "connectYourAccount": "Connect Your Account", + "accountType": "Account type", + "iHaveALoyaltydogAccount": "I have a LoyaltyDog account", + "connectAnExistingProgramIncludingPos": "Connect an existing program (including POS accounts)", + "iMNewCreateAn": "I'm new — create an account", + "signUpAndStartANew": "Sign up and start a new loyalty program", + "connectionMethod": "Connection method", + "iReceivedAnActivationKeyBy": "I received an activation key by email", + "pasteTheOneTimeKeyFrom": "Paste the one-time key from your subscription email.", + "iHaveAProgramIdAnd": "I have a Program ID and API Key", + "forLegacyV1Customers": "For legacy v1 customers.", + "activationKey": "Activation key", + "pasteTheKeyFromYourEmail": "Paste the key from your email", + "sentToYourInboxAfterSubscribing": "Sent to your inbox after subscribing at loyalty.dog.", + "activate": "Activate", + "enterYourProgramIdAndApi": "Enter your Program ID and API Key from your %1$sLoyaltyDog dashboard%2$s.", + "eG507f1f77bcf86cd799439011": "e.g., 507f1f77bcf86cd799439011", + "foundInYourLoyaltydogDashboardUnder": "Found in your LoyaltyDog dashboard under Settings > API.", + "yourApiKey": "Your API key", + "keepThisSecretNeverShareYour": "Keep this secret. Never share your API key publicly.", + "validateampContinue": "Validate & Continue", + "createANewLoyaltydogAccountYour": "Create a new LoyaltyDog account. Your site URL will be pre-filled to speed up signup.", + "createAccountAtDashLoyaltyDog": "Create Account at dash.loyalty.dog", + "afterCreatingYourAccountReturnHere": "After creating your account, return here and select \\\"I have a LoyaltyDog account\\\" to connect.", + "configurePoints": "Configure Points", + "chooseAPresetOrSetUp": "Choose a preset or set up your own earning rate. You can always change these later in Settings.", + "pointsPreset": "Points preset", + "simple": "Simple", + "easyToUnderstandForCustomers": "Easy to understand for customers.", + "recommended": "Recommended", + "generous": "Generous", + "greatForBuildingEngagementFast": "Great for building engagement fast.", + "custom": "Custom", + "setYourOwnRate": "Set your own rate", + "fullControlOverEarningRules": "Full control over earning rules.", + "earnRate": "Earn rate", + "pointsForEvery": "points for every", + "currencyAmount": "Currency amount", + "spent": "spent", + "bonusPointsForSignup": "Bonus points for signup", + "pointsAwardedWhenANewCustomer": "Points awarded when a new customer creates an account. Set to 0 to disable.", + "earnPointsWhenOrderStatusIs": "Earn points when order status is:", + "processing": "Processing", + "completed": "Completed", + "onHold": "On Hold", + "back": "Back", + "saveampFinish": "Save & Finish", + "youReAllSet": "You're All Set!", + "yourLoyaltyProgramIsNowActive": "Your loyalty program is now active. Customers will start earning points on their next purchase.", + "checkingConnection": "Checking connection...", + "whatSNext": "What's next?", + "customizeYourPass": "Customize your pass", + "designYourDigitalLoyaltyPassIn": "Design your digital loyalty pass in the portal.", + "readTheDocs": "Read the docs", + "learnHowToConfigureRulesCampaigns": "Learn how to configure rules, campaigns, and more.", + "testItYourself": "Test it yourself", + "viewTheCustomerFacingLoyaltyPage": "View the customer-facing loyalty page on your store.", + "goToSettings": "Go to Settings", + "goToDashboard": "Go to Dashboard", + "permissionDenied": "Permission denied.", + "bothProgramIdAndApiKey": "Both Program ID and API Key are required.", + "invalidApiKeyPleaseCheckYour": "Invalid API Key. Please check your credentials.", + "programNotFoundPleaseCheckYour": "Program not found. Please check your Program ID.", + "connectionFailedHttpPleaseTryAgain": "Connection failed (HTTP %s). Please try again.", + "connectionSuccessful": "Connection successful!", + "credentialsAreRequired": "Credentials are required.", + "setupComplete": "Setup complete!", + "apiUnreachableHttp": "API unreachable (HTTP %s)", + "activationKeyLooksMalformedPasteThe": "Activation key looks malformed. Paste the key exactly as it appears in your email.", + "activating": "Activating…", + "connectedContinuingToConfiguration": "Connected. Continuing to configuration…", + "activationFailedPleaseTryAgain": "Activation failed. Please try again.", + "networkErrorPleaseTryAgain": "Network error. Please try again.", + "pleaseEnterBothProgramIdAnd": "Please enter both Program ID and API Key.", + "validating": "Validating...", + "validateContinue": "Validate & Continue", + "program": "Program:", + "saving": "Saving...", + "saveFinish": "Save & Finish", + "connectionIssue": "Connection issue" + }, + "program": { + "loyaltyPrograms": "Loyalty Programs", + "createNewProgram": "Create New Program", + "programName": "Program Name", + "thisNameWillAppearToYour": "This name will appear to your customers", + "createProgram": "Create Program", + "cancel": "Cancel", + "failedToLoadPrograms": "Failed to load programs", + "failedToLoadProgramsPleaseTry": "Failed to load programs. Please try again.", + "noProgramsYet": "No programs yet", + "createYourFirstProgram": "Create Your First Program", + "created": "Created", + "failedToCreateProgramPleaseTry": "Failed to create program. Please try again." + }, + "diagnostics": { + "pluginWonTActivate": "Plugin won't activate", + "checkPhpVersionRequires74": "Check PHP version (requires 7.4+)", + "verifyMysqlVersionRequires57": "Verify MySQL version (requires 5.7+)", + "checkErrorLogsForSpecificErrors": "Check error logs for specific errors", + "disableOtherPluginsAndTryAgain": "Disable other plugins and try again", + "productsNotSyncing": "Products not syncing", + "verifyWoocommerceIsInstalled": "Verify WooCommerce is installed", + "checkSyncLogsForErrors": "Check sync logs for errors", + "manualSyncGoToSettingsSync": "Manual sync: Go to Settings > Sync Status", + "checkDatabasePermissions": "Check database permissions", + "webhookFailures": "Webhook failures", + "verifyWebhookUrlIsAccessible": "Verify webhook URL is accessible", + "checkSslCertificateValidity": "Check SSL certificate validity", + "reviewWebhookEventLogs": "Review webhook event logs", + "testWithManualWebhookDispatch": "Test with manual webhook dispatch", + "ticketCreatedWeLlRespondWithin": "Ticket %s created. We'll respond within 4 hours." + }, + "settingsSync": { + "serverReturnedAnUnexpectedResponseShape": "Server returned an unexpected response shape." } }, "widget": { "joinCta": "Rejoignez notre programme de fidélité", "loginPrompt": "Veuillez vous connecter pour voir votre programme de fidélité." + }, + "plugin": { + "loyaltydog": "LoyaltyDog", + "httpsLoyaltydogIoWordpress": "https://loyaltydog.io/wordpress", + "pointsTiersAndRewardRedemptionFor": "Points, tiers, and reward redemption for WooCommerce. Live balance widget for shortcode, Gutenberg, Elementor, and the WC My Account page.", + "loyaltydogInc": "LoyaltyDog Inc.", + "httpsLoyaltyDog": "https://loyalty.dog", + "loyaltydogRequiresWordpress69Or": "LoyaltyDog requires WordPress 6.9 or newer.", + "youAreCurrentlyRunningWordpress": "You are currently running WordPress %s.", + "loyaltydogRequiresPhp80Or": "LoyaltyDog requires PHP 8.0 or newer.", + "youAreCurrentlyRunningPhp": "You are currently running PHP %s.", + "loyaltydogRequiresWoocommerceToBeInstalled": "LoyaltyDog requires WooCommerce to be installed and activated.", + "loyaltydogRequiresWoocommerce70Or": "LoyaltyDog requires WooCommerce 7.0 or newer.", + "youAreCurrentlyRunningWoocommerce": "You are currently running WooCommerce %s.", + "loyaltydogActivationFailedSystemRequirementsNot": "LoyaltyDog activation failed: system requirements not met." + }, + "misc": { + "invalidProgram": "Invalid program", + "emailOrPhoneIsRequired": "Email or phone is required", + "customerNotFound": "Customer not found", + "invalidParameters": "Invalid parameters", + "memberNotFound": "Member not found", + "memberEmailMissing": "Member email missing", + "oauthCredentialsNotConfigured": "OAuth credentials not configured", + "registrationIdNotFound": "Registration ID not found", + "backendUrlNotConfigured": "Backend URL not configured", + "failedToRotateSecretPleaseTry": "Failed to rotate secret. Please try again later.", + "coreApiReturnedAnError": "Core API returned an error", + "invalidResponseFromCoreApi": "Invalid response from Core API", + "failedToStoreNewSecret": "Failed to store new secret", + "webhookSecretRotatedSuccessfully": "Webhook secret rotated successfully", + "loyaltydogCredentialsAreNotConfigured": "LoyaltyDog credentials are not configured.", + "apiKeyIsRequired": "API key is required.", + "thatLooksLikeASessionJwt": "That looks like a session JWT (short-lived dashboard token), not a long-lived API key. Get the long-lived API key from your LoyaltyDog dashboard or via the plugin Connection page.", + "apiKeyContainsInvalidCharactersAllowed": "API key contains invalid characters. Allowed: letters, digits, underscore, hyphen, period.", + "apiKeyLengthIsOutOf": "API key length is out of range (10–256 characters).", + "apiKeyMustStartWithLoyaltydogpk": "API key must start with \\\"loyaltydog_pk_\\\". Get one from your LoyaltyDog dashboard.", + "profileNotFound": "Profile not found", + "tooManyRequestsPleaseTryAgain": "Too many requests. Please try again later.", + "pointsEarnedForAccountSignup": "Points earned for account signup", + "enterTheAmountOfPointsEarned": "Enter the amount of points earned when a customer signs up for an account.", + "pointsEarnedForWritingAReview": "Points earned for writing a review", + "enterTheAmountOfPointsEarned2": "Enter the amount of points earned when a customer first reviews a product.", + "currentLoyaltyPointsBalance": "Current loyalty points balance.", + "whetherTheCustomerIsEnrolledIn": "Whether the customer is enrolled in the loyalty program.", + "estimatedPointsTheCustomerWillEarn": "Estimated points the customer will earn from this order.", + "loyaltyReward": "Loyalty Reward", + "redeem": "REDEEM", + "redeemedSuccessfully": "Redeemed Successfully", + "xPointsBonusActive": "%sx points bonus active!", + "minimumSpendForPoints": "Minimum spend for points", + "minimumOrderTotalRequiredToEarn": "Minimum order total required to earn points. Leave empty to disable.", + "categoryPointMultipliers": "Category point multipliers", + "onePerLineCategoryslugMultiplierE": "One per line: category_slug:multiplier (e.g., electronics:2 for double points). If a product is in multiple categories, the highest multiplier applies.", + "timeLimitedCampaigns": "Time-limited campaigns", + "onePerLineMultiplierstartdateenddatelabelEG": "One per line: multiplier|start_date|end_date|label (e.g., 2|2026-03-01|2026-03-31|Double Points March). The highest active campaign multiplier applies to all orders. Lines starting with # are ignored.", + "welcomeTo1s2s": "Welcome to %1$s %2$s", + "loading": "Loading...", + "dashboard": "Dashboard", + "widget": "Widget", + "systemInfo": "System Info", + "allSetTakingYouToYour": "All set! Taking you to your dashboard…", + "activationFailed": "Activation failed.", + "loyaltyDiscount": "Loyalty Discount", + "nameFree": "{name} (FREE)", + "nameValueCurrency": "{name} ({value}{currency})", + "nameValueCurrency2": "{name} (-{value}{currency})", + "unableToGenerateASecureSession": "Unable to generate a secure session token. Please try again.", + "activatingYourLoyaltydogAccountHold": "Activating your LoyaltyDog account — hold on tight!", + "activationFailedSessionExpiredPlease": "Activation failed — session expired. Please try again.", + "tryAgain": "Try Again", + "connectYourLoyaltyProgramToWoocommerce": "Connect your loyalty program to WooCommerce.", + "pasteYourActivationKeyHere": "Paste your activation key here", + "activateLoyaltydog": "Activate LoyaltyDog", + "havingTroubleContactSupport": "Having trouble? Contact support", + "accountLinkedSuccessfully": "Account Linked Successfully!", + "yourLoyaltydogAccountIsNowConnected": "Your %s LoyaltyDog account is now connected to your WordPress store.", + "dashboardImplementationComingInFutureUpdates": "Dashboard implementation coming in future updates.", + "increasePointMultiplierForTopSelling": "Increase point multiplier for top-selling category (Electronics) to boost engagement", + "createAWinBackCampaignFor": "Create a win-back campaign for 120 inactive members who spent $1000+ lifetime", + "reduceTierAdvancementRequirementsToIncrease": "Reduce tier advancement requirements to increase Gold tier members by 20%", + "highValueSpent100095Engagement": "High-Value: Spent $1000+, 95% engagement", + "regularSpent100100070Engagement": "Regular: Spent $100-1000, 70% engagement", + "occasionalSpent10030Engagement": "Occasional: Spent <$100, 30% engagement", + "inactiveNoPurchasesIn60Days": "Inactive: No purchases in 60 days", + "createWinBackCampaignForInactive": "Create win-back campaign for inactive members", + "criticalIssues": "Critical Issues", + "warnings": "Warnings", + "webhookSecretNotConfigured": "Webhook secret not configured", + "missingStripeSignatureHeader": "Missing Stripe-Signature header", + "malformedStripeSignatureHeader": "Malformed Stripe-Signature header", + "stripeSignatureTimestampIsNotNumeric": "Stripe-Signature timestamp is not numeric", + "webhookSignatureTimestampOutsideToleranceWindow": "Webhook signature timestamp outside tolerance window", + "webhookSignatureVerificationFailed": "Webhook signature verification failed", + "invalidWebhookPayload": "Invalid webhook payload", + "dependsOnTheLastVersionOf": "depends on the last version of WooCommerce to work!", + "activeWoocommerce": "Active WooCommerce", + "installWoocommerce": "Install WooCommerce", + "youHave": "You have ", + "pointsEarn": " points. Earn ", + "moreWithThisOrder": " more with this order.", + "loyaltyPoints": " loyalty points." + }, + "frontend": { + "points": { + "loyaltyPoints": "Loyalty Points", + "youAreNotYetEnrolledIn": "You are not yet enrolled in our loyalty program. Points are earned automatically when you make purchases.", + "yourPointsBalance": "Your Points Balance", + "points": "points", + "tier": "Tier: %s", + "activeReward": "Active Reward", + "addItemsToYourCartTo": "Add items to your cart to redeem this reward at checkout.", + "viewCart": "View cart", + "howToEarnPoints": "How to Earn Points", + "earn1sPointsForEvery2s": "Earn %1$s points for every %2$s spent", + "pointsForCreatingAnAccount": "%s points for creating an account", + "pointsForWritingAProductReview": "%s points for writing a product review", + "pointsForReferringAFriend": "%s points for referring a friend", + "strongLoyaltyPointsStrongYouHave": "Loyalty Points: You have %s points.", + "viewDetails": "View details", + "points2": "%s points" + }, + "customerExport": { + "youMustBeLoggedInTo": "You must be logged in to export your loyalty data.", + "securityCheckFailedPleaseReloadAnd": "Security check failed. Please reload and try again.", + "youCanRequestOneLoyaltyData": "You can request one loyalty-data export per 24 hours. Please try again tomorrow.", + "weCouldNotPrepareYourExport": "We could not prepare your export right now. Please try again later or contact support." + }, + "account": { + "loyaltyProgram": "Loyalty Program", + "downloadMyLoyaltyData": "Download my loyalty data", + "notificationPreferences": "Notification preferences", + "yourNotificationPreferencesHaveBeenSaved": "Your notification preferences have been saved.", + "emailMeWhenMyLoyaltyTier": "Email me when my loyalty tier changes", + "savePreferences": "Save preferences" + }, + "checkout": { + "loadingLoyaltyInformation": "Loading loyalty information...", + "identifyingCustomer": "Identifying customer...", + "errorLoadingLoyaltyProgramPleaseTry": "Error loading loyalty program. Please try again.", + "emailOrPhone": "Email or Phone", + "enterEmailOrPhone": "Enter email or phone", + "findAccount": "Find Account", + "welcome": "Welcome", + "pointsBalance": "Points Balance:", + "availableRewards": "Available Rewards", + "selectAReward": "--- Select a reward ---", + "applyReward": "Apply Reward", + "appliedLoyaltyDiscounts": "Applied Loyalty Discounts" + }, + "redeem": { + "loyaltydogReward": "LoyaltyDog Reward" + }, + "checkoutService": { + "networkErrorWhileApplyingRewardPlease": "Network error while applying reward. Please try again.", + "youDoNotHaveEnoughPoints": "You do not have enough points for this reward.", + "rewardNotFoundOrNoLonger": "Reward not found or no longer available.", + "failedToApplyReward": "Failed to apply reward.", + "rewardApplied": "Reward applied." + }, + "blocks": { + "displayTheLoyaltydogLoyaltyWidgetFor": "Display the LoyaltyDog loyalty widget for logged-in customers.", + "loyalty": "loyalty", + "points": "points", + "rewards": "rewards", + "loyaltydog": "loyaltydog" + } + }, + "emails": { + "invalidEmailAddress": "Invalid email address", + "invalidVerificationCodeFormat": "Invalid verification code format", + "emailServiceNotConfigured": "Email service not configured", + "loyaltydogAccountVerification": "LoyaltyDog Account Verification", + "failedToSendEmailViaSendgrid": "Failed to send email via SendGrid", + "verifyYourEmail": "Verify Your Email", + "thankYouForSigningUpFor": "Thank you for signing up for LoyaltyDog! To complete your account setup, please verify your email address using the code below:", + "yourVerificationCode": "Your verification code:", + "thisCodeWillExpireIn10": "This code will expire in 10 minutes", + "securityNotice": "Security Notice:", + "neverShareThisCodeWithAnyone": "Never share this code with anyone. We will never ask for it.", + "ifYouDidNotSignUp": "If you did not sign up for a LoyaltyDog account, please ignore this email.", + "allRightsReserved": "All rights reserved.", + "thisIsAnAutomatedEmailPlease": "This is an automated email. Please do not reply.", + "passwordIsRequired": "Password is required", + "welcomeToLoyaltydogYourAccountIs": "Welcome to LoyaltyDog - Your Account Is Ready", + "welcomeToLoyaltydog": "Welcome to LoyaltyDog!", + "yourLoyaltydogAccountForHasBeen": "Your LoyaltyDog account for %s has been created successfully.", + "yourLoyaltydogAccountHasBeenCreated": "Your LoyaltyDog account has been created successfully.", + "belowAreYourLoginCredentialsYou": "Below are your login credentials. You can use these to access your LoyaltyDog dashboard:", + "email": "Email", + "password": "Password", + "keepThisPasswordSafeAndDo": "Keep this password safe and do not share it with anyone. You can change your password after logging in.", + "ifYouDidNotCreateThis": "If you did not create this account, please contact our support team immediately." + }, + "privacy": { + "loyaltydogLoyaltyProgram": "LoyaltyDog loyalty program", + "firstName": "First name", + "lastName": "Last name", + "phone": "Phone", + "pointsBalance": "Points balance", + "tier": "Tier", + "enrollmentStatus": "Enrollment status", + "enrolledAt": "Enrolled at", + "whenYouUseLoyaltydogYourEmail": "When you use LoyaltyDog, your email address and order totals are sent to the LoyaltyDog cloud service (api.loyalty.dog) to calculate and store loyalty points. Loyalty transaction history may be retained locally in de-identified form (linked only to an internal member ID) after an erasure request. See loyalty.dog/privacy for details." } } } diff --git a/packages/i18n/locales/it/wordpress.json b/packages/i18n/locales/it/wordpress.json index 4446d18..812dcf3 100644 --- a/packages/i18n/locales/it/wordpress.json +++ b/packages/i18n/locales/it/wordpress.json @@ -8,7 +8,21 @@ "program": "Programma", "noProgramSelected": "Nessun programma selezionato", "openDashboard": "Apri la Dashboard LoyaltyDog", - "connectStore": "Connetti il tuo negozio" + "connectStore": "Connetti il tuo negozio", + "atAGlanceStatusOfYour": "At-a-glance status of your LoyaltyDog program. Detailed analytics live in the portal.", + "programSummaryMetrics": "Program summary metrics", + "connectionStatus": "Connection status", + "connection": "Connection", + "programWp": "Program: %s", + "pointsIssuedInTheLast30": "Points issued in the last 30 days", + "pointsIssued30d": "Points issued (30d)", + "valueNotYetAvailable": "Value not yet available", + "viewInPortal": "View in portal", + "totalMembersEnrolled": "Total members enrolled", + "members": "Members", + "latestActivity": "Latest activity", + "latestTransaction": "Latest transaction", + "noActivityYet": "No activity yet" }, "connection": { "title": "Connessione LoyaltyDog", @@ -26,7 +40,14 @@ "apiKeyNotConfigured": "Chiave API non configurata", "httpError": "HTTP {{code}} dall'API", "connectionSuccessful": "Connessione riuscita", - "unauthorized": "Non autorizzato" + "unauthorized": "Non autorizzato", + "youDoNotHavePermissionTo": "You do not have permission to access this page.", + "programId": "Program ID", + "php1sOrNewerIsRequired": "PHP %1$s or newer is required. This site is running PHP %2$s. Please ask your hosting provider to upgrade PHP before configuring LoyaltyDog.", + "wordpress1sOrNewerIsRequired": "WordPress %1$s or newer is required. This site is running WordPress %2$s.", + "woocommerceIsRequiredButIsNot": "WooCommerce is required but is not installed or activated.", + "woocommerce1sOrNewerIsRequired": "WooCommerce %1$s or newer is required. This site is running WooCommerce %2$s.", + "httpFromApi": "HTTP %d from API" }, "widget": { "title": "Widget LoyaltyDog", @@ -40,7 +61,28 @@ "save": "Salva", "settingsSaved": "Impostazioni salvate.", "preview": "Anteprima", - "previewPlaceholder": "[Il widget LoyaltyDog viene visualizzato qui per i clienti registrati]" + "previewPlaceholder": "[Il widget LoyaltyDog viene visualizzato qui per i clienti registrati]", + "couldNotSaveSettingsToLoyaltydog": "Could not save settings to LoyaltyDog: %s", + "joinWidget": "Join Widget", + "shownToGuestVisitorsAndCustomers": "Shown to guest visitors and customers not yet in your loyalty program.", + "signupUrl": "Signup URL", + "theShareJoinUrlFromYour": "The share/join URL from your loyalty program dashboard. Opens in a new tab.", + "qrCode": "QR Code", + "showQrCodeAlongsideJoinText": "Show QR code alongside join text", + "customersCanScanWithTheirPhone": "Customers can scan with their phone to open the signup form directly.", + "checkoutRedemption": "Checkout Redemption", + "allowCustomersToAutomaticallyRedeemLoyalty": "Allow customers to automatically redeem loyalty points as a discount at checkout.", + "enableRedemption": "Enable Redemption", + "applyLoyaltyPointsAsACart": "Apply loyalty points as a cart discount at checkout", + "whenEnabledAllAvailablePointsAre": "When enabled, all available points are automatically applied as a discount. Customers can see this in their cart.", + "pointsValue": "Points Value", + "currencyPerPoint": "currency per point", + "eG001Means100": "e.g. 0.01 means 100 points = $1.00 discount. Range: 0.001–1.0.", + "emailNotifications": "Email Notifications", + "controlWhichTransactionalEmailsCustomersReceive": "Control which transactional emails customers receive from your loyalty program.", + "tierChangeEmails": "Tier Change Emails", + "sendANotificationWhenACustomer": "Send a notification when a customer moves between loyalty tiers", + "customersCanAlsoOptOutIndividually": "Customers can also opt out individually under My Account → Loyalty." }, "systemInfo": { "title": "Informazioni di sistema LoyaltyDog", @@ -51,12 +93,592 @@ "woocommerceVersion": "Versione WooCommerce", "pluginVersion": "Versione del plugin", "pendingActions": "Azioni AS in sospeso", - "notActive": "Non attivo" + "notActive": "Non attivo", + "systemInformation": "System Information", + "compatibilityStatus": "Compatibility Status", + "yourPlatformMeetsAllRequirements": "Your platform meets all requirements", + "somePlatformRequirementsAreNotMet": "Some platform requirements are not met", + "wordpress": "WordPress", + "version": "Version:", + "language": "Language:", + "timezone": "Timezone:", + "multisite": "Multisite:", + "yes": "Yes", + "no": "No", + "woocommerce": "WooCommerce", + "status": "Status:", + "active": "Active", + "currency": "Currency:", + "restApi": "REST API:", + "enabled": "Enabled", + "disabled": "Disabled", + "php": "PHP", + "sapi": "SAPI:", + "maxInputVars": "Max Input Vars:", + "postMaxSize": "Post Max Size:", + "uploadMaxSize": "Upload Max Size:", + "phpExtensions": "PHP Extensions", + "required": "Required", + "loaded": "Loaded", + "missing": "Missing", + "optional": "Optional", + "serverResources": "Server Resources", + "memoryLimit": "Memory Limit:", + "currentMemoryUsage": "Current Memory Usage:", + "maxExecutionTime": "Max Execution Time:", + "serverSoftware": "Server Software:", + "wpDebug": "WP Debug:" + }, + "credentials": { + "securityCheckFailed": "Security check failed", + "invalidCredentialKey": "Invalid credential key", + "credentialValueIsRequired": "Credential value is required", + "invalidCredentialFormat": "Invalid credential format", + "failedToStoreCredentialPleaseTry": "Failed to store credential. Please try again.", + "credentialUpdatedSuccessfully": "Credential updated successfully", + "failedToDeleteCredentialPleaseTry": "Failed to delete credential. Please try again.", + "credentialDeletedSuccessfully": "Credential deleted successfully", + "noCredentialsToExport": "No credentials to export", + "noFileProvided": "No file provided", + "fileUploadFailed": "File upload failed", + "invalidFileTypePleaseUploadA": "Invalid file type. Please upload a JSON file.", + "invalidImportFileFormat": "Invalid import file format", + "noCredentialsWereImported": "No credentials were imported", + "credentialsImportedSuccessfully": "%d credentials imported successfully" + }, + "settings": { + "loyaltydogCredentials": "LoyaltyDog Credentials", + "manageYourApiKeysAndIntegration": "Manage your API keys and integration credentials.", + "status": "Status", + "stripe": "Stripe", + "coreApi": "Core API", + "auditLog": "Audit Log", + "backup": "Backup", + "stripeSecretKey": "Stripe Secret Key", + "stripeWebhookSecret": "Stripe Webhook Secret", + "stripePublicKey": "Stripe Public Key", + "stripePriceId": "Stripe Price ID", + "credentialStatus": "Credential Status", + "credential": "Credential", + "type": "Type", + "lastUpdated": "Last Updated", + "actions": "Actions", + "notConfigured": "Not Configured", + "encrypted": "Encrypted", + "plainText": "Plain text", + "edit": "Edit", + "delete": "Delete", + "configure": "Configure", + "stripeConfiguration": "Stripe Configuration", + "secretKey": "Secret Key", + "findInStripeDashboardDevelopers": "Find in Stripe Dashboard → Developers → API Keys", + "configured": "Configured: ", + "update": "Update", + "clear": "Clear", + "publishableKey": "Publishable Key", + "webhookSigningSecret": "Webhook Signing Secret", + "findInStripeDashboardDevelopers2": "Find in Stripe Dashboard → Developers → Webhooks → Show signing secret", + "monthlyPriceId": "Monthly Price ID", + "stripePriceIdFor29Month": "Stripe price ID for $29/month subscription", + "loyaltydogApiCredentials": "LoyaltyDog API Credentials", + "oauthStyleCredentialsGeneratedDuringAccount": "OAuth-style credentials generated during account registration. These credentials are auto-generated and cannot be manually edited.", + "notConnected": "Not Connected", + "clickTheButtonBelowToConnect": "Click the button below to connect your WordPress store to LoyaltyDog.", + "connectToLoyaltydog": "Connect to LoyaltyDog", + "registrationStatus": "Registration Status", + "apiKeyIsSecurelyEncryptedIn": "API key is securely encrypted in storage.", + "webhookSecret": "Webhook Secret", + "webhookSecretIsSecurelyEncryptedIn": "Webhook secret is securely encrypted in storage and never displayed.", + "rotateWebhookSecret": "Rotate Webhook Secret", + "generateANewWebhookSecretFor": "Generate a new webhook secret for security purposes. Old secret remains valid for 7 days.", + "howToReconfigure": "How to reconfigure:", + "toResetOrChangeYourLoyaltydog": "To reset or change your LoyaltyDog integration, contact support or delete the plugin and reinstall to re-run the account setup wizard.", + "detailedAuditLogOfAllCredential": "Detailed audit log of all credential operations is available in WordPress error logs.", + "checkYourWordpressDebugLogFile": "Check your WordPress debug log file for detailed audit information: %s", + "recentOperations": "Recent Operations:", + "allCredentialUpdatesAreLoggedAutomatically": "All credential updates are logged automatically", + "allCredentialDeletionsAreLoggedAutomatically": "All credential deletions are logged automatically", + "allCredentialAccessIsLoggedRead": "All credential access is logged (read, decrypt)", + "logsIncludeUserTimestampAndAction": "Logs include user, timestamp, and action type", + "credentialValuesAreNeverLoggedSanitized": "Credential values are never logged (sanitized)", + "backupRestore": "Backup & Restore", + "exportCredentials": "Export Credentials", + "exportYourEncryptedCredentialsAsA": "Export your encrypted credentials as a backup. Keep this file secure.", + "exportCredentialsEncrypted": "Export Credentials (Encrypted)", + "importCredentials": "Import Credentials", + "restoreCredentialsFromAPreviouslyExported": "Restore credentials from a previously exported backup.", + "warning": "Warning:", + "importedCredentialsWillOverwriteExistingCredentials": "Imported credentials will overwrite existing credentials. Back up before importing." + }, + "encryptionKeyNotice": { + "yourAes256EncryptionKeyCurrently": "Your AES-256 encryption key currently lives in wp_options alongside the credentials it protects. A stolen database backup would give an attacker both halves at once. Add the line below to wp-config.php (above the \\\"/* That's all, stop editing! */\\\" comment) to separate the key from the data, then delete the loyaltydog_encryption_key option.", + "thisNoticeDisappearsOnceTheConstant": "This notice disappears once the constant is in place. The plugin keeps reading from wp_options until you remove that entry, so existing encrypted credentials stay readable throughout the migration." + }, + "notices": { + "loyaltydogV2MigrationCompletedAutomatically": "LoyaltyDog v2 migration completed automatically", + "yourLoyaltyDataWasMigratedWithout": "Your loyalty data was migrated without a coordinated maintenance window. Please contact support so we can verify your totals against our backend.", + "contactSupportLoyaltyDog": "Contact support.loyalty.dog", + "loyaltydogUpgradedToV203": "LoyaltyDog upgraded to v2.0.3", + "yourExistingProgramSettingsAndMember": "Your existing program settings and member point balances were carried over automatically.", + "reviewConnection": "Review Connection", + "dismiss": "Dismiss", + "loyaltydogV1V2MigrationFailed": "LoyaltyDog v1 → v2 migration failed.", + "error": "Error: %s", + "recoveryGuide": "Recovery guide", + "thePluginWillRetryAutomaticallyOn": "The plugin will retry automatically on the next admin pageload." + }, + "subscriptionLapse": { + "yourLoyaltydogWordpressAddOnPayment": "Your LoyaltyDog WordPress add-on payment failed.", + "loyaltyOperationsContinueForNowStripe": "Loyalty operations continue for now. Stripe will retry the payment automatically; if it fails, your subscription will be canceled and the loyalty program will pause until a new payment method is added.", + "updatePaymentMethod": "Update payment method", + "remindMeTomorrow": "Remind me tomorrow", + "yourLoyaltydogWordpressAddOnSubscription": "Your LoyaltyDog WordPress add-on subscription is canceled.", + "loyaltyOperationsArePausedExistingCustomer": "Loyalty operations are paused. Existing customer point balances remain intact. Resubscribe to resume earning and redemption.", + "resubscribe": "Resubscribe" + }, + "trialNotices": { + "trialExpired": "Trial expired", + "trialDayRemaining": "Trial: %d day remaining", + "welcomeToLoyaltydog": "Welcome to LoyaltyDog.", + "signUpForAFree30": "Sign up for a free 30-day trial to activate your points program. No credit card required.", + "startYourFreeTrial": "Start your free trial", + "yourLoyaltydogTrialEndsInDay": "Your LoyaltyDog trial ends in %d day.", + "upgradeNowToKeepAwardingPoints": "Upgrade now to keep awarding points after the trial ends.", + "upgradeNow": "Upgrade now", + "remindMeLater": "Remind me later", + "yourLoyaltydogTrialHasEnded": "Your LoyaltyDog trial has ended.", + "yourStorefrontContinuesToWorkBut": "Your storefront continues to work, but new points will not be awarded until you upgrade. Existing balances remain intact." + }, + "activation": { + "securityCheckFailed": "Security check failed.", + "insufficientPermissions": "Insufficient permissions.", + "invalidActivationKey": "Invalid activation key.", + "unableToReachLoyaltydogRightNow": "Unable to reach LoyaltyDog right now. Please try again shortly.", + "thisActivationLinkHasExpiredPlease": "This activation link has expired. Please return to LoyaltyDog to generate a new one.", + "tooManyAttemptsPleaseWaitA": "Too many attempts. Please wait a few minutes and try again.", + "somethingWentWrongDuringActivationPlease": "Something went wrong during activation. Please try again or contact support.", + "unableToStoreCredentialsSecurelyPlease": "Unable to store credentials securely. Please try again.", + "accountActivatedSuccessfully": "Account activated successfully!" + }, + "testConnection": { + "invalidRequest": "Invalid request", + "connectionTestFailed": "Connection test failed", + "yourWordpressPluginIsSuccessfullyConnected": "Your WordPress plugin is successfully connected to the Core API." + }, + "help": { + "gettingStarted": "Getting Started", + "settings": "Settings", + "pointsRules": "Points & Rules", + "shortcodes": "Shortcodes", + "gettingStartedWithLoyaltydog": "Getting Started with LoyaltyDog", + "loyaltydogAddsADigitalLoyaltyProgram": "LoyaltyDog adds a digital loyalty program to your WooCommerce store. Customers earn points on purchases and redeem them for rewards.", + "enterYour1sprogramId2sAnd1sapi": "Enter your %1$sProgram ID%2$s and %1$sAPI Key%2$s in Settings. Get these from your LoyaltyDog dashboard.", + "configureThePointsConversionRateE": "Configure the points conversion rate (e.g., 1 point per $1 spent).", + "setUpOfferMessagesThatCustomers": "Set up offer messages that customers see when they have rewards.", + "optionallyConfigureCategoryMultipliersCampaignsAnd": "Optionally configure category multipliers, campaigns, and referral rewards.", + "customersWillSeeTheirPointsBalance": "Customers will see their points balance in My Account > Loyalty Points, and on the cart/checkout pages.", + "settingsReference": "Settings Reference", + "yourUniqueLoyaltydogProgramIdentifierFound": "Your unique LoyaltyDog program identifier. Found in Dashboard > Settings > API.", + "secretKeyForApiAuthenticationNever": "Secret key for API authentication. Never share this publicly.", + "earnPointsWhen": "Earn Points When", + "controlsWhenPointsAreAwardedProcessing": "Controls when points are awarded. \\\"Processing\\\" is recommended for most stores.", + "pointsConversionRate": "Points Conversion Rate", + "howSpendingConvertsToPoints1": "How spending converts to points. \\\"1:1\\\" means 1 point per currency unit.", + "pointsRulesEngine": "Points & Rules Engine", + "categoryMultipliers": "Category Multipliers", + "awardBonusPointsForSpecificProduct": "Award bonus points for specific product categories. Enter one per line:", + "thisGives2xPointsForElectronics": "This gives 2x points for electronics and 1.5x for clothing. Use category slugs.", + "minimumSpend": "Minimum Spend", + "setAMinimumOrderTotalRequired": "Set a minimum order total required to earn any points. Orders below this amount earn 0 points.", + "timeLimitedCampaigns": "Time-Limited Campaigns", + "runPromotionalPeriodsWithBonusPoint": "Run promotional periods with bonus point multipliers. Enter one per line:", + "formatMultiplierstartdateenddatelabelLinesStartingWith": "Format: multiplier|start_date|end_date|label. Lines starting with # are ignored.", + "productLevelOverrides": "Product-Level Overrides", + "setAFixedPointValueFor": "Set a fixed point value for specific products using the %s custom field on the product edit page.", + "availableShortcodes": "Available Shortcodes", + "displayTheLoggedInCustomerS": "Display the logged-in customer's points balance inline. Returns empty for guests.", + "displayTheCustomerSReferralLink": "Display the customer's referral link. Requires the referral program to be configured.", + "resources": "Resources", + "supportCenter": "Support Center", + "configureLoyaltydog": "Configure LoyaltyDog", + "setUpYourLoyaltyProgramBy": "Set up your loyalty program by entering your Program ID and API Key in the LoyaltyDog settings.", + "hooksReference": "Hooks Reference" + }, + "menu": { + "manage": "Manage", + "strongLoyaltydogStrongIsAlmostReady": "LoyaltyDog is almost ready. To get started, %sset your LoyaltyDog account keys%s.", + "strongLoyaltydogStrongRequiresCouponsTo": "LoyaltyDog requires coupons to be %senabled%s in order to function properly and allow customers to redeem offer during checkout.", + "sendPushNotifications": "Send Push Notifications", + "message": "Message", + "pushNotificationsAreCompliantWithEu": "Push notifications are compliant with EU GDPR.", + "send": "Send", + "enableTheLoggingOfApiRequest": "Enable the logging of API request.", + "1sviewLog2s": "%1$sView Log%2$s", + "loyaltydogApi": "LoyaltyDog API", + "enterWithYourProgramId": "Enter with your program ID.", + "enterWithYourLoyaltydogApiKey": "Enter with your LoyaltyDog API key.", + "debugLog": "Debug Log", + "thisShouldBeCheckedOnlyIf": "This should be checked only if LoyaltyDog support suggests it to be checked.", + "pointsConversion": "Points Conversion", + "earnPointsWhenOrderStatusIs": "Earn Points When Order Status Is", + "behaviorHowPointsAreEarnedAnd": "Behavior how points are earned and rewards are redeemed.", + "pendingPayment": "Pending Payment", + "processing": "Processing", + "onHold": "On Hold", + "completed": "Completed", + "earnPointsConversionRate": "Earn Points Conversion Rate", + "setTheNumberOfPointsAwarded": "Set the number of points awarded based on the product price.", + "earnPointsRoundingMode": "Earn Points Rounding Mode", + "setHowPointsShouldBeRounded": "Set how points should be rounded.", + "roundToNearestInteger": "Round to nearest integer", + "alwaysRoundDown": "Always round down", + "alwaysRoundUp": "Always round up", + "offerMessages": "Offer Messages", + "adjustTheMessageByUsing1s": "Adjust the message by using %1$s{friendlyNameToBeAdded}%2$s, %1$s{friendlyName}%2$s, %1$s{name}%2$s, %1$s{value}%2$s, %1$s{currency}%2$s to represent the redeemed / available offer.", + "availableOfferMessage": "Available Offer Message", + "addAnOptionalMessageWhenUser": "Add an optional message when user have a active Loyalty offer. Limited HTML is allowed. Leave blank to disable.", + "strongActiveLoyaltyOfferStrongFriendlynametobeadded": "Active Loyalty Offer: {friendlyNameToBeAdded}.
You can add some products to redeem this offer.", + "redeemOfferMessage": "Redeem Offer Message", + "displayedOnTheCartAndCheckout": "Displayed on the cart and checkout page when cart is not empty and user have active offer. Limited HTML is allowed.", + "strongLoyaltyRewardStrongFriendlynametobeadded": "Loyalty Reward: {friendlyNameToBeAdded}", + "pointsEarnedForActions": "Points Earned for Actions", + "customersCanAlsoEarnPointsFor": "Customers can also earn points for actions like creating an account or writing a product review. You can enter the amount of points the customer will earn for each action in this section.", + "isRequired": "%s is required.", + "points": "Points", + "isInvalid": "%s is invalid.", + "messageCanNotBeBlank": "Message can not be blank.", + "messageHaveBeenSent": "Message have been sent." + }, + "wizard": { + "loyaltydogSetup": "LoyaltyDog Setup", + "loyaltyRewardsForYourWoocommerceStore": "Loyalty rewards for your WooCommerce store", + "setupSteps": "Setup steps", + "connect": "Connect", + "ready": "Ready", + "connectYourAccount": "Connect Your Account", + "accountType": "Account type", + "iHaveALoyaltydogAccount": "I have a LoyaltyDog account", + "connectAnExistingProgramIncludingPos": "Connect an existing program (including POS accounts)", + "iMNewCreateAn": "I'm new — create an account", + "signUpAndStartANew": "Sign up and start a new loyalty program", + "connectionMethod": "Connection method", + "iReceivedAnActivationKeyBy": "I received an activation key by email", + "pasteTheOneTimeKeyFrom": "Paste the one-time key from your subscription email.", + "iHaveAProgramIdAnd": "I have a Program ID and API Key", + "forLegacyV1Customers": "For legacy v1 customers.", + "activationKey": "Activation key", + "pasteTheKeyFromYourEmail": "Paste the key from your email", + "sentToYourInboxAfterSubscribing": "Sent to your inbox after subscribing at loyalty.dog.", + "activate": "Activate", + "enterYourProgramIdAndApi": "Enter your Program ID and API Key from your %1$sLoyaltyDog dashboard%2$s.", + "eG507f1f77bcf86cd799439011": "e.g., 507f1f77bcf86cd799439011", + "foundInYourLoyaltydogDashboardUnder": "Found in your LoyaltyDog dashboard under Settings > API.", + "yourApiKey": "Your API key", + "keepThisSecretNeverShareYour": "Keep this secret. Never share your API key publicly.", + "validateampContinue": "Validate & Continue", + "createANewLoyaltydogAccountYour": "Create a new LoyaltyDog account. Your site URL will be pre-filled to speed up signup.", + "createAccountAtDashLoyaltyDog": "Create Account at dash.loyalty.dog", + "afterCreatingYourAccountReturnHere": "After creating your account, return here and select \\\"I have a LoyaltyDog account\\\" to connect.", + "configurePoints": "Configure Points", + "chooseAPresetOrSetUp": "Choose a preset or set up your own earning rate. You can always change these later in Settings.", + "pointsPreset": "Points preset", + "simple": "Simple", + "easyToUnderstandForCustomers": "Easy to understand for customers.", + "recommended": "Recommended", + "generous": "Generous", + "greatForBuildingEngagementFast": "Great for building engagement fast.", + "custom": "Custom", + "setYourOwnRate": "Set your own rate", + "fullControlOverEarningRules": "Full control over earning rules.", + "earnRate": "Earn rate", + "pointsForEvery": "points for every", + "currencyAmount": "Currency amount", + "spent": "spent", + "bonusPointsForSignup": "Bonus points for signup", + "pointsAwardedWhenANewCustomer": "Points awarded when a new customer creates an account. Set to 0 to disable.", + "earnPointsWhenOrderStatusIs": "Earn points when order status is:", + "processing": "Processing", + "completed": "Completed", + "onHold": "On Hold", + "back": "Back", + "saveampFinish": "Save & Finish", + "youReAllSet": "You're All Set!", + "yourLoyaltyProgramIsNowActive": "Your loyalty program is now active. Customers will start earning points on their next purchase.", + "checkingConnection": "Checking connection...", + "whatSNext": "What's next?", + "customizeYourPass": "Customize your pass", + "designYourDigitalLoyaltyPassIn": "Design your digital loyalty pass in the portal.", + "readTheDocs": "Read the docs", + "learnHowToConfigureRulesCampaigns": "Learn how to configure rules, campaigns, and more.", + "testItYourself": "Test it yourself", + "viewTheCustomerFacingLoyaltyPage": "View the customer-facing loyalty page on your store.", + "goToSettings": "Go to Settings", + "goToDashboard": "Go to Dashboard", + "permissionDenied": "Permission denied.", + "bothProgramIdAndApiKey": "Both Program ID and API Key are required.", + "invalidApiKeyPleaseCheckYour": "Invalid API Key. Please check your credentials.", + "programNotFoundPleaseCheckYour": "Program not found. Please check your Program ID.", + "connectionFailedHttpPleaseTryAgain": "Connection failed (HTTP %s). Please try again.", + "connectionSuccessful": "Connection successful!", + "credentialsAreRequired": "Credentials are required.", + "setupComplete": "Setup complete!", + "apiUnreachableHttp": "API unreachable (HTTP %s)", + "activationKeyLooksMalformedPasteThe": "Activation key looks malformed. Paste the key exactly as it appears in your email.", + "activating": "Activating…", + "connectedContinuingToConfiguration": "Connected. Continuing to configuration…", + "activationFailedPleaseTryAgain": "Activation failed. Please try again.", + "networkErrorPleaseTryAgain": "Network error. Please try again.", + "pleaseEnterBothProgramIdAnd": "Please enter both Program ID and API Key.", + "validating": "Validating...", + "validateContinue": "Validate & Continue", + "program": "Program:", + "saving": "Saving...", + "saveFinish": "Save & Finish", + "connectionIssue": "Connection issue" + }, + "program": { + "loyaltyPrograms": "Loyalty Programs", + "createNewProgram": "Create New Program", + "programName": "Program Name", + "thisNameWillAppearToYour": "This name will appear to your customers", + "createProgram": "Create Program", + "cancel": "Cancel", + "failedToLoadPrograms": "Failed to load programs", + "failedToLoadProgramsPleaseTry": "Failed to load programs. Please try again.", + "noProgramsYet": "No programs yet", + "createYourFirstProgram": "Create Your First Program", + "created": "Created", + "failedToCreateProgramPleaseTry": "Failed to create program. Please try again." + }, + "diagnostics": { + "pluginWonTActivate": "Plugin won't activate", + "checkPhpVersionRequires74": "Check PHP version (requires 7.4+)", + "verifyMysqlVersionRequires57": "Verify MySQL version (requires 5.7+)", + "checkErrorLogsForSpecificErrors": "Check error logs for specific errors", + "disableOtherPluginsAndTryAgain": "Disable other plugins and try again", + "productsNotSyncing": "Products not syncing", + "verifyWoocommerceIsInstalled": "Verify WooCommerce is installed", + "checkSyncLogsForErrors": "Check sync logs for errors", + "manualSyncGoToSettingsSync": "Manual sync: Go to Settings > Sync Status", + "checkDatabasePermissions": "Check database permissions", + "webhookFailures": "Webhook failures", + "verifyWebhookUrlIsAccessible": "Verify webhook URL is accessible", + "checkSslCertificateValidity": "Check SSL certificate validity", + "reviewWebhookEventLogs": "Review webhook event logs", + "testWithManualWebhookDispatch": "Test with manual webhook dispatch", + "ticketCreatedWeLlRespondWithin": "Ticket %s created. We'll respond within 4 hours." + }, + "settingsSync": { + "serverReturnedAnUnexpectedResponseShape": "Server returned an unexpected response shape." } }, "widget": { "joinCta": "Unisciti al nostro programma fedeltà", "loginPrompt": "Accedi per visualizzare il tuo programma fedeltà." + }, + "plugin": { + "loyaltydog": "LoyaltyDog", + "httpsLoyaltydogIoWordpress": "https://loyaltydog.io/wordpress", + "pointsTiersAndRewardRedemptionFor": "Points, tiers, and reward redemption for WooCommerce. Live balance widget for shortcode, Gutenberg, Elementor, and the WC My Account page.", + "loyaltydogInc": "LoyaltyDog Inc.", + "httpsLoyaltyDog": "https://loyalty.dog", + "loyaltydogRequiresWordpress69Or": "LoyaltyDog requires WordPress 6.9 or newer.", + "youAreCurrentlyRunningWordpress": "You are currently running WordPress %s.", + "loyaltydogRequiresPhp80Or": "LoyaltyDog requires PHP 8.0 or newer.", + "youAreCurrentlyRunningPhp": "You are currently running PHP %s.", + "loyaltydogRequiresWoocommerceToBeInstalled": "LoyaltyDog requires WooCommerce to be installed and activated.", + "loyaltydogRequiresWoocommerce70Or": "LoyaltyDog requires WooCommerce 7.0 or newer.", + "youAreCurrentlyRunningWoocommerce": "You are currently running WooCommerce %s.", + "loyaltydogActivationFailedSystemRequirementsNot": "LoyaltyDog activation failed: system requirements not met." + }, + "misc": { + "invalidProgram": "Invalid program", + "emailOrPhoneIsRequired": "Email or phone is required", + "customerNotFound": "Customer not found", + "invalidParameters": "Invalid parameters", + "memberNotFound": "Member not found", + "memberEmailMissing": "Member email missing", + "oauthCredentialsNotConfigured": "OAuth credentials not configured", + "registrationIdNotFound": "Registration ID not found", + "backendUrlNotConfigured": "Backend URL not configured", + "failedToRotateSecretPleaseTry": "Failed to rotate secret. Please try again later.", + "coreApiReturnedAnError": "Core API returned an error", + "invalidResponseFromCoreApi": "Invalid response from Core API", + "failedToStoreNewSecret": "Failed to store new secret", + "webhookSecretRotatedSuccessfully": "Webhook secret rotated successfully", + "loyaltydogCredentialsAreNotConfigured": "LoyaltyDog credentials are not configured.", + "apiKeyIsRequired": "API key is required.", + "thatLooksLikeASessionJwt": "That looks like a session JWT (short-lived dashboard token), not a long-lived API key. Get the long-lived API key from your LoyaltyDog dashboard or via the plugin Connection page.", + "apiKeyContainsInvalidCharactersAllowed": "API key contains invalid characters. Allowed: letters, digits, underscore, hyphen, period.", + "apiKeyLengthIsOutOf": "API key length is out of range (10–256 characters).", + "apiKeyMustStartWithLoyaltydogpk": "API key must start with \\\"loyaltydog_pk_\\\". Get one from your LoyaltyDog dashboard.", + "profileNotFound": "Profile not found", + "tooManyRequestsPleaseTryAgain": "Too many requests. Please try again later.", + "pointsEarnedForAccountSignup": "Points earned for account signup", + "enterTheAmountOfPointsEarned": "Enter the amount of points earned when a customer signs up for an account.", + "pointsEarnedForWritingAReview": "Points earned for writing a review", + "enterTheAmountOfPointsEarned2": "Enter the amount of points earned when a customer first reviews a product.", + "currentLoyaltyPointsBalance": "Current loyalty points balance.", + "whetherTheCustomerIsEnrolledIn": "Whether the customer is enrolled in the loyalty program.", + "estimatedPointsTheCustomerWillEarn": "Estimated points the customer will earn from this order.", + "loyaltyReward": "Loyalty Reward", + "redeem": "REDEEM", + "redeemedSuccessfully": "Redeemed Successfully", + "xPointsBonusActive": "%sx points bonus active!", + "minimumSpendForPoints": "Minimum spend for points", + "minimumOrderTotalRequiredToEarn": "Minimum order total required to earn points. Leave empty to disable.", + "categoryPointMultipliers": "Category point multipliers", + "onePerLineCategoryslugMultiplierE": "One per line: category_slug:multiplier (e.g., electronics:2 for double points). If a product is in multiple categories, the highest multiplier applies.", + "timeLimitedCampaigns": "Time-limited campaigns", + "onePerLineMultiplierstartdateenddatelabelEG": "One per line: multiplier|start_date|end_date|label (e.g., 2|2026-03-01|2026-03-31|Double Points March). The highest active campaign multiplier applies to all orders. Lines starting with # are ignored.", + "welcomeTo1s2s": "Welcome to %1$s %2$s", + "loading": "Loading...", + "dashboard": "Dashboard", + "widget": "Widget", + "systemInfo": "System Info", + "allSetTakingYouToYour": "All set! Taking you to your dashboard…", + "activationFailed": "Activation failed.", + "loyaltyDiscount": "Loyalty Discount", + "nameFree": "{name} (FREE)", + "nameValueCurrency": "{name} ({value}{currency})", + "nameValueCurrency2": "{name} (-{value}{currency})", + "unableToGenerateASecureSession": "Unable to generate a secure session token. Please try again.", + "activatingYourLoyaltydogAccountHold": "Activating your LoyaltyDog account — hold on tight!", + "activationFailedSessionExpiredPlease": "Activation failed — session expired. Please try again.", + "tryAgain": "Try Again", + "connectYourLoyaltyProgramToWoocommerce": "Connect your loyalty program to WooCommerce.", + "pasteYourActivationKeyHere": "Paste your activation key here", + "activateLoyaltydog": "Activate LoyaltyDog", + "havingTroubleContactSupport": "Having trouble? Contact support", + "accountLinkedSuccessfully": "Account Linked Successfully!", + "yourLoyaltydogAccountIsNowConnected": "Your %s LoyaltyDog account is now connected to your WordPress store.", + "dashboardImplementationComingInFutureUpdates": "Dashboard implementation coming in future updates.", + "increasePointMultiplierForTopSelling": "Increase point multiplier for top-selling category (Electronics) to boost engagement", + "createAWinBackCampaignFor": "Create a win-back campaign for 120 inactive members who spent $1000+ lifetime", + "reduceTierAdvancementRequirementsToIncrease": "Reduce tier advancement requirements to increase Gold tier members by 20%", + "highValueSpent100095Engagement": "High-Value: Spent $1000+, 95% engagement", + "regularSpent100100070Engagement": "Regular: Spent $100-1000, 70% engagement", + "occasionalSpent10030Engagement": "Occasional: Spent <$100, 30% engagement", + "inactiveNoPurchasesIn60Days": "Inactive: No purchases in 60 days", + "createWinBackCampaignForInactive": "Create win-back campaign for inactive members", + "criticalIssues": "Critical Issues", + "warnings": "Warnings", + "webhookSecretNotConfigured": "Webhook secret not configured", + "missingStripeSignatureHeader": "Missing Stripe-Signature header", + "malformedStripeSignatureHeader": "Malformed Stripe-Signature header", + "stripeSignatureTimestampIsNotNumeric": "Stripe-Signature timestamp is not numeric", + "webhookSignatureTimestampOutsideToleranceWindow": "Webhook signature timestamp outside tolerance window", + "webhookSignatureVerificationFailed": "Webhook signature verification failed", + "invalidWebhookPayload": "Invalid webhook payload", + "dependsOnTheLastVersionOf": "depends on the last version of WooCommerce to work!", + "activeWoocommerce": "Active WooCommerce", + "installWoocommerce": "Install WooCommerce", + "youHave": "You have ", + "pointsEarn": " points. Earn ", + "moreWithThisOrder": " more with this order.", + "loyaltyPoints": " loyalty points." + }, + "frontend": { + "points": { + "loyaltyPoints": "Loyalty Points", + "youAreNotYetEnrolledIn": "You are not yet enrolled in our loyalty program. Points are earned automatically when you make purchases.", + "yourPointsBalance": "Your Points Balance", + "points": "points", + "tier": "Tier: %s", + "activeReward": "Active Reward", + "addItemsToYourCartTo": "Add items to your cart to redeem this reward at checkout.", + "viewCart": "View cart", + "howToEarnPoints": "How to Earn Points", + "earn1sPointsForEvery2s": "Earn %1$s points for every %2$s spent", + "pointsForCreatingAnAccount": "%s points for creating an account", + "pointsForWritingAProductReview": "%s points for writing a product review", + "pointsForReferringAFriend": "%s points for referring a friend", + "strongLoyaltyPointsStrongYouHave": "Loyalty Points: You have %s points.", + "viewDetails": "View details", + "points2": "%s points" + }, + "customerExport": { + "youMustBeLoggedInTo": "You must be logged in to export your loyalty data.", + "securityCheckFailedPleaseReloadAnd": "Security check failed. Please reload and try again.", + "youCanRequestOneLoyaltyData": "You can request one loyalty-data export per 24 hours. Please try again tomorrow.", + "weCouldNotPrepareYourExport": "We could not prepare your export right now. Please try again later or contact support." + }, + "account": { + "loyaltyProgram": "Loyalty Program", + "downloadMyLoyaltyData": "Download my loyalty data", + "notificationPreferences": "Notification preferences", + "yourNotificationPreferencesHaveBeenSaved": "Your notification preferences have been saved.", + "emailMeWhenMyLoyaltyTier": "Email me when my loyalty tier changes", + "savePreferences": "Save preferences" + }, + "checkout": { + "loadingLoyaltyInformation": "Loading loyalty information...", + "identifyingCustomer": "Identifying customer...", + "errorLoadingLoyaltyProgramPleaseTry": "Error loading loyalty program. Please try again.", + "emailOrPhone": "Email or Phone", + "enterEmailOrPhone": "Enter email or phone", + "findAccount": "Find Account", + "welcome": "Welcome", + "pointsBalance": "Points Balance:", + "availableRewards": "Available Rewards", + "selectAReward": "--- Select a reward ---", + "applyReward": "Apply Reward", + "appliedLoyaltyDiscounts": "Applied Loyalty Discounts" + }, + "redeem": { + "loyaltydogReward": "LoyaltyDog Reward" + }, + "checkoutService": { + "networkErrorWhileApplyingRewardPlease": "Network error while applying reward. Please try again.", + "youDoNotHaveEnoughPoints": "You do not have enough points for this reward.", + "rewardNotFoundOrNoLonger": "Reward not found or no longer available.", + "failedToApplyReward": "Failed to apply reward.", + "rewardApplied": "Reward applied." + }, + "blocks": { + "displayTheLoyaltydogLoyaltyWidgetFor": "Display the LoyaltyDog loyalty widget for logged-in customers.", + "loyalty": "loyalty", + "points": "points", + "rewards": "rewards", + "loyaltydog": "loyaltydog" + } + }, + "emails": { + "invalidEmailAddress": "Invalid email address", + "invalidVerificationCodeFormat": "Invalid verification code format", + "emailServiceNotConfigured": "Email service not configured", + "loyaltydogAccountVerification": "LoyaltyDog Account Verification", + "failedToSendEmailViaSendgrid": "Failed to send email via SendGrid", + "verifyYourEmail": "Verify Your Email", + "thankYouForSigningUpFor": "Thank you for signing up for LoyaltyDog! To complete your account setup, please verify your email address using the code below:", + "yourVerificationCode": "Your verification code:", + "thisCodeWillExpireIn10": "This code will expire in 10 minutes", + "securityNotice": "Security Notice:", + "neverShareThisCodeWithAnyone": "Never share this code with anyone. We will never ask for it.", + "ifYouDidNotSignUp": "If you did not sign up for a LoyaltyDog account, please ignore this email.", + "allRightsReserved": "All rights reserved.", + "thisIsAnAutomatedEmailPlease": "This is an automated email. Please do not reply.", + "passwordIsRequired": "Password is required", + "welcomeToLoyaltydogYourAccountIs": "Welcome to LoyaltyDog - Your Account Is Ready", + "welcomeToLoyaltydog": "Welcome to LoyaltyDog!", + "yourLoyaltydogAccountForHasBeen": "Your LoyaltyDog account for %s has been created successfully.", + "yourLoyaltydogAccountHasBeenCreated": "Your LoyaltyDog account has been created successfully.", + "belowAreYourLoginCredentialsYou": "Below are your login credentials. You can use these to access your LoyaltyDog dashboard:", + "email": "Email", + "password": "Password", + "keepThisPasswordSafeAndDo": "Keep this password safe and do not share it with anyone. You can change your password after logging in.", + "ifYouDidNotCreateThis": "If you did not create this account, please contact our support team immediately." + }, + "privacy": { + "loyaltydogLoyaltyProgram": "LoyaltyDog loyalty program", + "firstName": "First name", + "lastName": "Last name", + "phone": "Phone", + "pointsBalance": "Points balance", + "tier": "Tier", + "enrollmentStatus": "Enrollment status", + "enrolledAt": "Enrolled at", + "whenYouUseLoyaltydogYourEmail": "When you use LoyaltyDog, your email address and order totals are sent to the LoyaltyDog cloud service (api.loyalty.dog) to calculate and store loyalty points. Loyalty transaction history may be retained locally in de-identified form (linked only to an internal member ID) after an erasure request. See loyalty.dog/privacy for details." } } } diff --git a/packages/i18n/locales/pt-BR/wordpress.json b/packages/i18n/locales/pt-BR/wordpress.json index 52e365e..1559e29 100644 --- a/packages/i18n/locales/pt-BR/wordpress.json +++ b/packages/i18n/locales/pt-BR/wordpress.json @@ -8,7 +8,21 @@ "program": "Programa", "noProgramSelected": "Nenhum programa selecionado", "openDashboard": "Abrir o Painel LoyaltyDog", - "connectStore": "Conectar sua loja" + "connectStore": "Conectar sua loja", + "atAGlanceStatusOfYour": "At-a-glance status of your LoyaltyDog program. Detailed analytics live in the portal.", + "programSummaryMetrics": "Program summary metrics", + "connectionStatus": "Connection status", + "connection": "Connection", + "programWp": "Program: %s", + "pointsIssuedInTheLast30": "Points issued in the last 30 days", + "pointsIssued30d": "Points issued (30d)", + "valueNotYetAvailable": "Value not yet available", + "viewInPortal": "View in portal", + "totalMembersEnrolled": "Total members enrolled", + "members": "Members", + "latestActivity": "Latest activity", + "latestTransaction": "Latest transaction", + "noActivityYet": "No activity yet" }, "connection": { "title": "Conexão LoyaltyDog", @@ -26,7 +40,14 @@ "apiKeyNotConfigured": "Chave API não configurada", "httpError": "HTTP {{code}} da API", "connectionSuccessful": "Conexão bem-sucedida", - "unauthorized": "Não autorizado" + "unauthorized": "Não autorizado", + "youDoNotHavePermissionTo": "You do not have permission to access this page.", + "programId": "Program ID", + "php1sOrNewerIsRequired": "PHP %1$s or newer is required. This site is running PHP %2$s. Please ask your hosting provider to upgrade PHP before configuring LoyaltyDog.", + "wordpress1sOrNewerIsRequired": "WordPress %1$s or newer is required. This site is running WordPress %2$s.", + "woocommerceIsRequiredButIsNot": "WooCommerce is required but is not installed or activated.", + "woocommerce1sOrNewerIsRequired": "WooCommerce %1$s or newer is required. This site is running WooCommerce %2$s.", + "httpFromApi": "HTTP %d from API" }, "widget": { "title": "Widget LoyaltyDog", @@ -40,7 +61,28 @@ "save": "Salvar", "settingsSaved": "Configurações salvas.", "preview": "Pré-visualização", - "previewPlaceholder": "[O widget LoyaltyDog é exibido aqui para clientes conectados]" + "previewPlaceholder": "[O widget LoyaltyDog é exibido aqui para clientes conectados]", + "couldNotSaveSettingsToLoyaltydog": "Could not save settings to LoyaltyDog: %s", + "joinWidget": "Join Widget", + "shownToGuestVisitorsAndCustomers": "Shown to guest visitors and customers not yet in your loyalty program.", + "signupUrl": "Signup URL", + "theShareJoinUrlFromYour": "The share/join URL from your loyalty program dashboard. Opens in a new tab.", + "qrCode": "QR Code", + "showQrCodeAlongsideJoinText": "Show QR code alongside join text", + "customersCanScanWithTheirPhone": "Customers can scan with their phone to open the signup form directly.", + "checkoutRedemption": "Checkout Redemption", + "allowCustomersToAutomaticallyRedeemLoyalty": "Allow customers to automatically redeem loyalty points as a discount at checkout.", + "enableRedemption": "Enable Redemption", + "applyLoyaltyPointsAsACart": "Apply loyalty points as a cart discount at checkout", + "whenEnabledAllAvailablePointsAre": "When enabled, all available points are automatically applied as a discount. Customers can see this in their cart.", + "pointsValue": "Points Value", + "currencyPerPoint": "currency per point", + "eG001Means100": "e.g. 0.01 means 100 points = $1.00 discount. Range: 0.001–1.0.", + "emailNotifications": "Email Notifications", + "controlWhichTransactionalEmailsCustomersReceive": "Control which transactional emails customers receive from your loyalty program.", + "tierChangeEmails": "Tier Change Emails", + "sendANotificationWhenACustomer": "Send a notification when a customer moves between loyalty tiers", + "customersCanAlsoOptOutIndividually": "Customers can also opt out individually under My Account → Loyalty." }, "systemInfo": { "title": "Informações do sistema LoyaltyDog", @@ -51,12 +93,592 @@ "woocommerceVersion": "Versão do WooCommerce", "pluginVersion": "Versão do plugin", "pendingActions": "Ações AS pendentes", - "notActive": "Inativo" + "notActive": "Inativo", + "systemInformation": "System Information", + "compatibilityStatus": "Compatibility Status", + "yourPlatformMeetsAllRequirements": "Your platform meets all requirements", + "somePlatformRequirementsAreNotMet": "Some platform requirements are not met", + "wordpress": "WordPress", + "version": "Version:", + "language": "Language:", + "timezone": "Timezone:", + "multisite": "Multisite:", + "yes": "Yes", + "no": "No", + "woocommerce": "WooCommerce", + "status": "Status:", + "active": "Active", + "currency": "Currency:", + "restApi": "REST API:", + "enabled": "Enabled", + "disabled": "Disabled", + "php": "PHP", + "sapi": "SAPI:", + "maxInputVars": "Max Input Vars:", + "postMaxSize": "Post Max Size:", + "uploadMaxSize": "Upload Max Size:", + "phpExtensions": "PHP Extensions", + "required": "Required", + "loaded": "Loaded", + "missing": "Missing", + "optional": "Optional", + "serverResources": "Server Resources", + "memoryLimit": "Memory Limit:", + "currentMemoryUsage": "Current Memory Usage:", + "maxExecutionTime": "Max Execution Time:", + "serverSoftware": "Server Software:", + "wpDebug": "WP Debug:" + }, + "credentials": { + "securityCheckFailed": "Security check failed", + "invalidCredentialKey": "Invalid credential key", + "credentialValueIsRequired": "Credential value is required", + "invalidCredentialFormat": "Invalid credential format", + "failedToStoreCredentialPleaseTry": "Failed to store credential. Please try again.", + "credentialUpdatedSuccessfully": "Credential updated successfully", + "failedToDeleteCredentialPleaseTry": "Failed to delete credential. Please try again.", + "credentialDeletedSuccessfully": "Credential deleted successfully", + "noCredentialsToExport": "No credentials to export", + "noFileProvided": "No file provided", + "fileUploadFailed": "File upload failed", + "invalidFileTypePleaseUploadA": "Invalid file type. Please upload a JSON file.", + "invalidImportFileFormat": "Invalid import file format", + "noCredentialsWereImported": "No credentials were imported", + "credentialsImportedSuccessfully": "%d credentials imported successfully" + }, + "settings": { + "loyaltydogCredentials": "LoyaltyDog Credentials", + "manageYourApiKeysAndIntegration": "Manage your API keys and integration credentials.", + "status": "Status", + "stripe": "Stripe", + "coreApi": "Core API", + "auditLog": "Audit Log", + "backup": "Backup", + "stripeSecretKey": "Stripe Secret Key", + "stripeWebhookSecret": "Stripe Webhook Secret", + "stripePublicKey": "Stripe Public Key", + "stripePriceId": "Stripe Price ID", + "credentialStatus": "Credential Status", + "credential": "Credential", + "type": "Type", + "lastUpdated": "Last Updated", + "actions": "Actions", + "notConfigured": "Not Configured", + "encrypted": "Encrypted", + "plainText": "Plain text", + "edit": "Edit", + "delete": "Delete", + "configure": "Configure", + "stripeConfiguration": "Stripe Configuration", + "secretKey": "Secret Key", + "findInStripeDashboardDevelopers": "Find in Stripe Dashboard → Developers → API Keys", + "configured": "Configured: ", + "update": "Update", + "clear": "Clear", + "publishableKey": "Publishable Key", + "webhookSigningSecret": "Webhook Signing Secret", + "findInStripeDashboardDevelopers2": "Find in Stripe Dashboard → Developers → Webhooks → Show signing secret", + "monthlyPriceId": "Monthly Price ID", + "stripePriceIdFor29Month": "Stripe price ID for $29/month subscription", + "loyaltydogApiCredentials": "LoyaltyDog API Credentials", + "oauthStyleCredentialsGeneratedDuringAccount": "OAuth-style credentials generated during account registration. These credentials are auto-generated and cannot be manually edited.", + "notConnected": "Not Connected", + "clickTheButtonBelowToConnect": "Click the button below to connect your WordPress store to LoyaltyDog.", + "connectToLoyaltydog": "Connect to LoyaltyDog", + "registrationStatus": "Registration Status", + "apiKeyIsSecurelyEncryptedIn": "API key is securely encrypted in storage.", + "webhookSecret": "Webhook Secret", + "webhookSecretIsSecurelyEncryptedIn": "Webhook secret is securely encrypted in storage and never displayed.", + "rotateWebhookSecret": "Rotate Webhook Secret", + "generateANewWebhookSecretFor": "Generate a new webhook secret for security purposes. Old secret remains valid for 7 days.", + "howToReconfigure": "How to reconfigure:", + "toResetOrChangeYourLoyaltydog": "To reset or change your LoyaltyDog integration, contact support or delete the plugin and reinstall to re-run the account setup wizard.", + "detailedAuditLogOfAllCredential": "Detailed audit log of all credential operations is available in WordPress error logs.", + "checkYourWordpressDebugLogFile": "Check your WordPress debug log file for detailed audit information: %s", + "recentOperations": "Recent Operations:", + "allCredentialUpdatesAreLoggedAutomatically": "All credential updates are logged automatically", + "allCredentialDeletionsAreLoggedAutomatically": "All credential deletions are logged automatically", + "allCredentialAccessIsLoggedRead": "All credential access is logged (read, decrypt)", + "logsIncludeUserTimestampAndAction": "Logs include user, timestamp, and action type", + "credentialValuesAreNeverLoggedSanitized": "Credential values are never logged (sanitized)", + "backupRestore": "Backup & Restore", + "exportCredentials": "Export Credentials", + "exportYourEncryptedCredentialsAsA": "Export your encrypted credentials as a backup. Keep this file secure.", + "exportCredentialsEncrypted": "Export Credentials (Encrypted)", + "importCredentials": "Import Credentials", + "restoreCredentialsFromAPreviouslyExported": "Restore credentials from a previously exported backup.", + "warning": "Warning:", + "importedCredentialsWillOverwriteExistingCredentials": "Imported credentials will overwrite existing credentials. Back up before importing." + }, + "encryptionKeyNotice": { + "yourAes256EncryptionKeyCurrently": "Your AES-256 encryption key currently lives in wp_options alongside the credentials it protects. A stolen database backup would give an attacker both halves at once. Add the line below to wp-config.php (above the \\\"/* That's all, stop editing! */\\\" comment) to separate the key from the data, then delete the loyaltydog_encryption_key option.", + "thisNoticeDisappearsOnceTheConstant": "This notice disappears once the constant is in place. The plugin keeps reading from wp_options until you remove that entry, so existing encrypted credentials stay readable throughout the migration." + }, + "notices": { + "loyaltydogV2MigrationCompletedAutomatically": "LoyaltyDog v2 migration completed automatically", + "yourLoyaltyDataWasMigratedWithout": "Your loyalty data was migrated without a coordinated maintenance window. Please contact support so we can verify your totals against our backend.", + "contactSupportLoyaltyDog": "Contact support.loyalty.dog", + "loyaltydogUpgradedToV203": "LoyaltyDog upgraded to v2.0.3", + "yourExistingProgramSettingsAndMember": "Your existing program settings and member point balances were carried over automatically.", + "reviewConnection": "Review Connection", + "dismiss": "Dismiss", + "loyaltydogV1V2MigrationFailed": "LoyaltyDog v1 → v2 migration failed.", + "error": "Error: %s", + "recoveryGuide": "Recovery guide", + "thePluginWillRetryAutomaticallyOn": "The plugin will retry automatically on the next admin pageload." + }, + "subscriptionLapse": { + "yourLoyaltydogWordpressAddOnPayment": "Your LoyaltyDog WordPress add-on payment failed.", + "loyaltyOperationsContinueForNowStripe": "Loyalty operations continue for now. Stripe will retry the payment automatically; if it fails, your subscription will be canceled and the loyalty program will pause until a new payment method is added.", + "updatePaymentMethod": "Update payment method", + "remindMeTomorrow": "Remind me tomorrow", + "yourLoyaltydogWordpressAddOnSubscription": "Your LoyaltyDog WordPress add-on subscription is canceled.", + "loyaltyOperationsArePausedExistingCustomer": "Loyalty operations are paused. Existing customer point balances remain intact. Resubscribe to resume earning and redemption.", + "resubscribe": "Resubscribe" + }, + "trialNotices": { + "trialExpired": "Trial expired", + "trialDayRemaining": "Trial: %d day remaining", + "welcomeToLoyaltydog": "Welcome to LoyaltyDog.", + "signUpForAFree30": "Sign up for a free 30-day trial to activate your points program. No credit card required.", + "startYourFreeTrial": "Start your free trial", + "yourLoyaltydogTrialEndsInDay": "Your LoyaltyDog trial ends in %d day.", + "upgradeNowToKeepAwardingPoints": "Upgrade now to keep awarding points after the trial ends.", + "upgradeNow": "Upgrade now", + "remindMeLater": "Remind me later", + "yourLoyaltydogTrialHasEnded": "Your LoyaltyDog trial has ended.", + "yourStorefrontContinuesToWorkBut": "Your storefront continues to work, but new points will not be awarded until you upgrade. Existing balances remain intact." + }, + "activation": { + "securityCheckFailed": "Security check failed.", + "insufficientPermissions": "Insufficient permissions.", + "invalidActivationKey": "Invalid activation key.", + "unableToReachLoyaltydogRightNow": "Unable to reach LoyaltyDog right now. Please try again shortly.", + "thisActivationLinkHasExpiredPlease": "This activation link has expired. Please return to LoyaltyDog to generate a new one.", + "tooManyAttemptsPleaseWaitA": "Too many attempts. Please wait a few minutes and try again.", + "somethingWentWrongDuringActivationPlease": "Something went wrong during activation. Please try again or contact support.", + "unableToStoreCredentialsSecurelyPlease": "Unable to store credentials securely. Please try again.", + "accountActivatedSuccessfully": "Account activated successfully!" + }, + "testConnection": { + "invalidRequest": "Invalid request", + "connectionTestFailed": "Connection test failed", + "yourWordpressPluginIsSuccessfullyConnected": "Your WordPress plugin is successfully connected to the Core API." + }, + "help": { + "gettingStarted": "Getting Started", + "settings": "Settings", + "pointsRules": "Points & Rules", + "shortcodes": "Shortcodes", + "gettingStartedWithLoyaltydog": "Getting Started with LoyaltyDog", + "loyaltydogAddsADigitalLoyaltyProgram": "LoyaltyDog adds a digital loyalty program to your WooCommerce store. Customers earn points on purchases and redeem them for rewards.", + "enterYour1sprogramId2sAnd1sapi": "Enter your %1$sProgram ID%2$s and %1$sAPI Key%2$s in Settings. Get these from your LoyaltyDog dashboard.", + "configureThePointsConversionRateE": "Configure the points conversion rate (e.g., 1 point per $1 spent).", + "setUpOfferMessagesThatCustomers": "Set up offer messages that customers see when they have rewards.", + "optionallyConfigureCategoryMultipliersCampaignsAnd": "Optionally configure category multipliers, campaigns, and referral rewards.", + "customersWillSeeTheirPointsBalance": "Customers will see their points balance in My Account > Loyalty Points, and on the cart/checkout pages.", + "settingsReference": "Settings Reference", + "yourUniqueLoyaltydogProgramIdentifierFound": "Your unique LoyaltyDog program identifier. Found in Dashboard > Settings > API.", + "secretKeyForApiAuthenticationNever": "Secret key for API authentication. Never share this publicly.", + "earnPointsWhen": "Earn Points When", + "controlsWhenPointsAreAwardedProcessing": "Controls when points are awarded. \\\"Processing\\\" is recommended for most stores.", + "pointsConversionRate": "Points Conversion Rate", + "howSpendingConvertsToPoints1": "How spending converts to points. \\\"1:1\\\" means 1 point per currency unit.", + "pointsRulesEngine": "Points & Rules Engine", + "categoryMultipliers": "Category Multipliers", + "awardBonusPointsForSpecificProduct": "Award bonus points for specific product categories. Enter one per line:", + "thisGives2xPointsForElectronics": "This gives 2x points for electronics and 1.5x for clothing. Use category slugs.", + "minimumSpend": "Minimum Spend", + "setAMinimumOrderTotalRequired": "Set a minimum order total required to earn any points. Orders below this amount earn 0 points.", + "timeLimitedCampaigns": "Time-Limited Campaigns", + "runPromotionalPeriodsWithBonusPoint": "Run promotional periods with bonus point multipliers. Enter one per line:", + "formatMultiplierstartdateenddatelabelLinesStartingWith": "Format: multiplier|start_date|end_date|label. Lines starting with # are ignored.", + "productLevelOverrides": "Product-Level Overrides", + "setAFixedPointValueFor": "Set a fixed point value for specific products using the %s custom field on the product edit page.", + "availableShortcodes": "Available Shortcodes", + "displayTheLoggedInCustomerS": "Display the logged-in customer's points balance inline. Returns empty for guests.", + "displayTheCustomerSReferralLink": "Display the customer's referral link. Requires the referral program to be configured.", + "resources": "Resources", + "supportCenter": "Support Center", + "configureLoyaltydog": "Configure LoyaltyDog", + "setUpYourLoyaltyProgramBy": "Set up your loyalty program by entering your Program ID and API Key in the LoyaltyDog settings.", + "hooksReference": "Hooks Reference" + }, + "menu": { + "manage": "Manage", + "strongLoyaltydogStrongIsAlmostReady": "LoyaltyDog is almost ready. To get started, %sset your LoyaltyDog account keys%s.", + "strongLoyaltydogStrongRequiresCouponsTo": "LoyaltyDog requires coupons to be %senabled%s in order to function properly and allow customers to redeem offer during checkout.", + "sendPushNotifications": "Send Push Notifications", + "message": "Message", + "pushNotificationsAreCompliantWithEu": "Push notifications are compliant with EU GDPR.", + "send": "Send", + "enableTheLoggingOfApiRequest": "Enable the logging of API request.", + "1sviewLog2s": "%1$sView Log%2$s", + "loyaltydogApi": "LoyaltyDog API", + "enterWithYourProgramId": "Enter with your program ID.", + "enterWithYourLoyaltydogApiKey": "Enter with your LoyaltyDog API key.", + "debugLog": "Debug Log", + "thisShouldBeCheckedOnlyIf": "This should be checked only if LoyaltyDog support suggests it to be checked.", + "pointsConversion": "Points Conversion", + "earnPointsWhenOrderStatusIs": "Earn Points When Order Status Is", + "behaviorHowPointsAreEarnedAnd": "Behavior how points are earned and rewards are redeemed.", + "pendingPayment": "Pending Payment", + "processing": "Processing", + "onHold": "On Hold", + "completed": "Completed", + "earnPointsConversionRate": "Earn Points Conversion Rate", + "setTheNumberOfPointsAwarded": "Set the number of points awarded based on the product price.", + "earnPointsRoundingMode": "Earn Points Rounding Mode", + "setHowPointsShouldBeRounded": "Set how points should be rounded.", + "roundToNearestInteger": "Round to nearest integer", + "alwaysRoundDown": "Always round down", + "alwaysRoundUp": "Always round up", + "offerMessages": "Offer Messages", + "adjustTheMessageByUsing1s": "Adjust the message by using %1$s{friendlyNameToBeAdded}%2$s, %1$s{friendlyName}%2$s, %1$s{name}%2$s, %1$s{value}%2$s, %1$s{currency}%2$s to represent the redeemed / available offer.", + "availableOfferMessage": "Available Offer Message", + "addAnOptionalMessageWhenUser": "Add an optional message when user have a active Loyalty offer. Limited HTML is allowed. Leave blank to disable.", + "strongActiveLoyaltyOfferStrongFriendlynametobeadded": "Active Loyalty Offer: {friendlyNameToBeAdded}.
You can add some products to redeem this offer.", + "redeemOfferMessage": "Redeem Offer Message", + "displayedOnTheCartAndCheckout": "Displayed on the cart and checkout page when cart is not empty and user have active offer. Limited HTML is allowed.", + "strongLoyaltyRewardStrongFriendlynametobeadded": "Loyalty Reward: {friendlyNameToBeAdded}", + "pointsEarnedForActions": "Points Earned for Actions", + "customersCanAlsoEarnPointsFor": "Customers can also earn points for actions like creating an account or writing a product review. You can enter the amount of points the customer will earn for each action in this section.", + "isRequired": "%s is required.", + "points": "Points", + "isInvalid": "%s is invalid.", + "messageCanNotBeBlank": "Message can not be blank.", + "messageHaveBeenSent": "Message have been sent." + }, + "wizard": { + "loyaltydogSetup": "LoyaltyDog Setup", + "loyaltyRewardsForYourWoocommerceStore": "Loyalty rewards for your WooCommerce store", + "setupSteps": "Setup steps", + "connect": "Connect", + "ready": "Ready", + "connectYourAccount": "Connect Your Account", + "accountType": "Account type", + "iHaveALoyaltydogAccount": "I have a LoyaltyDog account", + "connectAnExistingProgramIncludingPos": "Connect an existing program (including POS accounts)", + "iMNewCreateAn": "I'm new — create an account", + "signUpAndStartANew": "Sign up and start a new loyalty program", + "connectionMethod": "Connection method", + "iReceivedAnActivationKeyBy": "I received an activation key by email", + "pasteTheOneTimeKeyFrom": "Paste the one-time key from your subscription email.", + "iHaveAProgramIdAnd": "I have a Program ID and API Key", + "forLegacyV1Customers": "For legacy v1 customers.", + "activationKey": "Activation key", + "pasteTheKeyFromYourEmail": "Paste the key from your email", + "sentToYourInboxAfterSubscribing": "Sent to your inbox after subscribing at loyalty.dog.", + "activate": "Activate", + "enterYourProgramIdAndApi": "Enter your Program ID and API Key from your %1$sLoyaltyDog dashboard%2$s.", + "eG507f1f77bcf86cd799439011": "e.g., 507f1f77bcf86cd799439011", + "foundInYourLoyaltydogDashboardUnder": "Found in your LoyaltyDog dashboard under Settings > API.", + "yourApiKey": "Your API key", + "keepThisSecretNeverShareYour": "Keep this secret. Never share your API key publicly.", + "validateampContinue": "Validate & Continue", + "createANewLoyaltydogAccountYour": "Create a new LoyaltyDog account. Your site URL will be pre-filled to speed up signup.", + "createAccountAtDashLoyaltyDog": "Create Account at dash.loyalty.dog", + "afterCreatingYourAccountReturnHere": "After creating your account, return here and select \\\"I have a LoyaltyDog account\\\" to connect.", + "configurePoints": "Configure Points", + "chooseAPresetOrSetUp": "Choose a preset or set up your own earning rate. You can always change these later in Settings.", + "pointsPreset": "Points preset", + "simple": "Simple", + "easyToUnderstandForCustomers": "Easy to understand for customers.", + "recommended": "Recommended", + "generous": "Generous", + "greatForBuildingEngagementFast": "Great for building engagement fast.", + "custom": "Custom", + "setYourOwnRate": "Set your own rate", + "fullControlOverEarningRules": "Full control over earning rules.", + "earnRate": "Earn rate", + "pointsForEvery": "points for every", + "currencyAmount": "Currency amount", + "spent": "spent", + "bonusPointsForSignup": "Bonus points for signup", + "pointsAwardedWhenANewCustomer": "Points awarded when a new customer creates an account. Set to 0 to disable.", + "earnPointsWhenOrderStatusIs": "Earn points when order status is:", + "processing": "Processing", + "completed": "Completed", + "onHold": "On Hold", + "back": "Back", + "saveampFinish": "Save & Finish", + "youReAllSet": "You're All Set!", + "yourLoyaltyProgramIsNowActive": "Your loyalty program is now active. Customers will start earning points on their next purchase.", + "checkingConnection": "Checking connection...", + "whatSNext": "What's next?", + "customizeYourPass": "Customize your pass", + "designYourDigitalLoyaltyPassIn": "Design your digital loyalty pass in the portal.", + "readTheDocs": "Read the docs", + "learnHowToConfigureRulesCampaigns": "Learn how to configure rules, campaigns, and more.", + "testItYourself": "Test it yourself", + "viewTheCustomerFacingLoyaltyPage": "View the customer-facing loyalty page on your store.", + "goToSettings": "Go to Settings", + "goToDashboard": "Go to Dashboard", + "permissionDenied": "Permission denied.", + "bothProgramIdAndApiKey": "Both Program ID and API Key are required.", + "invalidApiKeyPleaseCheckYour": "Invalid API Key. Please check your credentials.", + "programNotFoundPleaseCheckYour": "Program not found. Please check your Program ID.", + "connectionFailedHttpPleaseTryAgain": "Connection failed (HTTP %s). Please try again.", + "connectionSuccessful": "Connection successful!", + "credentialsAreRequired": "Credentials are required.", + "setupComplete": "Setup complete!", + "apiUnreachableHttp": "API unreachable (HTTP %s)", + "activationKeyLooksMalformedPasteThe": "Activation key looks malformed. Paste the key exactly as it appears in your email.", + "activating": "Activating…", + "connectedContinuingToConfiguration": "Connected. Continuing to configuration…", + "activationFailedPleaseTryAgain": "Activation failed. Please try again.", + "networkErrorPleaseTryAgain": "Network error. Please try again.", + "pleaseEnterBothProgramIdAnd": "Please enter both Program ID and API Key.", + "validating": "Validating...", + "validateContinue": "Validate & Continue", + "program": "Program:", + "saving": "Saving...", + "saveFinish": "Save & Finish", + "connectionIssue": "Connection issue" + }, + "program": { + "loyaltyPrograms": "Loyalty Programs", + "createNewProgram": "Create New Program", + "programName": "Program Name", + "thisNameWillAppearToYour": "This name will appear to your customers", + "createProgram": "Create Program", + "cancel": "Cancel", + "failedToLoadPrograms": "Failed to load programs", + "failedToLoadProgramsPleaseTry": "Failed to load programs. Please try again.", + "noProgramsYet": "No programs yet", + "createYourFirstProgram": "Create Your First Program", + "created": "Created", + "failedToCreateProgramPleaseTry": "Failed to create program. Please try again." + }, + "diagnostics": { + "pluginWonTActivate": "Plugin won't activate", + "checkPhpVersionRequires74": "Check PHP version (requires 7.4+)", + "verifyMysqlVersionRequires57": "Verify MySQL version (requires 5.7+)", + "checkErrorLogsForSpecificErrors": "Check error logs for specific errors", + "disableOtherPluginsAndTryAgain": "Disable other plugins and try again", + "productsNotSyncing": "Products not syncing", + "verifyWoocommerceIsInstalled": "Verify WooCommerce is installed", + "checkSyncLogsForErrors": "Check sync logs for errors", + "manualSyncGoToSettingsSync": "Manual sync: Go to Settings > Sync Status", + "checkDatabasePermissions": "Check database permissions", + "webhookFailures": "Webhook failures", + "verifyWebhookUrlIsAccessible": "Verify webhook URL is accessible", + "checkSslCertificateValidity": "Check SSL certificate validity", + "reviewWebhookEventLogs": "Review webhook event logs", + "testWithManualWebhookDispatch": "Test with manual webhook dispatch", + "ticketCreatedWeLlRespondWithin": "Ticket %s created. We'll respond within 4 hours." + }, + "settingsSync": { + "serverReturnedAnUnexpectedResponseShape": "Server returned an unexpected response shape." } }, "widget": { "joinCta": "Junte-se ao nosso programa de fidelidade", "loginPrompt": "Por favor, faça login para ver seu programa de fidelidade." + }, + "plugin": { + "loyaltydog": "LoyaltyDog", + "httpsLoyaltydogIoWordpress": "https://loyaltydog.io/wordpress", + "pointsTiersAndRewardRedemptionFor": "Points, tiers, and reward redemption for WooCommerce. Live balance widget for shortcode, Gutenberg, Elementor, and the WC My Account page.", + "loyaltydogInc": "LoyaltyDog Inc.", + "httpsLoyaltyDog": "https://loyalty.dog", + "loyaltydogRequiresWordpress69Or": "LoyaltyDog requires WordPress 6.9 or newer.", + "youAreCurrentlyRunningWordpress": "You are currently running WordPress %s.", + "loyaltydogRequiresPhp80Or": "LoyaltyDog requires PHP 8.0 or newer.", + "youAreCurrentlyRunningPhp": "You are currently running PHP %s.", + "loyaltydogRequiresWoocommerceToBeInstalled": "LoyaltyDog requires WooCommerce to be installed and activated.", + "loyaltydogRequiresWoocommerce70Or": "LoyaltyDog requires WooCommerce 7.0 or newer.", + "youAreCurrentlyRunningWoocommerce": "You are currently running WooCommerce %s.", + "loyaltydogActivationFailedSystemRequirementsNot": "LoyaltyDog activation failed: system requirements not met." + }, + "misc": { + "invalidProgram": "Invalid program", + "emailOrPhoneIsRequired": "Email or phone is required", + "customerNotFound": "Customer not found", + "invalidParameters": "Invalid parameters", + "memberNotFound": "Member not found", + "memberEmailMissing": "Member email missing", + "oauthCredentialsNotConfigured": "OAuth credentials not configured", + "registrationIdNotFound": "Registration ID not found", + "backendUrlNotConfigured": "Backend URL not configured", + "failedToRotateSecretPleaseTry": "Failed to rotate secret. Please try again later.", + "coreApiReturnedAnError": "Core API returned an error", + "invalidResponseFromCoreApi": "Invalid response from Core API", + "failedToStoreNewSecret": "Failed to store new secret", + "webhookSecretRotatedSuccessfully": "Webhook secret rotated successfully", + "loyaltydogCredentialsAreNotConfigured": "LoyaltyDog credentials are not configured.", + "apiKeyIsRequired": "API key is required.", + "thatLooksLikeASessionJwt": "That looks like a session JWT (short-lived dashboard token), not a long-lived API key. Get the long-lived API key from your LoyaltyDog dashboard or via the plugin Connection page.", + "apiKeyContainsInvalidCharactersAllowed": "API key contains invalid characters. Allowed: letters, digits, underscore, hyphen, period.", + "apiKeyLengthIsOutOf": "API key length is out of range (10–256 characters).", + "apiKeyMustStartWithLoyaltydogpk": "API key must start with \\\"loyaltydog_pk_\\\". Get one from your LoyaltyDog dashboard.", + "profileNotFound": "Profile not found", + "tooManyRequestsPleaseTryAgain": "Too many requests. Please try again later.", + "pointsEarnedForAccountSignup": "Points earned for account signup", + "enterTheAmountOfPointsEarned": "Enter the amount of points earned when a customer signs up for an account.", + "pointsEarnedForWritingAReview": "Points earned for writing a review", + "enterTheAmountOfPointsEarned2": "Enter the amount of points earned when a customer first reviews a product.", + "currentLoyaltyPointsBalance": "Current loyalty points balance.", + "whetherTheCustomerIsEnrolledIn": "Whether the customer is enrolled in the loyalty program.", + "estimatedPointsTheCustomerWillEarn": "Estimated points the customer will earn from this order.", + "loyaltyReward": "Loyalty Reward", + "redeem": "REDEEM", + "redeemedSuccessfully": "Redeemed Successfully", + "xPointsBonusActive": "%sx points bonus active!", + "minimumSpendForPoints": "Minimum spend for points", + "minimumOrderTotalRequiredToEarn": "Minimum order total required to earn points. Leave empty to disable.", + "categoryPointMultipliers": "Category point multipliers", + "onePerLineCategoryslugMultiplierE": "One per line: category_slug:multiplier (e.g., electronics:2 for double points). If a product is in multiple categories, the highest multiplier applies.", + "timeLimitedCampaigns": "Time-limited campaigns", + "onePerLineMultiplierstartdateenddatelabelEG": "One per line: multiplier|start_date|end_date|label (e.g., 2|2026-03-01|2026-03-31|Double Points March). The highest active campaign multiplier applies to all orders. Lines starting with # are ignored.", + "welcomeTo1s2s": "Welcome to %1$s %2$s", + "loading": "Loading...", + "dashboard": "Dashboard", + "widget": "Widget", + "systemInfo": "System Info", + "allSetTakingYouToYour": "All set! Taking you to your dashboard…", + "activationFailed": "Activation failed.", + "loyaltyDiscount": "Loyalty Discount", + "nameFree": "{name} (FREE)", + "nameValueCurrency": "{name} ({value}{currency})", + "nameValueCurrency2": "{name} (-{value}{currency})", + "unableToGenerateASecureSession": "Unable to generate a secure session token. Please try again.", + "activatingYourLoyaltydogAccountHold": "Activating your LoyaltyDog account — hold on tight!", + "activationFailedSessionExpiredPlease": "Activation failed — session expired. Please try again.", + "tryAgain": "Try Again", + "connectYourLoyaltyProgramToWoocommerce": "Connect your loyalty program to WooCommerce.", + "pasteYourActivationKeyHere": "Paste your activation key here", + "activateLoyaltydog": "Activate LoyaltyDog", + "havingTroubleContactSupport": "Having trouble? Contact support", + "accountLinkedSuccessfully": "Account Linked Successfully!", + "yourLoyaltydogAccountIsNowConnected": "Your %s LoyaltyDog account is now connected to your WordPress store.", + "dashboardImplementationComingInFutureUpdates": "Dashboard implementation coming in future updates.", + "increasePointMultiplierForTopSelling": "Increase point multiplier for top-selling category (Electronics) to boost engagement", + "createAWinBackCampaignFor": "Create a win-back campaign for 120 inactive members who spent $1000+ lifetime", + "reduceTierAdvancementRequirementsToIncrease": "Reduce tier advancement requirements to increase Gold tier members by 20%", + "highValueSpent100095Engagement": "High-Value: Spent $1000+, 95% engagement", + "regularSpent100100070Engagement": "Regular: Spent $100-1000, 70% engagement", + "occasionalSpent10030Engagement": "Occasional: Spent <$100, 30% engagement", + "inactiveNoPurchasesIn60Days": "Inactive: No purchases in 60 days", + "createWinBackCampaignForInactive": "Create win-back campaign for inactive members", + "criticalIssues": "Critical Issues", + "warnings": "Warnings", + "webhookSecretNotConfigured": "Webhook secret not configured", + "missingStripeSignatureHeader": "Missing Stripe-Signature header", + "malformedStripeSignatureHeader": "Malformed Stripe-Signature header", + "stripeSignatureTimestampIsNotNumeric": "Stripe-Signature timestamp is not numeric", + "webhookSignatureTimestampOutsideToleranceWindow": "Webhook signature timestamp outside tolerance window", + "webhookSignatureVerificationFailed": "Webhook signature verification failed", + "invalidWebhookPayload": "Invalid webhook payload", + "dependsOnTheLastVersionOf": "depends on the last version of WooCommerce to work!", + "activeWoocommerce": "Active WooCommerce", + "installWoocommerce": "Install WooCommerce", + "youHave": "You have ", + "pointsEarn": " points. Earn ", + "moreWithThisOrder": " more with this order.", + "loyaltyPoints": " loyalty points." + }, + "frontend": { + "points": { + "loyaltyPoints": "Loyalty Points", + "youAreNotYetEnrolledIn": "You are not yet enrolled in our loyalty program. Points are earned automatically when you make purchases.", + "yourPointsBalance": "Your Points Balance", + "points": "points", + "tier": "Tier: %s", + "activeReward": "Active Reward", + "addItemsToYourCartTo": "Add items to your cart to redeem this reward at checkout.", + "viewCart": "View cart", + "howToEarnPoints": "How to Earn Points", + "earn1sPointsForEvery2s": "Earn %1$s points for every %2$s spent", + "pointsForCreatingAnAccount": "%s points for creating an account", + "pointsForWritingAProductReview": "%s points for writing a product review", + "pointsForReferringAFriend": "%s points for referring a friend", + "strongLoyaltyPointsStrongYouHave": "Loyalty Points: You have %s points.", + "viewDetails": "View details", + "points2": "%s points" + }, + "customerExport": { + "youMustBeLoggedInTo": "You must be logged in to export your loyalty data.", + "securityCheckFailedPleaseReloadAnd": "Security check failed. Please reload and try again.", + "youCanRequestOneLoyaltyData": "You can request one loyalty-data export per 24 hours. Please try again tomorrow.", + "weCouldNotPrepareYourExport": "We could not prepare your export right now. Please try again later or contact support." + }, + "account": { + "loyaltyProgram": "Loyalty Program", + "downloadMyLoyaltyData": "Download my loyalty data", + "notificationPreferences": "Notification preferences", + "yourNotificationPreferencesHaveBeenSaved": "Your notification preferences have been saved.", + "emailMeWhenMyLoyaltyTier": "Email me when my loyalty tier changes", + "savePreferences": "Save preferences" + }, + "checkout": { + "loadingLoyaltyInformation": "Loading loyalty information...", + "identifyingCustomer": "Identifying customer...", + "errorLoadingLoyaltyProgramPleaseTry": "Error loading loyalty program. Please try again.", + "emailOrPhone": "Email or Phone", + "enterEmailOrPhone": "Enter email or phone", + "findAccount": "Find Account", + "welcome": "Welcome", + "pointsBalance": "Points Balance:", + "availableRewards": "Available Rewards", + "selectAReward": "--- Select a reward ---", + "applyReward": "Apply Reward", + "appliedLoyaltyDiscounts": "Applied Loyalty Discounts" + }, + "redeem": { + "loyaltydogReward": "LoyaltyDog Reward" + }, + "checkoutService": { + "networkErrorWhileApplyingRewardPlease": "Network error while applying reward. Please try again.", + "youDoNotHaveEnoughPoints": "You do not have enough points for this reward.", + "rewardNotFoundOrNoLonger": "Reward not found or no longer available.", + "failedToApplyReward": "Failed to apply reward.", + "rewardApplied": "Reward applied." + }, + "blocks": { + "displayTheLoyaltydogLoyaltyWidgetFor": "Display the LoyaltyDog loyalty widget for logged-in customers.", + "loyalty": "loyalty", + "points": "points", + "rewards": "rewards", + "loyaltydog": "loyaltydog" + } + }, + "emails": { + "invalidEmailAddress": "Invalid email address", + "invalidVerificationCodeFormat": "Invalid verification code format", + "emailServiceNotConfigured": "Email service not configured", + "loyaltydogAccountVerification": "LoyaltyDog Account Verification", + "failedToSendEmailViaSendgrid": "Failed to send email via SendGrid", + "verifyYourEmail": "Verify Your Email", + "thankYouForSigningUpFor": "Thank you for signing up for LoyaltyDog! To complete your account setup, please verify your email address using the code below:", + "yourVerificationCode": "Your verification code:", + "thisCodeWillExpireIn10": "This code will expire in 10 minutes", + "securityNotice": "Security Notice:", + "neverShareThisCodeWithAnyone": "Never share this code with anyone. We will never ask for it.", + "ifYouDidNotSignUp": "If you did not sign up for a LoyaltyDog account, please ignore this email.", + "allRightsReserved": "All rights reserved.", + "thisIsAnAutomatedEmailPlease": "This is an automated email. Please do not reply.", + "passwordIsRequired": "Password is required", + "welcomeToLoyaltydogYourAccountIs": "Welcome to LoyaltyDog - Your Account Is Ready", + "welcomeToLoyaltydog": "Welcome to LoyaltyDog!", + "yourLoyaltydogAccountForHasBeen": "Your LoyaltyDog account for %s has been created successfully.", + "yourLoyaltydogAccountHasBeenCreated": "Your LoyaltyDog account has been created successfully.", + "belowAreYourLoginCredentialsYou": "Below are your login credentials. You can use these to access your LoyaltyDog dashboard:", + "email": "Email", + "password": "Password", + "keepThisPasswordSafeAndDo": "Keep this password safe and do not share it with anyone. You can change your password after logging in.", + "ifYouDidNotCreateThis": "If you did not create this account, please contact our support team immediately." + }, + "privacy": { + "loyaltydogLoyaltyProgram": "LoyaltyDog loyalty program", + "firstName": "First name", + "lastName": "Last name", + "phone": "Phone", + "pointsBalance": "Points balance", + "tier": "Tier", + "enrollmentStatus": "Enrollment status", + "enrolledAt": "Enrolled at", + "whenYouUseLoyaltydogYourEmail": "When you use LoyaltyDog, your email address and order totals are sent to the LoyaltyDog cloud service (api.loyalty.dog) to calculate and store loyalty points. Loyalty transaction history may be retained locally in de-identified form (linked only to an internal member ID) after an erasure request. See loyalty.dog/privacy for details." } } } diff --git a/packages/i18n/locales/pt-PT/wordpress.json b/packages/i18n/locales/pt-PT/wordpress.json index f93457d..c15d0dd 100644 --- a/packages/i18n/locales/pt-PT/wordpress.json +++ b/packages/i18n/locales/pt-PT/wordpress.json @@ -8,7 +8,21 @@ "program": "Programa", "noProgramSelected": "Nenhum programa selecionado", "openDashboard": "Abrir o Painel LoyaltyDog", - "connectStore": "Conectar a sua loja" + "connectStore": "Conectar a sua loja", + "atAGlanceStatusOfYour": "At-a-glance status of your LoyaltyDog program. Detailed analytics live in the portal.", + "programSummaryMetrics": "Program summary metrics", + "connectionStatus": "Connection status", + "connection": "Connection", + "programWp": "Program: %s", + "pointsIssuedInTheLast30": "Points issued in the last 30 days", + "pointsIssued30d": "Points issued (30d)", + "valueNotYetAvailable": "Value not yet available", + "viewInPortal": "View in portal", + "totalMembersEnrolled": "Total members enrolled", + "members": "Members", + "latestActivity": "Latest activity", + "latestTransaction": "Latest transaction", + "noActivityYet": "No activity yet" }, "connection": { "title": "Conexão LoyaltyDog", @@ -26,7 +40,14 @@ "apiKeyNotConfigured": "Chave API não configurada", "httpError": "HTTP {{code}} da API", "connectionSuccessful": "Conexão bem-sucedida", - "unauthorized": "Não autorizado" + "unauthorized": "Não autorizado", + "youDoNotHavePermissionTo": "You do not have permission to access this page.", + "programId": "Program ID", + "php1sOrNewerIsRequired": "PHP %1$s or newer is required. This site is running PHP %2$s. Please ask your hosting provider to upgrade PHP before configuring LoyaltyDog.", + "wordpress1sOrNewerIsRequired": "WordPress %1$s or newer is required. This site is running WordPress %2$s.", + "woocommerceIsRequiredButIsNot": "WooCommerce is required but is not installed or activated.", + "woocommerce1sOrNewerIsRequired": "WooCommerce %1$s or newer is required. This site is running WooCommerce %2$s.", + "httpFromApi": "HTTP %d from API" }, "widget": { "title": "Widget LoyaltyDog", @@ -40,7 +61,28 @@ "save": "Guardar", "settingsSaved": "Definições guardadas.", "preview": "Pré-visualização", - "previewPlaceholder": "[O widget LoyaltyDog é apresentado aqui para clientes com sessão iniciada]" + "previewPlaceholder": "[O widget LoyaltyDog é apresentado aqui para clientes com sessão iniciada]", + "couldNotSaveSettingsToLoyaltydog": "Could not save settings to LoyaltyDog: %s", + "joinWidget": "Join Widget", + "shownToGuestVisitorsAndCustomers": "Shown to guest visitors and customers not yet in your loyalty program.", + "signupUrl": "Signup URL", + "theShareJoinUrlFromYour": "The share/join URL from your loyalty program dashboard. Opens in a new tab.", + "qrCode": "QR Code", + "showQrCodeAlongsideJoinText": "Show QR code alongside join text", + "customersCanScanWithTheirPhone": "Customers can scan with their phone to open the signup form directly.", + "checkoutRedemption": "Checkout Redemption", + "allowCustomersToAutomaticallyRedeemLoyalty": "Allow customers to automatically redeem loyalty points as a discount at checkout.", + "enableRedemption": "Enable Redemption", + "applyLoyaltyPointsAsACart": "Apply loyalty points as a cart discount at checkout", + "whenEnabledAllAvailablePointsAre": "When enabled, all available points are automatically applied as a discount. Customers can see this in their cart.", + "pointsValue": "Points Value", + "currencyPerPoint": "currency per point", + "eG001Means100": "e.g. 0.01 means 100 points = $1.00 discount. Range: 0.001–1.0.", + "emailNotifications": "Email Notifications", + "controlWhichTransactionalEmailsCustomersReceive": "Control which transactional emails customers receive from your loyalty program.", + "tierChangeEmails": "Tier Change Emails", + "sendANotificationWhenACustomer": "Send a notification when a customer moves between loyalty tiers", + "customersCanAlsoOptOutIndividually": "Customers can also opt out individually under My Account → Loyalty." }, "systemInfo": { "title": "Informações do sistema LoyaltyDog", @@ -51,12 +93,592 @@ "woocommerceVersion": "Versão do WooCommerce", "pluginVersion": "Versão do plugin", "pendingActions": "Ações AS pendentes", - "notActive": "Inativo" + "notActive": "Inativo", + "systemInformation": "System Information", + "compatibilityStatus": "Compatibility Status", + "yourPlatformMeetsAllRequirements": "Your platform meets all requirements", + "somePlatformRequirementsAreNotMet": "Some platform requirements are not met", + "wordpress": "WordPress", + "version": "Version:", + "language": "Language:", + "timezone": "Timezone:", + "multisite": "Multisite:", + "yes": "Yes", + "no": "No", + "woocommerce": "WooCommerce", + "status": "Status:", + "active": "Active", + "currency": "Currency:", + "restApi": "REST API:", + "enabled": "Enabled", + "disabled": "Disabled", + "php": "PHP", + "sapi": "SAPI:", + "maxInputVars": "Max Input Vars:", + "postMaxSize": "Post Max Size:", + "uploadMaxSize": "Upload Max Size:", + "phpExtensions": "PHP Extensions", + "required": "Required", + "loaded": "Loaded", + "missing": "Missing", + "optional": "Optional", + "serverResources": "Server Resources", + "memoryLimit": "Memory Limit:", + "currentMemoryUsage": "Current Memory Usage:", + "maxExecutionTime": "Max Execution Time:", + "serverSoftware": "Server Software:", + "wpDebug": "WP Debug:" + }, + "credentials": { + "securityCheckFailed": "Security check failed", + "invalidCredentialKey": "Invalid credential key", + "credentialValueIsRequired": "Credential value is required", + "invalidCredentialFormat": "Invalid credential format", + "failedToStoreCredentialPleaseTry": "Failed to store credential. Please try again.", + "credentialUpdatedSuccessfully": "Credential updated successfully", + "failedToDeleteCredentialPleaseTry": "Failed to delete credential. Please try again.", + "credentialDeletedSuccessfully": "Credential deleted successfully", + "noCredentialsToExport": "No credentials to export", + "noFileProvided": "No file provided", + "fileUploadFailed": "File upload failed", + "invalidFileTypePleaseUploadA": "Invalid file type. Please upload a JSON file.", + "invalidImportFileFormat": "Invalid import file format", + "noCredentialsWereImported": "No credentials were imported", + "credentialsImportedSuccessfully": "%d credentials imported successfully" + }, + "settings": { + "loyaltydogCredentials": "LoyaltyDog Credentials", + "manageYourApiKeysAndIntegration": "Manage your API keys and integration credentials.", + "status": "Status", + "stripe": "Stripe", + "coreApi": "Core API", + "auditLog": "Audit Log", + "backup": "Backup", + "stripeSecretKey": "Stripe Secret Key", + "stripeWebhookSecret": "Stripe Webhook Secret", + "stripePublicKey": "Stripe Public Key", + "stripePriceId": "Stripe Price ID", + "credentialStatus": "Credential Status", + "credential": "Credential", + "type": "Type", + "lastUpdated": "Last Updated", + "actions": "Actions", + "notConfigured": "Not Configured", + "encrypted": "Encrypted", + "plainText": "Plain text", + "edit": "Edit", + "delete": "Delete", + "configure": "Configure", + "stripeConfiguration": "Stripe Configuration", + "secretKey": "Secret Key", + "findInStripeDashboardDevelopers": "Find in Stripe Dashboard → Developers → API Keys", + "configured": "Configured: ", + "update": "Update", + "clear": "Clear", + "publishableKey": "Publishable Key", + "webhookSigningSecret": "Webhook Signing Secret", + "findInStripeDashboardDevelopers2": "Find in Stripe Dashboard → Developers → Webhooks → Show signing secret", + "monthlyPriceId": "Monthly Price ID", + "stripePriceIdFor29Month": "Stripe price ID for $29/month subscription", + "loyaltydogApiCredentials": "LoyaltyDog API Credentials", + "oauthStyleCredentialsGeneratedDuringAccount": "OAuth-style credentials generated during account registration. These credentials are auto-generated and cannot be manually edited.", + "notConnected": "Not Connected", + "clickTheButtonBelowToConnect": "Click the button below to connect your WordPress store to LoyaltyDog.", + "connectToLoyaltydog": "Connect to LoyaltyDog", + "registrationStatus": "Registration Status", + "apiKeyIsSecurelyEncryptedIn": "API key is securely encrypted in storage.", + "webhookSecret": "Webhook Secret", + "webhookSecretIsSecurelyEncryptedIn": "Webhook secret is securely encrypted in storage and never displayed.", + "rotateWebhookSecret": "Rotate Webhook Secret", + "generateANewWebhookSecretFor": "Generate a new webhook secret for security purposes. Old secret remains valid for 7 days.", + "howToReconfigure": "How to reconfigure:", + "toResetOrChangeYourLoyaltydog": "To reset or change your LoyaltyDog integration, contact support or delete the plugin and reinstall to re-run the account setup wizard.", + "detailedAuditLogOfAllCredential": "Detailed audit log of all credential operations is available in WordPress error logs.", + "checkYourWordpressDebugLogFile": "Check your WordPress debug log file for detailed audit information: %s", + "recentOperations": "Recent Operations:", + "allCredentialUpdatesAreLoggedAutomatically": "All credential updates are logged automatically", + "allCredentialDeletionsAreLoggedAutomatically": "All credential deletions are logged automatically", + "allCredentialAccessIsLoggedRead": "All credential access is logged (read, decrypt)", + "logsIncludeUserTimestampAndAction": "Logs include user, timestamp, and action type", + "credentialValuesAreNeverLoggedSanitized": "Credential values are never logged (sanitized)", + "backupRestore": "Backup & Restore", + "exportCredentials": "Export Credentials", + "exportYourEncryptedCredentialsAsA": "Export your encrypted credentials as a backup. Keep this file secure.", + "exportCredentialsEncrypted": "Export Credentials (Encrypted)", + "importCredentials": "Import Credentials", + "restoreCredentialsFromAPreviouslyExported": "Restore credentials from a previously exported backup.", + "warning": "Warning:", + "importedCredentialsWillOverwriteExistingCredentials": "Imported credentials will overwrite existing credentials. Back up before importing." + }, + "encryptionKeyNotice": { + "yourAes256EncryptionKeyCurrently": "Your AES-256 encryption key currently lives in wp_options alongside the credentials it protects. A stolen database backup would give an attacker both halves at once. Add the line below to wp-config.php (above the \\\"/* That's all, stop editing! */\\\" comment) to separate the key from the data, then delete the loyaltydog_encryption_key option.", + "thisNoticeDisappearsOnceTheConstant": "This notice disappears once the constant is in place. The plugin keeps reading from wp_options until you remove that entry, so existing encrypted credentials stay readable throughout the migration." + }, + "notices": { + "loyaltydogV2MigrationCompletedAutomatically": "LoyaltyDog v2 migration completed automatically", + "yourLoyaltyDataWasMigratedWithout": "Your loyalty data was migrated without a coordinated maintenance window. Please contact support so we can verify your totals against our backend.", + "contactSupportLoyaltyDog": "Contact support.loyalty.dog", + "loyaltydogUpgradedToV203": "LoyaltyDog upgraded to v2.0.3", + "yourExistingProgramSettingsAndMember": "Your existing program settings and member point balances were carried over automatically.", + "reviewConnection": "Review Connection", + "dismiss": "Dismiss", + "loyaltydogV1V2MigrationFailed": "LoyaltyDog v1 → v2 migration failed.", + "error": "Error: %s", + "recoveryGuide": "Recovery guide", + "thePluginWillRetryAutomaticallyOn": "The plugin will retry automatically on the next admin pageload." + }, + "subscriptionLapse": { + "yourLoyaltydogWordpressAddOnPayment": "Your LoyaltyDog WordPress add-on payment failed.", + "loyaltyOperationsContinueForNowStripe": "Loyalty operations continue for now. Stripe will retry the payment automatically; if it fails, your subscription will be canceled and the loyalty program will pause until a new payment method is added.", + "updatePaymentMethod": "Update payment method", + "remindMeTomorrow": "Remind me tomorrow", + "yourLoyaltydogWordpressAddOnSubscription": "Your LoyaltyDog WordPress add-on subscription is canceled.", + "loyaltyOperationsArePausedExistingCustomer": "Loyalty operations are paused. Existing customer point balances remain intact. Resubscribe to resume earning and redemption.", + "resubscribe": "Resubscribe" + }, + "trialNotices": { + "trialExpired": "Trial expired", + "trialDayRemaining": "Trial: %d day remaining", + "welcomeToLoyaltydog": "Welcome to LoyaltyDog.", + "signUpForAFree30": "Sign up for a free 30-day trial to activate your points program. No credit card required.", + "startYourFreeTrial": "Start your free trial", + "yourLoyaltydogTrialEndsInDay": "Your LoyaltyDog trial ends in %d day.", + "upgradeNowToKeepAwardingPoints": "Upgrade now to keep awarding points after the trial ends.", + "upgradeNow": "Upgrade now", + "remindMeLater": "Remind me later", + "yourLoyaltydogTrialHasEnded": "Your LoyaltyDog trial has ended.", + "yourStorefrontContinuesToWorkBut": "Your storefront continues to work, but new points will not be awarded until you upgrade. Existing balances remain intact." + }, + "activation": { + "securityCheckFailed": "Security check failed.", + "insufficientPermissions": "Insufficient permissions.", + "invalidActivationKey": "Invalid activation key.", + "unableToReachLoyaltydogRightNow": "Unable to reach LoyaltyDog right now. Please try again shortly.", + "thisActivationLinkHasExpiredPlease": "This activation link has expired. Please return to LoyaltyDog to generate a new one.", + "tooManyAttemptsPleaseWaitA": "Too many attempts. Please wait a few minutes and try again.", + "somethingWentWrongDuringActivationPlease": "Something went wrong during activation. Please try again or contact support.", + "unableToStoreCredentialsSecurelyPlease": "Unable to store credentials securely. Please try again.", + "accountActivatedSuccessfully": "Account activated successfully!" + }, + "testConnection": { + "invalidRequest": "Invalid request", + "connectionTestFailed": "Connection test failed", + "yourWordpressPluginIsSuccessfullyConnected": "Your WordPress plugin is successfully connected to the Core API." + }, + "help": { + "gettingStarted": "Getting Started", + "settings": "Settings", + "pointsRules": "Points & Rules", + "shortcodes": "Shortcodes", + "gettingStartedWithLoyaltydog": "Getting Started with LoyaltyDog", + "loyaltydogAddsADigitalLoyaltyProgram": "LoyaltyDog adds a digital loyalty program to your WooCommerce store. Customers earn points on purchases and redeem them for rewards.", + "enterYour1sprogramId2sAnd1sapi": "Enter your %1$sProgram ID%2$s and %1$sAPI Key%2$s in Settings. Get these from your LoyaltyDog dashboard.", + "configureThePointsConversionRateE": "Configure the points conversion rate (e.g., 1 point per $1 spent).", + "setUpOfferMessagesThatCustomers": "Set up offer messages that customers see when they have rewards.", + "optionallyConfigureCategoryMultipliersCampaignsAnd": "Optionally configure category multipliers, campaigns, and referral rewards.", + "customersWillSeeTheirPointsBalance": "Customers will see their points balance in My Account > Loyalty Points, and on the cart/checkout pages.", + "settingsReference": "Settings Reference", + "yourUniqueLoyaltydogProgramIdentifierFound": "Your unique LoyaltyDog program identifier. Found in Dashboard > Settings > API.", + "secretKeyForApiAuthenticationNever": "Secret key for API authentication. Never share this publicly.", + "earnPointsWhen": "Earn Points When", + "controlsWhenPointsAreAwardedProcessing": "Controls when points are awarded. \\\"Processing\\\" is recommended for most stores.", + "pointsConversionRate": "Points Conversion Rate", + "howSpendingConvertsToPoints1": "How spending converts to points. \\\"1:1\\\" means 1 point per currency unit.", + "pointsRulesEngine": "Points & Rules Engine", + "categoryMultipliers": "Category Multipliers", + "awardBonusPointsForSpecificProduct": "Award bonus points for specific product categories. Enter one per line:", + "thisGives2xPointsForElectronics": "This gives 2x points for electronics and 1.5x for clothing. Use category slugs.", + "minimumSpend": "Minimum Spend", + "setAMinimumOrderTotalRequired": "Set a minimum order total required to earn any points. Orders below this amount earn 0 points.", + "timeLimitedCampaigns": "Time-Limited Campaigns", + "runPromotionalPeriodsWithBonusPoint": "Run promotional periods with bonus point multipliers. Enter one per line:", + "formatMultiplierstartdateenddatelabelLinesStartingWith": "Format: multiplier|start_date|end_date|label. Lines starting with # are ignored.", + "productLevelOverrides": "Product-Level Overrides", + "setAFixedPointValueFor": "Set a fixed point value for specific products using the %s custom field on the product edit page.", + "availableShortcodes": "Available Shortcodes", + "displayTheLoggedInCustomerS": "Display the logged-in customer's points balance inline. Returns empty for guests.", + "displayTheCustomerSReferralLink": "Display the customer's referral link. Requires the referral program to be configured.", + "resources": "Resources", + "supportCenter": "Support Center", + "configureLoyaltydog": "Configure LoyaltyDog", + "setUpYourLoyaltyProgramBy": "Set up your loyalty program by entering your Program ID and API Key in the LoyaltyDog settings.", + "hooksReference": "Hooks Reference" + }, + "menu": { + "manage": "Manage", + "strongLoyaltydogStrongIsAlmostReady": "LoyaltyDog is almost ready. To get started, %sset your LoyaltyDog account keys%s.", + "strongLoyaltydogStrongRequiresCouponsTo": "LoyaltyDog requires coupons to be %senabled%s in order to function properly and allow customers to redeem offer during checkout.", + "sendPushNotifications": "Send Push Notifications", + "message": "Message", + "pushNotificationsAreCompliantWithEu": "Push notifications are compliant with EU GDPR.", + "send": "Send", + "enableTheLoggingOfApiRequest": "Enable the logging of API request.", + "1sviewLog2s": "%1$sView Log%2$s", + "loyaltydogApi": "LoyaltyDog API", + "enterWithYourProgramId": "Enter with your program ID.", + "enterWithYourLoyaltydogApiKey": "Enter with your LoyaltyDog API key.", + "debugLog": "Debug Log", + "thisShouldBeCheckedOnlyIf": "This should be checked only if LoyaltyDog support suggests it to be checked.", + "pointsConversion": "Points Conversion", + "earnPointsWhenOrderStatusIs": "Earn Points When Order Status Is", + "behaviorHowPointsAreEarnedAnd": "Behavior how points are earned and rewards are redeemed.", + "pendingPayment": "Pending Payment", + "processing": "Processing", + "onHold": "On Hold", + "completed": "Completed", + "earnPointsConversionRate": "Earn Points Conversion Rate", + "setTheNumberOfPointsAwarded": "Set the number of points awarded based on the product price.", + "earnPointsRoundingMode": "Earn Points Rounding Mode", + "setHowPointsShouldBeRounded": "Set how points should be rounded.", + "roundToNearestInteger": "Round to nearest integer", + "alwaysRoundDown": "Always round down", + "alwaysRoundUp": "Always round up", + "offerMessages": "Offer Messages", + "adjustTheMessageByUsing1s": "Adjust the message by using %1$s{friendlyNameToBeAdded}%2$s, %1$s{friendlyName}%2$s, %1$s{name}%2$s, %1$s{value}%2$s, %1$s{currency}%2$s to represent the redeemed / available offer.", + "availableOfferMessage": "Available Offer Message", + "addAnOptionalMessageWhenUser": "Add an optional message when user have a active Loyalty offer. Limited HTML is allowed. Leave blank to disable.", + "strongActiveLoyaltyOfferStrongFriendlynametobeadded": "Active Loyalty Offer: {friendlyNameToBeAdded}.
You can add some products to redeem this offer.", + "redeemOfferMessage": "Redeem Offer Message", + "displayedOnTheCartAndCheckout": "Displayed on the cart and checkout page when cart is not empty and user have active offer. Limited HTML is allowed.", + "strongLoyaltyRewardStrongFriendlynametobeadded": "Loyalty Reward: {friendlyNameToBeAdded}", + "pointsEarnedForActions": "Points Earned for Actions", + "customersCanAlsoEarnPointsFor": "Customers can also earn points for actions like creating an account or writing a product review. You can enter the amount of points the customer will earn for each action in this section.", + "isRequired": "%s is required.", + "points": "Points", + "isInvalid": "%s is invalid.", + "messageCanNotBeBlank": "Message can not be blank.", + "messageHaveBeenSent": "Message have been sent." + }, + "wizard": { + "loyaltydogSetup": "LoyaltyDog Setup", + "loyaltyRewardsForYourWoocommerceStore": "Loyalty rewards for your WooCommerce store", + "setupSteps": "Setup steps", + "connect": "Connect", + "ready": "Ready", + "connectYourAccount": "Connect Your Account", + "accountType": "Account type", + "iHaveALoyaltydogAccount": "I have a LoyaltyDog account", + "connectAnExistingProgramIncludingPos": "Connect an existing program (including POS accounts)", + "iMNewCreateAn": "I'm new — create an account", + "signUpAndStartANew": "Sign up and start a new loyalty program", + "connectionMethod": "Connection method", + "iReceivedAnActivationKeyBy": "I received an activation key by email", + "pasteTheOneTimeKeyFrom": "Paste the one-time key from your subscription email.", + "iHaveAProgramIdAnd": "I have a Program ID and API Key", + "forLegacyV1Customers": "For legacy v1 customers.", + "activationKey": "Activation key", + "pasteTheKeyFromYourEmail": "Paste the key from your email", + "sentToYourInboxAfterSubscribing": "Sent to your inbox after subscribing at loyalty.dog.", + "activate": "Activate", + "enterYourProgramIdAndApi": "Enter your Program ID and API Key from your %1$sLoyaltyDog dashboard%2$s.", + "eG507f1f77bcf86cd799439011": "e.g., 507f1f77bcf86cd799439011", + "foundInYourLoyaltydogDashboardUnder": "Found in your LoyaltyDog dashboard under Settings > API.", + "yourApiKey": "Your API key", + "keepThisSecretNeverShareYour": "Keep this secret. Never share your API key publicly.", + "validateampContinue": "Validate & Continue", + "createANewLoyaltydogAccountYour": "Create a new LoyaltyDog account. Your site URL will be pre-filled to speed up signup.", + "createAccountAtDashLoyaltyDog": "Create Account at dash.loyalty.dog", + "afterCreatingYourAccountReturnHere": "After creating your account, return here and select \\\"I have a LoyaltyDog account\\\" to connect.", + "configurePoints": "Configure Points", + "chooseAPresetOrSetUp": "Choose a preset or set up your own earning rate. You can always change these later in Settings.", + "pointsPreset": "Points preset", + "simple": "Simple", + "easyToUnderstandForCustomers": "Easy to understand for customers.", + "recommended": "Recommended", + "generous": "Generous", + "greatForBuildingEngagementFast": "Great for building engagement fast.", + "custom": "Custom", + "setYourOwnRate": "Set your own rate", + "fullControlOverEarningRules": "Full control over earning rules.", + "earnRate": "Earn rate", + "pointsForEvery": "points for every", + "currencyAmount": "Currency amount", + "spent": "spent", + "bonusPointsForSignup": "Bonus points for signup", + "pointsAwardedWhenANewCustomer": "Points awarded when a new customer creates an account. Set to 0 to disable.", + "earnPointsWhenOrderStatusIs": "Earn points when order status is:", + "processing": "Processing", + "completed": "Completed", + "onHold": "On Hold", + "back": "Back", + "saveampFinish": "Save & Finish", + "youReAllSet": "You're All Set!", + "yourLoyaltyProgramIsNowActive": "Your loyalty program is now active. Customers will start earning points on their next purchase.", + "checkingConnection": "Checking connection...", + "whatSNext": "What's next?", + "customizeYourPass": "Customize your pass", + "designYourDigitalLoyaltyPassIn": "Design your digital loyalty pass in the portal.", + "readTheDocs": "Read the docs", + "learnHowToConfigureRulesCampaigns": "Learn how to configure rules, campaigns, and more.", + "testItYourself": "Test it yourself", + "viewTheCustomerFacingLoyaltyPage": "View the customer-facing loyalty page on your store.", + "goToSettings": "Go to Settings", + "goToDashboard": "Go to Dashboard", + "permissionDenied": "Permission denied.", + "bothProgramIdAndApiKey": "Both Program ID and API Key are required.", + "invalidApiKeyPleaseCheckYour": "Invalid API Key. Please check your credentials.", + "programNotFoundPleaseCheckYour": "Program not found. Please check your Program ID.", + "connectionFailedHttpPleaseTryAgain": "Connection failed (HTTP %s). Please try again.", + "connectionSuccessful": "Connection successful!", + "credentialsAreRequired": "Credentials are required.", + "setupComplete": "Setup complete!", + "apiUnreachableHttp": "API unreachable (HTTP %s)", + "activationKeyLooksMalformedPasteThe": "Activation key looks malformed. Paste the key exactly as it appears in your email.", + "activating": "Activating…", + "connectedContinuingToConfiguration": "Connected. Continuing to configuration…", + "activationFailedPleaseTryAgain": "Activation failed. Please try again.", + "networkErrorPleaseTryAgain": "Network error. Please try again.", + "pleaseEnterBothProgramIdAnd": "Please enter both Program ID and API Key.", + "validating": "Validating...", + "validateContinue": "Validate & Continue", + "program": "Program:", + "saving": "Saving...", + "saveFinish": "Save & Finish", + "connectionIssue": "Connection issue" + }, + "program": { + "loyaltyPrograms": "Loyalty Programs", + "createNewProgram": "Create New Program", + "programName": "Program Name", + "thisNameWillAppearToYour": "This name will appear to your customers", + "createProgram": "Create Program", + "cancel": "Cancel", + "failedToLoadPrograms": "Failed to load programs", + "failedToLoadProgramsPleaseTry": "Failed to load programs. Please try again.", + "noProgramsYet": "No programs yet", + "createYourFirstProgram": "Create Your First Program", + "created": "Created", + "failedToCreateProgramPleaseTry": "Failed to create program. Please try again." + }, + "diagnostics": { + "pluginWonTActivate": "Plugin won't activate", + "checkPhpVersionRequires74": "Check PHP version (requires 7.4+)", + "verifyMysqlVersionRequires57": "Verify MySQL version (requires 5.7+)", + "checkErrorLogsForSpecificErrors": "Check error logs for specific errors", + "disableOtherPluginsAndTryAgain": "Disable other plugins and try again", + "productsNotSyncing": "Products not syncing", + "verifyWoocommerceIsInstalled": "Verify WooCommerce is installed", + "checkSyncLogsForErrors": "Check sync logs for errors", + "manualSyncGoToSettingsSync": "Manual sync: Go to Settings > Sync Status", + "checkDatabasePermissions": "Check database permissions", + "webhookFailures": "Webhook failures", + "verifyWebhookUrlIsAccessible": "Verify webhook URL is accessible", + "checkSslCertificateValidity": "Check SSL certificate validity", + "reviewWebhookEventLogs": "Review webhook event logs", + "testWithManualWebhookDispatch": "Test with manual webhook dispatch", + "ticketCreatedWeLlRespondWithin": "Ticket %s created. We'll respond within 4 hours." + }, + "settingsSync": { + "serverReturnedAnUnexpectedResponseShape": "Server returned an unexpected response shape." } }, "widget": { "joinCta": "Junte-se ao nosso programa de fidelidade", "loginPrompt": "Por favor, inicie sessão para ver o seu programa de fidelidade." + }, + "plugin": { + "loyaltydog": "LoyaltyDog", + "httpsLoyaltydogIoWordpress": "https://loyaltydog.io/wordpress", + "pointsTiersAndRewardRedemptionFor": "Points, tiers, and reward redemption for WooCommerce. Live balance widget for shortcode, Gutenberg, Elementor, and the WC My Account page.", + "loyaltydogInc": "LoyaltyDog Inc.", + "httpsLoyaltyDog": "https://loyalty.dog", + "loyaltydogRequiresWordpress69Or": "LoyaltyDog requires WordPress 6.9 or newer.", + "youAreCurrentlyRunningWordpress": "You are currently running WordPress %s.", + "loyaltydogRequiresPhp80Or": "LoyaltyDog requires PHP 8.0 or newer.", + "youAreCurrentlyRunningPhp": "You are currently running PHP %s.", + "loyaltydogRequiresWoocommerceToBeInstalled": "LoyaltyDog requires WooCommerce to be installed and activated.", + "loyaltydogRequiresWoocommerce70Or": "LoyaltyDog requires WooCommerce 7.0 or newer.", + "youAreCurrentlyRunningWoocommerce": "You are currently running WooCommerce %s.", + "loyaltydogActivationFailedSystemRequirementsNot": "LoyaltyDog activation failed: system requirements not met." + }, + "misc": { + "invalidProgram": "Invalid program", + "emailOrPhoneIsRequired": "Email or phone is required", + "customerNotFound": "Customer not found", + "invalidParameters": "Invalid parameters", + "memberNotFound": "Member not found", + "memberEmailMissing": "Member email missing", + "oauthCredentialsNotConfigured": "OAuth credentials not configured", + "registrationIdNotFound": "Registration ID not found", + "backendUrlNotConfigured": "Backend URL not configured", + "failedToRotateSecretPleaseTry": "Failed to rotate secret. Please try again later.", + "coreApiReturnedAnError": "Core API returned an error", + "invalidResponseFromCoreApi": "Invalid response from Core API", + "failedToStoreNewSecret": "Failed to store new secret", + "webhookSecretRotatedSuccessfully": "Webhook secret rotated successfully", + "loyaltydogCredentialsAreNotConfigured": "LoyaltyDog credentials are not configured.", + "apiKeyIsRequired": "API key is required.", + "thatLooksLikeASessionJwt": "That looks like a session JWT (short-lived dashboard token), not a long-lived API key. Get the long-lived API key from your LoyaltyDog dashboard or via the plugin Connection page.", + "apiKeyContainsInvalidCharactersAllowed": "API key contains invalid characters. Allowed: letters, digits, underscore, hyphen, period.", + "apiKeyLengthIsOutOf": "API key length is out of range (10–256 characters).", + "apiKeyMustStartWithLoyaltydogpk": "API key must start with \\\"loyaltydog_pk_\\\". Get one from your LoyaltyDog dashboard.", + "profileNotFound": "Profile not found", + "tooManyRequestsPleaseTryAgain": "Too many requests. Please try again later.", + "pointsEarnedForAccountSignup": "Points earned for account signup", + "enterTheAmountOfPointsEarned": "Enter the amount of points earned when a customer signs up for an account.", + "pointsEarnedForWritingAReview": "Points earned for writing a review", + "enterTheAmountOfPointsEarned2": "Enter the amount of points earned when a customer first reviews a product.", + "currentLoyaltyPointsBalance": "Current loyalty points balance.", + "whetherTheCustomerIsEnrolledIn": "Whether the customer is enrolled in the loyalty program.", + "estimatedPointsTheCustomerWillEarn": "Estimated points the customer will earn from this order.", + "loyaltyReward": "Loyalty Reward", + "redeem": "REDEEM", + "redeemedSuccessfully": "Redeemed Successfully", + "xPointsBonusActive": "%sx points bonus active!", + "minimumSpendForPoints": "Minimum spend for points", + "minimumOrderTotalRequiredToEarn": "Minimum order total required to earn points. Leave empty to disable.", + "categoryPointMultipliers": "Category point multipliers", + "onePerLineCategoryslugMultiplierE": "One per line: category_slug:multiplier (e.g., electronics:2 for double points). If a product is in multiple categories, the highest multiplier applies.", + "timeLimitedCampaigns": "Time-limited campaigns", + "onePerLineMultiplierstartdateenddatelabelEG": "One per line: multiplier|start_date|end_date|label (e.g., 2|2026-03-01|2026-03-31|Double Points March). The highest active campaign multiplier applies to all orders. Lines starting with # are ignored.", + "welcomeTo1s2s": "Welcome to %1$s %2$s", + "loading": "Loading...", + "dashboard": "Dashboard", + "widget": "Widget", + "systemInfo": "System Info", + "allSetTakingYouToYour": "All set! Taking you to your dashboard…", + "activationFailed": "Activation failed.", + "loyaltyDiscount": "Loyalty Discount", + "nameFree": "{name} (FREE)", + "nameValueCurrency": "{name} ({value}{currency})", + "nameValueCurrency2": "{name} (-{value}{currency})", + "unableToGenerateASecureSession": "Unable to generate a secure session token. Please try again.", + "activatingYourLoyaltydogAccountHold": "Activating your LoyaltyDog account — hold on tight!", + "activationFailedSessionExpiredPlease": "Activation failed — session expired. Please try again.", + "tryAgain": "Try Again", + "connectYourLoyaltyProgramToWoocommerce": "Connect your loyalty program to WooCommerce.", + "pasteYourActivationKeyHere": "Paste your activation key here", + "activateLoyaltydog": "Activate LoyaltyDog", + "havingTroubleContactSupport": "Having trouble? Contact support", + "accountLinkedSuccessfully": "Account Linked Successfully!", + "yourLoyaltydogAccountIsNowConnected": "Your %s LoyaltyDog account is now connected to your WordPress store.", + "dashboardImplementationComingInFutureUpdates": "Dashboard implementation coming in future updates.", + "increasePointMultiplierForTopSelling": "Increase point multiplier for top-selling category (Electronics) to boost engagement", + "createAWinBackCampaignFor": "Create a win-back campaign for 120 inactive members who spent $1000+ lifetime", + "reduceTierAdvancementRequirementsToIncrease": "Reduce tier advancement requirements to increase Gold tier members by 20%", + "highValueSpent100095Engagement": "High-Value: Spent $1000+, 95% engagement", + "regularSpent100100070Engagement": "Regular: Spent $100-1000, 70% engagement", + "occasionalSpent10030Engagement": "Occasional: Spent <$100, 30% engagement", + "inactiveNoPurchasesIn60Days": "Inactive: No purchases in 60 days", + "createWinBackCampaignForInactive": "Create win-back campaign for inactive members", + "criticalIssues": "Critical Issues", + "warnings": "Warnings", + "webhookSecretNotConfigured": "Webhook secret not configured", + "missingStripeSignatureHeader": "Missing Stripe-Signature header", + "malformedStripeSignatureHeader": "Malformed Stripe-Signature header", + "stripeSignatureTimestampIsNotNumeric": "Stripe-Signature timestamp is not numeric", + "webhookSignatureTimestampOutsideToleranceWindow": "Webhook signature timestamp outside tolerance window", + "webhookSignatureVerificationFailed": "Webhook signature verification failed", + "invalidWebhookPayload": "Invalid webhook payload", + "dependsOnTheLastVersionOf": "depends on the last version of WooCommerce to work!", + "activeWoocommerce": "Active WooCommerce", + "installWoocommerce": "Install WooCommerce", + "youHave": "You have ", + "pointsEarn": " points. Earn ", + "moreWithThisOrder": " more with this order.", + "loyaltyPoints": " loyalty points." + }, + "frontend": { + "points": { + "loyaltyPoints": "Loyalty Points", + "youAreNotYetEnrolledIn": "You are not yet enrolled in our loyalty program. Points are earned automatically when you make purchases.", + "yourPointsBalance": "Your Points Balance", + "points": "points", + "tier": "Tier: %s", + "activeReward": "Active Reward", + "addItemsToYourCartTo": "Add items to your cart to redeem this reward at checkout.", + "viewCart": "View cart", + "howToEarnPoints": "How to Earn Points", + "earn1sPointsForEvery2s": "Earn %1$s points for every %2$s spent", + "pointsForCreatingAnAccount": "%s points for creating an account", + "pointsForWritingAProductReview": "%s points for writing a product review", + "pointsForReferringAFriend": "%s points for referring a friend", + "strongLoyaltyPointsStrongYouHave": "Loyalty Points: You have %s points.", + "viewDetails": "View details", + "points2": "%s points" + }, + "customerExport": { + "youMustBeLoggedInTo": "You must be logged in to export your loyalty data.", + "securityCheckFailedPleaseReloadAnd": "Security check failed. Please reload and try again.", + "youCanRequestOneLoyaltyData": "You can request one loyalty-data export per 24 hours. Please try again tomorrow.", + "weCouldNotPrepareYourExport": "We could not prepare your export right now. Please try again later or contact support." + }, + "account": { + "loyaltyProgram": "Loyalty Program", + "downloadMyLoyaltyData": "Download my loyalty data", + "notificationPreferences": "Notification preferences", + "yourNotificationPreferencesHaveBeenSaved": "Your notification preferences have been saved.", + "emailMeWhenMyLoyaltyTier": "Email me when my loyalty tier changes", + "savePreferences": "Save preferences" + }, + "checkout": { + "loadingLoyaltyInformation": "Loading loyalty information...", + "identifyingCustomer": "Identifying customer...", + "errorLoadingLoyaltyProgramPleaseTry": "Error loading loyalty program. Please try again.", + "emailOrPhone": "Email or Phone", + "enterEmailOrPhone": "Enter email or phone", + "findAccount": "Find Account", + "welcome": "Welcome", + "pointsBalance": "Points Balance:", + "availableRewards": "Available Rewards", + "selectAReward": "--- Select a reward ---", + "applyReward": "Apply Reward", + "appliedLoyaltyDiscounts": "Applied Loyalty Discounts" + }, + "redeem": { + "loyaltydogReward": "LoyaltyDog Reward" + }, + "checkoutService": { + "networkErrorWhileApplyingRewardPlease": "Network error while applying reward. Please try again.", + "youDoNotHaveEnoughPoints": "You do not have enough points for this reward.", + "rewardNotFoundOrNoLonger": "Reward not found or no longer available.", + "failedToApplyReward": "Failed to apply reward.", + "rewardApplied": "Reward applied." + }, + "blocks": { + "displayTheLoyaltydogLoyaltyWidgetFor": "Display the LoyaltyDog loyalty widget for logged-in customers.", + "loyalty": "loyalty", + "points": "points", + "rewards": "rewards", + "loyaltydog": "loyaltydog" + } + }, + "emails": { + "invalidEmailAddress": "Invalid email address", + "invalidVerificationCodeFormat": "Invalid verification code format", + "emailServiceNotConfigured": "Email service not configured", + "loyaltydogAccountVerification": "LoyaltyDog Account Verification", + "failedToSendEmailViaSendgrid": "Failed to send email via SendGrid", + "verifyYourEmail": "Verify Your Email", + "thankYouForSigningUpFor": "Thank you for signing up for LoyaltyDog! To complete your account setup, please verify your email address using the code below:", + "yourVerificationCode": "Your verification code:", + "thisCodeWillExpireIn10": "This code will expire in 10 minutes", + "securityNotice": "Security Notice:", + "neverShareThisCodeWithAnyone": "Never share this code with anyone. We will never ask for it.", + "ifYouDidNotSignUp": "If you did not sign up for a LoyaltyDog account, please ignore this email.", + "allRightsReserved": "All rights reserved.", + "thisIsAnAutomatedEmailPlease": "This is an automated email. Please do not reply.", + "passwordIsRequired": "Password is required", + "welcomeToLoyaltydogYourAccountIs": "Welcome to LoyaltyDog - Your Account Is Ready", + "welcomeToLoyaltydog": "Welcome to LoyaltyDog!", + "yourLoyaltydogAccountForHasBeen": "Your LoyaltyDog account for %s has been created successfully.", + "yourLoyaltydogAccountHasBeenCreated": "Your LoyaltyDog account has been created successfully.", + "belowAreYourLoginCredentialsYou": "Below are your login credentials. You can use these to access your LoyaltyDog dashboard:", + "email": "Email", + "password": "Password", + "keepThisPasswordSafeAndDo": "Keep this password safe and do not share it with anyone. You can change your password after logging in.", + "ifYouDidNotCreateThis": "If you did not create this account, please contact our support team immediately." + }, + "privacy": { + "loyaltydogLoyaltyProgram": "LoyaltyDog loyalty program", + "firstName": "First name", + "lastName": "Last name", + "phone": "Phone", + "pointsBalance": "Points balance", + "tier": "Tier", + "enrollmentStatus": "Enrollment status", + "enrolledAt": "Enrolled at", + "whenYouUseLoyaltydogYourEmail": "When you use LoyaltyDog, your email address and order totals are sent to the LoyaltyDog cloud service (api.loyalty.dog) to calculate and store loyalty points. Loyalty transaction history may be retained locally in de-identified form (linked only to an internal member ID) after an erasure request. See loyalty.dog/privacy for details." } } } From 460f64d6d535d2d115ea3933a6651ec8522bd919 Mon Sep 17 00:00:00 2001 From: Haim Barad Date: Sun, 10 May 2026 19:12:51 +0300 Subject: [PATCH 2/4] fix(wordpress): convert printf placeholders to mustache (PR #59 review) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Greptile P1: every new key carrying a runtime value used PHP printf tokens (%s, %d, %1\$s, %2\$s) instead of i18next's {{var}} mustache syntax. Pre-existing keys in this namespace consistently use mustache (e.g. "Last checked: {{date}}", "HTTP {{code}} from API"). A future JS consumer pulling one of the new keys via t() would have received the literal placeholder unexpanded. The new keys came from the WP plugin's .pot, which is consumed by PHP sprintf — so the printf form was correct for the WP runtime but wrong for the platform-wide convention. The localization-platform record is purely bookkeeping (per the WP-plugin/localization-platform split memo: WP keeps its own .pot for runtime), so converting here doesn't affect WP plugin behaviour at all and makes the namespace internally consistent. Conversion mapping: - Positional: %1\$s -> {{first}}, %2\$s -> {{second}}, ... (ordinal) %1\$d -> {{firstNumber}}, etc. - Sequential: %s -> {{value}} / {{value2}} / ... (left-to-right) %d -> {{count}} / {{count2}} / ... %f -> {{number}} / {{number2}} / ... 37 leaves converted per locale (× 8 locales = 296 total). Zero printf-style placeholders remain. Examples: "Program: %s" -> "Program: {{value}}" "HTTP %d from API" -> "HTTP {{count}} from API" "PHP %1\$s or newer is required..." -> "PHP {{first}} or newer is required..." --- packages/i18n/locales/en-GB/wordpress.json | 74 +++++++++++----------- packages/i18n/locales/en-US/wordpress.json | 74 +++++++++++----------- packages/i18n/locales/es-ES/wordpress.json | 74 +++++++++++----------- packages/i18n/locales/es-MX/wordpress.json | 74 +++++++++++----------- packages/i18n/locales/fr/wordpress.json | 74 +++++++++++----------- packages/i18n/locales/it/wordpress.json | 74 +++++++++++----------- packages/i18n/locales/pt-BR/wordpress.json | 74 +++++++++++----------- packages/i18n/locales/pt-PT/wordpress.json | 74 +++++++++++----------- 8 files changed, 296 insertions(+), 296 deletions(-) diff --git a/packages/i18n/locales/en-GB/wordpress.json b/packages/i18n/locales/en-GB/wordpress.json index 12e67b2..15a6602 100644 --- a/packages/i18n/locales/en-GB/wordpress.json +++ b/packages/i18n/locales/en-GB/wordpress.json @@ -13,7 +13,7 @@ "programSummaryMetrics": "Program summary metrics", "connectionStatus": "Connection status", "connection": "Connection", - "programWp": "Program: %s", + "programWp": "Program: {{value}}", "pointsIssuedInTheLast30": "Points issued in the last 30 days", "pointsIssued30d": "Points issued (30d)", "valueNotYetAvailable": "Value not yet available", @@ -43,11 +43,11 @@ "unauthorized": "Unauthorised", "youDoNotHavePermissionTo": "You do not have permission to access this page.", "programId": "Program ID", - "php1sOrNewerIsRequired": "PHP %1$s or newer is required. This site is running PHP %2$s. Please ask your hosting provider to upgrade PHP before configuring LoyaltyDog.", - "wordpress1sOrNewerIsRequired": "WordPress %1$s or newer is required. This site is running WordPress %2$s.", + "php1sOrNewerIsRequired": "PHP {{first}} or newer is required. This site is running PHP {{second}}. Please ask your hosting provider to upgrade PHP before configuring LoyaltyDog.", + "wordpress1sOrNewerIsRequired": "WordPress {{first}} or newer is required. This site is running WordPress {{second}}.", "woocommerceIsRequiredButIsNot": "WooCommerce is required but is not installed or activated.", - "woocommerce1sOrNewerIsRequired": "WooCommerce %1$s or newer is required. This site is running WooCommerce %2$s.", - "httpFromApi": "HTTP %d from API" + "woocommerce1sOrNewerIsRequired": "WooCommerce {{first}} or newer is required. This site is running WooCommerce {{second}}.", + "httpFromApi": "HTTP {{count}} from API" }, "widget": { "title": "LoyaltyDog Widget", @@ -62,7 +62,7 @@ "settingsSaved": "Settings saved.", "preview": "Preview", "previewPlaceholder": "[LoyaltyDog widget renders here for logged-in customers]", - "couldNotSaveSettingsToLoyaltydog": "Could not save settings to LoyaltyDog: %s", + "couldNotSaveSettingsToLoyaltydog": "Could not save settings to LoyaltyDog: {{value}}", "joinWidget": "Join Widget", "shownToGuestVisitorsAndCustomers": "Shown to guest visitors and customers not yet in your loyalty program.", "signupUrl": "Signup URL", @@ -144,7 +144,7 @@ "invalidFileTypePleaseUploadA": "Invalid file type. Please upload a JSON file.", "invalidImportFileFormat": "Invalid import file format", "noCredentialsWereImported": "No credentials were imported", - "credentialsImportedSuccessfully": "%d credentials imported successfully" + "credentialsImportedSuccessfully": "{{count}} credentials imported successfully" }, "settings": { "loyaltydogCredentials": "LoyaltyDog Credentials", @@ -194,7 +194,7 @@ "howToReconfigure": "How to reconfigure:", "toResetOrChangeYourLoyaltydog": "To reset or change your LoyaltyDog integration, contact support or delete the plugin and reinstall to re-run the account setup wizard.", "detailedAuditLogOfAllCredential": "Detailed audit log of all credential operations is available in WordPress error logs.", - "checkYourWordpressDebugLogFile": "Check your WordPress debug log file for detailed audit information: %s", + "checkYourWordpressDebugLogFile": "Check your WordPress debug log file for detailed audit information: {{value}}", "recentOperations": "Recent Operations:", "allCredentialUpdatesAreLoggedAutomatically": "All credential updates are logged automatically", "allCredentialDeletionsAreLoggedAutomatically": "All credential deletions are logged automatically", @@ -223,7 +223,7 @@ "reviewConnection": "Review Connection", "dismiss": "Dismiss", "loyaltydogV1V2MigrationFailed": "LoyaltyDog v1 → v2 migration failed.", - "error": "Error: %s", + "error": "Error: {{value}}", "recoveryGuide": "Recovery guide", "thePluginWillRetryAutomaticallyOn": "The plugin will retry automatically on the next admin pageload." }, @@ -238,11 +238,11 @@ }, "trialNotices": { "trialExpired": "Trial expired", - "trialDayRemaining": "Trial: %d day remaining", + "trialDayRemaining": "Trial: {{count}} day remaining", "welcomeToLoyaltydog": "Welcome to LoyaltyDog.", "signUpForAFree30": "Sign up for a free 30-day trial to activate your points program. No credit card required.", "startYourFreeTrial": "Start your free trial", - "yourLoyaltydogTrialEndsInDay": "Your LoyaltyDog trial ends in %d day.", + "yourLoyaltydogTrialEndsInDay": "Your LoyaltyDog trial ends in {{count}} day.", "upgradeNowToKeepAwardingPoints": "Upgrade now to keep awarding points after the trial ends.", "upgradeNow": "Upgrade now", "remindMeLater": "Remind me later", @@ -272,7 +272,7 @@ "shortcodes": "Shortcodes", "gettingStartedWithLoyaltydog": "Getting Started with LoyaltyDog", "loyaltydogAddsADigitalLoyaltyProgram": "LoyaltyDog adds a digital loyalty program to your WooCommerce store. Customers earn points on purchases and redeem them for rewards.", - "enterYour1sprogramId2sAnd1sapi": "Enter your %1$sProgram ID%2$s and %1$sAPI Key%2$s in Settings. Get these from your LoyaltyDog dashboard.", + "enterYour1sprogramId2sAnd1sapi": "Enter your {{first}}Program ID{{second}} and {{first}}API Key{{second}} in Settings. Get these from your LoyaltyDog dashboard.", "configureThePointsConversionRateE": "Configure the points conversion rate (e.g., 1 point per $1 spent).", "setUpOfferMessagesThatCustomers": "Set up offer messages that customers see when they have rewards.", "optionallyConfigureCategoryMultipliersCampaignsAnd": "Optionally configure category multipliers, campaigns, and referral rewards.", @@ -294,7 +294,7 @@ "runPromotionalPeriodsWithBonusPoint": "Run promotional periods with bonus point multipliers. Enter one per line:", "formatMultiplierstartdateenddatelabelLinesStartingWith": "Format: multiplier|start_date|end_date|label. Lines starting with # are ignored.", "productLevelOverrides": "Product-Level Overrides", - "setAFixedPointValueFor": "Set a fixed point value for specific products using the %s custom field on the product edit page.", + "setAFixedPointValueFor": "Set a fixed point value for specific products using the {{value}} custom field on the product edit page.", "availableShortcodes": "Available Shortcodes", "displayTheLoggedInCustomerS": "Display the logged-in customer's points balance inline. Returns empty for guests.", "displayTheCustomerSReferralLink": "Display the customer's referral link. Requires the referral program to be configured.", @@ -306,14 +306,14 @@ }, "menu": { "manage": "Manage", - "strongLoyaltydogStrongIsAlmostReady": "LoyaltyDog is almost ready. To get started, %sset your LoyaltyDog account keys%s.", - "strongLoyaltydogStrongRequiresCouponsTo": "LoyaltyDog requires coupons to be %senabled%s in order to function properly and allow customers to redeem offer during checkout.", + "strongLoyaltydogStrongIsAlmostReady": "LoyaltyDog is almost ready. To get started, {{value}}set your LoyaltyDog account keys{{value2}}.", + "strongLoyaltydogStrongRequiresCouponsTo": "LoyaltyDog requires coupons to be {{value}}enabled{{value2}} in order to function properly and allow customers to redeem offer during checkout.", "sendPushNotifications": "Send Push Notifications", "message": "Message", "pushNotificationsAreCompliantWithEu": "Push notifications are compliant with EU GDPR.", "send": "Send", "enableTheLoggingOfApiRequest": "Enable the logging of API request.", - "1sviewLog2s": "%1$sView Log%2$s", + "1sviewLog2s": "{{first}}View Log{{second}}", "loyaltydogApi": "LoyaltyDog API", "enterWithYourProgramId": "Enter with your program ID.", "enterWithYourLoyaltydogApiKey": "Enter with your LoyaltyDog API key.", @@ -334,7 +334,7 @@ "alwaysRoundDown": "Always round down", "alwaysRoundUp": "Always round up", "offerMessages": "Offer Messages", - "adjustTheMessageByUsing1s": "Adjust the message by using %1$s{friendlyNameToBeAdded}%2$s, %1$s{friendlyName}%2$s, %1$s{name}%2$s, %1$s{value}%2$s, %1$s{currency}%2$s to represent the redeemed / available offer.", + "adjustTheMessageByUsing1s": "Adjust the message by using {{first}}{friendlyNameToBeAdded}{{second}}, {{first}}{friendlyName}{{second}}, {{first}}{name}{{second}}, {{first}}{value}{{second}}, {{first}}{currency}{{second}} to represent the redeemed / available offer.", "availableOfferMessage": "Available Offer Message", "addAnOptionalMessageWhenUser": "Add an optional message when user have a active Loyalty offer. Limited HTML is allowed. Leave blank to disable.", "strongActiveLoyaltyOfferStrongFriendlynametobeadded": "Active Loyalty Offer: {friendlyNameToBeAdded}.
You can add some products to redeem this offer.", @@ -343,9 +343,9 @@ "strongLoyaltyRewardStrongFriendlynametobeadded": "Loyalty Reward: {friendlyNameToBeAdded}", "pointsEarnedForActions": "Points Earned for Actions", "customersCanAlsoEarnPointsFor": "Customers can also earn points for actions like creating an account or writing a product review. You can enter the amount of points the customer will earn for each action in this section.", - "isRequired": "%s is required.", + "isRequired": "{{value}} is required.", "points": "Points", - "isInvalid": "%s is invalid.", + "isInvalid": "{{value}} is invalid.", "messageCanNotBeBlank": "Message can not be blank.", "messageHaveBeenSent": "Message have been sent." }, @@ -370,7 +370,7 @@ "pasteTheKeyFromYourEmail": "Paste the key from your email", "sentToYourInboxAfterSubscribing": "Sent to your inbox after subscribing at loyalty.dog.", "activate": "Activate", - "enterYourProgramIdAndApi": "Enter your Program ID and API Key from your %1$sLoyaltyDog dashboard%2$s.", + "enterYourProgramIdAndApi": "Enter your Program ID and API Key from your {{first}}LoyaltyDog dashboard{{second}}.", "eG507f1f77bcf86cd799439011": "e.g., 507f1f77bcf86cd799439011", "foundInYourLoyaltydogDashboardUnder": "Found in your LoyaltyDog dashboard under Settings > API.", "yourApiKey": "Your API key", @@ -418,11 +418,11 @@ "bothProgramIdAndApiKey": "Both Program ID and API Key are required.", "invalidApiKeyPleaseCheckYour": "Invalid API Key. Please check your credentials.", "programNotFoundPleaseCheckYour": "Program not found. Please check your Program ID.", - "connectionFailedHttpPleaseTryAgain": "Connection failed (HTTP %s). Please try again.", + "connectionFailedHttpPleaseTryAgain": "Connection failed (HTTP {{value}}). Please try again.", "connectionSuccessful": "Connection successful!", "credentialsAreRequired": "Credentials are required.", "setupComplete": "Setup complete!", - "apiUnreachableHttp": "API unreachable (HTTP %s)", + "apiUnreachableHttp": "API unreachable (HTTP {{value}})", "activationKeyLooksMalformedPasteThe": "Activation key looks malformed. Paste the key exactly as it appears in your email.", "activating": "Activating…", "connectedContinuingToConfiguration": "Connected. Continuing to configuration…", @@ -466,7 +466,7 @@ "checkSslCertificateValidity": "Check SSL certificate validity", "reviewWebhookEventLogs": "Review webhook event logs", "testWithManualWebhookDispatch": "Test with manual webhook dispatch", - "ticketCreatedWeLlRespondWithin": "Ticket %s created. We'll respond within 4 hours." + "ticketCreatedWeLlRespondWithin": "Ticket {{value}} created. We'll respond within 4 hours." }, "settingsSync": { "serverReturnedAnUnexpectedResponseShape": "Server returned an unexpected response shape." @@ -483,12 +483,12 @@ "loyaltydogInc": "LoyaltyDog Inc.", "httpsLoyaltyDog": "https://loyalty.dog", "loyaltydogRequiresWordpress69Or": "LoyaltyDog requires WordPress 6.9 or newer.", - "youAreCurrentlyRunningWordpress": "You are currently running WordPress %s.", + "youAreCurrentlyRunningWordpress": "You are currently running WordPress {{value}}.", "loyaltydogRequiresPhp80Or": "LoyaltyDog requires PHP 8.0 or newer.", - "youAreCurrentlyRunningPhp": "You are currently running PHP %s.", + "youAreCurrentlyRunningPhp": "You are currently running PHP {{value}}.", "loyaltydogRequiresWoocommerceToBeInstalled": "LoyaltyDog requires WooCommerce to be installed and activated.", "loyaltydogRequiresWoocommerce70Or": "LoyaltyDog requires WooCommerce 7.0 or newer.", - "youAreCurrentlyRunningWoocommerce": "You are currently running WooCommerce %s.", + "youAreCurrentlyRunningWoocommerce": "You are currently running WooCommerce {{value}}.", "loyaltydogActivationFailedSystemRequirementsNot": "LoyaltyDog activation failed: system requirements not met." }, "misc": { @@ -524,14 +524,14 @@ "loyaltyReward": "Loyalty Reward", "redeem": "REDEEM", "redeemedSuccessfully": "Redeemed Successfully", - "xPointsBonusActive": "%sx points bonus active!", + "xPointsBonusActive": "{{value}}x points bonus active!", "minimumSpendForPoints": "Minimum spend for points", "minimumOrderTotalRequiredToEarn": "Minimum order total required to earn points. Leave empty to disable.", "categoryPointMultipliers": "Category point multipliers", "onePerLineCategoryslugMultiplierE": "One per line: category_slug:multiplier (e.g., electronics:2 for double points). If a product is in multiple categories, the highest multiplier applies.", "timeLimitedCampaigns": "Time-limited campaigns", "onePerLineMultiplierstartdateenddatelabelEG": "One per line: multiplier|start_date|end_date|label (e.g., 2|2026-03-01|2026-03-31|Double Points March). The highest active campaign multiplier applies to all orders. Lines starting with # are ignored.", - "welcomeTo1s2s": "Welcome to %1$s %2$s", + "welcomeTo1s2s": "Welcome to {{first}} {{second}}", "loading": "Loading...", "dashboard": "Dashboard", "widget": "Widget", @@ -551,7 +551,7 @@ "activateLoyaltydog": "Activate LoyaltyDog", "havingTroubleContactSupport": "Having trouble? Contact support", "accountLinkedSuccessfully": "Account Linked Successfully!", - "yourLoyaltydogAccountIsNowConnected": "Your %s LoyaltyDog account is now connected to your WordPress store.", + "yourLoyaltydogAccountIsNowConnected": "Your {{value}} LoyaltyDog account is now connected to your WordPress store.", "dashboardImplementationComingInFutureUpdates": "Dashboard implementation coming in future updates.", "increasePointMultiplierForTopSelling": "Increase point multiplier for top-selling category (Electronics) to boost engagement", "createAWinBackCampaignFor": "Create a win-back campaign for 120 inactive members who spent $1000+ lifetime", @@ -584,18 +584,18 @@ "youAreNotYetEnrolledIn": "You are not yet enrolled in our loyalty program. Points are earned automatically when you make purchases.", "yourPointsBalance": "Your Points Balance", "points": "points", - "tier": "Tier: %s", + "tier": "Tier: {{value}}", "activeReward": "Active Reward", "addItemsToYourCartTo": "Add items to your cart to redeem this reward at checkout.", "viewCart": "View cart", "howToEarnPoints": "How to Earn Points", - "earn1sPointsForEvery2s": "Earn %1$s points for every %2$s spent", - "pointsForCreatingAnAccount": "%s points for creating an account", - "pointsForWritingAProductReview": "%s points for writing a product review", - "pointsForReferringAFriend": "%s points for referring a friend", - "strongLoyaltyPointsStrongYouHave": "Loyalty Points: You have %s points.", + "earn1sPointsForEvery2s": "Earn {{first}} points for every {{second}} spent", + "pointsForCreatingAnAccount": "{{value}} points for creating an account", + "pointsForWritingAProductReview": "{{value}} points for writing a product review", + "pointsForReferringAFriend": "{{value}} points for referring a friend", + "strongLoyaltyPointsStrongYouHave": "Loyalty Points: You have {{value}} points.", "viewDetails": "View details", - "points2": "%s points" + "points2": "{{value}} points" }, "customerExport": { "youMustBeLoggedInTo": "You must be logged in to export your loyalty data.", @@ -661,7 +661,7 @@ "passwordIsRequired": "Password is required", "welcomeToLoyaltydogYourAccountIs": "Welcome to LoyaltyDog - Your Account Is Ready", "welcomeToLoyaltydog": "Welcome to LoyaltyDog!", - "yourLoyaltydogAccountForHasBeen": "Your LoyaltyDog account for %s has been created successfully.", + "yourLoyaltydogAccountForHasBeen": "Your LoyaltyDog account for {{value}} has been created successfully.", "yourLoyaltydogAccountHasBeenCreated": "Your LoyaltyDog account has been created successfully.", "belowAreYourLoginCredentialsYou": "Below are your login credentials. You can use these to access your LoyaltyDog dashboard:", "email": "Email", diff --git a/packages/i18n/locales/en-US/wordpress.json b/packages/i18n/locales/en-US/wordpress.json index 3e84f25..fbcfeb6 100644 --- a/packages/i18n/locales/en-US/wordpress.json +++ b/packages/i18n/locales/en-US/wordpress.json @@ -13,7 +13,7 @@ "programSummaryMetrics": "Program summary metrics", "connectionStatus": "Connection status", "connection": "Connection", - "programWp": "Program: %s", + "programWp": "Program: {{value}}", "pointsIssuedInTheLast30": "Points issued in the last 30 days", "pointsIssued30d": "Points issued (30d)", "valueNotYetAvailable": "Value not yet available", @@ -43,11 +43,11 @@ "unauthorized": "Unauthorized", "youDoNotHavePermissionTo": "You do not have permission to access this page.", "programId": "Program ID", - "php1sOrNewerIsRequired": "PHP %1$s or newer is required. This site is running PHP %2$s. Please ask your hosting provider to upgrade PHP before configuring LoyaltyDog.", - "wordpress1sOrNewerIsRequired": "WordPress %1$s or newer is required. This site is running WordPress %2$s.", + "php1sOrNewerIsRequired": "PHP {{first}} or newer is required. This site is running PHP {{second}}. Please ask your hosting provider to upgrade PHP before configuring LoyaltyDog.", + "wordpress1sOrNewerIsRequired": "WordPress {{first}} or newer is required. This site is running WordPress {{second}}.", "woocommerceIsRequiredButIsNot": "WooCommerce is required but is not installed or activated.", - "woocommerce1sOrNewerIsRequired": "WooCommerce %1$s or newer is required. This site is running WooCommerce %2$s.", - "httpFromApi": "HTTP %d from API" + "woocommerce1sOrNewerIsRequired": "WooCommerce {{first}} or newer is required. This site is running WooCommerce {{second}}.", + "httpFromApi": "HTTP {{count}} from API" }, "widget": { "title": "LoyaltyDog Widget", @@ -62,7 +62,7 @@ "settingsSaved": "Settings saved.", "preview": "Preview", "previewPlaceholder": "[LoyaltyDog widget renders here for logged-in customers]", - "couldNotSaveSettingsToLoyaltydog": "Could not save settings to LoyaltyDog: %s", + "couldNotSaveSettingsToLoyaltydog": "Could not save settings to LoyaltyDog: {{value}}", "joinWidget": "Join Widget", "shownToGuestVisitorsAndCustomers": "Shown to guest visitors and customers not yet in your loyalty program.", "signupUrl": "Signup URL", @@ -144,7 +144,7 @@ "invalidFileTypePleaseUploadA": "Invalid file type. Please upload a JSON file.", "invalidImportFileFormat": "Invalid import file format", "noCredentialsWereImported": "No credentials were imported", - "credentialsImportedSuccessfully": "%d credentials imported successfully" + "credentialsImportedSuccessfully": "{{count}} credentials imported successfully" }, "settings": { "loyaltydogCredentials": "LoyaltyDog Credentials", @@ -194,7 +194,7 @@ "howToReconfigure": "How to reconfigure:", "toResetOrChangeYourLoyaltydog": "To reset or change your LoyaltyDog integration, contact support or delete the plugin and reinstall to re-run the account setup wizard.", "detailedAuditLogOfAllCredential": "Detailed audit log of all credential operations is available in WordPress error logs.", - "checkYourWordpressDebugLogFile": "Check your WordPress debug log file for detailed audit information: %s", + "checkYourWordpressDebugLogFile": "Check your WordPress debug log file for detailed audit information: {{value}}", "recentOperations": "Recent Operations:", "allCredentialUpdatesAreLoggedAutomatically": "All credential updates are logged automatically", "allCredentialDeletionsAreLoggedAutomatically": "All credential deletions are logged automatically", @@ -223,7 +223,7 @@ "reviewConnection": "Review Connection", "dismiss": "Dismiss", "loyaltydogV1V2MigrationFailed": "LoyaltyDog v1 → v2 migration failed.", - "error": "Error: %s", + "error": "Error: {{value}}", "recoveryGuide": "Recovery guide", "thePluginWillRetryAutomaticallyOn": "The plugin will retry automatically on the next admin pageload." }, @@ -238,11 +238,11 @@ }, "trialNotices": { "trialExpired": "Trial expired", - "trialDayRemaining": "Trial: %d day remaining", + "trialDayRemaining": "Trial: {{count}} day remaining", "welcomeToLoyaltydog": "Welcome to LoyaltyDog.", "signUpForAFree30": "Sign up for a free 30-day trial to activate your points program. No credit card required.", "startYourFreeTrial": "Start your free trial", - "yourLoyaltydogTrialEndsInDay": "Your LoyaltyDog trial ends in %d day.", + "yourLoyaltydogTrialEndsInDay": "Your LoyaltyDog trial ends in {{count}} day.", "upgradeNowToKeepAwardingPoints": "Upgrade now to keep awarding points after the trial ends.", "upgradeNow": "Upgrade now", "remindMeLater": "Remind me later", @@ -272,7 +272,7 @@ "shortcodes": "Shortcodes", "gettingStartedWithLoyaltydog": "Getting Started with LoyaltyDog", "loyaltydogAddsADigitalLoyaltyProgram": "LoyaltyDog adds a digital loyalty program to your WooCommerce store. Customers earn points on purchases and redeem them for rewards.", - "enterYour1sprogramId2sAnd1sapi": "Enter your %1$sProgram ID%2$s and %1$sAPI Key%2$s in Settings. Get these from your LoyaltyDog dashboard.", + "enterYour1sprogramId2sAnd1sapi": "Enter your {{first}}Program ID{{second}} and {{first}}API Key{{second}} in Settings. Get these from your LoyaltyDog dashboard.", "configureThePointsConversionRateE": "Configure the points conversion rate (e.g., 1 point per $1 spent).", "setUpOfferMessagesThatCustomers": "Set up offer messages that customers see when they have rewards.", "optionallyConfigureCategoryMultipliersCampaignsAnd": "Optionally configure category multipliers, campaigns, and referral rewards.", @@ -294,7 +294,7 @@ "runPromotionalPeriodsWithBonusPoint": "Run promotional periods with bonus point multipliers. Enter one per line:", "formatMultiplierstartdateenddatelabelLinesStartingWith": "Format: multiplier|start_date|end_date|label. Lines starting with # are ignored.", "productLevelOverrides": "Product-Level Overrides", - "setAFixedPointValueFor": "Set a fixed point value for specific products using the %s custom field on the product edit page.", + "setAFixedPointValueFor": "Set a fixed point value for specific products using the {{value}} custom field on the product edit page.", "availableShortcodes": "Available Shortcodes", "displayTheLoggedInCustomerS": "Display the logged-in customer's points balance inline. Returns empty for guests.", "displayTheCustomerSReferralLink": "Display the customer's referral link. Requires the referral program to be configured.", @@ -306,14 +306,14 @@ }, "menu": { "manage": "Manage", - "strongLoyaltydogStrongIsAlmostReady": "LoyaltyDog is almost ready. To get started, %sset your LoyaltyDog account keys%s.", - "strongLoyaltydogStrongRequiresCouponsTo": "LoyaltyDog requires coupons to be %senabled%s in order to function properly and allow customers to redeem offer during checkout.", + "strongLoyaltydogStrongIsAlmostReady": "LoyaltyDog is almost ready. To get started, {{value}}set your LoyaltyDog account keys{{value2}}.", + "strongLoyaltydogStrongRequiresCouponsTo": "LoyaltyDog requires coupons to be {{value}}enabled{{value2}} in order to function properly and allow customers to redeem offer during checkout.", "sendPushNotifications": "Send Push Notifications", "message": "Message", "pushNotificationsAreCompliantWithEu": "Push notifications are compliant with EU GDPR.", "send": "Send", "enableTheLoggingOfApiRequest": "Enable the logging of API request.", - "1sviewLog2s": "%1$sView Log%2$s", + "1sviewLog2s": "{{first}}View Log{{second}}", "loyaltydogApi": "LoyaltyDog API", "enterWithYourProgramId": "Enter with your program ID.", "enterWithYourLoyaltydogApiKey": "Enter with your LoyaltyDog API key.", @@ -334,7 +334,7 @@ "alwaysRoundDown": "Always round down", "alwaysRoundUp": "Always round up", "offerMessages": "Offer Messages", - "adjustTheMessageByUsing1s": "Adjust the message by using %1$s{friendlyNameToBeAdded}%2$s, %1$s{friendlyName}%2$s, %1$s{name}%2$s, %1$s{value}%2$s, %1$s{currency}%2$s to represent the redeemed / available offer.", + "adjustTheMessageByUsing1s": "Adjust the message by using {{first}}{friendlyNameToBeAdded}{{second}}, {{first}}{friendlyName}{{second}}, {{first}}{name}{{second}}, {{first}}{value}{{second}}, {{first}}{currency}{{second}} to represent the redeemed / available offer.", "availableOfferMessage": "Available Offer Message", "addAnOptionalMessageWhenUser": "Add an optional message when user have a active Loyalty offer. Limited HTML is allowed. Leave blank to disable.", "strongActiveLoyaltyOfferStrongFriendlynametobeadded": "Active Loyalty Offer: {friendlyNameToBeAdded}.
You can add some products to redeem this offer.", @@ -343,9 +343,9 @@ "strongLoyaltyRewardStrongFriendlynametobeadded": "Loyalty Reward: {friendlyNameToBeAdded}", "pointsEarnedForActions": "Points Earned for Actions", "customersCanAlsoEarnPointsFor": "Customers can also earn points for actions like creating an account or writing a product review. You can enter the amount of points the customer will earn for each action in this section.", - "isRequired": "%s is required.", + "isRequired": "{{value}} is required.", "points": "Points", - "isInvalid": "%s is invalid.", + "isInvalid": "{{value}} is invalid.", "messageCanNotBeBlank": "Message can not be blank.", "messageHaveBeenSent": "Message have been sent." }, @@ -370,7 +370,7 @@ "pasteTheKeyFromYourEmail": "Paste the key from your email", "sentToYourInboxAfterSubscribing": "Sent to your inbox after subscribing at loyalty.dog.", "activate": "Activate", - "enterYourProgramIdAndApi": "Enter your Program ID and API Key from your %1$sLoyaltyDog dashboard%2$s.", + "enterYourProgramIdAndApi": "Enter your Program ID and API Key from your {{first}}LoyaltyDog dashboard{{second}}.", "eG507f1f77bcf86cd799439011": "e.g., 507f1f77bcf86cd799439011", "foundInYourLoyaltydogDashboardUnder": "Found in your LoyaltyDog dashboard under Settings > API.", "yourApiKey": "Your API key", @@ -418,11 +418,11 @@ "bothProgramIdAndApiKey": "Both Program ID and API Key are required.", "invalidApiKeyPleaseCheckYour": "Invalid API Key. Please check your credentials.", "programNotFoundPleaseCheckYour": "Program not found. Please check your Program ID.", - "connectionFailedHttpPleaseTryAgain": "Connection failed (HTTP %s). Please try again.", + "connectionFailedHttpPleaseTryAgain": "Connection failed (HTTP {{value}}). Please try again.", "connectionSuccessful": "Connection successful!", "credentialsAreRequired": "Credentials are required.", "setupComplete": "Setup complete!", - "apiUnreachableHttp": "API unreachable (HTTP %s)", + "apiUnreachableHttp": "API unreachable (HTTP {{value}})", "activationKeyLooksMalformedPasteThe": "Activation key looks malformed. Paste the key exactly as it appears in your email.", "activating": "Activating…", "connectedContinuingToConfiguration": "Connected. Continuing to configuration…", @@ -466,7 +466,7 @@ "checkSslCertificateValidity": "Check SSL certificate validity", "reviewWebhookEventLogs": "Review webhook event logs", "testWithManualWebhookDispatch": "Test with manual webhook dispatch", - "ticketCreatedWeLlRespondWithin": "Ticket %s created. We'll respond within 4 hours." + "ticketCreatedWeLlRespondWithin": "Ticket {{value}} created. We'll respond within 4 hours." }, "settingsSync": { "serverReturnedAnUnexpectedResponseShape": "Server returned an unexpected response shape." @@ -483,12 +483,12 @@ "loyaltydogInc": "LoyaltyDog Inc.", "httpsLoyaltyDog": "https://loyalty.dog", "loyaltydogRequiresWordpress69Or": "LoyaltyDog requires WordPress 6.9 or newer.", - "youAreCurrentlyRunningWordpress": "You are currently running WordPress %s.", + "youAreCurrentlyRunningWordpress": "You are currently running WordPress {{value}}.", "loyaltydogRequiresPhp80Or": "LoyaltyDog requires PHP 8.0 or newer.", - "youAreCurrentlyRunningPhp": "You are currently running PHP %s.", + "youAreCurrentlyRunningPhp": "You are currently running PHP {{value}}.", "loyaltydogRequiresWoocommerceToBeInstalled": "LoyaltyDog requires WooCommerce to be installed and activated.", "loyaltydogRequiresWoocommerce70Or": "LoyaltyDog requires WooCommerce 7.0 or newer.", - "youAreCurrentlyRunningWoocommerce": "You are currently running WooCommerce %s.", + "youAreCurrentlyRunningWoocommerce": "You are currently running WooCommerce {{value}}.", "loyaltydogActivationFailedSystemRequirementsNot": "LoyaltyDog activation failed: system requirements not met." }, "misc": { @@ -524,14 +524,14 @@ "loyaltyReward": "Loyalty Reward", "redeem": "REDEEM", "redeemedSuccessfully": "Redeemed Successfully", - "xPointsBonusActive": "%sx points bonus active!", + "xPointsBonusActive": "{{value}}x points bonus active!", "minimumSpendForPoints": "Minimum spend for points", "minimumOrderTotalRequiredToEarn": "Minimum order total required to earn points. Leave empty to disable.", "categoryPointMultipliers": "Category point multipliers", "onePerLineCategoryslugMultiplierE": "One per line: category_slug:multiplier (e.g., electronics:2 for double points). If a product is in multiple categories, the highest multiplier applies.", "timeLimitedCampaigns": "Time-limited campaigns", "onePerLineMultiplierstartdateenddatelabelEG": "One per line: multiplier|start_date|end_date|label (e.g., 2|2026-03-01|2026-03-31|Double Points March). The highest active campaign multiplier applies to all orders. Lines starting with # are ignored.", - "welcomeTo1s2s": "Welcome to %1$s %2$s", + "welcomeTo1s2s": "Welcome to {{first}} {{second}}", "loading": "Loading...", "dashboard": "Dashboard", "widget": "Widget", @@ -551,7 +551,7 @@ "activateLoyaltydog": "Activate LoyaltyDog", "havingTroubleContactSupport": "Having trouble? Contact support", "accountLinkedSuccessfully": "Account Linked Successfully!", - "yourLoyaltydogAccountIsNowConnected": "Your %s LoyaltyDog account is now connected to your WordPress store.", + "yourLoyaltydogAccountIsNowConnected": "Your {{value}} LoyaltyDog account is now connected to your WordPress store.", "dashboardImplementationComingInFutureUpdates": "Dashboard implementation coming in future updates.", "increasePointMultiplierForTopSelling": "Increase point multiplier for top-selling category (Electronics) to boost engagement", "createAWinBackCampaignFor": "Create a win-back campaign for 120 inactive members who spent $1000+ lifetime", @@ -584,18 +584,18 @@ "youAreNotYetEnrolledIn": "You are not yet enrolled in our loyalty program. Points are earned automatically when you make purchases.", "yourPointsBalance": "Your Points Balance", "points": "points", - "tier": "Tier: %s", + "tier": "Tier: {{value}}", "activeReward": "Active Reward", "addItemsToYourCartTo": "Add items to your cart to redeem this reward at checkout.", "viewCart": "View cart", "howToEarnPoints": "How to Earn Points", - "earn1sPointsForEvery2s": "Earn %1$s points for every %2$s spent", - "pointsForCreatingAnAccount": "%s points for creating an account", - "pointsForWritingAProductReview": "%s points for writing a product review", - "pointsForReferringAFriend": "%s points for referring a friend", - "strongLoyaltyPointsStrongYouHave": "Loyalty Points: You have %s points.", + "earn1sPointsForEvery2s": "Earn {{first}} points for every {{second}} spent", + "pointsForCreatingAnAccount": "{{value}} points for creating an account", + "pointsForWritingAProductReview": "{{value}} points for writing a product review", + "pointsForReferringAFriend": "{{value}} points for referring a friend", + "strongLoyaltyPointsStrongYouHave": "Loyalty Points: You have {{value}} points.", "viewDetails": "View details", - "points2": "%s points" + "points2": "{{value}} points" }, "customerExport": { "youMustBeLoggedInTo": "You must be logged in to export your loyalty data.", @@ -661,7 +661,7 @@ "passwordIsRequired": "Password is required", "welcomeToLoyaltydogYourAccountIs": "Welcome to LoyaltyDog - Your Account Is Ready", "welcomeToLoyaltydog": "Welcome to LoyaltyDog!", - "yourLoyaltydogAccountForHasBeen": "Your LoyaltyDog account for %s has been created successfully.", + "yourLoyaltydogAccountForHasBeen": "Your LoyaltyDog account for {{value}} has been created successfully.", "yourLoyaltydogAccountHasBeenCreated": "Your LoyaltyDog account has been created successfully.", "belowAreYourLoginCredentialsYou": "Below are your login credentials. You can use these to access your LoyaltyDog dashboard:", "email": "Email", diff --git a/packages/i18n/locales/es-ES/wordpress.json b/packages/i18n/locales/es-ES/wordpress.json index d822e76..43eee2c 100644 --- a/packages/i18n/locales/es-ES/wordpress.json +++ b/packages/i18n/locales/es-ES/wordpress.json @@ -13,7 +13,7 @@ "programSummaryMetrics": "Program summary metrics", "connectionStatus": "Connection status", "connection": "Connection", - "programWp": "Program: %s", + "programWp": "Program: {{value}}", "pointsIssuedInTheLast30": "Points issued in the last 30 days", "pointsIssued30d": "Points issued (30d)", "valueNotYetAvailable": "Value not yet available", @@ -43,11 +43,11 @@ "unauthorized": "No autorizado", "youDoNotHavePermissionTo": "You do not have permission to access this page.", "programId": "Program ID", - "php1sOrNewerIsRequired": "PHP %1$s or newer is required. This site is running PHP %2$s. Please ask your hosting provider to upgrade PHP before configuring LoyaltyDog.", - "wordpress1sOrNewerIsRequired": "WordPress %1$s or newer is required. This site is running WordPress %2$s.", + "php1sOrNewerIsRequired": "PHP {{first}} or newer is required. This site is running PHP {{second}}. Please ask your hosting provider to upgrade PHP before configuring LoyaltyDog.", + "wordpress1sOrNewerIsRequired": "WordPress {{first}} or newer is required. This site is running WordPress {{second}}.", "woocommerceIsRequiredButIsNot": "WooCommerce is required but is not installed or activated.", - "woocommerce1sOrNewerIsRequired": "WooCommerce %1$s or newer is required. This site is running WooCommerce %2$s.", - "httpFromApi": "HTTP %d from API" + "woocommerce1sOrNewerIsRequired": "WooCommerce {{first}} or newer is required. This site is running WooCommerce {{second}}.", + "httpFromApi": "HTTP {{count}} from API" }, "widget": { "title": "Widget de LoyaltyDog", @@ -62,7 +62,7 @@ "settingsSaved": "Ajustes guardados.", "preview": "Vista previa", "previewPlaceholder": "[El widget de LoyaltyDog se muestra aquí para clientes conectados]", - "couldNotSaveSettingsToLoyaltydog": "Could not save settings to LoyaltyDog: %s", + "couldNotSaveSettingsToLoyaltydog": "Could not save settings to LoyaltyDog: {{value}}", "joinWidget": "Join Widget", "shownToGuestVisitorsAndCustomers": "Shown to guest visitors and customers not yet in your loyalty program.", "signupUrl": "Signup URL", @@ -144,7 +144,7 @@ "invalidFileTypePleaseUploadA": "Invalid file type. Please upload a JSON file.", "invalidImportFileFormat": "Invalid import file format", "noCredentialsWereImported": "No credentials were imported", - "credentialsImportedSuccessfully": "%d credentials imported successfully" + "credentialsImportedSuccessfully": "{{count}} credentials imported successfully" }, "settings": { "loyaltydogCredentials": "LoyaltyDog Credentials", @@ -194,7 +194,7 @@ "howToReconfigure": "How to reconfigure:", "toResetOrChangeYourLoyaltydog": "To reset or change your LoyaltyDog integration, contact support or delete the plugin and reinstall to re-run the account setup wizard.", "detailedAuditLogOfAllCredential": "Detailed audit log of all credential operations is available in WordPress error logs.", - "checkYourWordpressDebugLogFile": "Check your WordPress debug log file for detailed audit information: %s", + "checkYourWordpressDebugLogFile": "Check your WordPress debug log file for detailed audit information: {{value}}", "recentOperations": "Recent Operations:", "allCredentialUpdatesAreLoggedAutomatically": "All credential updates are logged automatically", "allCredentialDeletionsAreLoggedAutomatically": "All credential deletions are logged automatically", @@ -223,7 +223,7 @@ "reviewConnection": "Review Connection", "dismiss": "Dismiss", "loyaltydogV1V2MigrationFailed": "LoyaltyDog v1 → v2 migration failed.", - "error": "Error: %s", + "error": "Error: {{value}}", "recoveryGuide": "Recovery guide", "thePluginWillRetryAutomaticallyOn": "The plugin will retry automatically on the next admin pageload." }, @@ -238,11 +238,11 @@ }, "trialNotices": { "trialExpired": "Trial expired", - "trialDayRemaining": "Trial: %d day remaining", + "trialDayRemaining": "Trial: {{count}} day remaining", "welcomeToLoyaltydog": "Welcome to LoyaltyDog.", "signUpForAFree30": "Sign up for a free 30-day trial to activate your points program. No credit card required.", "startYourFreeTrial": "Start your free trial", - "yourLoyaltydogTrialEndsInDay": "Your LoyaltyDog trial ends in %d day.", + "yourLoyaltydogTrialEndsInDay": "Your LoyaltyDog trial ends in {{count}} day.", "upgradeNowToKeepAwardingPoints": "Upgrade now to keep awarding points after the trial ends.", "upgradeNow": "Upgrade now", "remindMeLater": "Remind me later", @@ -272,7 +272,7 @@ "shortcodes": "Shortcodes", "gettingStartedWithLoyaltydog": "Getting Started with LoyaltyDog", "loyaltydogAddsADigitalLoyaltyProgram": "LoyaltyDog adds a digital loyalty program to your WooCommerce store. Customers earn points on purchases and redeem them for rewards.", - "enterYour1sprogramId2sAnd1sapi": "Enter your %1$sProgram ID%2$s and %1$sAPI Key%2$s in Settings. Get these from your LoyaltyDog dashboard.", + "enterYour1sprogramId2sAnd1sapi": "Enter your {{first}}Program ID{{second}} and {{first}}API Key{{second}} in Settings. Get these from your LoyaltyDog dashboard.", "configureThePointsConversionRateE": "Configure the points conversion rate (e.g., 1 point per $1 spent).", "setUpOfferMessagesThatCustomers": "Set up offer messages that customers see when they have rewards.", "optionallyConfigureCategoryMultipliersCampaignsAnd": "Optionally configure category multipliers, campaigns, and referral rewards.", @@ -294,7 +294,7 @@ "runPromotionalPeriodsWithBonusPoint": "Run promotional periods with bonus point multipliers. Enter one per line:", "formatMultiplierstartdateenddatelabelLinesStartingWith": "Format: multiplier|start_date|end_date|label. Lines starting with # are ignored.", "productLevelOverrides": "Product-Level Overrides", - "setAFixedPointValueFor": "Set a fixed point value for specific products using the %s custom field on the product edit page.", + "setAFixedPointValueFor": "Set a fixed point value for specific products using the {{value}} custom field on the product edit page.", "availableShortcodes": "Available Shortcodes", "displayTheLoggedInCustomerS": "Display the logged-in customer's points balance inline. Returns empty for guests.", "displayTheCustomerSReferralLink": "Display the customer's referral link. Requires the referral program to be configured.", @@ -306,14 +306,14 @@ }, "menu": { "manage": "Manage", - "strongLoyaltydogStrongIsAlmostReady": "LoyaltyDog is almost ready. To get started, %sset your LoyaltyDog account keys%s.", - "strongLoyaltydogStrongRequiresCouponsTo": "LoyaltyDog requires coupons to be %senabled%s in order to function properly and allow customers to redeem offer during checkout.", + "strongLoyaltydogStrongIsAlmostReady": "LoyaltyDog is almost ready. To get started, {{value}}set your LoyaltyDog account keys{{value2}}.", + "strongLoyaltydogStrongRequiresCouponsTo": "LoyaltyDog requires coupons to be {{value}}enabled{{value2}} in order to function properly and allow customers to redeem offer during checkout.", "sendPushNotifications": "Send Push Notifications", "message": "Message", "pushNotificationsAreCompliantWithEu": "Push notifications are compliant with EU GDPR.", "send": "Send", "enableTheLoggingOfApiRequest": "Enable the logging of API request.", - "1sviewLog2s": "%1$sView Log%2$s", + "1sviewLog2s": "{{first}}View Log{{second}}", "loyaltydogApi": "LoyaltyDog API", "enterWithYourProgramId": "Enter with your program ID.", "enterWithYourLoyaltydogApiKey": "Enter with your LoyaltyDog API key.", @@ -334,7 +334,7 @@ "alwaysRoundDown": "Always round down", "alwaysRoundUp": "Always round up", "offerMessages": "Offer Messages", - "adjustTheMessageByUsing1s": "Adjust the message by using %1$s{friendlyNameToBeAdded}%2$s, %1$s{friendlyName}%2$s, %1$s{name}%2$s, %1$s{value}%2$s, %1$s{currency}%2$s to represent the redeemed / available offer.", + "adjustTheMessageByUsing1s": "Adjust the message by using {{first}}{friendlyNameToBeAdded}{{second}}, {{first}}{friendlyName}{{second}}, {{first}}{name}{{second}}, {{first}}{value}{{second}}, {{first}}{currency}{{second}} to represent the redeemed / available offer.", "availableOfferMessage": "Available Offer Message", "addAnOptionalMessageWhenUser": "Add an optional message when user have a active Loyalty offer. Limited HTML is allowed. Leave blank to disable.", "strongActiveLoyaltyOfferStrongFriendlynametobeadded": "Active Loyalty Offer: {friendlyNameToBeAdded}.
You can add some products to redeem this offer.", @@ -343,9 +343,9 @@ "strongLoyaltyRewardStrongFriendlynametobeadded": "Loyalty Reward: {friendlyNameToBeAdded}", "pointsEarnedForActions": "Points Earned for Actions", "customersCanAlsoEarnPointsFor": "Customers can also earn points for actions like creating an account or writing a product review. You can enter the amount of points the customer will earn for each action in this section.", - "isRequired": "%s is required.", + "isRequired": "{{value}} is required.", "points": "Points", - "isInvalid": "%s is invalid.", + "isInvalid": "{{value}} is invalid.", "messageCanNotBeBlank": "Message can not be blank.", "messageHaveBeenSent": "Message have been sent." }, @@ -370,7 +370,7 @@ "pasteTheKeyFromYourEmail": "Paste the key from your email", "sentToYourInboxAfterSubscribing": "Sent to your inbox after subscribing at loyalty.dog.", "activate": "Activate", - "enterYourProgramIdAndApi": "Enter your Program ID and API Key from your %1$sLoyaltyDog dashboard%2$s.", + "enterYourProgramIdAndApi": "Enter your Program ID and API Key from your {{first}}LoyaltyDog dashboard{{second}}.", "eG507f1f77bcf86cd799439011": "e.g., 507f1f77bcf86cd799439011", "foundInYourLoyaltydogDashboardUnder": "Found in your LoyaltyDog dashboard under Settings > API.", "yourApiKey": "Your API key", @@ -418,11 +418,11 @@ "bothProgramIdAndApiKey": "Both Program ID and API Key are required.", "invalidApiKeyPleaseCheckYour": "Invalid API Key. Please check your credentials.", "programNotFoundPleaseCheckYour": "Program not found. Please check your Program ID.", - "connectionFailedHttpPleaseTryAgain": "Connection failed (HTTP %s). Please try again.", + "connectionFailedHttpPleaseTryAgain": "Connection failed (HTTP {{value}}). Please try again.", "connectionSuccessful": "Connection successful!", "credentialsAreRequired": "Credentials are required.", "setupComplete": "Setup complete!", - "apiUnreachableHttp": "API unreachable (HTTP %s)", + "apiUnreachableHttp": "API unreachable (HTTP {{value}})", "activationKeyLooksMalformedPasteThe": "Activation key looks malformed. Paste the key exactly as it appears in your email.", "activating": "Activating…", "connectedContinuingToConfiguration": "Connected. Continuing to configuration…", @@ -466,7 +466,7 @@ "checkSslCertificateValidity": "Check SSL certificate validity", "reviewWebhookEventLogs": "Review webhook event logs", "testWithManualWebhookDispatch": "Test with manual webhook dispatch", - "ticketCreatedWeLlRespondWithin": "Ticket %s created. We'll respond within 4 hours." + "ticketCreatedWeLlRespondWithin": "Ticket {{value}} created. We'll respond within 4 hours." }, "settingsSync": { "serverReturnedAnUnexpectedResponseShape": "Server returned an unexpected response shape." @@ -483,12 +483,12 @@ "loyaltydogInc": "LoyaltyDog Inc.", "httpsLoyaltyDog": "https://loyalty.dog", "loyaltydogRequiresWordpress69Or": "LoyaltyDog requires WordPress 6.9 or newer.", - "youAreCurrentlyRunningWordpress": "You are currently running WordPress %s.", + "youAreCurrentlyRunningWordpress": "You are currently running WordPress {{value}}.", "loyaltydogRequiresPhp80Or": "LoyaltyDog requires PHP 8.0 or newer.", - "youAreCurrentlyRunningPhp": "You are currently running PHP %s.", + "youAreCurrentlyRunningPhp": "You are currently running PHP {{value}}.", "loyaltydogRequiresWoocommerceToBeInstalled": "LoyaltyDog requires WooCommerce to be installed and activated.", "loyaltydogRequiresWoocommerce70Or": "LoyaltyDog requires WooCommerce 7.0 or newer.", - "youAreCurrentlyRunningWoocommerce": "You are currently running WooCommerce %s.", + "youAreCurrentlyRunningWoocommerce": "You are currently running WooCommerce {{value}}.", "loyaltydogActivationFailedSystemRequirementsNot": "LoyaltyDog activation failed: system requirements not met." }, "misc": { @@ -524,14 +524,14 @@ "loyaltyReward": "Loyalty Reward", "redeem": "REDEEM", "redeemedSuccessfully": "Redeemed Successfully", - "xPointsBonusActive": "%sx points bonus active!", + "xPointsBonusActive": "{{value}}x points bonus active!", "minimumSpendForPoints": "Minimum spend for points", "minimumOrderTotalRequiredToEarn": "Minimum order total required to earn points. Leave empty to disable.", "categoryPointMultipliers": "Category point multipliers", "onePerLineCategoryslugMultiplierE": "One per line: category_slug:multiplier (e.g., electronics:2 for double points). If a product is in multiple categories, the highest multiplier applies.", "timeLimitedCampaigns": "Time-limited campaigns", "onePerLineMultiplierstartdateenddatelabelEG": "One per line: multiplier|start_date|end_date|label (e.g., 2|2026-03-01|2026-03-31|Double Points March). The highest active campaign multiplier applies to all orders. Lines starting with # are ignored.", - "welcomeTo1s2s": "Welcome to %1$s %2$s", + "welcomeTo1s2s": "Welcome to {{first}} {{second}}", "loading": "Loading...", "dashboard": "Dashboard", "widget": "Widget", @@ -551,7 +551,7 @@ "activateLoyaltydog": "Activate LoyaltyDog", "havingTroubleContactSupport": "Having trouble? Contact support", "accountLinkedSuccessfully": "Account Linked Successfully!", - "yourLoyaltydogAccountIsNowConnected": "Your %s LoyaltyDog account is now connected to your WordPress store.", + "yourLoyaltydogAccountIsNowConnected": "Your {{value}} LoyaltyDog account is now connected to your WordPress store.", "dashboardImplementationComingInFutureUpdates": "Dashboard implementation coming in future updates.", "increasePointMultiplierForTopSelling": "Increase point multiplier for top-selling category (Electronics) to boost engagement", "createAWinBackCampaignFor": "Create a win-back campaign for 120 inactive members who spent $1000+ lifetime", @@ -584,18 +584,18 @@ "youAreNotYetEnrolledIn": "You are not yet enrolled in our loyalty program. Points are earned automatically when you make purchases.", "yourPointsBalance": "Your Points Balance", "points": "points", - "tier": "Tier: %s", + "tier": "Tier: {{value}}", "activeReward": "Active Reward", "addItemsToYourCartTo": "Add items to your cart to redeem this reward at checkout.", "viewCart": "View cart", "howToEarnPoints": "How to Earn Points", - "earn1sPointsForEvery2s": "Earn %1$s points for every %2$s spent", - "pointsForCreatingAnAccount": "%s points for creating an account", - "pointsForWritingAProductReview": "%s points for writing a product review", - "pointsForReferringAFriend": "%s points for referring a friend", - "strongLoyaltyPointsStrongYouHave": "Loyalty Points: You have %s points.", + "earn1sPointsForEvery2s": "Earn {{first}} points for every {{second}} spent", + "pointsForCreatingAnAccount": "{{value}} points for creating an account", + "pointsForWritingAProductReview": "{{value}} points for writing a product review", + "pointsForReferringAFriend": "{{value}} points for referring a friend", + "strongLoyaltyPointsStrongYouHave": "Loyalty Points: You have {{value}} points.", "viewDetails": "View details", - "points2": "%s points" + "points2": "{{value}} points" }, "customerExport": { "youMustBeLoggedInTo": "You must be logged in to export your loyalty data.", @@ -661,7 +661,7 @@ "passwordIsRequired": "Password is required", "welcomeToLoyaltydogYourAccountIs": "Welcome to LoyaltyDog - Your Account Is Ready", "welcomeToLoyaltydog": "Welcome to LoyaltyDog!", - "yourLoyaltydogAccountForHasBeen": "Your LoyaltyDog account for %s has been created successfully.", + "yourLoyaltydogAccountForHasBeen": "Your LoyaltyDog account for {{value}} has been created successfully.", "yourLoyaltydogAccountHasBeenCreated": "Your LoyaltyDog account has been created successfully.", "belowAreYourLoginCredentialsYou": "Below are your login credentials. You can use these to access your LoyaltyDog dashboard:", "email": "Email", diff --git a/packages/i18n/locales/es-MX/wordpress.json b/packages/i18n/locales/es-MX/wordpress.json index 68f6c9e..856d1f2 100644 --- a/packages/i18n/locales/es-MX/wordpress.json +++ b/packages/i18n/locales/es-MX/wordpress.json @@ -13,7 +13,7 @@ "programSummaryMetrics": "Program summary metrics", "connectionStatus": "Connection status", "connection": "Connection", - "programWp": "Program: %s", + "programWp": "Program: {{value}}", "pointsIssuedInTheLast30": "Points issued in the last 30 days", "pointsIssued30d": "Points issued (30d)", "valueNotYetAvailable": "Value not yet available", @@ -43,11 +43,11 @@ "unauthorized": "No autorizado", "youDoNotHavePermissionTo": "You do not have permission to access this page.", "programId": "Program ID", - "php1sOrNewerIsRequired": "PHP %1$s or newer is required. This site is running PHP %2$s. Please ask your hosting provider to upgrade PHP before configuring LoyaltyDog.", - "wordpress1sOrNewerIsRequired": "WordPress %1$s or newer is required. This site is running WordPress %2$s.", + "php1sOrNewerIsRequired": "PHP {{first}} or newer is required. This site is running PHP {{second}}. Please ask your hosting provider to upgrade PHP before configuring LoyaltyDog.", + "wordpress1sOrNewerIsRequired": "WordPress {{first}} or newer is required. This site is running WordPress {{second}}.", "woocommerceIsRequiredButIsNot": "WooCommerce is required but is not installed or activated.", - "woocommerce1sOrNewerIsRequired": "WooCommerce %1$s or newer is required. This site is running WooCommerce %2$s.", - "httpFromApi": "HTTP %d from API" + "woocommerce1sOrNewerIsRequired": "WooCommerce {{first}} or newer is required. This site is running WooCommerce {{second}}.", + "httpFromApi": "HTTP {{count}} from API" }, "widget": { "title": "Widget de LoyaltyDog", @@ -62,7 +62,7 @@ "settingsSaved": "Ajustes guardados.", "preview": "Vista previa", "previewPlaceholder": "[El widget de LoyaltyDog se muestra aquí para clientes conectados]", - "couldNotSaveSettingsToLoyaltydog": "Could not save settings to LoyaltyDog: %s", + "couldNotSaveSettingsToLoyaltydog": "Could not save settings to LoyaltyDog: {{value}}", "joinWidget": "Join Widget", "shownToGuestVisitorsAndCustomers": "Shown to guest visitors and customers not yet in your loyalty program.", "signupUrl": "Signup URL", @@ -144,7 +144,7 @@ "invalidFileTypePleaseUploadA": "Invalid file type. Please upload a JSON file.", "invalidImportFileFormat": "Invalid import file format", "noCredentialsWereImported": "No credentials were imported", - "credentialsImportedSuccessfully": "%d credentials imported successfully" + "credentialsImportedSuccessfully": "{{count}} credentials imported successfully" }, "settings": { "loyaltydogCredentials": "LoyaltyDog Credentials", @@ -194,7 +194,7 @@ "howToReconfigure": "How to reconfigure:", "toResetOrChangeYourLoyaltydog": "To reset or change your LoyaltyDog integration, contact support or delete the plugin and reinstall to re-run the account setup wizard.", "detailedAuditLogOfAllCredential": "Detailed audit log of all credential operations is available in WordPress error logs.", - "checkYourWordpressDebugLogFile": "Check your WordPress debug log file for detailed audit information: %s", + "checkYourWordpressDebugLogFile": "Check your WordPress debug log file for detailed audit information: {{value}}", "recentOperations": "Recent Operations:", "allCredentialUpdatesAreLoggedAutomatically": "All credential updates are logged automatically", "allCredentialDeletionsAreLoggedAutomatically": "All credential deletions are logged automatically", @@ -223,7 +223,7 @@ "reviewConnection": "Review Connection", "dismiss": "Dismiss", "loyaltydogV1V2MigrationFailed": "LoyaltyDog v1 → v2 migration failed.", - "error": "Error: %s", + "error": "Error: {{value}}", "recoveryGuide": "Recovery guide", "thePluginWillRetryAutomaticallyOn": "The plugin will retry automatically on the next admin pageload." }, @@ -238,11 +238,11 @@ }, "trialNotices": { "trialExpired": "Trial expired", - "trialDayRemaining": "Trial: %d day remaining", + "trialDayRemaining": "Trial: {{count}} day remaining", "welcomeToLoyaltydog": "Welcome to LoyaltyDog.", "signUpForAFree30": "Sign up for a free 30-day trial to activate your points program. No credit card required.", "startYourFreeTrial": "Start your free trial", - "yourLoyaltydogTrialEndsInDay": "Your LoyaltyDog trial ends in %d day.", + "yourLoyaltydogTrialEndsInDay": "Your LoyaltyDog trial ends in {{count}} day.", "upgradeNowToKeepAwardingPoints": "Upgrade now to keep awarding points after the trial ends.", "upgradeNow": "Upgrade now", "remindMeLater": "Remind me later", @@ -272,7 +272,7 @@ "shortcodes": "Shortcodes", "gettingStartedWithLoyaltydog": "Getting Started with LoyaltyDog", "loyaltydogAddsADigitalLoyaltyProgram": "LoyaltyDog adds a digital loyalty program to your WooCommerce store. Customers earn points on purchases and redeem them for rewards.", - "enterYour1sprogramId2sAnd1sapi": "Enter your %1$sProgram ID%2$s and %1$sAPI Key%2$s in Settings. Get these from your LoyaltyDog dashboard.", + "enterYour1sprogramId2sAnd1sapi": "Enter your {{first}}Program ID{{second}} and {{first}}API Key{{second}} in Settings. Get these from your LoyaltyDog dashboard.", "configureThePointsConversionRateE": "Configure the points conversion rate (e.g., 1 point per $1 spent).", "setUpOfferMessagesThatCustomers": "Set up offer messages that customers see when they have rewards.", "optionallyConfigureCategoryMultipliersCampaignsAnd": "Optionally configure category multipliers, campaigns, and referral rewards.", @@ -294,7 +294,7 @@ "runPromotionalPeriodsWithBonusPoint": "Run promotional periods with bonus point multipliers. Enter one per line:", "formatMultiplierstartdateenddatelabelLinesStartingWith": "Format: multiplier|start_date|end_date|label. Lines starting with # are ignored.", "productLevelOverrides": "Product-Level Overrides", - "setAFixedPointValueFor": "Set a fixed point value for specific products using the %s custom field on the product edit page.", + "setAFixedPointValueFor": "Set a fixed point value for specific products using the {{value}} custom field on the product edit page.", "availableShortcodes": "Available Shortcodes", "displayTheLoggedInCustomerS": "Display the logged-in customer's points balance inline. Returns empty for guests.", "displayTheCustomerSReferralLink": "Display the customer's referral link. Requires the referral program to be configured.", @@ -306,14 +306,14 @@ }, "menu": { "manage": "Manage", - "strongLoyaltydogStrongIsAlmostReady": "LoyaltyDog is almost ready. To get started, %sset your LoyaltyDog account keys%s.", - "strongLoyaltydogStrongRequiresCouponsTo": "LoyaltyDog requires coupons to be %senabled%s in order to function properly and allow customers to redeem offer during checkout.", + "strongLoyaltydogStrongIsAlmostReady": "LoyaltyDog is almost ready. To get started, {{value}}set your LoyaltyDog account keys{{value2}}.", + "strongLoyaltydogStrongRequiresCouponsTo": "LoyaltyDog requires coupons to be {{value}}enabled{{value2}} in order to function properly and allow customers to redeem offer during checkout.", "sendPushNotifications": "Send Push Notifications", "message": "Message", "pushNotificationsAreCompliantWithEu": "Push notifications are compliant with EU GDPR.", "send": "Send", "enableTheLoggingOfApiRequest": "Enable the logging of API request.", - "1sviewLog2s": "%1$sView Log%2$s", + "1sviewLog2s": "{{first}}View Log{{second}}", "loyaltydogApi": "LoyaltyDog API", "enterWithYourProgramId": "Enter with your program ID.", "enterWithYourLoyaltydogApiKey": "Enter with your LoyaltyDog API key.", @@ -334,7 +334,7 @@ "alwaysRoundDown": "Always round down", "alwaysRoundUp": "Always round up", "offerMessages": "Offer Messages", - "adjustTheMessageByUsing1s": "Adjust the message by using %1$s{friendlyNameToBeAdded}%2$s, %1$s{friendlyName}%2$s, %1$s{name}%2$s, %1$s{value}%2$s, %1$s{currency}%2$s to represent the redeemed / available offer.", + "adjustTheMessageByUsing1s": "Adjust the message by using {{first}}{friendlyNameToBeAdded}{{second}}, {{first}}{friendlyName}{{second}}, {{first}}{name}{{second}}, {{first}}{value}{{second}}, {{first}}{currency}{{second}} to represent the redeemed / available offer.", "availableOfferMessage": "Available Offer Message", "addAnOptionalMessageWhenUser": "Add an optional message when user have a active Loyalty offer. Limited HTML is allowed. Leave blank to disable.", "strongActiveLoyaltyOfferStrongFriendlynametobeadded": "Active Loyalty Offer: {friendlyNameToBeAdded}.
You can add some products to redeem this offer.", @@ -343,9 +343,9 @@ "strongLoyaltyRewardStrongFriendlynametobeadded": "Loyalty Reward: {friendlyNameToBeAdded}", "pointsEarnedForActions": "Points Earned for Actions", "customersCanAlsoEarnPointsFor": "Customers can also earn points for actions like creating an account or writing a product review. You can enter the amount of points the customer will earn for each action in this section.", - "isRequired": "%s is required.", + "isRequired": "{{value}} is required.", "points": "Points", - "isInvalid": "%s is invalid.", + "isInvalid": "{{value}} is invalid.", "messageCanNotBeBlank": "Message can not be blank.", "messageHaveBeenSent": "Message have been sent." }, @@ -370,7 +370,7 @@ "pasteTheKeyFromYourEmail": "Paste the key from your email", "sentToYourInboxAfterSubscribing": "Sent to your inbox after subscribing at loyalty.dog.", "activate": "Activate", - "enterYourProgramIdAndApi": "Enter your Program ID and API Key from your %1$sLoyaltyDog dashboard%2$s.", + "enterYourProgramIdAndApi": "Enter your Program ID and API Key from your {{first}}LoyaltyDog dashboard{{second}}.", "eG507f1f77bcf86cd799439011": "e.g., 507f1f77bcf86cd799439011", "foundInYourLoyaltydogDashboardUnder": "Found in your LoyaltyDog dashboard under Settings > API.", "yourApiKey": "Your API key", @@ -418,11 +418,11 @@ "bothProgramIdAndApiKey": "Both Program ID and API Key are required.", "invalidApiKeyPleaseCheckYour": "Invalid API Key. Please check your credentials.", "programNotFoundPleaseCheckYour": "Program not found. Please check your Program ID.", - "connectionFailedHttpPleaseTryAgain": "Connection failed (HTTP %s). Please try again.", + "connectionFailedHttpPleaseTryAgain": "Connection failed (HTTP {{value}}). Please try again.", "connectionSuccessful": "Connection successful!", "credentialsAreRequired": "Credentials are required.", "setupComplete": "Setup complete!", - "apiUnreachableHttp": "API unreachable (HTTP %s)", + "apiUnreachableHttp": "API unreachable (HTTP {{value}})", "activationKeyLooksMalformedPasteThe": "Activation key looks malformed. Paste the key exactly as it appears in your email.", "activating": "Activating…", "connectedContinuingToConfiguration": "Connected. Continuing to configuration…", @@ -466,7 +466,7 @@ "checkSslCertificateValidity": "Check SSL certificate validity", "reviewWebhookEventLogs": "Review webhook event logs", "testWithManualWebhookDispatch": "Test with manual webhook dispatch", - "ticketCreatedWeLlRespondWithin": "Ticket %s created. We'll respond within 4 hours." + "ticketCreatedWeLlRespondWithin": "Ticket {{value}} created. We'll respond within 4 hours." }, "settingsSync": { "serverReturnedAnUnexpectedResponseShape": "Server returned an unexpected response shape." @@ -483,12 +483,12 @@ "loyaltydogInc": "LoyaltyDog Inc.", "httpsLoyaltyDog": "https://loyalty.dog", "loyaltydogRequiresWordpress69Or": "LoyaltyDog requires WordPress 6.9 or newer.", - "youAreCurrentlyRunningWordpress": "You are currently running WordPress %s.", + "youAreCurrentlyRunningWordpress": "You are currently running WordPress {{value}}.", "loyaltydogRequiresPhp80Or": "LoyaltyDog requires PHP 8.0 or newer.", - "youAreCurrentlyRunningPhp": "You are currently running PHP %s.", + "youAreCurrentlyRunningPhp": "You are currently running PHP {{value}}.", "loyaltydogRequiresWoocommerceToBeInstalled": "LoyaltyDog requires WooCommerce to be installed and activated.", "loyaltydogRequiresWoocommerce70Or": "LoyaltyDog requires WooCommerce 7.0 or newer.", - "youAreCurrentlyRunningWoocommerce": "You are currently running WooCommerce %s.", + "youAreCurrentlyRunningWoocommerce": "You are currently running WooCommerce {{value}}.", "loyaltydogActivationFailedSystemRequirementsNot": "LoyaltyDog activation failed: system requirements not met." }, "misc": { @@ -524,14 +524,14 @@ "loyaltyReward": "Loyalty Reward", "redeem": "REDEEM", "redeemedSuccessfully": "Redeemed Successfully", - "xPointsBonusActive": "%sx points bonus active!", + "xPointsBonusActive": "{{value}}x points bonus active!", "minimumSpendForPoints": "Minimum spend for points", "minimumOrderTotalRequiredToEarn": "Minimum order total required to earn points. Leave empty to disable.", "categoryPointMultipliers": "Category point multipliers", "onePerLineCategoryslugMultiplierE": "One per line: category_slug:multiplier (e.g., electronics:2 for double points). If a product is in multiple categories, the highest multiplier applies.", "timeLimitedCampaigns": "Time-limited campaigns", "onePerLineMultiplierstartdateenddatelabelEG": "One per line: multiplier|start_date|end_date|label (e.g., 2|2026-03-01|2026-03-31|Double Points March). The highest active campaign multiplier applies to all orders. Lines starting with # are ignored.", - "welcomeTo1s2s": "Welcome to %1$s %2$s", + "welcomeTo1s2s": "Welcome to {{first}} {{second}}", "loading": "Loading...", "dashboard": "Dashboard", "widget": "Widget", @@ -551,7 +551,7 @@ "activateLoyaltydog": "Activate LoyaltyDog", "havingTroubleContactSupport": "Having trouble? Contact support", "accountLinkedSuccessfully": "Account Linked Successfully!", - "yourLoyaltydogAccountIsNowConnected": "Your %s LoyaltyDog account is now connected to your WordPress store.", + "yourLoyaltydogAccountIsNowConnected": "Your {{value}} LoyaltyDog account is now connected to your WordPress store.", "dashboardImplementationComingInFutureUpdates": "Dashboard implementation coming in future updates.", "increasePointMultiplierForTopSelling": "Increase point multiplier for top-selling category (Electronics) to boost engagement", "createAWinBackCampaignFor": "Create a win-back campaign for 120 inactive members who spent $1000+ lifetime", @@ -584,18 +584,18 @@ "youAreNotYetEnrolledIn": "You are not yet enrolled in our loyalty program. Points are earned automatically when you make purchases.", "yourPointsBalance": "Your Points Balance", "points": "points", - "tier": "Tier: %s", + "tier": "Tier: {{value}}", "activeReward": "Active Reward", "addItemsToYourCartTo": "Add items to your cart to redeem this reward at checkout.", "viewCart": "View cart", "howToEarnPoints": "How to Earn Points", - "earn1sPointsForEvery2s": "Earn %1$s points for every %2$s spent", - "pointsForCreatingAnAccount": "%s points for creating an account", - "pointsForWritingAProductReview": "%s points for writing a product review", - "pointsForReferringAFriend": "%s points for referring a friend", - "strongLoyaltyPointsStrongYouHave": "Loyalty Points: You have %s points.", + "earn1sPointsForEvery2s": "Earn {{first}} points for every {{second}} spent", + "pointsForCreatingAnAccount": "{{value}} points for creating an account", + "pointsForWritingAProductReview": "{{value}} points for writing a product review", + "pointsForReferringAFriend": "{{value}} points for referring a friend", + "strongLoyaltyPointsStrongYouHave": "Loyalty Points: You have {{value}} points.", "viewDetails": "View details", - "points2": "%s points" + "points2": "{{value}} points" }, "customerExport": { "youMustBeLoggedInTo": "You must be logged in to export your loyalty data.", @@ -661,7 +661,7 @@ "passwordIsRequired": "Password is required", "welcomeToLoyaltydogYourAccountIs": "Welcome to LoyaltyDog - Your Account Is Ready", "welcomeToLoyaltydog": "Welcome to LoyaltyDog!", - "yourLoyaltydogAccountForHasBeen": "Your LoyaltyDog account for %s has been created successfully.", + "yourLoyaltydogAccountForHasBeen": "Your LoyaltyDog account for {{value}} has been created successfully.", "yourLoyaltydogAccountHasBeenCreated": "Your LoyaltyDog account has been created successfully.", "belowAreYourLoginCredentialsYou": "Below are your login credentials. You can use these to access your LoyaltyDog dashboard:", "email": "Email", diff --git a/packages/i18n/locales/fr/wordpress.json b/packages/i18n/locales/fr/wordpress.json index e4a6230..a72211a 100644 --- a/packages/i18n/locales/fr/wordpress.json +++ b/packages/i18n/locales/fr/wordpress.json @@ -13,7 +13,7 @@ "programSummaryMetrics": "Program summary metrics", "connectionStatus": "Connection status", "connection": "Connection", - "programWp": "Program: %s", + "programWp": "Program: {{value}}", "pointsIssuedInTheLast30": "Points issued in the last 30 days", "pointsIssued30d": "Points issued (30d)", "valueNotYetAvailable": "Value not yet available", @@ -43,11 +43,11 @@ "unauthorized": "Non autorisé", "youDoNotHavePermissionTo": "You do not have permission to access this page.", "programId": "Program ID", - "php1sOrNewerIsRequired": "PHP %1$s or newer is required. This site is running PHP %2$s. Please ask your hosting provider to upgrade PHP before configuring LoyaltyDog.", - "wordpress1sOrNewerIsRequired": "WordPress %1$s or newer is required. This site is running WordPress %2$s.", + "php1sOrNewerIsRequired": "PHP {{first}} or newer is required. This site is running PHP {{second}}. Please ask your hosting provider to upgrade PHP before configuring LoyaltyDog.", + "wordpress1sOrNewerIsRequired": "WordPress {{first}} or newer is required. This site is running WordPress {{second}}.", "woocommerceIsRequiredButIsNot": "WooCommerce is required but is not installed or activated.", - "woocommerce1sOrNewerIsRequired": "WooCommerce %1$s or newer is required. This site is running WooCommerce %2$s.", - "httpFromApi": "HTTP %d from API" + "woocommerce1sOrNewerIsRequired": "WooCommerce {{first}} or newer is required. This site is running WooCommerce {{second}}.", + "httpFromApi": "HTTP {{count}} from API" }, "widget": { "title": "Widget LoyaltyDog", @@ -62,7 +62,7 @@ "settingsSaved": "Paramètres enregistrés.", "preview": "Aperçu", "previewPlaceholder": "[Le widget LoyaltyDog s'affiche ici pour les clients connectés]", - "couldNotSaveSettingsToLoyaltydog": "Could not save settings to LoyaltyDog: %s", + "couldNotSaveSettingsToLoyaltydog": "Could not save settings to LoyaltyDog: {{value}}", "joinWidget": "Join Widget", "shownToGuestVisitorsAndCustomers": "Shown to guest visitors and customers not yet in your loyalty program.", "signupUrl": "Signup URL", @@ -144,7 +144,7 @@ "invalidFileTypePleaseUploadA": "Invalid file type. Please upload a JSON file.", "invalidImportFileFormat": "Invalid import file format", "noCredentialsWereImported": "No credentials were imported", - "credentialsImportedSuccessfully": "%d credentials imported successfully" + "credentialsImportedSuccessfully": "{{count}} credentials imported successfully" }, "settings": { "loyaltydogCredentials": "LoyaltyDog Credentials", @@ -194,7 +194,7 @@ "howToReconfigure": "How to reconfigure:", "toResetOrChangeYourLoyaltydog": "To reset or change your LoyaltyDog integration, contact support or delete the plugin and reinstall to re-run the account setup wizard.", "detailedAuditLogOfAllCredential": "Detailed audit log of all credential operations is available in WordPress error logs.", - "checkYourWordpressDebugLogFile": "Check your WordPress debug log file for detailed audit information: %s", + "checkYourWordpressDebugLogFile": "Check your WordPress debug log file for detailed audit information: {{value}}", "recentOperations": "Recent Operations:", "allCredentialUpdatesAreLoggedAutomatically": "All credential updates are logged automatically", "allCredentialDeletionsAreLoggedAutomatically": "All credential deletions are logged automatically", @@ -223,7 +223,7 @@ "reviewConnection": "Review Connection", "dismiss": "Dismiss", "loyaltydogV1V2MigrationFailed": "LoyaltyDog v1 → v2 migration failed.", - "error": "Error: %s", + "error": "Error: {{value}}", "recoveryGuide": "Recovery guide", "thePluginWillRetryAutomaticallyOn": "The plugin will retry automatically on the next admin pageload." }, @@ -238,11 +238,11 @@ }, "trialNotices": { "trialExpired": "Trial expired", - "trialDayRemaining": "Trial: %d day remaining", + "trialDayRemaining": "Trial: {{count}} day remaining", "welcomeToLoyaltydog": "Welcome to LoyaltyDog.", "signUpForAFree30": "Sign up for a free 30-day trial to activate your points program. No credit card required.", "startYourFreeTrial": "Start your free trial", - "yourLoyaltydogTrialEndsInDay": "Your LoyaltyDog trial ends in %d day.", + "yourLoyaltydogTrialEndsInDay": "Your LoyaltyDog trial ends in {{count}} day.", "upgradeNowToKeepAwardingPoints": "Upgrade now to keep awarding points after the trial ends.", "upgradeNow": "Upgrade now", "remindMeLater": "Remind me later", @@ -272,7 +272,7 @@ "shortcodes": "Shortcodes", "gettingStartedWithLoyaltydog": "Getting Started with LoyaltyDog", "loyaltydogAddsADigitalLoyaltyProgram": "LoyaltyDog adds a digital loyalty program to your WooCommerce store. Customers earn points on purchases and redeem them for rewards.", - "enterYour1sprogramId2sAnd1sapi": "Enter your %1$sProgram ID%2$s and %1$sAPI Key%2$s in Settings. Get these from your LoyaltyDog dashboard.", + "enterYour1sprogramId2sAnd1sapi": "Enter your {{first}}Program ID{{second}} and {{first}}API Key{{second}} in Settings. Get these from your LoyaltyDog dashboard.", "configureThePointsConversionRateE": "Configure the points conversion rate (e.g., 1 point per $1 spent).", "setUpOfferMessagesThatCustomers": "Set up offer messages that customers see when they have rewards.", "optionallyConfigureCategoryMultipliersCampaignsAnd": "Optionally configure category multipliers, campaigns, and referral rewards.", @@ -294,7 +294,7 @@ "runPromotionalPeriodsWithBonusPoint": "Run promotional periods with bonus point multipliers. Enter one per line:", "formatMultiplierstartdateenddatelabelLinesStartingWith": "Format: multiplier|start_date|end_date|label. Lines starting with # are ignored.", "productLevelOverrides": "Product-Level Overrides", - "setAFixedPointValueFor": "Set a fixed point value for specific products using the %s custom field on the product edit page.", + "setAFixedPointValueFor": "Set a fixed point value for specific products using the {{value}} custom field on the product edit page.", "availableShortcodes": "Available Shortcodes", "displayTheLoggedInCustomerS": "Display the logged-in customer's points balance inline. Returns empty for guests.", "displayTheCustomerSReferralLink": "Display the customer's referral link. Requires the referral program to be configured.", @@ -306,14 +306,14 @@ }, "menu": { "manage": "Manage", - "strongLoyaltydogStrongIsAlmostReady": "LoyaltyDog is almost ready. To get started, %sset your LoyaltyDog account keys%s.", - "strongLoyaltydogStrongRequiresCouponsTo": "LoyaltyDog requires coupons to be %senabled%s in order to function properly and allow customers to redeem offer during checkout.", + "strongLoyaltydogStrongIsAlmostReady": "LoyaltyDog is almost ready. To get started, {{value}}set your LoyaltyDog account keys{{value2}}.", + "strongLoyaltydogStrongRequiresCouponsTo": "LoyaltyDog requires coupons to be {{value}}enabled{{value2}} in order to function properly and allow customers to redeem offer during checkout.", "sendPushNotifications": "Send Push Notifications", "message": "Message", "pushNotificationsAreCompliantWithEu": "Push notifications are compliant with EU GDPR.", "send": "Send", "enableTheLoggingOfApiRequest": "Enable the logging of API request.", - "1sviewLog2s": "%1$sView Log%2$s", + "1sviewLog2s": "{{first}}View Log{{second}}", "loyaltydogApi": "LoyaltyDog API", "enterWithYourProgramId": "Enter with your program ID.", "enterWithYourLoyaltydogApiKey": "Enter with your LoyaltyDog API key.", @@ -334,7 +334,7 @@ "alwaysRoundDown": "Always round down", "alwaysRoundUp": "Always round up", "offerMessages": "Offer Messages", - "adjustTheMessageByUsing1s": "Adjust the message by using %1$s{friendlyNameToBeAdded}%2$s, %1$s{friendlyName}%2$s, %1$s{name}%2$s, %1$s{value}%2$s, %1$s{currency}%2$s to represent the redeemed / available offer.", + "adjustTheMessageByUsing1s": "Adjust the message by using {{first}}{friendlyNameToBeAdded}{{second}}, {{first}}{friendlyName}{{second}}, {{first}}{name}{{second}}, {{first}}{value}{{second}}, {{first}}{currency}{{second}} to represent the redeemed / available offer.", "availableOfferMessage": "Available Offer Message", "addAnOptionalMessageWhenUser": "Add an optional message when user have a active Loyalty offer. Limited HTML is allowed. Leave blank to disable.", "strongActiveLoyaltyOfferStrongFriendlynametobeadded": "Active Loyalty Offer: {friendlyNameToBeAdded}.
You can add some products to redeem this offer.", @@ -343,9 +343,9 @@ "strongLoyaltyRewardStrongFriendlynametobeadded": "Loyalty Reward: {friendlyNameToBeAdded}", "pointsEarnedForActions": "Points Earned for Actions", "customersCanAlsoEarnPointsFor": "Customers can also earn points for actions like creating an account or writing a product review. You can enter the amount of points the customer will earn for each action in this section.", - "isRequired": "%s is required.", + "isRequired": "{{value}} is required.", "points": "Points", - "isInvalid": "%s is invalid.", + "isInvalid": "{{value}} is invalid.", "messageCanNotBeBlank": "Message can not be blank.", "messageHaveBeenSent": "Message have been sent." }, @@ -370,7 +370,7 @@ "pasteTheKeyFromYourEmail": "Paste the key from your email", "sentToYourInboxAfterSubscribing": "Sent to your inbox after subscribing at loyalty.dog.", "activate": "Activate", - "enterYourProgramIdAndApi": "Enter your Program ID and API Key from your %1$sLoyaltyDog dashboard%2$s.", + "enterYourProgramIdAndApi": "Enter your Program ID and API Key from your {{first}}LoyaltyDog dashboard{{second}}.", "eG507f1f77bcf86cd799439011": "e.g., 507f1f77bcf86cd799439011", "foundInYourLoyaltydogDashboardUnder": "Found in your LoyaltyDog dashboard under Settings > API.", "yourApiKey": "Your API key", @@ -418,11 +418,11 @@ "bothProgramIdAndApiKey": "Both Program ID and API Key are required.", "invalidApiKeyPleaseCheckYour": "Invalid API Key. Please check your credentials.", "programNotFoundPleaseCheckYour": "Program not found. Please check your Program ID.", - "connectionFailedHttpPleaseTryAgain": "Connection failed (HTTP %s). Please try again.", + "connectionFailedHttpPleaseTryAgain": "Connection failed (HTTP {{value}}). Please try again.", "connectionSuccessful": "Connection successful!", "credentialsAreRequired": "Credentials are required.", "setupComplete": "Setup complete!", - "apiUnreachableHttp": "API unreachable (HTTP %s)", + "apiUnreachableHttp": "API unreachable (HTTP {{value}})", "activationKeyLooksMalformedPasteThe": "Activation key looks malformed. Paste the key exactly as it appears in your email.", "activating": "Activating…", "connectedContinuingToConfiguration": "Connected. Continuing to configuration…", @@ -466,7 +466,7 @@ "checkSslCertificateValidity": "Check SSL certificate validity", "reviewWebhookEventLogs": "Review webhook event logs", "testWithManualWebhookDispatch": "Test with manual webhook dispatch", - "ticketCreatedWeLlRespondWithin": "Ticket %s created. We'll respond within 4 hours." + "ticketCreatedWeLlRespondWithin": "Ticket {{value}} created. We'll respond within 4 hours." }, "settingsSync": { "serverReturnedAnUnexpectedResponseShape": "Server returned an unexpected response shape." @@ -483,12 +483,12 @@ "loyaltydogInc": "LoyaltyDog Inc.", "httpsLoyaltyDog": "https://loyalty.dog", "loyaltydogRequiresWordpress69Or": "LoyaltyDog requires WordPress 6.9 or newer.", - "youAreCurrentlyRunningWordpress": "You are currently running WordPress %s.", + "youAreCurrentlyRunningWordpress": "You are currently running WordPress {{value}}.", "loyaltydogRequiresPhp80Or": "LoyaltyDog requires PHP 8.0 or newer.", - "youAreCurrentlyRunningPhp": "You are currently running PHP %s.", + "youAreCurrentlyRunningPhp": "You are currently running PHP {{value}}.", "loyaltydogRequiresWoocommerceToBeInstalled": "LoyaltyDog requires WooCommerce to be installed and activated.", "loyaltydogRequiresWoocommerce70Or": "LoyaltyDog requires WooCommerce 7.0 or newer.", - "youAreCurrentlyRunningWoocommerce": "You are currently running WooCommerce %s.", + "youAreCurrentlyRunningWoocommerce": "You are currently running WooCommerce {{value}}.", "loyaltydogActivationFailedSystemRequirementsNot": "LoyaltyDog activation failed: system requirements not met." }, "misc": { @@ -524,14 +524,14 @@ "loyaltyReward": "Loyalty Reward", "redeem": "REDEEM", "redeemedSuccessfully": "Redeemed Successfully", - "xPointsBonusActive": "%sx points bonus active!", + "xPointsBonusActive": "{{value}}x points bonus active!", "minimumSpendForPoints": "Minimum spend for points", "minimumOrderTotalRequiredToEarn": "Minimum order total required to earn points. Leave empty to disable.", "categoryPointMultipliers": "Category point multipliers", "onePerLineCategoryslugMultiplierE": "One per line: category_slug:multiplier (e.g., electronics:2 for double points). If a product is in multiple categories, the highest multiplier applies.", "timeLimitedCampaigns": "Time-limited campaigns", "onePerLineMultiplierstartdateenddatelabelEG": "One per line: multiplier|start_date|end_date|label (e.g., 2|2026-03-01|2026-03-31|Double Points March). The highest active campaign multiplier applies to all orders. Lines starting with # are ignored.", - "welcomeTo1s2s": "Welcome to %1$s %2$s", + "welcomeTo1s2s": "Welcome to {{first}} {{second}}", "loading": "Loading...", "dashboard": "Dashboard", "widget": "Widget", @@ -551,7 +551,7 @@ "activateLoyaltydog": "Activate LoyaltyDog", "havingTroubleContactSupport": "Having trouble? Contact support", "accountLinkedSuccessfully": "Account Linked Successfully!", - "yourLoyaltydogAccountIsNowConnected": "Your %s LoyaltyDog account is now connected to your WordPress store.", + "yourLoyaltydogAccountIsNowConnected": "Your {{value}} LoyaltyDog account is now connected to your WordPress store.", "dashboardImplementationComingInFutureUpdates": "Dashboard implementation coming in future updates.", "increasePointMultiplierForTopSelling": "Increase point multiplier for top-selling category (Electronics) to boost engagement", "createAWinBackCampaignFor": "Create a win-back campaign for 120 inactive members who spent $1000+ lifetime", @@ -584,18 +584,18 @@ "youAreNotYetEnrolledIn": "You are not yet enrolled in our loyalty program. Points are earned automatically when you make purchases.", "yourPointsBalance": "Your Points Balance", "points": "points", - "tier": "Tier: %s", + "tier": "Tier: {{value}}", "activeReward": "Active Reward", "addItemsToYourCartTo": "Add items to your cart to redeem this reward at checkout.", "viewCart": "View cart", "howToEarnPoints": "How to Earn Points", - "earn1sPointsForEvery2s": "Earn %1$s points for every %2$s spent", - "pointsForCreatingAnAccount": "%s points for creating an account", - "pointsForWritingAProductReview": "%s points for writing a product review", - "pointsForReferringAFriend": "%s points for referring a friend", - "strongLoyaltyPointsStrongYouHave": "Loyalty Points: You have %s points.", + "earn1sPointsForEvery2s": "Earn {{first}} points for every {{second}} spent", + "pointsForCreatingAnAccount": "{{value}} points for creating an account", + "pointsForWritingAProductReview": "{{value}} points for writing a product review", + "pointsForReferringAFriend": "{{value}} points for referring a friend", + "strongLoyaltyPointsStrongYouHave": "Loyalty Points: You have {{value}} points.", "viewDetails": "View details", - "points2": "%s points" + "points2": "{{value}} points" }, "customerExport": { "youMustBeLoggedInTo": "You must be logged in to export your loyalty data.", @@ -661,7 +661,7 @@ "passwordIsRequired": "Password is required", "welcomeToLoyaltydogYourAccountIs": "Welcome to LoyaltyDog - Your Account Is Ready", "welcomeToLoyaltydog": "Welcome to LoyaltyDog!", - "yourLoyaltydogAccountForHasBeen": "Your LoyaltyDog account for %s has been created successfully.", + "yourLoyaltydogAccountForHasBeen": "Your LoyaltyDog account for {{value}} has been created successfully.", "yourLoyaltydogAccountHasBeenCreated": "Your LoyaltyDog account has been created successfully.", "belowAreYourLoginCredentialsYou": "Below are your login credentials. You can use these to access your LoyaltyDog dashboard:", "email": "Email", diff --git a/packages/i18n/locales/it/wordpress.json b/packages/i18n/locales/it/wordpress.json index 812dcf3..6af72b2 100644 --- a/packages/i18n/locales/it/wordpress.json +++ b/packages/i18n/locales/it/wordpress.json @@ -13,7 +13,7 @@ "programSummaryMetrics": "Program summary metrics", "connectionStatus": "Connection status", "connection": "Connection", - "programWp": "Program: %s", + "programWp": "Program: {{value}}", "pointsIssuedInTheLast30": "Points issued in the last 30 days", "pointsIssued30d": "Points issued (30d)", "valueNotYetAvailable": "Value not yet available", @@ -43,11 +43,11 @@ "unauthorized": "Non autorizzato", "youDoNotHavePermissionTo": "You do not have permission to access this page.", "programId": "Program ID", - "php1sOrNewerIsRequired": "PHP %1$s or newer is required. This site is running PHP %2$s. Please ask your hosting provider to upgrade PHP before configuring LoyaltyDog.", - "wordpress1sOrNewerIsRequired": "WordPress %1$s or newer is required. This site is running WordPress %2$s.", + "php1sOrNewerIsRequired": "PHP {{first}} or newer is required. This site is running PHP {{second}}. Please ask your hosting provider to upgrade PHP before configuring LoyaltyDog.", + "wordpress1sOrNewerIsRequired": "WordPress {{first}} or newer is required. This site is running WordPress {{second}}.", "woocommerceIsRequiredButIsNot": "WooCommerce is required but is not installed or activated.", - "woocommerce1sOrNewerIsRequired": "WooCommerce %1$s or newer is required. This site is running WooCommerce %2$s.", - "httpFromApi": "HTTP %d from API" + "woocommerce1sOrNewerIsRequired": "WooCommerce {{first}} or newer is required. This site is running WooCommerce {{second}}.", + "httpFromApi": "HTTP {{count}} from API" }, "widget": { "title": "Widget LoyaltyDog", @@ -62,7 +62,7 @@ "settingsSaved": "Impostazioni salvate.", "preview": "Anteprima", "previewPlaceholder": "[Il widget LoyaltyDog viene visualizzato qui per i clienti registrati]", - "couldNotSaveSettingsToLoyaltydog": "Could not save settings to LoyaltyDog: %s", + "couldNotSaveSettingsToLoyaltydog": "Could not save settings to LoyaltyDog: {{value}}", "joinWidget": "Join Widget", "shownToGuestVisitorsAndCustomers": "Shown to guest visitors and customers not yet in your loyalty program.", "signupUrl": "Signup URL", @@ -144,7 +144,7 @@ "invalidFileTypePleaseUploadA": "Invalid file type. Please upload a JSON file.", "invalidImportFileFormat": "Invalid import file format", "noCredentialsWereImported": "No credentials were imported", - "credentialsImportedSuccessfully": "%d credentials imported successfully" + "credentialsImportedSuccessfully": "{{count}} credentials imported successfully" }, "settings": { "loyaltydogCredentials": "LoyaltyDog Credentials", @@ -194,7 +194,7 @@ "howToReconfigure": "How to reconfigure:", "toResetOrChangeYourLoyaltydog": "To reset or change your LoyaltyDog integration, contact support or delete the plugin and reinstall to re-run the account setup wizard.", "detailedAuditLogOfAllCredential": "Detailed audit log of all credential operations is available in WordPress error logs.", - "checkYourWordpressDebugLogFile": "Check your WordPress debug log file for detailed audit information: %s", + "checkYourWordpressDebugLogFile": "Check your WordPress debug log file for detailed audit information: {{value}}", "recentOperations": "Recent Operations:", "allCredentialUpdatesAreLoggedAutomatically": "All credential updates are logged automatically", "allCredentialDeletionsAreLoggedAutomatically": "All credential deletions are logged automatically", @@ -223,7 +223,7 @@ "reviewConnection": "Review Connection", "dismiss": "Dismiss", "loyaltydogV1V2MigrationFailed": "LoyaltyDog v1 → v2 migration failed.", - "error": "Error: %s", + "error": "Error: {{value}}", "recoveryGuide": "Recovery guide", "thePluginWillRetryAutomaticallyOn": "The plugin will retry automatically on the next admin pageload." }, @@ -238,11 +238,11 @@ }, "trialNotices": { "trialExpired": "Trial expired", - "trialDayRemaining": "Trial: %d day remaining", + "trialDayRemaining": "Trial: {{count}} day remaining", "welcomeToLoyaltydog": "Welcome to LoyaltyDog.", "signUpForAFree30": "Sign up for a free 30-day trial to activate your points program. No credit card required.", "startYourFreeTrial": "Start your free trial", - "yourLoyaltydogTrialEndsInDay": "Your LoyaltyDog trial ends in %d day.", + "yourLoyaltydogTrialEndsInDay": "Your LoyaltyDog trial ends in {{count}} day.", "upgradeNowToKeepAwardingPoints": "Upgrade now to keep awarding points after the trial ends.", "upgradeNow": "Upgrade now", "remindMeLater": "Remind me later", @@ -272,7 +272,7 @@ "shortcodes": "Shortcodes", "gettingStartedWithLoyaltydog": "Getting Started with LoyaltyDog", "loyaltydogAddsADigitalLoyaltyProgram": "LoyaltyDog adds a digital loyalty program to your WooCommerce store. Customers earn points on purchases and redeem them for rewards.", - "enterYour1sprogramId2sAnd1sapi": "Enter your %1$sProgram ID%2$s and %1$sAPI Key%2$s in Settings. Get these from your LoyaltyDog dashboard.", + "enterYour1sprogramId2sAnd1sapi": "Enter your {{first}}Program ID{{second}} and {{first}}API Key{{second}} in Settings. Get these from your LoyaltyDog dashboard.", "configureThePointsConversionRateE": "Configure the points conversion rate (e.g., 1 point per $1 spent).", "setUpOfferMessagesThatCustomers": "Set up offer messages that customers see when they have rewards.", "optionallyConfigureCategoryMultipliersCampaignsAnd": "Optionally configure category multipliers, campaigns, and referral rewards.", @@ -294,7 +294,7 @@ "runPromotionalPeriodsWithBonusPoint": "Run promotional periods with bonus point multipliers. Enter one per line:", "formatMultiplierstartdateenddatelabelLinesStartingWith": "Format: multiplier|start_date|end_date|label. Lines starting with # are ignored.", "productLevelOverrides": "Product-Level Overrides", - "setAFixedPointValueFor": "Set a fixed point value for specific products using the %s custom field on the product edit page.", + "setAFixedPointValueFor": "Set a fixed point value for specific products using the {{value}} custom field on the product edit page.", "availableShortcodes": "Available Shortcodes", "displayTheLoggedInCustomerS": "Display the logged-in customer's points balance inline. Returns empty for guests.", "displayTheCustomerSReferralLink": "Display the customer's referral link. Requires the referral program to be configured.", @@ -306,14 +306,14 @@ }, "menu": { "manage": "Manage", - "strongLoyaltydogStrongIsAlmostReady": "LoyaltyDog is almost ready. To get started, %sset your LoyaltyDog account keys%s.", - "strongLoyaltydogStrongRequiresCouponsTo": "LoyaltyDog requires coupons to be %senabled%s in order to function properly and allow customers to redeem offer during checkout.", + "strongLoyaltydogStrongIsAlmostReady": "LoyaltyDog is almost ready. To get started, {{value}}set your LoyaltyDog account keys{{value2}}.", + "strongLoyaltydogStrongRequiresCouponsTo": "LoyaltyDog requires coupons to be {{value}}enabled{{value2}} in order to function properly and allow customers to redeem offer during checkout.", "sendPushNotifications": "Send Push Notifications", "message": "Message", "pushNotificationsAreCompliantWithEu": "Push notifications are compliant with EU GDPR.", "send": "Send", "enableTheLoggingOfApiRequest": "Enable the logging of API request.", - "1sviewLog2s": "%1$sView Log%2$s", + "1sviewLog2s": "{{first}}View Log{{second}}", "loyaltydogApi": "LoyaltyDog API", "enterWithYourProgramId": "Enter with your program ID.", "enterWithYourLoyaltydogApiKey": "Enter with your LoyaltyDog API key.", @@ -334,7 +334,7 @@ "alwaysRoundDown": "Always round down", "alwaysRoundUp": "Always round up", "offerMessages": "Offer Messages", - "adjustTheMessageByUsing1s": "Adjust the message by using %1$s{friendlyNameToBeAdded}%2$s, %1$s{friendlyName}%2$s, %1$s{name}%2$s, %1$s{value}%2$s, %1$s{currency}%2$s to represent the redeemed / available offer.", + "adjustTheMessageByUsing1s": "Adjust the message by using {{first}}{friendlyNameToBeAdded}{{second}}, {{first}}{friendlyName}{{second}}, {{first}}{name}{{second}}, {{first}}{value}{{second}}, {{first}}{currency}{{second}} to represent the redeemed / available offer.", "availableOfferMessage": "Available Offer Message", "addAnOptionalMessageWhenUser": "Add an optional message when user have a active Loyalty offer. Limited HTML is allowed. Leave blank to disable.", "strongActiveLoyaltyOfferStrongFriendlynametobeadded": "Active Loyalty Offer: {friendlyNameToBeAdded}.
You can add some products to redeem this offer.", @@ -343,9 +343,9 @@ "strongLoyaltyRewardStrongFriendlynametobeadded": "Loyalty Reward: {friendlyNameToBeAdded}", "pointsEarnedForActions": "Points Earned for Actions", "customersCanAlsoEarnPointsFor": "Customers can also earn points for actions like creating an account or writing a product review. You can enter the amount of points the customer will earn for each action in this section.", - "isRequired": "%s is required.", + "isRequired": "{{value}} is required.", "points": "Points", - "isInvalid": "%s is invalid.", + "isInvalid": "{{value}} is invalid.", "messageCanNotBeBlank": "Message can not be blank.", "messageHaveBeenSent": "Message have been sent." }, @@ -370,7 +370,7 @@ "pasteTheKeyFromYourEmail": "Paste the key from your email", "sentToYourInboxAfterSubscribing": "Sent to your inbox after subscribing at loyalty.dog.", "activate": "Activate", - "enterYourProgramIdAndApi": "Enter your Program ID and API Key from your %1$sLoyaltyDog dashboard%2$s.", + "enterYourProgramIdAndApi": "Enter your Program ID and API Key from your {{first}}LoyaltyDog dashboard{{second}}.", "eG507f1f77bcf86cd799439011": "e.g., 507f1f77bcf86cd799439011", "foundInYourLoyaltydogDashboardUnder": "Found in your LoyaltyDog dashboard under Settings > API.", "yourApiKey": "Your API key", @@ -418,11 +418,11 @@ "bothProgramIdAndApiKey": "Both Program ID and API Key are required.", "invalidApiKeyPleaseCheckYour": "Invalid API Key. Please check your credentials.", "programNotFoundPleaseCheckYour": "Program not found. Please check your Program ID.", - "connectionFailedHttpPleaseTryAgain": "Connection failed (HTTP %s). Please try again.", + "connectionFailedHttpPleaseTryAgain": "Connection failed (HTTP {{value}}). Please try again.", "connectionSuccessful": "Connection successful!", "credentialsAreRequired": "Credentials are required.", "setupComplete": "Setup complete!", - "apiUnreachableHttp": "API unreachable (HTTP %s)", + "apiUnreachableHttp": "API unreachable (HTTP {{value}})", "activationKeyLooksMalformedPasteThe": "Activation key looks malformed. Paste the key exactly as it appears in your email.", "activating": "Activating…", "connectedContinuingToConfiguration": "Connected. Continuing to configuration…", @@ -466,7 +466,7 @@ "checkSslCertificateValidity": "Check SSL certificate validity", "reviewWebhookEventLogs": "Review webhook event logs", "testWithManualWebhookDispatch": "Test with manual webhook dispatch", - "ticketCreatedWeLlRespondWithin": "Ticket %s created. We'll respond within 4 hours." + "ticketCreatedWeLlRespondWithin": "Ticket {{value}} created. We'll respond within 4 hours." }, "settingsSync": { "serverReturnedAnUnexpectedResponseShape": "Server returned an unexpected response shape." @@ -483,12 +483,12 @@ "loyaltydogInc": "LoyaltyDog Inc.", "httpsLoyaltyDog": "https://loyalty.dog", "loyaltydogRequiresWordpress69Or": "LoyaltyDog requires WordPress 6.9 or newer.", - "youAreCurrentlyRunningWordpress": "You are currently running WordPress %s.", + "youAreCurrentlyRunningWordpress": "You are currently running WordPress {{value}}.", "loyaltydogRequiresPhp80Or": "LoyaltyDog requires PHP 8.0 or newer.", - "youAreCurrentlyRunningPhp": "You are currently running PHP %s.", + "youAreCurrentlyRunningPhp": "You are currently running PHP {{value}}.", "loyaltydogRequiresWoocommerceToBeInstalled": "LoyaltyDog requires WooCommerce to be installed and activated.", "loyaltydogRequiresWoocommerce70Or": "LoyaltyDog requires WooCommerce 7.0 or newer.", - "youAreCurrentlyRunningWoocommerce": "You are currently running WooCommerce %s.", + "youAreCurrentlyRunningWoocommerce": "You are currently running WooCommerce {{value}}.", "loyaltydogActivationFailedSystemRequirementsNot": "LoyaltyDog activation failed: system requirements not met." }, "misc": { @@ -524,14 +524,14 @@ "loyaltyReward": "Loyalty Reward", "redeem": "REDEEM", "redeemedSuccessfully": "Redeemed Successfully", - "xPointsBonusActive": "%sx points bonus active!", + "xPointsBonusActive": "{{value}}x points bonus active!", "minimumSpendForPoints": "Minimum spend for points", "minimumOrderTotalRequiredToEarn": "Minimum order total required to earn points. Leave empty to disable.", "categoryPointMultipliers": "Category point multipliers", "onePerLineCategoryslugMultiplierE": "One per line: category_slug:multiplier (e.g., electronics:2 for double points). If a product is in multiple categories, the highest multiplier applies.", "timeLimitedCampaigns": "Time-limited campaigns", "onePerLineMultiplierstartdateenddatelabelEG": "One per line: multiplier|start_date|end_date|label (e.g., 2|2026-03-01|2026-03-31|Double Points March). The highest active campaign multiplier applies to all orders. Lines starting with # are ignored.", - "welcomeTo1s2s": "Welcome to %1$s %2$s", + "welcomeTo1s2s": "Welcome to {{first}} {{second}}", "loading": "Loading...", "dashboard": "Dashboard", "widget": "Widget", @@ -551,7 +551,7 @@ "activateLoyaltydog": "Activate LoyaltyDog", "havingTroubleContactSupport": "Having trouble? Contact support", "accountLinkedSuccessfully": "Account Linked Successfully!", - "yourLoyaltydogAccountIsNowConnected": "Your %s LoyaltyDog account is now connected to your WordPress store.", + "yourLoyaltydogAccountIsNowConnected": "Your {{value}} LoyaltyDog account is now connected to your WordPress store.", "dashboardImplementationComingInFutureUpdates": "Dashboard implementation coming in future updates.", "increasePointMultiplierForTopSelling": "Increase point multiplier for top-selling category (Electronics) to boost engagement", "createAWinBackCampaignFor": "Create a win-back campaign for 120 inactive members who spent $1000+ lifetime", @@ -584,18 +584,18 @@ "youAreNotYetEnrolledIn": "You are not yet enrolled in our loyalty program. Points are earned automatically when you make purchases.", "yourPointsBalance": "Your Points Balance", "points": "points", - "tier": "Tier: %s", + "tier": "Tier: {{value}}", "activeReward": "Active Reward", "addItemsToYourCartTo": "Add items to your cart to redeem this reward at checkout.", "viewCart": "View cart", "howToEarnPoints": "How to Earn Points", - "earn1sPointsForEvery2s": "Earn %1$s points for every %2$s spent", - "pointsForCreatingAnAccount": "%s points for creating an account", - "pointsForWritingAProductReview": "%s points for writing a product review", - "pointsForReferringAFriend": "%s points for referring a friend", - "strongLoyaltyPointsStrongYouHave": "Loyalty Points: You have %s points.", + "earn1sPointsForEvery2s": "Earn {{first}} points for every {{second}} spent", + "pointsForCreatingAnAccount": "{{value}} points for creating an account", + "pointsForWritingAProductReview": "{{value}} points for writing a product review", + "pointsForReferringAFriend": "{{value}} points for referring a friend", + "strongLoyaltyPointsStrongYouHave": "Loyalty Points: You have {{value}} points.", "viewDetails": "View details", - "points2": "%s points" + "points2": "{{value}} points" }, "customerExport": { "youMustBeLoggedInTo": "You must be logged in to export your loyalty data.", @@ -661,7 +661,7 @@ "passwordIsRequired": "Password is required", "welcomeToLoyaltydogYourAccountIs": "Welcome to LoyaltyDog - Your Account Is Ready", "welcomeToLoyaltydog": "Welcome to LoyaltyDog!", - "yourLoyaltydogAccountForHasBeen": "Your LoyaltyDog account for %s has been created successfully.", + "yourLoyaltydogAccountForHasBeen": "Your LoyaltyDog account for {{value}} has been created successfully.", "yourLoyaltydogAccountHasBeenCreated": "Your LoyaltyDog account has been created successfully.", "belowAreYourLoginCredentialsYou": "Below are your login credentials. You can use these to access your LoyaltyDog dashboard:", "email": "Email", diff --git a/packages/i18n/locales/pt-BR/wordpress.json b/packages/i18n/locales/pt-BR/wordpress.json index 1559e29..c0b890d 100644 --- a/packages/i18n/locales/pt-BR/wordpress.json +++ b/packages/i18n/locales/pt-BR/wordpress.json @@ -13,7 +13,7 @@ "programSummaryMetrics": "Program summary metrics", "connectionStatus": "Connection status", "connection": "Connection", - "programWp": "Program: %s", + "programWp": "Program: {{value}}", "pointsIssuedInTheLast30": "Points issued in the last 30 days", "pointsIssued30d": "Points issued (30d)", "valueNotYetAvailable": "Value not yet available", @@ -43,11 +43,11 @@ "unauthorized": "Não autorizado", "youDoNotHavePermissionTo": "You do not have permission to access this page.", "programId": "Program ID", - "php1sOrNewerIsRequired": "PHP %1$s or newer is required. This site is running PHP %2$s. Please ask your hosting provider to upgrade PHP before configuring LoyaltyDog.", - "wordpress1sOrNewerIsRequired": "WordPress %1$s or newer is required. This site is running WordPress %2$s.", + "php1sOrNewerIsRequired": "PHP {{first}} or newer is required. This site is running PHP {{second}}. Please ask your hosting provider to upgrade PHP before configuring LoyaltyDog.", + "wordpress1sOrNewerIsRequired": "WordPress {{first}} or newer is required. This site is running WordPress {{second}}.", "woocommerceIsRequiredButIsNot": "WooCommerce is required but is not installed or activated.", - "woocommerce1sOrNewerIsRequired": "WooCommerce %1$s or newer is required. This site is running WooCommerce %2$s.", - "httpFromApi": "HTTP %d from API" + "woocommerce1sOrNewerIsRequired": "WooCommerce {{first}} or newer is required. This site is running WooCommerce {{second}}.", + "httpFromApi": "HTTP {{count}} from API" }, "widget": { "title": "Widget LoyaltyDog", @@ -62,7 +62,7 @@ "settingsSaved": "Configurações salvas.", "preview": "Pré-visualização", "previewPlaceholder": "[O widget LoyaltyDog é exibido aqui para clientes conectados]", - "couldNotSaveSettingsToLoyaltydog": "Could not save settings to LoyaltyDog: %s", + "couldNotSaveSettingsToLoyaltydog": "Could not save settings to LoyaltyDog: {{value}}", "joinWidget": "Join Widget", "shownToGuestVisitorsAndCustomers": "Shown to guest visitors and customers not yet in your loyalty program.", "signupUrl": "Signup URL", @@ -144,7 +144,7 @@ "invalidFileTypePleaseUploadA": "Invalid file type. Please upload a JSON file.", "invalidImportFileFormat": "Invalid import file format", "noCredentialsWereImported": "No credentials were imported", - "credentialsImportedSuccessfully": "%d credentials imported successfully" + "credentialsImportedSuccessfully": "{{count}} credentials imported successfully" }, "settings": { "loyaltydogCredentials": "LoyaltyDog Credentials", @@ -194,7 +194,7 @@ "howToReconfigure": "How to reconfigure:", "toResetOrChangeYourLoyaltydog": "To reset or change your LoyaltyDog integration, contact support or delete the plugin and reinstall to re-run the account setup wizard.", "detailedAuditLogOfAllCredential": "Detailed audit log of all credential operations is available in WordPress error logs.", - "checkYourWordpressDebugLogFile": "Check your WordPress debug log file for detailed audit information: %s", + "checkYourWordpressDebugLogFile": "Check your WordPress debug log file for detailed audit information: {{value}}", "recentOperations": "Recent Operations:", "allCredentialUpdatesAreLoggedAutomatically": "All credential updates are logged automatically", "allCredentialDeletionsAreLoggedAutomatically": "All credential deletions are logged automatically", @@ -223,7 +223,7 @@ "reviewConnection": "Review Connection", "dismiss": "Dismiss", "loyaltydogV1V2MigrationFailed": "LoyaltyDog v1 → v2 migration failed.", - "error": "Error: %s", + "error": "Error: {{value}}", "recoveryGuide": "Recovery guide", "thePluginWillRetryAutomaticallyOn": "The plugin will retry automatically on the next admin pageload." }, @@ -238,11 +238,11 @@ }, "trialNotices": { "trialExpired": "Trial expired", - "trialDayRemaining": "Trial: %d day remaining", + "trialDayRemaining": "Trial: {{count}} day remaining", "welcomeToLoyaltydog": "Welcome to LoyaltyDog.", "signUpForAFree30": "Sign up for a free 30-day trial to activate your points program. No credit card required.", "startYourFreeTrial": "Start your free trial", - "yourLoyaltydogTrialEndsInDay": "Your LoyaltyDog trial ends in %d day.", + "yourLoyaltydogTrialEndsInDay": "Your LoyaltyDog trial ends in {{count}} day.", "upgradeNowToKeepAwardingPoints": "Upgrade now to keep awarding points after the trial ends.", "upgradeNow": "Upgrade now", "remindMeLater": "Remind me later", @@ -272,7 +272,7 @@ "shortcodes": "Shortcodes", "gettingStartedWithLoyaltydog": "Getting Started with LoyaltyDog", "loyaltydogAddsADigitalLoyaltyProgram": "LoyaltyDog adds a digital loyalty program to your WooCommerce store. Customers earn points on purchases and redeem them for rewards.", - "enterYour1sprogramId2sAnd1sapi": "Enter your %1$sProgram ID%2$s and %1$sAPI Key%2$s in Settings. Get these from your LoyaltyDog dashboard.", + "enterYour1sprogramId2sAnd1sapi": "Enter your {{first}}Program ID{{second}} and {{first}}API Key{{second}} in Settings. Get these from your LoyaltyDog dashboard.", "configureThePointsConversionRateE": "Configure the points conversion rate (e.g., 1 point per $1 spent).", "setUpOfferMessagesThatCustomers": "Set up offer messages that customers see when they have rewards.", "optionallyConfigureCategoryMultipliersCampaignsAnd": "Optionally configure category multipliers, campaigns, and referral rewards.", @@ -294,7 +294,7 @@ "runPromotionalPeriodsWithBonusPoint": "Run promotional periods with bonus point multipliers. Enter one per line:", "formatMultiplierstartdateenddatelabelLinesStartingWith": "Format: multiplier|start_date|end_date|label. Lines starting with # are ignored.", "productLevelOverrides": "Product-Level Overrides", - "setAFixedPointValueFor": "Set a fixed point value for specific products using the %s custom field on the product edit page.", + "setAFixedPointValueFor": "Set a fixed point value for specific products using the {{value}} custom field on the product edit page.", "availableShortcodes": "Available Shortcodes", "displayTheLoggedInCustomerS": "Display the logged-in customer's points balance inline. Returns empty for guests.", "displayTheCustomerSReferralLink": "Display the customer's referral link. Requires the referral program to be configured.", @@ -306,14 +306,14 @@ }, "menu": { "manage": "Manage", - "strongLoyaltydogStrongIsAlmostReady": "LoyaltyDog is almost ready. To get started, %sset your LoyaltyDog account keys%s.", - "strongLoyaltydogStrongRequiresCouponsTo": "LoyaltyDog requires coupons to be %senabled%s in order to function properly and allow customers to redeem offer during checkout.", + "strongLoyaltydogStrongIsAlmostReady": "LoyaltyDog is almost ready. To get started, {{value}}set your LoyaltyDog account keys{{value2}}.", + "strongLoyaltydogStrongRequiresCouponsTo": "LoyaltyDog requires coupons to be {{value}}enabled{{value2}} in order to function properly and allow customers to redeem offer during checkout.", "sendPushNotifications": "Send Push Notifications", "message": "Message", "pushNotificationsAreCompliantWithEu": "Push notifications are compliant with EU GDPR.", "send": "Send", "enableTheLoggingOfApiRequest": "Enable the logging of API request.", - "1sviewLog2s": "%1$sView Log%2$s", + "1sviewLog2s": "{{first}}View Log{{second}}", "loyaltydogApi": "LoyaltyDog API", "enterWithYourProgramId": "Enter with your program ID.", "enterWithYourLoyaltydogApiKey": "Enter with your LoyaltyDog API key.", @@ -334,7 +334,7 @@ "alwaysRoundDown": "Always round down", "alwaysRoundUp": "Always round up", "offerMessages": "Offer Messages", - "adjustTheMessageByUsing1s": "Adjust the message by using %1$s{friendlyNameToBeAdded}%2$s, %1$s{friendlyName}%2$s, %1$s{name}%2$s, %1$s{value}%2$s, %1$s{currency}%2$s to represent the redeemed / available offer.", + "adjustTheMessageByUsing1s": "Adjust the message by using {{first}}{friendlyNameToBeAdded}{{second}}, {{first}}{friendlyName}{{second}}, {{first}}{name}{{second}}, {{first}}{value}{{second}}, {{first}}{currency}{{second}} to represent the redeemed / available offer.", "availableOfferMessage": "Available Offer Message", "addAnOptionalMessageWhenUser": "Add an optional message when user have a active Loyalty offer. Limited HTML is allowed. Leave blank to disable.", "strongActiveLoyaltyOfferStrongFriendlynametobeadded": "Active Loyalty Offer: {friendlyNameToBeAdded}.
You can add some products to redeem this offer.", @@ -343,9 +343,9 @@ "strongLoyaltyRewardStrongFriendlynametobeadded": "Loyalty Reward: {friendlyNameToBeAdded}", "pointsEarnedForActions": "Points Earned for Actions", "customersCanAlsoEarnPointsFor": "Customers can also earn points for actions like creating an account or writing a product review. You can enter the amount of points the customer will earn for each action in this section.", - "isRequired": "%s is required.", + "isRequired": "{{value}} is required.", "points": "Points", - "isInvalid": "%s is invalid.", + "isInvalid": "{{value}} is invalid.", "messageCanNotBeBlank": "Message can not be blank.", "messageHaveBeenSent": "Message have been sent." }, @@ -370,7 +370,7 @@ "pasteTheKeyFromYourEmail": "Paste the key from your email", "sentToYourInboxAfterSubscribing": "Sent to your inbox after subscribing at loyalty.dog.", "activate": "Activate", - "enterYourProgramIdAndApi": "Enter your Program ID and API Key from your %1$sLoyaltyDog dashboard%2$s.", + "enterYourProgramIdAndApi": "Enter your Program ID and API Key from your {{first}}LoyaltyDog dashboard{{second}}.", "eG507f1f77bcf86cd799439011": "e.g., 507f1f77bcf86cd799439011", "foundInYourLoyaltydogDashboardUnder": "Found in your LoyaltyDog dashboard under Settings > API.", "yourApiKey": "Your API key", @@ -418,11 +418,11 @@ "bothProgramIdAndApiKey": "Both Program ID and API Key are required.", "invalidApiKeyPleaseCheckYour": "Invalid API Key. Please check your credentials.", "programNotFoundPleaseCheckYour": "Program not found. Please check your Program ID.", - "connectionFailedHttpPleaseTryAgain": "Connection failed (HTTP %s). Please try again.", + "connectionFailedHttpPleaseTryAgain": "Connection failed (HTTP {{value}}). Please try again.", "connectionSuccessful": "Connection successful!", "credentialsAreRequired": "Credentials are required.", "setupComplete": "Setup complete!", - "apiUnreachableHttp": "API unreachable (HTTP %s)", + "apiUnreachableHttp": "API unreachable (HTTP {{value}})", "activationKeyLooksMalformedPasteThe": "Activation key looks malformed. Paste the key exactly as it appears in your email.", "activating": "Activating…", "connectedContinuingToConfiguration": "Connected. Continuing to configuration…", @@ -466,7 +466,7 @@ "checkSslCertificateValidity": "Check SSL certificate validity", "reviewWebhookEventLogs": "Review webhook event logs", "testWithManualWebhookDispatch": "Test with manual webhook dispatch", - "ticketCreatedWeLlRespondWithin": "Ticket %s created. We'll respond within 4 hours." + "ticketCreatedWeLlRespondWithin": "Ticket {{value}} created. We'll respond within 4 hours." }, "settingsSync": { "serverReturnedAnUnexpectedResponseShape": "Server returned an unexpected response shape." @@ -483,12 +483,12 @@ "loyaltydogInc": "LoyaltyDog Inc.", "httpsLoyaltyDog": "https://loyalty.dog", "loyaltydogRequiresWordpress69Or": "LoyaltyDog requires WordPress 6.9 or newer.", - "youAreCurrentlyRunningWordpress": "You are currently running WordPress %s.", + "youAreCurrentlyRunningWordpress": "You are currently running WordPress {{value}}.", "loyaltydogRequiresPhp80Or": "LoyaltyDog requires PHP 8.0 or newer.", - "youAreCurrentlyRunningPhp": "You are currently running PHP %s.", + "youAreCurrentlyRunningPhp": "You are currently running PHP {{value}}.", "loyaltydogRequiresWoocommerceToBeInstalled": "LoyaltyDog requires WooCommerce to be installed and activated.", "loyaltydogRequiresWoocommerce70Or": "LoyaltyDog requires WooCommerce 7.0 or newer.", - "youAreCurrentlyRunningWoocommerce": "You are currently running WooCommerce %s.", + "youAreCurrentlyRunningWoocommerce": "You are currently running WooCommerce {{value}}.", "loyaltydogActivationFailedSystemRequirementsNot": "LoyaltyDog activation failed: system requirements not met." }, "misc": { @@ -524,14 +524,14 @@ "loyaltyReward": "Loyalty Reward", "redeem": "REDEEM", "redeemedSuccessfully": "Redeemed Successfully", - "xPointsBonusActive": "%sx points bonus active!", + "xPointsBonusActive": "{{value}}x points bonus active!", "minimumSpendForPoints": "Minimum spend for points", "minimumOrderTotalRequiredToEarn": "Minimum order total required to earn points. Leave empty to disable.", "categoryPointMultipliers": "Category point multipliers", "onePerLineCategoryslugMultiplierE": "One per line: category_slug:multiplier (e.g., electronics:2 for double points). If a product is in multiple categories, the highest multiplier applies.", "timeLimitedCampaigns": "Time-limited campaigns", "onePerLineMultiplierstartdateenddatelabelEG": "One per line: multiplier|start_date|end_date|label (e.g., 2|2026-03-01|2026-03-31|Double Points March). The highest active campaign multiplier applies to all orders. Lines starting with # are ignored.", - "welcomeTo1s2s": "Welcome to %1$s %2$s", + "welcomeTo1s2s": "Welcome to {{first}} {{second}}", "loading": "Loading...", "dashboard": "Dashboard", "widget": "Widget", @@ -551,7 +551,7 @@ "activateLoyaltydog": "Activate LoyaltyDog", "havingTroubleContactSupport": "Having trouble? Contact support", "accountLinkedSuccessfully": "Account Linked Successfully!", - "yourLoyaltydogAccountIsNowConnected": "Your %s LoyaltyDog account is now connected to your WordPress store.", + "yourLoyaltydogAccountIsNowConnected": "Your {{value}} LoyaltyDog account is now connected to your WordPress store.", "dashboardImplementationComingInFutureUpdates": "Dashboard implementation coming in future updates.", "increasePointMultiplierForTopSelling": "Increase point multiplier for top-selling category (Electronics) to boost engagement", "createAWinBackCampaignFor": "Create a win-back campaign for 120 inactive members who spent $1000+ lifetime", @@ -584,18 +584,18 @@ "youAreNotYetEnrolledIn": "You are not yet enrolled in our loyalty program. Points are earned automatically when you make purchases.", "yourPointsBalance": "Your Points Balance", "points": "points", - "tier": "Tier: %s", + "tier": "Tier: {{value}}", "activeReward": "Active Reward", "addItemsToYourCartTo": "Add items to your cart to redeem this reward at checkout.", "viewCart": "View cart", "howToEarnPoints": "How to Earn Points", - "earn1sPointsForEvery2s": "Earn %1$s points for every %2$s spent", - "pointsForCreatingAnAccount": "%s points for creating an account", - "pointsForWritingAProductReview": "%s points for writing a product review", - "pointsForReferringAFriend": "%s points for referring a friend", - "strongLoyaltyPointsStrongYouHave": "Loyalty Points: You have %s points.", + "earn1sPointsForEvery2s": "Earn {{first}} points for every {{second}} spent", + "pointsForCreatingAnAccount": "{{value}} points for creating an account", + "pointsForWritingAProductReview": "{{value}} points for writing a product review", + "pointsForReferringAFriend": "{{value}} points for referring a friend", + "strongLoyaltyPointsStrongYouHave": "Loyalty Points: You have {{value}} points.", "viewDetails": "View details", - "points2": "%s points" + "points2": "{{value}} points" }, "customerExport": { "youMustBeLoggedInTo": "You must be logged in to export your loyalty data.", @@ -661,7 +661,7 @@ "passwordIsRequired": "Password is required", "welcomeToLoyaltydogYourAccountIs": "Welcome to LoyaltyDog - Your Account Is Ready", "welcomeToLoyaltydog": "Welcome to LoyaltyDog!", - "yourLoyaltydogAccountForHasBeen": "Your LoyaltyDog account for %s has been created successfully.", + "yourLoyaltydogAccountForHasBeen": "Your LoyaltyDog account for {{value}} has been created successfully.", "yourLoyaltydogAccountHasBeenCreated": "Your LoyaltyDog account has been created successfully.", "belowAreYourLoginCredentialsYou": "Below are your login credentials. You can use these to access your LoyaltyDog dashboard:", "email": "Email", diff --git a/packages/i18n/locales/pt-PT/wordpress.json b/packages/i18n/locales/pt-PT/wordpress.json index c15d0dd..f3cced1 100644 --- a/packages/i18n/locales/pt-PT/wordpress.json +++ b/packages/i18n/locales/pt-PT/wordpress.json @@ -13,7 +13,7 @@ "programSummaryMetrics": "Program summary metrics", "connectionStatus": "Connection status", "connection": "Connection", - "programWp": "Program: %s", + "programWp": "Program: {{value}}", "pointsIssuedInTheLast30": "Points issued in the last 30 days", "pointsIssued30d": "Points issued (30d)", "valueNotYetAvailable": "Value not yet available", @@ -43,11 +43,11 @@ "unauthorized": "Não autorizado", "youDoNotHavePermissionTo": "You do not have permission to access this page.", "programId": "Program ID", - "php1sOrNewerIsRequired": "PHP %1$s or newer is required. This site is running PHP %2$s. Please ask your hosting provider to upgrade PHP before configuring LoyaltyDog.", - "wordpress1sOrNewerIsRequired": "WordPress %1$s or newer is required. This site is running WordPress %2$s.", + "php1sOrNewerIsRequired": "PHP {{first}} or newer is required. This site is running PHP {{second}}. Please ask your hosting provider to upgrade PHP before configuring LoyaltyDog.", + "wordpress1sOrNewerIsRequired": "WordPress {{first}} or newer is required. This site is running WordPress {{second}}.", "woocommerceIsRequiredButIsNot": "WooCommerce is required but is not installed or activated.", - "woocommerce1sOrNewerIsRequired": "WooCommerce %1$s or newer is required. This site is running WooCommerce %2$s.", - "httpFromApi": "HTTP %d from API" + "woocommerce1sOrNewerIsRequired": "WooCommerce {{first}} or newer is required. This site is running WooCommerce {{second}}.", + "httpFromApi": "HTTP {{count}} from API" }, "widget": { "title": "Widget LoyaltyDog", @@ -62,7 +62,7 @@ "settingsSaved": "Definições guardadas.", "preview": "Pré-visualização", "previewPlaceholder": "[O widget LoyaltyDog é apresentado aqui para clientes com sessão iniciada]", - "couldNotSaveSettingsToLoyaltydog": "Could not save settings to LoyaltyDog: %s", + "couldNotSaveSettingsToLoyaltydog": "Could not save settings to LoyaltyDog: {{value}}", "joinWidget": "Join Widget", "shownToGuestVisitorsAndCustomers": "Shown to guest visitors and customers not yet in your loyalty program.", "signupUrl": "Signup URL", @@ -144,7 +144,7 @@ "invalidFileTypePleaseUploadA": "Invalid file type. Please upload a JSON file.", "invalidImportFileFormat": "Invalid import file format", "noCredentialsWereImported": "No credentials were imported", - "credentialsImportedSuccessfully": "%d credentials imported successfully" + "credentialsImportedSuccessfully": "{{count}} credentials imported successfully" }, "settings": { "loyaltydogCredentials": "LoyaltyDog Credentials", @@ -194,7 +194,7 @@ "howToReconfigure": "How to reconfigure:", "toResetOrChangeYourLoyaltydog": "To reset or change your LoyaltyDog integration, contact support or delete the plugin and reinstall to re-run the account setup wizard.", "detailedAuditLogOfAllCredential": "Detailed audit log of all credential operations is available in WordPress error logs.", - "checkYourWordpressDebugLogFile": "Check your WordPress debug log file for detailed audit information: %s", + "checkYourWordpressDebugLogFile": "Check your WordPress debug log file for detailed audit information: {{value}}", "recentOperations": "Recent Operations:", "allCredentialUpdatesAreLoggedAutomatically": "All credential updates are logged automatically", "allCredentialDeletionsAreLoggedAutomatically": "All credential deletions are logged automatically", @@ -223,7 +223,7 @@ "reviewConnection": "Review Connection", "dismiss": "Dismiss", "loyaltydogV1V2MigrationFailed": "LoyaltyDog v1 → v2 migration failed.", - "error": "Error: %s", + "error": "Error: {{value}}", "recoveryGuide": "Recovery guide", "thePluginWillRetryAutomaticallyOn": "The plugin will retry automatically on the next admin pageload." }, @@ -238,11 +238,11 @@ }, "trialNotices": { "trialExpired": "Trial expired", - "trialDayRemaining": "Trial: %d day remaining", + "trialDayRemaining": "Trial: {{count}} day remaining", "welcomeToLoyaltydog": "Welcome to LoyaltyDog.", "signUpForAFree30": "Sign up for a free 30-day trial to activate your points program. No credit card required.", "startYourFreeTrial": "Start your free trial", - "yourLoyaltydogTrialEndsInDay": "Your LoyaltyDog trial ends in %d day.", + "yourLoyaltydogTrialEndsInDay": "Your LoyaltyDog trial ends in {{count}} day.", "upgradeNowToKeepAwardingPoints": "Upgrade now to keep awarding points after the trial ends.", "upgradeNow": "Upgrade now", "remindMeLater": "Remind me later", @@ -272,7 +272,7 @@ "shortcodes": "Shortcodes", "gettingStartedWithLoyaltydog": "Getting Started with LoyaltyDog", "loyaltydogAddsADigitalLoyaltyProgram": "LoyaltyDog adds a digital loyalty program to your WooCommerce store. Customers earn points on purchases and redeem them for rewards.", - "enterYour1sprogramId2sAnd1sapi": "Enter your %1$sProgram ID%2$s and %1$sAPI Key%2$s in Settings. Get these from your LoyaltyDog dashboard.", + "enterYour1sprogramId2sAnd1sapi": "Enter your {{first}}Program ID{{second}} and {{first}}API Key{{second}} in Settings. Get these from your LoyaltyDog dashboard.", "configureThePointsConversionRateE": "Configure the points conversion rate (e.g., 1 point per $1 spent).", "setUpOfferMessagesThatCustomers": "Set up offer messages that customers see when they have rewards.", "optionallyConfigureCategoryMultipliersCampaignsAnd": "Optionally configure category multipliers, campaigns, and referral rewards.", @@ -294,7 +294,7 @@ "runPromotionalPeriodsWithBonusPoint": "Run promotional periods with bonus point multipliers. Enter one per line:", "formatMultiplierstartdateenddatelabelLinesStartingWith": "Format: multiplier|start_date|end_date|label. Lines starting with # are ignored.", "productLevelOverrides": "Product-Level Overrides", - "setAFixedPointValueFor": "Set a fixed point value for specific products using the %s custom field on the product edit page.", + "setAFixedPointValueFor": "Set a fixed point value for specific products using the {{value}} custom field on the product edit page.", "availableShortcodes": "Available Shortcodes", "displayTheLoggedInCustomerS": "Display the logged-in customer's points balance inline. Returns empty for guests.", "displayTheCustomerSReferralLink": "Display the customer's referral link. Requires the referral program to be configured.", @@ -306,14 +306,14 @@ }, "menu": { "manage": "Manage", - "strongLoyaltydogStrongIsAlmostReady": "LoyaltyDog is almost ready. To get started, %sset your LoyaltyDog account keys%s.", - "strongLoyaltydogStrongRequiresCouponsTo": "LoyaltyDog requires coupons to be %senabled%s in order to function properly and allow customers to redeem offer during checkout.", + "strongLoyaltydogStrongIsAlmostReady": "LoyaltyDog is almost ready. To get started, {{value}}set your LoyaltyDog account keys{{value2}}.", + "strongLoyaltydogStrongRequiresCouponsTo": "LoyaltyDog requires coupons to be {{value}}enabled{{value2}} in order to function properly and allow customers to redeem offer during checkout.", "sendPushNotifications": "Send Push Notifications", "message": "Message", "pushNotificationsAreCompliantWithEu": "Push notifications are compliant with EU GDPR.", "send": "Send", "enableTheLoggingOfApiRequest": "Enable the logging of API request.", - "1sviewLog2s": "%1$sView Log%2$s", + "1sviewLog2s": "{{first}}View Log{{second}}", "loyaltydogApi": "LoyaltyDog API", "enterWithYourProgramId": "Enter with your program ID.", "enterWithYourLoyaltydogApiKey": "Enter with your LoyaltyDog API key.", @@ -334,7 +334,7 @@ "alwaysRoundDown": "Always round down", "alwaysRoundUp": "Always round up", "offerMessages": "Offer Messages", - "adjustTheMessageByUsing1s": "Adjust the message by using %1$s{friendlyNameToBeAdded}%2$s, %1$s{friendlyName}%2$s, %1$s{name}%2$s, %1$s{value}%2$s, %1$s{currency}%2$s to represent the redeemed / available offer.", + "adjustTheMessageByUsing1s": "Adjust the message by using {{first}}{friendlyNameToBeAdded}{{second}}, {{first}}{friendlyName}{{second}}, {{first}}{name}{{second}}, {{first}}{value}{{second}}, {{first}}{currency}{{second}} to represent the redeemed / available offer.", "availableOfferMessage": "Available Offer Message", "addAnOptionalMessageWhenUser": "Add an optional message when user have a active Loyalty offer. Limited HTML is allowed. Leave blank to disable.", "strongActiveLoyaltyOfferStrongFriendlynametobeadded": "Active Loyalty Offer: {friendlyNameToBeAdded}.
You can add some products to redeem this offer.", @@ -343,9 +343,9 @@ "strongLoyaltyRewardStrongFriendlynametobeadded": "Loyalty Reward: {friendlyNameToBeAdded}", "pointsEarnedForActions": "Points Earned for Actions", "customersCanAlsoEarnPointsFor": "Customers can also earn points for actions like creating an account or writing a product review. You can enter the amount of points the customer will earn for each action in this section.", - "isRequired": "%s is required.", + "isRequired": "{{value}} is required.", "points": "Points", - "isInvalid": "%s is invalid.", + "isInvalid": "{{value}} is invalid.", "messageCanNotBeBlank": "Message can not be blank.", "messageHaveBeenSent": "Message have been sent." }, @@ -370,7 +370,7 @@ "pasteTheKeyFromYourEmail": "Paste the key from your email", "sentToYourInboxAfterSubscribing": "Sent to your inbox after subscribing at loyalty.dog.", "activate": "Activate", - "enterYourProgramIdAndApi": "Enter your Program ID and API Key from your %1$sLoyaltyDog dashboard%2$s.", + "enterYourProgramIdAndApi": "Enter your Program ID and API Key from your {{first}}LoyaltyDog dashboard{{second}}.", "eG507f1f77bcf86cd799439011": "e.g., 507f1f77bcf86cd799439011", "foundInYourLoyaltydogDashboardUnder": "Found in your LoyaltyDog dashboard under Settings > API.", "yourApiKey": "Your API key", @@ -418,11 +418,11 @@ "bothProgramIdAndApiKey": "Both Program ID and API Key are required.", "invalidApiKeyPleaseCheckYour": "Invalid API Key. Please check your credentials.", "programNotFoundPleaseCheckYour": "Program not found. Please check your Program ID.", - "connectionFailedHttpPleaseTryAgain": "Connection failed (HTTP %s). Please try again.", + "connectionFailedHttpPleaseTryAgain": "Connection failed (HTTP {{value}}). Please try again.", "connectionSuccessful": "Connection successful!", "credentialsAreRequired": "Credentials are required.", "setupComplete": "Setup complete!", - "apiUnreachableHttp": "API unreachable (HTTP %s)", + "apiUnreachableHttp": "API unreachable (HTTP {{value}})", "activationKeyLooksMalformedPasteThe": "Activation key looks malformed. Paste the key exactly as it appears in your email.", "activating": "Activating…", "connectedContinuingToConfiguration": "Connected. Continuing to configuration…", @@ -466,7 +466,7 @@ "checkSslCertificateValidity": "Check SSL certificate validity", "reviewWebhookEventLogs": "Review webhook event logs", "testWithManualWebhookDispatch": "Test with manual webhook dispatch", - "ticketCreatedWeLlRespondWithin": "Ticket %s created. We'll respond within 4 hours." + "ticketCreatedWeLlRespondWithin": "Ticket {{value}} created. We'll respond within 4 hours." }, "settingsSync": { "serverReturnedAnUnexpectedResponseShape": "Server returned an unexpected response shape." @@ -483,12 +483,12 @@ "loyaltydogInc": "LoyaltyDog Inc.", "httpsLoyaltyDog": "https://loyalty.dog", "loyaltydogRequiresWordpress69Or": "LoyaltyDog requires WordPress 6.9 or newer.", - "youAreCurrentlyRunningWordpress": "You are currently running WordPress %s.", + "youAreCurrentlyRunningWordpress": "You are currently running WordPress {{value}}.", "loyaltydogRequiresPhp80Or": "LoyaltyDog requires PHP 8.0 or newer.", - "youAreCurrentlyRunningPhp": "You are currently running PHP %s.", + "youAreCurrentlyRunningPhp": "You are currently running PHP {{value}}.", "loyaltydogRequiresWoocommerceToBeInstalled": "LoyaltyDog requires WooCommerce to be installed and activated.", "loyaltydogRequiresWoocommerce70Or": "LoyaltyDog requires WooCommerce 7.0 or newer.", - "youAreCurrentlyRunningWoocommerce": "You are currently running WooCommerce %s.", + "youAreCurrentlyRunningWoocommerce": "You are currently running WooCommerce {{value}}.", "loyaltydogActivationFailedSystemRequirementsNot": "LoyaltyDog activation failed: system requirements not met." }, "misc": { @@ -524,14 +524,14 @@ "loyaltyReward": "Loyalty Reward", "redeem": "REDEEM", "redeemedSuccessfully": "Redeemed Successfully", - "xPointsBonusActive": "%sx points bonus active!", + "xPointsBonusActive": "{{value}}x points bonus active!", "minimumSpendForPoints": "Minimum spend for points", "minimumOrderTotalRequiredToEarn": "Minimum order total required to earn points. Leave empty to disable.", "categoryPointMultipliers": "Category point multipliers", "onePerLineCategoryslugMultiplierE": "One per line: category_slug:multiplier (e.g., electronics:2 for double points). If a product is in multiple categories, the highest multiplier applies.", "timeLimitedCampaigns": "Time-limited campaigns", "onePerLineMultiplierstartdateenddatelabelEG": "One per line: multiplier|start_date|end_date|label (e.g., 2|2026-03-01|2026-03-31|Double Points March). The highest active campaign multiplier applies to all orders. Lines starting with # are ignored.", - "welcomeTo1s2s": "Welcome to %1$s %2$s", + "welcomeTo1s2s": "Welcome to {{first}} {{second}}", "loading": "Loading...", "dashboard": "Dashboard", "widget": "Widget", @@ -551,7 +551,7 @@ "activateLoyaltydog": "Activate LoyaltyDog", "havingTroubleContactSupport": "Having trouble? Contact support", "accountLinkedSuccessfully": "Account Linked Successfully!", - "yourLoyaltydogAccountIsNowConnected": "Your %s LoyaltyDog account is now connected to your WordPress store.", + "yourLoyaltydogAccountIsNowConnected": "Your {{value}} LoyaltyDog account is now connected to your WordPress store.", "dashboardImplementationComingInFutureUpdates": "Dashboard implementation coming in future updates.", "increasePointMultiplierForTopSelling": "Increase point multiplier for top-selling category (Electronics) to boost engagement", "createAWinBackCampaignFor": "Create a win-back campaign for 120 inactive members who spent $1000+ lifetime", @@ -584,18 +584,18 @@ "youAreNotYetEnrolledIn": "You are not yet enrolled in our loyalty program. Points are earned automatically when you make purchases.", "yourPointsBalance": "Your Points Balance", "points": "points", - "tier": "Tier: %s", + "tier": "Tier: {{value}}", "activeReward": "Active Reward", "addItemsToYourCartTo": "Add items to your cart to redeem this reward at checkout.", "viewCart": "View cart", "howToEarnPoints": "How to Earn Points", - "earn1sPointsForEvery2s": "Earn %1$s points for every %2$s spent", - "pointsForCreatingAnAccount": "%s points for creating an account", - "pointsForWritingAProductReview": "%s points for writing a product review", - "pointsForReferringAFriend": "%s points for referring a friend", - "strongLoyaltyPointsStrongYouHave": "Loyalty Points: You have %s points.", + "earn1sPointsForEvery2s": "Earn {{first}} points for every {{second}} spent", + "pointsForCreatingAnAccount": "{{value}} points for creating an account", + "pointsForWritingAProductReview": "{{value}} points for writing a product review", + "pointsForReferringAFriend": "{{value}} points for referring a friend", + "strongLoyaltyPointsStrongYouHave": "Loyalty Points: You have {{value}} points.", "viewDetails": "View details", - "points2": "%s points" + "points2": "{{value}} points" }, "customerExport": { "youMustBeLoggedInTo": "You must be logged in to export your loyalty data.", @@ -661,7 +661,7 @@ "passwordIsRequired": "Password is required", "welcomeToLoyaltydogYourAccountIs": "Welcome to LoyaltyDog - Your Account Is Ready", "welcomeToLoyaltydog": "Welcome to LoyaltyDog!", - "yourLoyaltydogAccountForHasBeen": "Your LoyaltyDog account for %s has been created successfully.", + "yourLoyaltydogAccountForHasBeen": "Your LoyaltyDog account for {{value}} has been created successfully.", "yourLoyaltydogAccountHasBeenCreated": "Your LoyaltyDog account has been created successfully.", "belowAreYourLoginCredentialsYou": "Below are your login credentials. You can use these to access your LoyaltyDog dashboard:", "email": "Email", From dc68286778d13b0645712c130e57b1a2728643f8 Mon Sep 17 00:00:00 2001 From: Haim Barad Date: Sun, 10 May 2026 19:21:53 +0300 Subject: [PATCH 3/4] fix(wordpress): add plural forms + correct PHP version (PR #59 review) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Greptile P1 #1 — Missing plural forms for trial countdown --------------------------------------------------------- The WP plugin's .pot uses _n() for these two strings, producing both singular (msgid) and plural (msgid_plural) forms. The first commit on this PR only captured the singular, which would render "Trial: 3 day remaining" for any count > 1 in a JS consumer. JS consumers use i18next's _one / _other sibling-key convention. Renamed the affected keys to use _one suffix and added the _other companion: wordpress.admin.trialNotices.trialDayRemaining -> trialDayRemaining_one = "Trial: {{count}} day remaining" -> trialDayRemaining_other = "Trial: {{count}} days remaining" wordpress.admin.trialNotices.yourLoyaltydogTrialEndsInDay -> yourLoyaltydogTrialEndsInDay_one = "Your LoyaltyDog trial ends in {{count}} day." -> yourLoyaltydogTrialEndsInDay_other = "Your LoyaltyDog trial ends in {{count}} days." Greptile P1 #2 — Contradictory PHP version requirement ------------------------------------------------------- The platform record reproduced an actual contradiction in the WP plugin source: diagnostic-service.php said "requires 7.4+" while loyaltydog.php said "requires PHP 8.0 or newer", and the real floor (per readme.txt + plugin header) is PHP 8.2. Fixed at the source in loyaltydog/loyaltydog-wordpress-ecommerce#129; mirrored here so the platform record matches what the .pot now says: wordpress.admin.diagnostics.checkPhpVersionRequires74 -> checkPhpVersionRequires82 = "Check PHP version (requires 8.2+)" wordpress.plugin.loyaltydogRequiresPhp80Or -> loyaltydogRequiresPhp82OrNewer = "LoyaltyDog requires PHP 8.2 or newer." Note the key NAMES also changed (the version was baked into the mechanically-generated camelCase). Crowdin will pick up the new keys on next sync; old keys are removed from this branch's en-US source so stale translations don't carry forward. All 8 hyphen-form locales updated identically. --- packages/i18n/locales/en-GB/wordpress.json | 19 ++++++++++++------- packages/i18n/locales/en-US/wordpress.json | 19 ++++++++++++------- packages/i18n/locales/es-ES/wordpress.json | 19 ++++++++++++------- packages/i18n/locales/es-MX/wordpress.json | 19 ++++++++++++------- packages/i18n/locales/fr/wordpress.json | 19 ++++++++++++------- packages/i18n/locales/it/wordpress.json | 19 ++++++++++++------- packages/i18n/locales/pt-BR/wordpress.json | 19 ++++++++++++------- packages/i18n/locales/pt-PT/wordpress.json | 19 ++++++++++++------- 8 files changed, 96 insertions(+), 56 deletions(-) diff --git a/packages/i18n/locales/en-GB/wordpress.json b/packages/i18n/locales/en-GB/wordpress.json index 15a6602..5cf3f3e 100644 --- a/packages/i18n/locales/en-GB/wordpress.json +++ b/packages/i18n/locales/en-GB/wordpress.json @@ -238,16 +238,18 @@ }, "trialNotices": { "trialExpired": "Trial expired", - "trialDayRemaining": "Trial: {{count}} day remaining", "welcomeToLoyaltydog": "Welcome to LoyaltyDog.", "signUpForAFree30": "Sign up for a free 30-day trial to activate your points program. No credit card required.", "startYourFreeTrial": "Start your free trial", - "yourLoyaltydogTrialEndsInDay": "Your LoyaltyDog trial ends in {{count}} day.", "upgradeNowToKeepAwardingPoints": "Upgrade now to keep awarding points after the trial ends.", "upgradeNow": "Upgrade now", "remindMeLater": "Remind me later", "yourLoyaltydogTrialHasEnded": "Your LoyaltyDog trial has ended.", - "yourStorefrontContinuesToWorkBut": "Your storefront continues to work, but new points will not be awarded until you upgrade. Existing balances remain intact." + "yourStorefrontContinuesToWorkBut": "Your storefront continues to work, but new points will not be awarded until you upgrade. Existing balances remain intact.", + "trialDayRemaining_one": "Trial: {{count}} day remaining", + "trialDayRemaining_other": "Trial: {{count}} days remaining", + "yourLoyaltydogTrialEndsInDay_one": "Your LoyaltyDog trial ends in {{count}} day.", + "yourLoyaltydogTrialEndsInDay_other": "Your LoyaltyDog trial ends in {{count}} days." }, "activation": { "securityCheckFailed": "Security check failed.", @@ -452,7 +454,6 @@ }, "diagnostics": { "pluginWonTActivate": "Plugin won't activate", - "checkPhpVersionRequires74": "Check PHP version (requires 7.4+)", "verifyMysqlVersionRequires57": "Verify MySQL version (requires 5.7+)", "checkErrorLogsForSpecificErrors": "Check error logs for specific errors", "disableOtherPluginsAndTryAgain": "Disable other plugins and try again", @@ -466,7 +467,8 @@ "checkSslCertificateValidity": "Check SSL certificate validity", "reviewWebhookEventLogs": "Review webhook event logs", "testWithManualWebhookDispatch": "Test with manual webhook dispatch", - "ticketCreatedWeLlRespondWithin": "Ticket {{value}} created. We'll respond within 4 hours." + "ticketCreatedWeLlRespondWithin": "Ticket {{value}} created. We'll respond within 4 hours.", + "checkPhpVersionRequires82": "Check PHP version (requires 8.2+)" }, "settingsSync": { "serverReturnedAnUnexpectedResponseShape": "Server returned an unexpected response shape." @@ -484,12 +486,12 @@ "httpsLoyaltyDog": "https://loyalty.dog", "loyaltydogRequiresWordpress69Or": "LoyaltyDog requires WordPress 6.9 or newer.", "youAreCurrentlyRunningWordpress": "You are currently running WordPress {{value}}.", - "loyaltydogRequiresPhp80Or": "LoyaltyDog requires PHP 8.0 or newer.", "youAreCurrentlyRunningPhp": "You are currently running PHP {{value}}.", "loyaltydogRequiresWoocommerceToBeInstalled": "LoyaltyDog requires WooCommerce to be installed and activated.", "loyaltydogRequiresWoocommerce70Or": "LoyaltyDog requires WooCommerce 7.0 or newer.", "youAreCurrentlyRunningWoocommerce": "You are currently running WooCommerce {{value}}.", - "loyaltydogActivationFailedSystemRequirementsNot": "LoyaltyDog activation failed: system requirements not met." + "loyaltydogActivationFailedSystemRequirementsNot": "LoyaltyDog activation failed: system requirements not met.", + "loyaltydogRequiresPhp82OrNewer": "LoyaltyDog requires PHP 8.2 or newer." }, "misc": { "invalidProgram": "Invalid program", @@ -680,5 +682,8 @@ "enrolledAt": "Enrolled at", "whenYouUseLoyaltydogYourEmail": "When you use LoyaltyDog, your email address and order totals are sent to the LoyaltyDog cloud service (api.loyalty.dog) to calculate and store loyalty points. Loyalty transaction history may be retained locally in de-identified form (linked only to an internal member ID) after an erasure request. See loyalty.dog/privacy for details." } + }, + "admin": { + "trialNotices": {} } } diff --git a/packages/i18n/locales/en-US/wordpress.json b/packages/i18n/locales/en-US/wordpress.json index fbcfeb6..ce98585 100644 --- a/packages/i18n/locales/en-US/wordpress.json +++ b/packages/i18n/locales/en-US/wordpress.json @@ -238,16 +238,18 @@ }, "trialNotices": { "trialExpired": "Trial expired", - "trialDayRemaining": "Trial: {{count}} day remaining", "welcomeToLoyaltydog": "Welcome to LoyaltyDog.", "signUpForAFree30": "Sign up for a free 30-day trial to activate your points program. No credit card required.", "startYourFreeTrial": "Start your free trial", - "yourLoyaltydogTrialEndsInDay": "Your LoyaltyDog trial ends in {{count}} day.", "upgradeNowToKeepAwardingPoints": "Upgrade now to keep awarding points after the trial ends.", "upgradeNow": "Upgrade now", "remindMeLater": "Remind me later", "yourLoyaltydogTrialHasEnded": "Your LoyaltyDog trial has ended.", - "yourStorefrontContinuesToWorkBut": "Your storefront continues to work, but new points will not be awarded until you upgrade. Existing balances remain intact." + "yourStorefrontContinuesToWorkBut": "Your storefront continues to work, but new points will not be awarded until you upgrade. Existing balances remain intact.", + "trialDayRemaining_one": "Trial: {{count}} day remaining", + "trialDayRemaining_other": "Trial: {{count}} days remaining", + "yourLoyaltydogTrialEndsInDay_one": "Your LoyaltyDog trial ends in {{count}} day.", + "yourLoyaltydogTrialEndsInDay_other": "Your LoyaltyDog trial ends in {{count}} days." }, "activation": { "securityCheckFailed": "Security check failed.", @@ -452,7 +454,6 @@ }, "diagnostics": { "pluginWonTActivate": "Plugin won't activate", - "checkPhpVersionRequires74": "Check PHP version (requires 7.4+)", "verifyMysqlVersionRequires57": "Verify MySQL version (requires 5.7+)", "checkErrorLogsForSpecificErrors": "Check error logs for specific errors", "disableOtherPluginsAndTryAgain": "Disable other plugins and try again", @@ -466,7 +467,8 @@ "checkSslCertificateValidity": "Check SSL certificate validity", "reviewWebhookEventLogs": "Review webhook event logs", "testWithManualWebhookDispatch": "Test with manual webhook dispatch", - "ticketCreatedWeLlRespondWithin": "Ticket {{value}} created. We'll respond within 4 hours." + "ticketCreatedWeLlRespondWithin": "Ticket {{value}} created. We'll respond within 4 hours.", + "checkPhpVersionRequires82": "Check PHP version (requires 8.2+)" }, "settingsSync": { "serverReturnedAnUnexpectedResponseShape": "Server returned an unexpected response shape." @@ -484,12 +486,12 @@ "httpsLoyaltyDog": "https://loyalty.dog", "loyaltydogRequiresWordpress69Or": "LoyaltyDog requires WordPress 6.9 or newer.", "youAreCurrentlyRunningWordpress": "You are currently running WordPress {{value}}.", - "loyaltydogRequiresPhp80Or": "LoyaltyDog requires PHP 8.0 or newer.", "youAreCurrentlyRunningPhp": "You are currently running PHP {{value}}.", "loyaltydogRequiresWoocommerceToBeInstalled": "LoyaltyDog requires WooCommerce to be installed and activated.", "loyaltydogRequiresWoocommerce70Or": "LoyaltyDog requires WooCommerce 7.0 or newer.", "youAreCurrentlyRunningWoocommerce": "You are currently running WooCommerce {{value}}.", - "loyaltydogActivationFailedSystemRequirementsNot": "LoyaltyDog activation failed: system requirements not met." + "loyaltydogActivationFailedSystemRequirementsNot": "LoyaltyDog activation failed: system requirements not met.", + "loyaltydogRequiresPhp82OrNewer": "LoyaltyDog requires PHP 8.2 or newer." }, "misc": { "invalidProgram": "Invalid program", @@ -680,5 +682,8 @@ "enrolledAt": "Enrolled at", "whenYouUseLoyaltydogYourEmail": "When you use LoyaltyDog, your email address and order totals are sent to the LoyaltyDog cloud service (api.loyalty.dog) to calculate and store loyalty points. Loyalty transaction history may be retained locally in de-identified form (linked only to an internal member ID) after an erasure request. See loyalty.dog/privacy for details." } + }, + "admin": { + "trialNotices": {} } } diff --git a/packages/i18n/locales/es-ES/wordpress.json b/packages/i18n/locales/es-ES/wordpress.json index 43eee2c..ce954a7 100644 --- a/packages/i18n/locales/es-ES/wordpress.json +++ b/packages/i18n/locales/es-ES/wordpress.json @@ -238,16 +238,18 @@ }, "trialNotices": { "trialExpired": "Trial expired", - "trialDayRemaining": "Trial: {{count}} day remaining", "welcomeToLoyaltydog": "Welcome to LoyaltyDog.", "signUpForAFree30": "Sign up for a free 30-day trial to activate your points program. No credit card required.", "startYourFreeTrial": "Start your free trial", - "yourLoyaltydogTrialEndsInDay": "Your LoyaltyDog trial ends in {{count}} day.", "upgradeNowToKeepAwardingPoints": "Upgrade now to keep awarding points after the trial ends.", "upgradeNow": "Upgrade now", "remindMeLater": "Remind me later", "yourLoyaltydogTrialHasEnded": "Your LoyaltyDog trial has ended.", - "yourStorefrontContinuesToWorkBut": "Your storefront continues to work, but new points will not be awarded until you upgrade. Existing balances remain intact." + "yourStorefrontContinuesToWorkBut": "Your storefront continues to work, but new points will not be awarded until you upgrade. Existing balances remain intact.", + "trialDayRemaining_one": "Trial: {{count}} day remaining", + "trialDayRemaining_other": "Trial: {{count}} days remaining", + "yourLoyaltydogTrialEndsInDay_one": "Your LoyaltyDog trial ends in {{count}} day.", + "yourLoyaltydogTrialEndsInDay_other": "Your LoyaltyDog trial ends in {{count}} days." }, "activation": { "securityCheckFailed": "Security check failed.", @@ -452,7 +454,6 @@ }, "diagnostics": { "pluginWonTActivate": "Plugin won't activate", - "checkPhpVersionRequires74": "Check PHP version (requires 7.4+)", "verifyMysqlVersionRequires57": "Verify MySQL version (requires 5.7+)", "checkErrorLogsForSpecificErrors": "Check error logs for specific errors", "disableOtherPluginsAndTryAgain": "Disable other plugins and try again", @@ -466,7 +467,8 @@ "checkSslCertificateValidity": "Check SSL certificate validity", "reviewWebhookEventLogs": "Review webhook event logs", "testWithManualWebhookDispatch": "Test with manual webhook dispatch", - "ticketCreatedWeLlRespondWithin": "Ticket {{value}} created. We'll respond within 4 hours." + "ticketCreatedWeLlRespondWithin": "Ticket {{value}} created. We'll respond within 4 hours.", + "checkPhpVersionRequires82": "Check PHP version (requires 8.2+)" }, "settingsSync": { "serverReturnedAnUnexpectedResponseShape": "Server returned an unexpected response shape." @@ -484,12 +486,12 @@ "httpsLoyaltyDog": "https://loyalty.dog", "loyaltydogRequiresWordpress69Or": "LoyaltyDog requires WordPress 6.9 or newer.", "youAreCurrentlyRunningWordpress": "You are currently running WordPress {{value}}.", - "loyaltydogRequiresPhp80Or": "LoyaltyDog requires PHP 8.0 or newer.", "youAreCurrentlyRunningPhp": "You are currently running PHP {{value}}.", "loyaltydogRequiresWoocommerceToBeInstalled": "LoyaltyDog requires WooCommerce to be installed and activated.", "loyaltydogRequiresWoocommerce70Or": "LoyaltyDog requires WooCommerce 7.0 or newer.", "youAreCurrentlyRunningWoocommerce": "You are currently running WooCommerce {{value}}.", - "loyaltydogActivationFailedSystemRequirementsNot": "LoyaltyDog activation failed: system requirements not met." + "loyaltydogActivationFailedSystemRequirementsNot": "LoyaltyDog activation failed: system requirements not met.", + "loyaltydogRequiresPhp82OrNewer": "LoyaltyDog requires PHP 8.2 or newer." }, "misc": { "invalidProgram": "Invalid program", @@ -680,5 +682,8 @@ "enrolledAt": "Enrolled at", "whenYouUseLoyaltydogYourEmail": "When you use LoyaltyDog, your email address and order totals are sent to the LoyaltyDog cloud service (api.loyalty.dog) to calculate and store loyalty points. Loyalty transaction history may be retained locally in de-identified form (linked only to an internal member ID) after an erasure request. See loyalty.dog/privacy for details." } + }, + "admin": { + "trialNotices": {} } } diff --git a/packages/i18n/locales/es-MX/wordpress.json b/packages/i18n/locales/es-MX/wordpress.json index 856d1f2..d95bdcb 100644 --- a/packages/i18n/locales/es-MX/wordpress.json +++ b/packages/i18n/locales/es-MX/wordpress.json @@ -238,16 +238,18 @@ }, "trialNotices": { "trialExpired": "Trial expired", - "trialDayRemaining": "Trial: {{count}} day remaining", "welcomeToLoyaltydog": "Welcome to LoyaltyDog.", "signUpForAFree30": "Sign up for a free 30-day trial to activate your points program. No credit card required.", "startYourFreeTrial": "Start your free trial", - "yourLoyaltydogTrialEndsInDay": "Your LoyaltyDog trial ends in {{count}} day.", "upgradeNowToKeepAwardingPoints": "Upgrade now to keep awarding points after the trial ends.", "upgradeNow": "Upgrade now", "remindMeLater": "Remind me later", "yourLoyaltydogTrialHasEnded": "Your LoyaltyDog trial has ended.", - "yourStorefrontContinuesToWorkBut": "Your storefront continues to work, but new points will not be awarded until you upgrade. Existing balances remain intact." + "yourStorefrontContinuesToWorkBut": "Your storefront continues to work, but new points will not be awarded until you upgrade. Existing balances remain intact.", + "trialDayRemaining_one": "Trial: {{count}} day remaining", + "trialDayRemaining_other": "Trial: {{count}} days remaining", + "yourLoyaltydogTrialEndsInDay_one": "Your LoyaltyDog trial ends in {{count}} day.", + "yourLoyaltydogTrialEndsInDay_other": "Your LoyaltyDog trial ends in {{count}} days." }, "activation": { "securityCheckFailed": "Security check failed.", @@ -452,7 +454,6 @@ }, "diagnostics": { "pluginWonTActivate": "Plugin won't activate", - "checkPhpVersionRequires74": "Check PHP version (requires 7.4+)", "verifyMysqlVersionRequires57": "Verify MySQL version (requires 5.7+)", "checkErrorLogsForSpecificErrors": "Check error logs for specific errors", "disableOtherPluginsAndTryAgain": "Disable other plugins and try again", @@ -466,7 +467,8 @@ "checkSslCertificateValidity": "Check SSL certificate validity", "reviewWebhookEventLogs": "Review webhook event logs", "testWithManualWebhookDispatch": "Test with manual webhook dispatch", - "ticketCreatedWeLlRespondWithin": "Ticket {{value}} created. We'll respond within 4 hours." + "ticketCreatedWeLlRespondWithin": "Ticket {{value}} created. We'll respond within 4 hours.", + "checkPhpVersionRequires82": "Check PHP version (requires 8.2+)" }, "settingsSync": { "serverReturnedAnUnexpectedResponseShape": "Server returned an unexpected response shape." @@ -484,12 +486,12 @@ "httpsLoyaltyDog": "https://loyalty.dog", "loyaltydogRequiresWordpress69Or": "LoyaltyDog requires WordPress 6.9 or newer.", "youAreCurrentlyRunningWordpress": "You are currently running WordPress {{value}}.", - "loyaltydogRequiresPhp80Or": "LoyaltyDog requires PHP 8.0 or newer.", "youAreCurrentlyRunningPhp": "You are currently running PHP {{value}}.", "loyaltydogRequiresWoocommerceToBeInstalled": "LoyaltyDog requires WooCommerce to be installed and activated.", "loyaltydogRequiresWoocommerce70Or": "LoyaltyDog requires WooCommerce 7.0 or newer.", "youAreCurrentlyRunningWoocommerce": "You are currently running WooCommerce {{value}}.", - "loyaltydogActivationFailedSystemRequirementsNot": "LoyaltyDog activation failed: system requirements not met." + "loyaltydogActivationFailedSystemRequirementsNot": "LoyaltyDog activation failed: system requirements not met.", + "loyaltydogRequiresPhp82OrNewer": "LoyaltyDog requires PHP 8.2 or newer." }, "misc": { "invalidProgram": "Invalid program", @@ -680,5 +682,8 @@ "enrolledAt": "Enrolled at", "whenYouUseLoyaltydogYourEmail": "When you use LoyaltyDog, your email address and order totals are sent to the LoyaltyDog cloud service (api.loyalty.dog) to calculate and store loyalty points. Loyalty transaction history may be retained locally in de-identified form (linked only to an internal member ID) after an erasure request. See loyalty.dog/privacy for details." } + }, + "admin": { + "trialNotices": {} } } diff --git a/packages/i18n/locales/fr/wordpress.json b/packages/i18n/locales/fr/wordpress.json index a72211a..f1ec750 100644 --- a/packages/i18n/locales/fr/wordpress.json +++ b/packages/i18n/locales/fr/wordpress.json @@ -238,16 +238,18 @@ }, "trialNotices": { "trialExpired": "Trial expired", - "trialDayRemaining": "Trial: {{count}} day remaining", "welcomeToLoyaltydog": "Welcome to LoyaltyDog.", "signUpForAFree30": "Sign up for a free 30-day trial to activate your points program. No credit card required.", "startYourFreeTrial": "Start your free trial", - "yourLoyaltydogTrialEndsInDay": "Your LoyaltyDog trial ends in {{count}} day.", "upgradeNowToKeepAwardingPoints": "Upgrade now to keep awarding points after the trial ends.", "upgradeNow": "Upgrade now", "remindMeLater": "Remind me later", "yourLoyaltydogTrialHasEnded": "Your LoyaltyDog trial has ended.", - "yourStorefrontContinuesToWorkBut": "Your storefront continues to work, but new points will not be awarded until you upgrade. Existing balances remain intact." + "yourStorefrontContinuesToWorkBut": "Your storefront continues to work, but new points will not be awarded until you upgrade. Existing balances remain intact.", + "trialDayRemaining_one": "Trial: {{count}} day remaining", + "trialDayRemaining_other": "Trial: {{count}} days remaining", + "yourLoyaltydogTrialEndsInDay_one": "Your LoyaltyDog trial ends in {{count}} day.", + "yourLoyaltydogTrialEndsInDay_other": "Your LoyaltyDog trial ends in {{count}} days." }, "activation": { "securityCheckFailed": "Security check failed.", @@ -452,7 +454,6 @@ }, "diagnostics": { "pluginWonTActivate": "Plugin won't activate", - "checkPhpVersionRequires74": "Check PHP version (requires 7.4+)", "verifyMysqlVersionRequires57": "Verify MySQL version (requires 5.7+)", "checkErrorLogsForSpecificErrors": "Check error logs for specific errors", "disableOtherPluginsAndTryAgain": "Disable other plugins and try again", @@ -466,7 +467,8 @@ "checkSslCertificateValidity": "Check SSL certificate validity", "reviewWebhookEventLogs": "Review webhook event logs", "testWithManualWebhookDispatch": "Test with manual webhook dispatch", - "ticketCreatedWeLlRespondWithin": "Ticket {{value}} created. We'll respond within 4 hours." + "ticketCreatedWeLlRespondWithin": "Ticket {{value}} created. We'll respond within 4 hours.", + "checkPhpVersionRequires82": "Check PHP version (requires 8.2+)" }, "settingsSync": { "serverReturnedAnUnexpectedResponseShape": "Server returned an unexpected response shape." @@ -484,12 +486,12 @@ "httpsLoyaltyDog": "https://loyalty.dog", "loyaltydogRequiresWordpress69Or": "LoyaltyDog requires WordPress 6.9 or newer.", "youAreCurrentlyRunningWordpress": "You are currently running WordPress {{value}}.", - "loyaltydogRequiresPhp80Or": "LoyaltyDog requires PHP 8.0 or newer.", "youAreCurrentlyRunningPhp": "You are currently running PHP {{value}}.", "loyaltydogRequiresWoocommerceToBeInstalled": "LoyaltyDog requires WooCommerce to be installed and activated.", "loyaltydogRequiresWoocommerce70Or": "LoyaltyDog requires WooCommerce 7.0 or newer.", "youAreCurrentlyRunningWoocommerce": "You are currently running WooCommerce {{value}}.", - "loyaltydogActivationFailedSystemRequirementsNot": "LoyaltyDog activation failed: system requirements not met." + "loyaltydogActivationFailedSystemRequirementsNot": "LoyaltyDog activation failed: system requirements not met.", + "loyaltydogRequiresPhp82OrNewer": "LoyaltyDog requires PHP 8.2 or newer." }, "misc": { "invalidProgram": "Invalid program", @@ -680,5 +682,8 @@ "enrolledAt": "Enrolled at", "whenYouUseLoyaltydogYourEmail": "When you use LoyaltyDog, your email address and order totals are sent to the LoyaltyDog cloud service (api.loyalty.dog) to calculate and store loyalty points. Loyalty transaction history may be retained locally in de-identified form (linked only to an internal member ID) after an erasure request. See loyalty.dog/privacy for details." } + }, + "admin": { + "trialNotices": {} } } diff --git a/packages/i18n/locales/it/wordpress.json b/packages/i18n/locales/it/wordpress.json index 6af72b2..9ba5f53 100644 --- a/packages/i18n/locales/it/wordpress.json +++ b/packages/i18n/locales/it/wordpress.json @@ -238,16 +238,18 @@ }, "trialNotices": { "trialExpired": "Trial expired", - "trialDayRemaining": "Trial: {{count}} day remaining", "welcomeToLoyaltydog": "Welcome to LoyaltyDog.", "signUpForAFree30": "Sign up for a free 30-day trial to activate your points program. No credit card required.", "startYourFreeTrial": "Start your free trial", - "yourLoyaltydogTrialEndsInDay": "Your LoyaltyDog trial ends in {{count}} day.", "upgradeNowToKeepAwardingPoints": "Upgrade now to keep awarding points after the trial ends.", "upgradeNow": "Upgrade now", "remindMeLater": "Remind me later", "yourLoyaltydogTrialHasEnded": "Your LoyaltyDog trial has ended.", - "yourStorefrontContinuesToWorkBut": "Your storefront continues to work, but new points will not be awarded until you upgrade. Existing balances remain intact." + "yourStorefrontContinuesToWorkBut": "Your storefront continues to work, but new points will not be awarded until you upgrade. Existing balances remain intact.", + "trialDayRemaining_one": "Trial: {{count}} day remaining", + "trialDayRemaining_other": "Trial: {{count}} days remaining", + "yourLoyaltydogTrialEndsInDay_one": "Your LoyaltyDog trial ends in {{count}} day.", + "yourLoyaltydogTrialEndsInDay_other": "Your LoyaltyDog trial ends in {{count}} days." }, "activation": { "securityCheckFailed": "Security check failed.", @@ -452,7 +454,6 @@ }, "diagnostics": { "pluginWonTActivate": "Plugin won't activate", - "checkPhpVersionRequires74": "Check PHP version (requires 7.4+)", "verifyMysqlVersionRequires57": "Verify MySQL version (requires 5.7+)", "checkErrorLogsForSpecificErrors": "Check error logs for specific errors", "disableOtherPluginsAndTryAgain": "Disable other plugins and try again", @@ -466,7 +467,8 @@ "checkSslCertificateValidity": "Check SSL certificate validity", "reviewWebhookEventLogs": "Review webhook event logs", "testWithManualWebhookDispatch": "Test with manual webhook dispatch", - "ticketCreatedWeLlRespondWithin": "Ticket {{value}} created. We'll respond within 4 hours." + "ticketCreatedWeLlRespondWithin": "Ticket {{value}} created. We'll respond within 4 hours.", + "checkPhpVersionRequires82": "Check PHP version (requires 8.2+)" }, "settingsSync": { "serverReturnedAnUnexpectedResponseShape": "Server returned an unexpected response shape." @@ -484,12 +486,12 @@ "httpsLoyaltyDog": "https://loyalty.dog", "loyaltydogRequiresWordpress69Or": "LoyaltyDog requires WordPress 6.9 or newer.", "youAreCurrentlyRunningWordpress": "You are currently running WordPress {{value}}.", - "loyaltydogRequiresPhp80Or": "LoyaltyDog requires PHP 8.0 or newer.", "youAreCurrentlyRunningPhp": "You are currently running PHP {{value}}.", "loyaltydogRequiresWoocommerceToBeInstalled": "LoyaltyDog requires WooCommerce to be installed and activated.", "loyaltydogRequiresWoocommerce70Or": "LoyaltyDog requires WooCommerce 7.0 or newer.", "youAreCurrentlyRunningWoocommerce": "You are currently running WooCommerce {{value}}.", - "loyaltydogActivationFailedSystemRequirementsNot": "LoyaltyDog activation failed: system requirements not met." + "loyaltydogActivationFailedSystemRequirementsNot": "LoyaltyDog activation failed: system requirements not met.", + "loyaltydogRequiresPhp82OrNewer": "LoyaltyDog requires PHP 8.2 or newer." }, "misc": { "invalidProgram": "Invalid program", @@ -680,5 +682,8 @@ "enrolledAt": "Enrolled at", "whenYouUseLoyaltydogYourEmail": "When you use LoyaltyDog, your email address and order totals are sent to the LoyaltyDog cloud service (api.loyalty.dog) to calculate and store loyalty points. Loyalty transaction history may be retained locally in de-identified form (linked only to an internal member ID) after an erasure request. See loyalty.dog/privacy for details." } + }, + "admin": { + "trialNotices": {} } } diff --git a/packages/i18n/locales/pt-BR/wordpress.json b/packages/i18n/locales/pt-BR/wordpress.json index c0b890d..cea6035 100644 --- a/packages/i18n/locales/pt-BR/wordpress.json +++ b/packages/i18n/locales/pt-BR/wordpress.json @@ -238,16 +238,18 @@ }, "trialNotices": { "trialExpired": "Trial expired", - "trialDayRemaining": "Trial: {{count}} day remaining", "welcomeToLoyaltydog": "Welcome to LoyaltyDog.", "signUpForAFree30": "Sign up for a free 30-day trial to activate your points program. No credit card required.", "startYourFreeTrial": "Start your free trial", - "yourLoyaltydogTrialEndsInDay": "Your LoyaltyDog trial ends in {{count}} day.", "upgradeNowToKeepAwardingPoints": "Upgrade now to keep awarding points after the trial ends.", "upgradeNow": "Upgrade now", "remindMeLater": "Remind me later", "yourLoyaltydogTrialHasEnded": "Your LoyaltyDog trial has ended.", - "yourStorefrontContinuesToWorkBut": "Your storefront continues to work, but new points will not be awarded until you upgrade. Existing balances remain intact." + "yourStorefrontContinuesToWorkBut": "Your storefront continues to work, but new points will not be awarded until you upgrade. Existing balances remain intact.", + "trialDayRemaining_one": "Trial: {{count}} day remaining", + "trialDayRemaining_other": "Trial: {{count}} days remaining", + "yourLoyaltydogTrialEndsInDay_one": "Your LoyaltyDog trial ends in {{count}} day.", + "yourLoyaltydogTrialEndsInDay_other": "Your LoyaltyDog trial ends in {{count}} days." }, "activation": { "securityCheckFailed": "Security check failed.", @@ -452,7 +454,6 @@ }, "diagnostics": { "pluginWonTActivate": "Plugin won't activate", - "checkPhpVersionRequires74": "Check PHP version (requires 7.4+)", "verifyMysqlVersionRequires57": "Verify MySQL version (requires 5.7+)", "checkErrorLogsForSpecificErrors": "Check error logs for specific errors", "disableOtherPluginsAndTryAgain": "Disable other plugins and try again", @@ -466,7 +467,8 @@ "checkSslCertificateValidity": "Check SSL certificate validity", "reviewWebhookEventLogs": "Review webhook event logs", "testWithManualWebhookDispatch": "Test with manual webhook dispatch", - "ticketCreatedWeLlRespondWithin": "Ticket {{value}} created. We'll respond within 4 hours." + "ticketCreatedWeLlRespondWithin": "Ticket {{value}} created. We'll respond within 4 hours.", + "checkPhpVersionRequires82": "Check PHP version (requires 8.2+)" }, "settingsSync": { "serverReturnedAnUnexpectedResponseShape": "Server returned an unexpected response shape." @@ -484,12 +486,12 @@ "httpsLoyaltyDog": "https://loyalty.dog", "loyaltydogRequiresWordpress69Or": "LoyaltyDog requires WordPress 6.9 or newer.", "youAreCurrentlyRunningWordpress": "You are currently running WordPress {{value}}.", - "loyaltydogRequiresPhp80Or": "LoyaltyDog requires PHP 8.0 or newer.", "youAreCurrentlyRunningPhp": "You are currently running PHP {{value}}.", "loyaltydogRequiresWoocommerceToBeInstalled": "LoyaltyDog requires WooCommerce to be installed and activated.", "loyaltydogRequiresWoocommerce70Or": "LoyaltyDog requires WooCommerce 7.0 or newer.", "youAreCurrentlyRunningWoocommerce": "You are currently running WooCommerce {{value}}.", - "loyaltydogActivationFailedSystemRequirementsNot": "LoyaltyDog activation failed: system requirements not met." + "loyaltydogActivationFailedSystemRequirementsNot": "LoyaltyDog activation failed: system requirements not met.", + "loyaltydogRequiresPhp82OrNewer": "LoyaltyDog requires PHP 8.2 or newer." }, "misc": { "invalidProgram": "Invalid program", @@ -680,5 +682,8 @@ "enrolledAt": "Enrolled at", "whenYouUseLoyaltydogYourEmail": "When you use LoyaltyDog, your email address and order totals are sent to the LoyaltyDog cloud service (api.loyalty.dog) to calculate and store loyalty points. Loyalty transaction history may be retained locally in de-identified form (linked only to an internal member ID) after an erasure request. See loyalty.dog/privacy for details." } + }, + "admin": { + "trialNotices": {} } } diff --git a/packages/i18n/locales/pt-PT/wordpress.json b/packages/i18n/locales/pt-PT/wordpress.json index f3cced1..23e31d5 100644 --- a/packages/i18n/locales/pt-PT/wordpress.json +++ b/packages/i18n/locales/pt-PT/wordpress.json @@ -238,16 +238,18 @@ }, "trialNotices": { "trialExpired": "Trial expired", - "trialDayRemaining": "Trial: {{count}} day remaining", "welcomeToLoyaltydog": "Welcome to LoyaltyDog.", "signUpForAFree30": "Sign up for a free 30-day trial to activate your points program. No credit card required.", "startYourFreeTrial": "Start your free trial", - "yourLoyaltydogTrialEndsInDay": "Your LoyaltyDog trial ends in {{count}} day.", "upgradeNowToKeepAwardingPoints": "Upgrade now to keep awarding points after the trial ends.", "upgradeNow": "Upgrade now", "remindMeLater": "Remind me later", "yourLoyaltydogTrialHasEnded": "Your LoyaltyDog trial has ended.", - "yourStorefrontContinuesToWorkBut": "Your storefront continues to work, but new points will not be awarded until you upgrade. Existing balances remain intact." + "yourStorefrontContinuesToWorkBut": "Your storefront continues to work, but new points will not be awarded until you upgrade. Existing balances remain intact.", + "trialDayRemaining_one": "Trial: {{count}} day remaining", + "trialDayRemaining_other": "Trial: {{count}} days remaining", + "yourLoyaltydogTrialEndsInDay_one": "Your LoyaltyDog trial ends in {{count}} day.", + "yourLoyaltydogTrialEndsInDay_other": "Your LoyaltyDog trial ends in {{count}} days." }, "activation": { "securityCheckFailed": "Security check failed.", @@ -452,7 +454,6 @@ }, "diagnostics": { "pluginWonTActivate": "Plugin won't activate", - "checkPhpVersionRequires74": "Check PHP version (requires 7.4+)", "verifyMysqlVersionRequires57": "Verify MySQL version (requires 5.7+)", "checkErrorLogsForSpecificErrors": "Check error logs for specific errors", "disableOtherPluginsAndTryAgain": "Disable other plugins and try again", @@ -466,7 +467,8 @@ "checkSslCertificateValidity": "Check SSL certificate validity", "reviewWebhookEventLogs": "Review webhook event logs", "testWithManualWebhookDispatch": "Test with manual webhook dispatch", - "ticketCreatedWeLlRespondWithin": "Ticket {{value}} created. We'll respond within 4 hours." + "ticketCreatedWeLlRespondWithin": "Ticket {{value}} created. We'll respond within 4 hours.", + "checkPhpVersionRequires82": "Check PHP version (requires 8.2+)" }, "settingsSync": { "serverReturnedAnUnexpectedResponseShape": "Server returned an unexpected response shape." @@ -484,12 +486,12 @@ "httpsLoyaltyDog": "https://loyalty.dog", "loyaltydogRequiresWordpress69Or": "LoyaltyDog requires WordPress 6.9 or newer.", "youAreCurrentlyRunningWordpress": "You are currently running WordPress {{value}}.", - "loyaltydogRequiresPhp80Or": "LoyaltyDog requires PHP 8.0 or newer.", "youAreCurrentlyRunningPhp": "You are currently running PHP {{value}}.", "loyaltydogRequiresWoocommerceToBeInstalled": "LoyaltyDog requires WooCommerce to be installed and activated.", "loyaltydogRequiresWoocommerce70Or": "LoyaltyDog requires WooCommerce 7.0 or newer.", "youAreCurrentlyRunningWoocommerce": "You are currently running WooCommerce {{value}}.", - "loyaltydogActivationFailedSystemRequirementsNot": "LoyaltyDog activation failed: system requirements not met." + "loyaltydogActivationFailedSystemRequirementsNot": "LoyaltyDog activation failed: system requirements not met.", + "loyaltydogRequiresPhp82OrNewer": "LoyaltyDog requires PHP 8.2 or newer." }, "misc": { "invalidProgram": "Invalid program", @@ -680,5 +682,8 @@ "enrolledAt": "Enrolled at", "whenYouUseLoyaltydogYourEmail": "When you use LoyaltyDog, your email address and order totals are sent to the LoyaltyDog cloud service (api.loyalty.dog) to calculate and store loyalty points. Loyalty transaction history may be retained locally in de-identified form (linked only to an internal member ID) after an erasure request. See loyalty.dog/privacy for details." } + }, + "admin": { + "trialNotices": {} } } From 2a3e40793e513b577b9f86a40845cf463f93ae4d Mon Sep 17 00:00:00 2001 From: Haim Barad Date: Sun, 10 May 2026 19:30:57 +0300 Subject: [PATCH 4/4] fix(wordpress): remove stray top-level admin key (PR #59 review P1) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The pluralization commit (dc68286) introduced an empty \"admin\": { \"trialNotices\": {} } sibling at the root of every locale's wordpress.json, contradicting the PR's own test plan (\"No new top-level keys outside wordpress.*\"). Root cause: the migration script had two walks per pluralization spec — the first walked from `data` directly and used setdefault() for ['admin', 'trialNotices'] before being superseded by a correct walk from `data['wordpress']`. The first walk's setdefault left the empty stub behind. The intended content lives at the correct path (wordpress.admin.trialNotices.{trialDayRemaining_one,_other,...}) and is unaffected. Removed the stray empty \"admin\" key from all 8 locales after verifying it contained only empty sub-objects (no content loss). Final top-level shape per file: { \"wordpress\": ... } only. --- packages/i18n/locales/en-GB/wordpress.json | 3 --- packages/i18n/locales/en-US/wordpress.json | 3 --- packages/i18n/locales/es-ES/wordpress.json | 3 --- packages/i18n/locales/es-MX/wordpress.json | 3 --- packages/i18n/locales/fr/wordpress.json | 3 --- packages/i18n/locales/it/wordpress.json | 3 --- packages/i18n/locales/pt-BR/wordpress.json | 3 --- packages/i18n/locales/pt-PT/wordpress.json | 3 --- 8 files changed, 24 deletions(-) diff --git a/packages/i18n/locales/en-GB/wordpress.json b/packages/i18n/locales/en-GB/wordpress.json index 5cf3f3e..2d90c6e 100644 --- a/packages/i18n/locales/en-GB/wordpress.json +++ b/packages/i18n/locales/en-GB/wordpress.json @@ -682,8 +682,5 @@ "enrolledAt": "Enrolled at", "whenYouUseLoyaltydogYourEmail": "When you use LoyaltyDog, your email address and order totals are sent to the LoyaltyDog cloud service (api.loyalty.dog) to calculate and store loyalty points. Loyalty transaction history may be retained locally in de-identified form (linked only to an internal member ID) after an erasure request. See loyalty.dog/privacy for details." } - }, - "admin": { - "trialNotices": {} } } diff --git a/packages/i18n/locales/en-US/wordpress.json b/packages/i18n/locales/en-US/wordpress.json index ce98585..34002a0 100644 --- a/packages/i18n/locales/en-US/wordpress.json +++ b/packages/i18n/locales/en-US/wordpress.json @@ -682,8 +682,5 @@ "enrolledAt": "Enrolled at", "whenYouUseLoyaltydogYourEmail": "When you use LoyaltyDog, your email address and order totals are sent to the LoyaltyDog cloud service (api.loyalty.dog) to calculate and store loyalty points. Loyalty transaction history may be retained locally in de-identified form (linked only to an internal member ID) after an erasure request. See loyalty.dog/privacy for details." } - }, - "admin": { - "trialNotices": {} } } diff --git a/packages/i18n/locales/es-ES/wordpress.json b/packages/i18n/locales/es-ES/wordpress.json index ce954a7..46c3fe7 100644 --- a/packages/i18n/locales/es-ES/wordpress.json +++ b/packages/i18n/locales/es-ES/wordpress.json @@ -682,8 +682,5 @@ "enrolledAt": "Enrolled at", "whenYouUseLoyaltydogYourEmail": "When you use LoyaltyDog, your email address and order totals are sent to the LoyaltyDog cloud service (api.loyalty.dog) to calculate and store loyalty points. Loyalty transaction history may be retained locally in de-identified form (linked only to an internal member ID) after an erasure request. See loyalty.dog/privacy for details." } - }, - "admin": { - "trialNotices": {} } } diff --git a/packages/i18n/locales/es-MX/wordpress.json b/packages/i18n/locales/es-MX/wordpress.json index d95bdcb..a177fcb 100644 --- a/packages/i18n/locales/es-MX/wordpress.json +++ b/packages/i18n/locales/es-MX/wordpress.json @@ -682,8 +682,5 @@ "enrolledAt": "Enrolled at", "whenYouUseLoyaltydogYourEmail": "When you use LoyaltyDog, your email address and order totals are sent to the LoyaltyDog cloud service (api.loyalty.dog) to calculate and store loyalty points. Loyalty transaction history may be retained locally in de-identified form (linked only to an internal member ID) after an erasure request. See loyalty.dog/privacy for details." } - }, - "admin": { - "trialNotices": {} } } diff --git a/packages/i18n/locales/fr/wordpress.json b/packages/i18n/locales/fr/wordpress.json index f1ec750..e09725b 100644 --- a/packages/i18n/locales/fr/wordpress.json +++ b/packages/i18n/locales/fr/wordpress.json @@ -682,8 +682,5 @@ "enrolledAt": "Enrolled at", "whenYouUseLoyaltydogYourEmail": "When you use LoyaltyDog, your email address and order totals are sent to the LoyaltyDog cloud service (api.loyalty.dog) to calculate and store loyalty points. Loyalty transaction history may be retained locally in de-identified form (linked only to an internal member ID) after an erasure request. See loyalty.dog/privacy for details." } - }, - "admin": { - "trialNotices": {} } } diff --git a/packages/i18n/locales/it/wordpress.json b/packages/i18n/locales/it/wordpress.json index 9ba5f53..3bdb965 100644 --- a/packages/i18n/locales/it/wordpress.json +++ b/packages/i18n/locales/it/wordpress.json @@ -682,8 +682,5 @@ "enrolledAt": "Enrolled at", "whenYouUseLoyaltydogYourEmail": "When you use LoyaltyDog, your email address and order totals are sent to the LoyaltyDog cloud service (api.loyalty.dog) to calculate and store loyalty points. Loyalty transaction history may be retained locally in de-identified form (linked only to an internal member ID) after an erasure request. See loyalty.dog/privacy for details." } - }, - "admin": { - "trialNotices": {} } } diff --git a/packages/i18n/locales/pt-BR/wordpress.json b/packages/i18n/locales/pt-BR/wordpress.json index cea6035..d58f365 100644 --- a/packages/i18n/locales/pt-BR/wordpress.json +++ b/packages/i18n/locales/pt-BR/wordpress.json @@ -682,8 +682,5 @@ "enrolledAt": "Enrolled at", "whenYouUseLoyaltydogYourEmail": "When you use LoyaltyDog, your email address and order totals are sent to the LoyaltyDog cloud service (api.loyalty.dog) to calculate and store loyalty points. Loyalty transaction history may be retained locally in de-identified form (linked only to an internal member ID) after an erasure request. See loyalty.dog/privacy for details." } - }, - "admin": { - "trialNotices": {} } } diff --git a/packages/i18n/locales/pt-PT/wordpress.json b/packages/i18n/locales/pt-PT/wordpress.json index 23e31d5..58e0aab 100644 --- a/packages/i18n/locales/pt-PT/wordpress.json +++ b/packages/i18n/locales/pt-PT/wordpress.json @@ -682,8 +682,5 @@ "enrolledAt": "Enrolled at", "whenYouUseLoyaltydogYourEmail": "When you use LoyaltyDog, your email address and order totals are sent to the LoyaltyDog cloud service (api.loyalty.dog) to calculate and store loyalty points. Loyalty transaction history may be retained locally in de-identified form (linked only to an internal member ID) after an erasure request. See loyalty.dog/privacy for details." } - }, - "admin": { - "trialNotices": {} } }