Files
orion/app/modules/loyalty/locales/en.json
Samir Boulahtit 694a1cd1a5 feat(loyalty): add full i18n support for all loyalty module pages
Replace hardcoded English strings across all 22 templates, 10 JS files,
and 4 locale files (en/fr/de/lb) with ~300 translation keys per language.
Uses server-side _() for Jinja2 templates and I18n.t() for JS toast
messages and dynamic Alpine.js expressions.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-13 19:53:17 +01:00

686 lines
32 KiB
JSON

{
"loyalty": {
"module": {
"name": "Loyalty Programs",
"description": "Stamp-based and points-based loyalty programs with wallet integration"
},
"program": {
"title": "Loyalty Program",
"create": "Create Program",
"edit": "Edit Program",
"activate": "Activate",
"deactivate": "Deactivate",
"type": {
"stamps": "Stamps",
"points": "Points",
"hybrid": "Hybrid"
}
},
"card": {
"title": "Loyalty Card",
"number": "Card Number",
"qr_code": "QR Code",
"enroll": "Enroll Customer",
"deactivate": "Deactivate Card"
},
"stamp": {
"title": "Stamps",
"add": "Add Stamp",
"redeem": "Redeem Reward",
"count": "{current} of {target}",
"until_reward": "{count} until reward"
},
"points": {
"title": "Points",
"earn": "Earn Points",
"redeem": "Redeem Points",
"balance": "{count} points",
"per_euro": "{points} points per euro"
},
"pin": {
"title": "Staff PINs",
"create": "Create PIN",
"edit": "Edit PIN",
"unlock": "Unlock PIN",
"locked": "PIN locked until {time}"
},
"wallet": {
"google": "Add to Google Wallet",
"apple": "Add to Apple Wallet"
},
"stats": {
"title": "Statistics",
"total_cards": "Total Cards",
"active_cards": "Active Cards",
"stamps_issued": "Stamps Issued",
"rewards_redeemed": "Rewards Redeemed"
},
"errors": {
"program_not_found": "Loyalty program not found",
"program_inactive": "Loyalty program is not active",
"card_not_found": "Loyalty card not found",
"card_inactive": "Loyalty card is not active",
"cooldown": "Please wait {minutes} minutes before next stamp",
"daily_limit": "Daily stamp limit of {limit} reached",
"insufficient_stamps": "Need {required} stamps, have {current}",
"insufficient_points": "Need {required} points, have {current}",
"pin_required": "Staff PIN is required",
"pin_invalid": "Invalid staff PIN",
"pin_locked": "PIN locked due to too many failed attempts"
}
},
"permissions": {
"view_programs": "View Programs",
"view_programs_desc": "View loyalty programs and details",
"manage_programs": "Manage Programs",
"manage_programs_desc": "Create and configure loyalty programs",
"view_rewards": "View Rewards",
"view_rewards_desc": "View loyalty rewards and redemptions",
"manage_rewards": "Manage Rewards",
"manage_rewards_desc": "Create and manage loyalty rewards"
},
"menu": {
"loyalty": "Loyalty",
"loyalty_programs": "Loyalty Programs",
"programs": "Programs",
"analytics": "Analytics",
"dashboard": "Dashboard",
"terminal": "Terminal",
"customer_cards": "Customer Cards",
"statistics": "Statistics",
"program": "Program",
"overview": "Overview",
"settings": "Settings"
},
"onboarding": {
"create_program": {
"title": "Create a loyalty program",
"description": "Set up your first stamp or points program"
}
},
"enrollment": {
"title": "Join Our Rewards Program!",
"subtitle": "Earn {points} point for every EUR you spend",
"not_available_title": "Program Not Available",
"not_available_message": "This store doesn't have a loyalty program set up yet.",
"welcome_bonus": "Get {points} bonus points when you join!",
"already_member": "Already a member? Your points are linked to your email.",
"form": {
"email": "Email",
"first_name": "First Name",
"last_name": "Last Name",
"phone": "Phone (optional)",
"birthday": "Birthday (optional)",
"birthday_hint": "For special birthday rewards",
"terms_agree": "I agree to the",
"terms": "Terms & Conditions",
"marketing_consent": "Send me news and special offers",
"joining": "Joining...",
"join_button": "Join & Get {points} Points"
},
"privacy_policy": "Privacy Policy",
"close": "Close",
"success": {
"title": "Welcome!",
"message": "You're now a member of our rewards program.",
"card_number": "Your Card Number",
"wallet_prompt": "Save your card to your phone for easy access:",
"next_steps_title": "What's Next?",
"step_earn": "Show your card number when making purchases to earn points",
"step_balance": "Check your balance online or in the app",
"step_redeem": "Redeem points for rewards at any of our locations",
"view_dashboard": "View My Loyalty Dashboard",
"continue_shopping": "Continue Shopping"
},
"errors": {
"load_failed": "Failed to load program information",
"email_exists": "This email is already registered in our loyalty program.",
"failed": "Enrollment failed. Please try again."
}
},
"common": {
"active": "Active",
"inactive": "Inactive",
"cancel": "Cancel",
"save": "Save",
"delete": "Delete",
"confirm": "Confirm",
"refresh": "Refresh",
"loading": "Loading...",
"saving": "Saving...",
"view": "View",
"edit": "Edit",
"yes": "Yes",
"no": "No",
"none": "None",
"never": "Never",
"total": "TOTAL",
"continue": "Continue",
"back": "Back",
"points": "points",
"minutes": "minutes",
"or": "or",
"at": "at"
},
"transactions": {
"card_created": "Enrolled",
"welcome_bonus": "Welcome Bonus",
"stamp_earned": "Stamp Earned",
"stamp_redeemed": "Stamp Redeemed",
"stamp_voided": "Stamp Voided",
"stamp_adjustment": "Stamp Adjusted",
"points_earned": "Points Earned",
"points_redeemed": "Points Redeemed",
"points_voided": "Points Voided",
"points_adjustment": "Points Adjusted",
"points_expired": "Points Expired",
"card_deactivated": "Deactivated",
"reward_redeemed": "Reward Redeemed"
},
"shared": {
"analytics": {
"total_programs": "Total Programs",
"total_members": "Total Members",
"active_members": "Active Members",
"points_issued_30d": "Points Issued (30d)",
"transactions_30d": "Transactions (30d)",
"x_active": "{count} active",
"points_overview": "Points Overview",
"points_issued_vs_redeemed": "Points Issued vs Redeemed (30d)",
"issued": "Issued:",
"redeemed": "Redeemed:",
"redemption_rate": "Redemption Rate",
"outstanding_balance": "Outstanding Balance",
"member_activity": "Member Activity",
"active_members_30d": "Active Members (30d)",
"new_this_month": "New This Month",
"merchants_with_programs": "Merchants with Programs",
"avg_points_per_member": "Avg Points Per Member",
"all_time_statistics": "All-Time Statistics",
"total_points_issued": "Total Points Issued",
"total_points_redeemed": "Total Points Redeemed",
"points_redeemed_30d": "Points Redeemed (30d)",
"outstanding_liability": "Outstanding Liability",
"location_breakdown": "Location Breakdown",
"store": "Store",
"enrolled": "Enrolled",
"points_earned": "Points Earned",
"points_redeemed": "Points Redeemed"
},
"program_view": {
"program_configuration": "Program Configuration",
"program_name": "Program Name",
"card_name": "Card Name",
"stamps_configuration": "Stamps Configuration",
"stamps_target": "Stamps Target",
"reward_description": "Reward Description",
"reward_value": "Reward Value",
"points_configuration": "Points Configuration",
"points_per_eur": "Points per EUR",
"welcome_bonus": "Welcome Bonus",
"x_points": "{count} points",
"minimum_redemption": "Minimum Redemption",
"minimum_purchase": "Minimum Purchase",
"points_expiration": "Points Expiration",
"x_days_inactivity": "{days} days of inactivity",
"redemption_rewards": "Redemption Rewards",
"reward": "Reward",
"points_required": "Points Required",
"description": "Description",
"anti_fraud": "Anti-Fraud",
"cooldown": "Cooldown",
"x_minutes": "{count} minutes",
"max_daily_stamps": "Max Daily Stamps",
"staff_pin_required": "Staff PIN Required",
"branding": "Branding",
"primary_color": "Primary Color",
"secondary_color": "Secondary Color",
"logo_url": "Logo URL",
"hero_image_url": "Hero Image URL",
"terms_privacy": "Terms & Privacy",
"terms_conditions": "Terms & Conditions",
"privacy_policy_url": "Privacy Policy URL"
},
"program_form": {
"program_type": "Program Type",
"points_type_desc": "Earn points per EUR spent",
"stamps_type_desc": "Collect N stamps, get reward",
"hybrid_type_desc": "Both stamps and points",
"stamps_configuration": "Stamps Configuration",
"stamps_target": "Stamps Target",
"stamps_target_help": "Number of stamps needed for reward",
"reward_description": "Reward Description",
"reward_value_cents": "Reward Value (cents)",
"points_configuration": "Points Configuration",
"points_per_eur": "Points per EUR spent",
"eur_equals_points": "1 EUR = {points} point(s)",
"welcome_bonus_points": "Welcome Bonus Points",
"welcome_bonus_help": "Bonus points awarded on enrollment",
"minimum_redemption_points": "Minimum Redemption Points",
"minimum_purchase_cents": "Minimum Purchase (cents)",
"minimum_purchase_help": "Minimum purchase amount to earn points (0 = no minimum)",
"points_expiration_days": "Points Expiration (days)",
"points_expiration_help": "Days of inactivity before points expire (0 = never)",
"redemption_rewards": "Redemption Rewards",
"add_reward": "Add Reward",
"no_rewards_configured": "No rewards configured. Add a reward to allow customers to redeem points.",
"reward_name": "Reward Name",
"points_required": "Points Required",
"description": "Description",
"anti_fraud_settings": "Anti-Fraud Settings",
"cooldown_minutes": "Cooldown (minutes)",
"cooldown_help": "Time between stamps from the same card",
"max_daily_stamps": "Max Daily Stamps",
"max_daily_stamps_help": "Maximum stamps per card per day",
"require_staff_pin": "Require Staff PIN",
"branding": "Branding",
"card_name": "Card Name",
"primary_color": "Primary Color",
"secondary_color": "Secondary Color",
"logo_url": "Logo URL",
"logo_url_help": "Required for Google Wallet integration. Must be a publicly accessible image URL (PNG or JPG).",
"hero_image_url": "Hero Image URL",
"terms_privacy": "Terms & Privacy",
"terms_conditions": "Terms & Conditions",
"privacy_policy_url": "Privacy Policy URL",
"program_status": "Program Status",
"program_active": "Program Active",
"program_active_help": "When disabled, customers cannot earn or redeem",
"delete_program": "Delete Program",
"create_program": "Create Program",
"save_changes": "Save Changes"
}
},
"admin": {
"programs": {
"title": "Loyalty Programs",
"create_program": "Create Program",
"loading": "Loading loyalty programs...",
"error_loading": "Error loading loyalty programs",
"total_programs": "Total Programs",
"active": "Active",
"total_members": "Total Members",
"transactions_30d": "Transactions (30d)",
"search_placeholder": "Search by merchant name...",
"all_status": "All Status",
"table_merchant": "Merchant",
"table_program_type": "Program Type",
"table_members": "Members",
"table_points_issued": "Points Issued",
"table_status": "Status",
"table_created": "Created",
"table_actions": "Actions",
"no_programs": "No loyalty programs found",
"adjust_filters": "Try adjusting your search or filters",
"no_merchants_yet": "No merchants have set up loyalty programs yet",
"x_active": "({count} active)",
"x_redeemed": "{count} redeemed",
"pt_per_eur": "pt/EUR",
"delete_title": "Delete Loyalty Program",
"delete_message": "Delete the loyalty program for \"{name}\"? This will permanently remove all associated data (cards, transactions, rewards). This cannot be undone.",
"delete_confirm": "Delete Program",
"create_title": "Create Loyalty Program",
"create_description": "Select a merchant to create a loyalty program for.",
"search_merchant": "Search Merchant",
"type_merchant_name": "Type merchant name...",
"no_merchants_found": "No merchants found",
"existing_program_warning": "This merchant already has a loyalty program.",
"view_edit_existing": "View / Edit existing program"
},
"merchant_detail": {
"title": "Merchant Loyalty Details",
"loading": "Loading merchant loyalty details...",
"error_loading": "Error loading merchant loyalty",
"program_active": "Loyalty Program Active",
"no_program_subtitle": "No Loyalty Program",
"quick_actions": "Quick Actions",
"edit_program": "Edit Program",
"admin_policy": "Admin Policy",
"view_merchant": "View Merchant",
"total_members": "Total Members",
"active_30d": "Active (30d)",
"points_issued_30d": "Points Issued (30d)",
"points_redeemed_30d": "Points Redeemed (30d)",
"no_program": "No Loyalty Program",
"no_program_desc": "This merchant has not set up a loyalty program yet.",
"create_program": "Create Program",
"delete_title": "Delete Loyalty Program",
"delete_message": "This will permanently delete the loyalty program and all associated data. This action cannot be undone.",
"delete_confirm": "Delete Program",
"location_breakdown": "Location Breakdown",
"table_location": "Location",
"table_enrolled": "Enrolled",
"table_points_earned": "Points Earned",
"table_points_redeemed": "Points Redeemed",
"table_transactions_30d": "Transactions (30d)",
"admin_policy_settings": "Admin Policy Settings",
"staff_pin_policy": "Staff PIN Policy",
"self_enrollment": "Self Enrollment",
"cross_location_redemption": "Cross-Location Redemption",
"allowed": "Allowed",
"disabled": "Disabled",
"modify_policy": "Modify admin policy"
},
"merchant_settings": {
"title": "Merchant Loyalty Settings",
"loading": "Loading settings...",
"error_loading": "Error loading settings",
"admin_controlled": "Admin-controlled settings for this merchant's loyalty program",
"staff_pin_policy": "Staff PIN Policy",
"staff_pin_description": "Control whether staff members at this merchant's locations must enter a PIN to process loyalty transactions.",
"required": "Required",
"required_desc": "Staff must enter their PIN for every transaction. Recommended for security.",
"optional": "Optional",
"optional_desc": "Stores can choose whether to require PINs at their locations.",
"pin_disabled": "Disabled",
"pin_disabled_desc": "Staff PINs are not used. Any staff member can process transactions.",
"pin_lockout_settings": "PIN Lockout Settings",
"max_failed_attempts": "Max Failed Attempts",
"max_failed_attempts_help": "Number of wrong attempts before lockout (3-10)",
"lockout_duration": "Lockout Duration (minutes)",
"lockout_duration_help": "How long to lock out after failed attempts (5-120 minutes)",
"enrollment_settings": "Enrollment Settings",
"allow_self_enrollment": "Allow Self-Service Enrollment",
"self_enrollment_desc": "Customers can sign up via QR code without staff assistance",
"transaction_settings": "Transaction Settings",
"allow_cross_location": "Allow Cross-Location Redemption",
"cross_location_desc": "Customers can redeem points at any merchant location",
"allow_void": "Allow Void Transactions",
"void_desc": "Staff can void points/stamps for returns",
"save_settings": "Save Settings"
},
"analytics": {
"title": "Loyalty Analytics",
"subtitle": "Platform-wide loyalty program statistics",
"loading": "Loading analytics...",
"error_loading": "Error loading analytics",
"filter_by_merchant": "Filter by Merchant",
"search_merchants_placeholder": "Search merchants by name...",
"showing_stats_for": "Showing stats for:",
"wallet_status": "Wallet Integration Status",
"google_wallet": "Google Wallet",
"apple_wallet": "Apple Wallet",
"connected": "Connected",
"error": "Error",
"not_configured": "Not Configured",
"issuer_id": "Issuer ID",
"project": "Project",
"wallet_objects": "Wallet Objects",
"loyalty_classes": "Loyalty Classes",
"pass_type_id": "Pass Type ID",
"team_id": "Team ID",
"active_passes": "Active Passes",
"quick_actions": "Quick Actions",
"view_all_programs": "View All Programs",
"manage_merchants": "Manage Merchants"
},
"program_edit": {
"title": "Program Configuration",
"loading": "Loading program configuration...",
"error_loading": "Error loading program configuration",
"create_subtitle": "Create a loyalty program for this merchant",
"edit_subtitle": "Edit program configuration",
"delete_title": "Delete Loyalty Program",
"delete_message": "This will permanently delete the loyalty program and all associated data (cards, transactions, rewards). This action cannot be undone.",
"delete_confirm": "Delete Program"
}
},
"merchant": {
"program": {
"title": "Loyalty Program",
"subtitle": "Your loyalty program configuration.",
"edit_program": "Edit Program",
"no_program": "No Loyalty Program",
"no_program_desc": "Your loyalty program hasn't been set up yet. Create one to start rewarding your customers.",
"create_program": "Create Program"
},
"program_edit": {
"title": "Loyalty Settings",
"page_title": "Loyalty Program Settings",
"subtitle": "Configure your loyalty program",
"loading": "Loading settings...",
"error_loading": "Error loading settings",
"delete_title": "Delete Loyalty Program",
"delete_message": "This will permanently delete your loyalty program and all associated data (cards, transactions, rewards). This action cannot be undone.",
"delete_confirm": "Delete Program"
},
"analytics": {
"title": "Loyalty Analytics",
"subtitle": "Loyalty program statistics across all your stores",
"loading": "Loading analytics...",
"error_loading": "Error loading analytics",
"no_program": "No Loyalty Program",
"no_program_desc": "Set up a loyalty program to see analytics here.",
"create_program": "Create Program",
"quick_actions": "Quick Actions",
"view_program": "View Program",
"edit_program": "Edit Program"
}
},
"store": {
"terminal": {
"title": "Loyalty Terminal",
"subtitle": "Process loyalty transactions",
"members": "Members",
"analytics": "Analytics",
"loading": "Loading loyalty terminal...",
"error_loading": "Error loading terminal",
"not_setup": "Loyalty Program Not Set Up",
"not_setup_desc": "Your merchant doesn't have a loyalty program configured yet.",
"setup_program": "Set Up Loyalty Program",
"contact_admin": "Contact your administrator to complete the setup.",
"find_customer": "Find Customer",
"search_placeholder": "Email, phone, or card number...",
"looking_up": "Looking up...",
"look_up_customer": "Look Up Customer",
"enroll_new_customer": "Enroll New Customer",
"customer_found": "Customer Found",
"points_balance": "Points Balance",
"stamps": "Stamps",
"x_more_for_reward": "{count} more for reward",
"ready_to_redeem": "Ready to redeem!",
"add_stamp": "Add Stamp",
"current": "Current:",
"cooldown_active": "Cooldown active",
"redeem_stamps": "Redeem Stamps",
"not_enough_stamps": "Not enough stamps yet",
"earn_points": "Earn Points",
"purchase_amount": "Purchase Amount",
"points_to_award": "Points to award:",
"award_points": "Award Points",
"redeem_reward": "Redeem Reward",
"select_reward": "Select Reward",
"select_reward_placeholder": "Select reward...",
"points_after": "Points after:",
"search_to_process": "Search for a customer to process a transaction",
"recent_transactions": "Recent Transactions at This Location",
"table_time": "Time",
"table_customer": "Customer",
"table_type": "Type",
"table_points": "Points",
"table_notes": "Notes",
"no_recent_transactions": "No recent transactions",
"enter_staff_pin": "Enter Staff PIN",
"pin_authorize": "Enter your staff PIN to authorize this transaction.",
"clear": "Clear",
"processing": "Processing...",
"customer_not_found": "Customer not found. You can enroll them as a new member.",
"error_lookup": "Error looking up customer: {message}",
"transaction_failed": "Transaction failed: {message}",
"stamp_added": "Stamp added!",
"stamps_redeemed": "Stamps redeemed! Reward earned.",
"x_points_awarded": "{points} points awarded!",
"reward_redeemed": "Reward redeemed: {name}"
},
"cards": {
"title": "Loyalty Members",
"subtitle": "View and manage your loyalty program members",
"enroll_new": "Enroll New",
"loading": "Loading members...",
"error_loading": "Error loading members",
"total_members": "Total Members",
"active_30d": "Active (30d)",
"new_this_month": "New This Month",
"total_points_balance": "Total Points Balance",
"search_placeholder": "Search by name, email, phone, or card...",
"all_status": "All Status",
"table_member": "Member",
"table_card_number": "Card Number",
"table_points_balance": "Points Balance",
"table_last_activity": "Last Activity",
"table_status": "Status",
"table_actions": "Actions",
"no_members": "No members found",
"adjust_search": "Try adjusting your search",
"enroll_first": "Enroll your first customer to get started"
},
"card_detail": {
"title": "Member Details",
"loading": "Loading member details...",
"error_loading": "Error loading member",
"points_balance": "Points Balance",
"total_earned": "Total Earned",
"total_redeemed": "Total Redeemed",
"member_since": "Member Since",
"customer_information": "Customer Information",
"name": "Name",
"email": "Email",
"phone": "Phone",
"birthday": "Birthday",
"card_details": "Card Details",
"card_number": "Card Number",
"status": "Status",
"last_activity": "Last Activity",
"enrolled_at": "Enrolled At",
"transaction_history": "Transaction History",
"table_date": "Date",
"table_type": "Type",
"table_points": "Points",
"table_location": "Location",
"table_notes": "Notes",
"no_transactions": "No transactions yet"
},
"enroll": {
"title": "Enroll Customer",
"page_title": "Enroll New Customer",
"subtitle": "Add a new member to your loyalty program",
"loading": "Loading...",
"error_loading": "Error loading enrollment form",
"customer_information": "Customer Information",
"first_name": "First Name",
"last_name": "Last Name",
"email": "Email",
"phone": "Phone",
"birthday": "Birthday",
"birthday_help": "For birthday rewards (optional)",
"communication_preferences": "Communication Preferences",
"send_emails": "Send promotional emails",
"send_sms": "Send promotional SMS",
"welcome_bonus": "Welcome Bonus",
"welcome_bonus_desc": "Customer will receive {points} bonus points!",
"enroll_customer": "Enroll Customer",
"enrolling": "Enrolling...",
"customer_enrolled": "Customer Enrolled!",
"starting_balance": "Starting Balance:",
"x_points": "{count} points",
"back_to_terminal": "Back to Terminal",
"enroll_another": "Enroll Another",
"enrollment_failed": "Enrollment failed: {message}"
},
"analytics": {
"title": "Loyalty Analytics",
"subtitle": "Track your loyalty program performance",
"loading": "Loading analytics...",
"error_loading": "Error loading analytics",
"quick_actions": "Quick Actions",
"open_terminal": "Open Terminal",
"view_members": "View Members",
"view_program": "View Program"
},
"program": {
"title": "Loyalty Program",
"subtitle": "Your loyalty program configuration",
"edit_program": "Edit Program",
"loading": "Loading program...",
"error_loading": "Error loading program",
"no_program": "No Loyalty Program",
"no_program_desc": "Your merchant doesn't have a loyalty program configured yet.",
"create_program": "Create Program",
"contact_admin": "Contact your administrator to set up a loyalty program."
},
"settings": {
"title": "Loyalty Settings",
"page_title": "Loyalty Program Settings",
"subtitle": "Configure your loyalty program",
"back_to_program": "Back to Program",
"loading": "Loading settings...",
"error_loading": "Error loading settings",
"access_restricted": "Access Restricted",
"owner_only": "Only the merchant owner can manage loyalty program settings.",
"delete_title": "Delete Loyalty Program",
"delete_message": "This will permanently delete the loyalty program and all associated data (cards, transactions, rewards). This action cannot be undone.",
"delete_confirm": "Delete Program",
"program_created": "Program created successfully",
"program_updated": "Program updated successfully",
"program_deleted": "Loyalty program deleted",
"save_failed": "Failed to save: {message}",
"delete_failed": "Failed to delete: {message}"
}
},
"storefront": {
"dashboard": {
"back_to_account": "Back to Account",
"my_loyalty": "My Loyalty",
"join_title": "Join Our Rewards Program!",
"join_subtitle": "Earn points on every purchase and redeem for rewards.",
"join_now": "Join Now",
"points_balance": "Points Balance",
"card_number": "Card Number",
"show_card": "Show Card",
"total_earned": "Total Earned",
"total_redeemed": "Total Redeemed",
"available_rewards": "Available Rewards",
"no_rewards_yet": "No rewards available yet",
"ready_to_redeem": "Ready to redeem",
"x_more_to_go": "{count} more to go",
"redeem_hint": "Show your card to staff to redeem rewards in-store.",
"recent_activity": "Recent Activity",
"view_all": "View All",
"no_transactions": "No transactions yet. Make a purchase to start earning points!",
"earn_redeem_locations": "Earn & Redeem Locations",
"your_loyalty_card": "Your Loyalty Card",
"show_to_staff": "Show this to staff when making a purchase or redeeming rewards."
},
"history": {
"back_to_loyalty": "Back to Loyalty",
"title": "Transaction History",
"subtitle": "View all your loyalty point transactions",
"current_balance": "Current Balance",
"total_earned": "Total Earned",
"total_redeemed": "Total Redeemed",
"no_transactions": "No transactions yet",
"balance": "Balance:",
"previous": "Previous",
"next": "Next",
"page_x_of_y": "Page {page} of {pages}"
}
},
"toasts": {
"program_activated": "Program activated successfully",
"program_deactivated": "Program deactivated successfully",
"activate_failed": "Failed to activate program: {message}",
"deactivate_failed": "Failed to deactivate program: {message}",
"program_deleted": "Program deleted successfully",
"delete_failed": "Failed to delete program: {message}",
"program_created": "Program created successfully",
"program_updated": "Program updated successfully",
"loyalty_program_created": "Loyalty program created",
"loyalty_program_deleted": "Loyalty program deleted",
"settings_saved": "Settings saved successfully",
"save_failed": "Failed to save: {message}",
"settings_save_failed": "Failed to save settings: {message}",
"create_failed": "Failed to create program: {message}",
"logo_required": "Logo URL is required for wallet integration."
}
}