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>
686 lines
32 KiB
JSON
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."
|
|
}
|
|
}
|