Some checks failed
Storefront homepage & module gating:
- CMS owns storefront GET / (slug="home" with 3-tier resolution)
- Catalog loses GET / (keeps /products only)
- Store root redirect (GET / → /store/dashboard or /store/login)
- Route gating: non-core modules return 404 when disabled for platform
- Seed store default homepages per platform
Widget protocol for customer dashboard:
- StorefrontDashboardCard contract in widgets.py
- Widget aggregator get_storefront_dashboard_cards()
- Orders and Loyalty module widget providers
- Dashboard template renders contributed cards (no module names)
Landing template module-agnostic:
- CTAs driven by storefront_nav (not hardcoded module names)
- Header actions check nav item IDs (not enabled_modules)
- Remove hardcoded "Add Product" sidebar button
- Remove all enabled_modules checks from storefront templates
i18n fixes:
- Title placeholder resolution ({{store_name}}) for store default pages
- Storefront nav label_keys prefixed with module code
- Add storefront.account.* keys to 6 modules (en/fr/de/lb)
- Header/footer CMS pages use get_translated_title(current_language)
- Footer labels use i18n keys instead of hardcoded English
Icon cleanup:
- Standardize on map-pin (remove location-marker alias)
- Replace all location-marker references across templates and docs
Docs:
- Storefront builder vision proposal (6 phases)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
403 lines
20 KiB
JSON
403 lines
20 KiB
JSON
{
|
|
"platform": {
|
|
"nav": {
|
|
"pricing": "Pricing",
|
|
"find_shop": "Find Your Shop",
|
|
"start_trial": "Start Free Trial",
|
|
"admin_login": "Admin Login",
|
|
"store_login": "Store Login",
|
|
"toggle_menu": "Toggle menu",
|
|
"toggle_dark_mode": "Toggle dark mode"
|
|
},
|
|
"hero": {
|
|
"badge": "{trial_days}-Day Free Trial - No Credit Card Required to Start",
|
|
"title": "Lightweight OMS for Letzshop Sellers",
|
|
"subtitle": "Order management, inventory, and invoicing built for Luxembourg e-commerce. Stop juggling spreadsheets. Start running your business.",
|
|
"cta_trial": "Start Free Trial",
|
|
"cta_find_shop": "Find Your Letzshop Shop"
|
|
},
|
|
"pricing": {
|
|
"title": "Simple, Transparent Pricing",
|
|
"subtitle": "Choose the plan that fits your business. All plans include a {trial_days}-day free trial.",
|
|
"monthly": "Monthly",
|
|
"annual": "Annual",
|
|
"save_months": "Save 2 months!",
|
|
"most_popular": "MOST POPULAR",
|
|
"recommended": "RECOMMENDED",
|
|
"contact_sales": "Contact Sales",
|
|
"start_trial": "Start Free Trial",
|
|
"per_month": "/month",
|
|
"per_year": "/year",
|
|
"custom": "Custom",
|
|
"orders_per_month": "{count} orders/month",
|
|
"unlimited_orders": "Unlimited orders",
|
|
"products_limit": "{count} products",
|
|
"unlimited_products": "Unlimited products",
|
|
"team_members": "{count} team members",
|
|
"unlimited_team": "Unlimited team",
|
|
"letzshop_sync": "Letzshop order sync",
|
|
"eu_vat_invoicing": "EU VAT invoicing",
|
|
"analytics_dashboard": "Analytics dashboard",
|
|
"api_access": "API access",
|
|
"multi_channel": "Multi-channel integration",
|
|
"products": "products",
|
|
"team_member": "team member",
|
|
"unlimited": "Unlimited",
|
|
"order_history": "months order history",
|
|
"trial_note": "All plans include a {trial_days}-day free trial. No credit card required.",
|
|
"back_home": "Back to Home"
|
|
},
|
|
"features": {
|
|
"letzshop_sync": "Letzshop order sync",
|
|
"inventory_basic": "Basic inventory management",
|
|
"inventory_locations": "Warehouse locations",
|
|
"inventory_purchase_orders": "Purchase orders",
|
|
"invoice_lu": "Luxembourg VAT invoicing",
|
|
"invoice_eu_vat": "EU VAT invoicing",
|
|
"invoice_bulk": "Bulk invoicing",
|
|
"customer_view": "Customer list",
|
|
"customer_export": "Customer export",
|
|
"analytics_dashboard": "Analytics dashboard",
|
|
"accounting_export": "Accounting export",
|
|
"api_access": "API access",
|
|
"automation_rules": "Automation rules",
|
|
"team_roles": "Team roles & permissions",
|
|
"white_label": "White-label option",
|
|
"multi_store": "Multi-store support",
|
|
"custom_integrations": "Custom integrations",
|
|
"sla_guarantee": "SLA guarantee",
|
|
"dedicated_support": "Dedicated account manager"
|
|
},
|
|
"addons": {
|
|
"title": "Enhance Your Platform",
|
|
"subtitle": "Add custom branding, professional email, and enhanced security.",
|
|
"per_year": "/year",
|
|
"per_month": "/month",
|
|
"custom_domain": "Custom Domain",
|
|
"custom_domain_desc": "Use your own domain (mydomain.com)",
|
|
"premium_ssl": "Premium SSL",
|
|
"premium_ssl_desc": "EV certificate for trust badges",
|
|
"email_package": "Email Package",
|
|
"email_package_desc": "Professional email addresses"
|
|
},
|
|
"find_shop": {
|
|
"title": "Find Your Letzshop Shop",
|
|
"subtitle": "Already selling on Letzshop? Enter your shop URL to get started.",
|
|
"placeholder": "Enter your Letzshop URL (e.g., letzshop.lu/vendors/my-shop)",
|
|
"button": "Find My Shop",
|
|
"claim_shop": "Claim This Shop",
|
|
"already_claimed": "Already Claimed",
|
|
"no_account": "Don't have a Letzshop account?",
|
|
"signup_letzshop": "Sign up with Letzshop first",
|
|
"then_connect": ", then come back to connect your shop.",
|
|
"search_placeholder": "Enter Letzshop URL or shop name...",
|
|
"search_button": "Search",
|
|
"examples": "Examples:",
|
|
"claim_button": "Claim This Shop & Start Free Trial",
|
|
"not_found": "We could not find a Letzshop shop with that URL. Please check and try again.",
|
|
"or_signup": "Or sign up without a Letzshop connection",
|
|
"need_help": "Need Help?",
|
|
"no_account_yet": "Don't have a Letzshop account yet? No problem!",
|
|
"create_letzshop": "Create a Letzshop Account",
|
|
"signup_without": "Sign Up Without Letzshop",
|
|
"looking_up": "Looking up your shop...",
|
|
"found": "Found:",
|
|
"claimed_badge": "Already Claimed",
|
|
"error_lookup": "Failed to lookup. Please try again."
|
|
},
|
|
"signup": {
|
|
"step_plan": "Select Plan",
|
|
"step_shop": "Claim Shop",
|
|
"step_account": "Account",
|
|
"step_payment": "Payment",
|
|
"choose_plan": "Choose Your Plan",
|
|
"save_percent": "Save {percent}%",
|
|
"trial_info": "We'll collect your payment info, but you won't be charged until the trial ends.",
|
|
"connect_shop": "Connect Your Letzshop Shop",
|
|
"connect_optional": "Optional: Link your Letzshop account to sync orders automatically.",
|
|
"connect_continue": "Connect & Continue",
|
|
"skip_step": "Skip This Step",
|
|
"create_account": "Create Your Account",
|
|
"first_name": "First Name",
|
|
"last_name": "Last Name",
|
|
"merchant_name": "Merchant Name",
|
|
"email": "Email",
|
|
"password": "Password",
|
|
"password_hint": "Minimum 8 characters",
|
|
"continue": "Continue",
|
|
"continue_payment": "Continue to Payment",
|
|
"back": "Back",
|
|
"add_payment": "Add Payment Method",
|
|
"no_charge_note": "You won't be charged until your {trial_days}-day trial ends.",
|
|
"processing": "Processing...",
|
|
"start_trial": "Start Free Trial",
|
|
"creating_account": "Creating your account...",
|
|
"page_title": "Start Your Free Trial",
|
|
"required_fields": "Required fields",
|
|
"trial_info_days": "day free trial.",
|
|
"error_start": "Failed to start signup. Please try again.",
|
|
"error_account": "Failed to create account. Please try again.",
|
|
"error_payment_config": "Payment not configured. Please contact support.",
|
|
"error_payment": "Payment failed. Please try again.",
|
|
"orders_per_month": "orders/mo",
|
|
"unlimited": "Unlimited",
|
|
"team_members": "users",
|
|
"per_month_short": "/mo"
|
|
},
|
|
"success": {
|
|
"title": "Welcome to Orion!",
|
|
"subtitle": "Your account has been created and your {trial_days}-day free trial has started.",
|
|
"what_next": "What's Next?",
|
|
"step_connect": "Connect Letzshop:",
|
|
"step_connect_desc": "Add your API key to start syncing orders automatically.",
|
|
"step_invoicing": "Set Up Invoicing:",
|
|
"step_invoicing_desc": "Configure your invoice settings for Luxembourg compliance.",
|
|
"step_products": "Import Products:",
|
|
"step_products_desc": "Sync your product catalog from Letzshop.",
|
|
"go_to_dashboard": "Go to Dashboard",
|
|
"login_dashboard": "Login to Dashboard",
|
|
"need_help": "Need help getting started?",
|
|
"contact_support": "Contact our support team"
|
|
},
|
|
"cta": {
|
|
"title": "Ready to Streamline Your Orders?",
|
|
"subtitle": "Join Letzshop stores who trust Orion for their order management. Start your {trial_days}-day free trial today.",
|
|
"button": "Start Free Trial"
|
|
},
|
|
"content_page": {
|
|
"home": "Home",
|
|
"published": "Published",
|
|
"last_updated": "Last updated:",
|
|
"cta_about_title": "Ready to Get Started?",
|
|
"cta_contact_title": "Have Questions?",
|
|
"cta_about_subtitle": "Join thousands of stores already selling on our platform",
|
|
"cta_contact_subtitle": "Our team is here to help you succeed",
|
|
"cta_about_button": "Contact Sales",
|
|
"cta_contact_button": "Send Us a Message"
|
|
},
|
|
"footer": {
|
|
"tagline": "Lightweight OMS for Letzshop sellers. Manage orders, inventory, and invoicing.",
|
|
"quick_links": "Quick Links",
|
|
"platform": "Platform",
|
|
"contact": "Contact",
|
|
"copyright": "© {year} Orion. Built for Luxembourg e-commerce.",
|
|
"privacy": "Privacy Policy",
|
|
"terms": "Terms of Service",
|
|
"about": "About Us",
|
|
"faq": "FAQ",
|
|
"contact_us": "Contact Us",
|
|
"all_rights_reserved": "All rights reserved."
|
|
},
|
|
"modern": {
|
|
"badge_integration": "Official Integration",
|
|
"badge_connect": "Connect in 2 minutes",
|
|
"hero_title_1": "Built for Luxembourg E-Commerce",
|
|
"hero_title_2": "The Back-Office Letzshop Doesn't Give You",
|
|
"hero_subtitle": "Sync orders, manage inventory, generate invoices with correct VAT, and own your customer data. All in one place.",
|
|
"cta_trial": "Start {trial_days}-Day Free Trial",
|
|
"cta_how": "See How It Works",
|
|
"hero_note": "No credit card required. Setup in 5 minutes. Cancel anytime.",
|
|
"pain_title": "Sound Familiar?",
|
|
"pain_subtitle": "These are the daily frustrations of Letzshop sellers",
|
|
"pain_manual": "Manual Order Entry",
|
|
"pain_manual_desc": "Copy-pasting orders from Letzshop to spreadsheets. Every. Single. Day.",
|
|
"pain_inventory": "Inventory Chaos",
|
|
"pain_inventory_desc": "Stock in Letzshop doesn't match reality. Overselling happens.",
|
|
"pain_vat": "Wrong VAT Invoices",
|
|
"pain_vat_desc": "EU customers need correct VAT. Your accountant keeps complaining.",
|
|
"pain_customers": "Lost Customers",
|
|
"pain_customers_desc": "Letzshop owns your customer data. You can't retarget or build loyalty.",
|
|
"how_title": "How It Works",
|
|
"how_subtitle": "From Chaos to Control in 4 Steps",
|
|
"how_step1": "Connect Letzshop",
|
|
"how_step1_desc": "Enter your Letzshop API credentials. Done in 2 minutes, no technical skills needed.",
|
|
"how_step2": "Orders Flow In",
|
|
"how_step2_desc": "Orders sync automatically. Confirm and add tracking directly from Orion.",
|
|
"how_step3": "Generate Invoices",
|
|
"how_step3_desc": "One click to create compliant PDF invoices with correct VAT for any EU country.",
|
|
"how_step4": "Grow Your Business",
|
|
"how_step4_desc": "Export customers for marketing. Track inventory. Focus on selling, not spreadsheets.",
|
|
"features_title": "Everything a Letzshop Seller Needs",
|
|
"features_subtitle": "The operational tools Letzshop doesn't provide",
|
|
"cta_final_title": "Ready to Take Control of Your Letzshop Business?",
|
|
"cta_final_subtitle": "Join Luxembourg stores who've stopped fighting spreadsheets and started growing their business.",
|
|
"cta_final_note": "No credit card required. Setup in 5 minutes. Full Professional features during trial.",
|
|
"page_title": "Orion - The Back-Office for Letzshop Sellers",
|
|
"features_badge": "Features",
|
|
"dashboard_title": "Orion Dashboard",
|
|
"todays_orders": "Today's Orders",
|
|
"revenue": "Revenue",
|
|
"low_stock": "Low Stock",
|
|
"items_need_restock": "items need restock",
|
|
"recent_orders": "Recent Orders from Letzshop",
|
|
"confirmed": "Confirmed",
|
|
"shipped": "Shipped",
|
|
"feat_order_sync": "Automatic Order Sync",
|
|
"feat_order_sync_desc": "Orders from Letzshop appear instantly. Confirm orders and sync tracking numbers back automatically.",
|
|
"feat_order_sync_1": "Real-time sync",
|
|
"feat_order_sync_2": "One-click confirmation",
|
|
"feat_order_sync_3": "Tracking number sync",
|
|
"feat_inventory": "Real Inventory Management",
|
|
"feat_inventory_desc": "One source of truth for all stock. Locations, reservations, and incoming stock tracking.",
|
|
"feat_inventory_1": "Product locations (bins)",
|
|
"feat_inventory_2": "Stock reservations",
|
|
"feat_inventory_3": "Low stock alerts",
|
|
"feat_invoicing": "Smart VAT Invoicing",
|
|
"feat_invoicing_desc": "Generate PDF invoices with correct VAT rates. Luxembourg, EU countries, B2B reverse charge.",
|
|
"feat_invoicing_1": "Luxembourg 17% VAT",
|
|
"feat_invoicing_2": "EU destination VAT (OSS)",
|
|
"feat_invoicing_3": "B2B reverse charge",
|
|
"feat_customers": "Own Your Customers",
|
|
"feat_customers_desc": "All customer data in your database. Export to Mailchimp for marketing campaigns.",
|
|
"feat_customers_1": "Order history per customer",
|
|
"feat_customers_2": "Lifetime value tracking",
|
|
"feat_customers_3": "CSV export for marketing",
|
|
"feat_team": "Team Management",
|
|
"feat_team_desc": "Invite team members with role-based permissions. Everyone works from one dashboard.",
|
|
"feat_team_1": "Multiple users",
|
|
"feat_team_2": "Role-based access",
|
|
"feat_team_3": "Activity logging",
|
|
"feat_purchase_orders": "Purchase Orders",
|
|
"feat_purchase_orders_desc": "Track incoming stock from suppliers. Know what's on order and when it arrives.",
|
|
"feat_purchase_orders_1": "Track supplier orders",
|
|
"feat_purchase_orders_2": "Expected arrival dates",
|
|
"feat_purchase_orders_3": "Receive and update stock",
|
|
"pricing_badge": "Pricing",
|
|
"pricing_title": "Simple, Transparent Pricing",
|
|
"pricing_subtitle": "No per-order fees. No hidden costs. Flat monthly rate.",
|
|
"pricing_per_month": "/month",
|
|
"pricing_trial_note": "All plans include a 14-day free trial. No credit card required.",
|
|
"tier_essential": "Essential",
|
|
"tier_essential_desc": "For solo stores getting started",
|
|
"tier_essential_price": "EUR 49",
|
|
"tier_essential_feat_1": "100 orders/month",
|
|
"tier_essential_feat_2": "200 products",
|
|
"tier_essential_feat_3": "Luxembourg VAT invoices",
|
|
"tier_essential_feat_4": "1 team member",
|
|
"tier_essential_cta": "Start Free Trial",
|
|
"tier_professional": "Professional",
|
|
"tier_professional_desc": "For growing multi-channel sellers",
|
|
"tier_professional_price": "EUR 99",
|
|
"tier_professional_badge": "MOST POPULAR",
|
|
"tier_professional_feat_1": "500 orders/month",
|
|
"tier_professional_feat_2": "Unlimited products",
|
|
"tier_professional_feat_3": "EU VAT invoices",
|
|
"tier_professional_feat_4": "Product locations",
|
|
"tier_professional_feat_5": "Purchase orders",
|
|
"tier_professional_feat_6": "Customer export",
|
|
"tier_professional_feat_7": "3 team members",
|
|
"tier_professional_cta": "Start Free Trial",
|
|
"tier_business": "Business",
|
|
"tier_business_desc": "For high-volume operations",
|
|
"tier_business_price": "EUR 199",
|
|
"tier_business_feat_1": "2,000 orders/month",
|
|
"tier_business_feat_2": "Everything in Professional",
|
|
"tier_business_feat_3": "Analytics dashboard",
|
|
"tier_business_feat_4": "API access",
|
|
"tier_business_feat_5": "Accounting export",
|
|
"tier_business_feat_6": "10 team members",
|
|
"tier_business_cta": "Start Free Trial",
|
|
"tier_enterprise": "Enterprise",
|
|
"tier_enterprise_desc": "For large operations & agencies",
|
|
"tier_enterprise_price": "EUR 399+",
|
|
"tier_enterprise_feat_1": "Unlimited orders",
|
|
"tier_enterprise_feat_2": "Everything in Business",
|
|
"tier_enterprise_feat_3": "White-label option",
|
|
"tier_enterprise_feat_4": "Custom integrations",
|
|
"tier_enterprise_feat_5": "99.9% SLA",
|
|
"tier_enterprise_feat_6": "Dedicated support",
|
|
"tier_enterprise_cta": "Contact Sales",
|
|
"testimonial_badge": "Built for Luxembourg",
|
|
"testimonial_quote": "Finally, a tool that understands what Letzshop sellers actually need. No more spreadsheets, no more VAT headaches.",
|
|
"testimonial_name": "Marie L.",
|
|
"testimonial_location": "Letzshop Store, Luxembourg City",
|
|
"cta_final_trial": "Start Your 14-Day Free Trial"
|
|
},
|
|
"minimal": {
|
|
"page_title_fallback": "Home",
|
|
"marketplace_suffix": "Marketplace",
|
|
"fallback_title_1": "Multi-Store",
|
|
"fallback_title_2": "Marketplace",
|
|
"fallback_subtitle": "The simplest way to launch your online store and connect with customers worldwide.",
|
|
"get_started": "Get Started",
|
|
"feat_fast": "Fast",
|
|
"feat_fast_desc": "Lightning-fast performance optimized for conversions",
|
|
"feat_secure": "Secure",
|
|
"feat_secure_desc": "Enterprise-grade security for your peace of mind",
|
|
"feat_custom": "Custom",
|
|
"feat_custom_desc": "Fully customizable to match your brand identity",
|
|
"cta_title": "Ready to launch?",
|
|
"cta_subtitle": "Join our marketplace today",
|
|
"cta_contact": "Contact Us",
|
|
"cta_learn_more": "Learn More"
|
|
}
|
|
},
|
|
"permissions": {
|
|
"view_pages": "View Pages",
|
|
"view_pages_desc": "View content pages",
|
|
"manage_pages": "Manage Pages",
|
|
"manage_pages_desc": "Create, edit, and delete content pages",
|
|
"view_media": "View Media",
|
|
"view_media_desc": "Browse the media library",
|
|
"manage_media": "Manage Media",
|
|
"manage_media_desc": "Upload, edit, and delete media files",
|
|
"manage_themes": "Manage Themes",
|
|
"manage_themes_desc": "Configure and customize store themes"
|
|
},
|
|
"messages": {
|
|
"failed_to_delete_page": "Failed to delete page: {error}",
|
|
"media_updated_successfully": "Media updated successfully",
|
|
"media_deleted_successfully": "Media deleted successfully",
|
|
"url_copied_to_clipboard": "URL copied to clipboard",
|
|
"failed_to_copy_url": "Failed to copy URL"
|
|
},
|
|
"confirmations": {
|
|
"delete_file": "Are you sure you want to delete this file? This cannot be undone."
|
|
},
|
|
"features": {
|
|
"cms_pages_limit": {
|
|
"name": "CMS Pages",
|
|
"description": "Maximum number of content pages",
|
|
"unit": "pages"
|
|
},
|
|
"cms_custom_pages_limit": {
|
|
"name": "Custom Pages",
|
|
"description": "Maximum number of custom-designed pages",
|
|
"unit": "pages"
|
|
},
|
|
"cms_basic": {
|
|
"name": "Basic CMS",
|
|
"description": "Basic content management features"
|
|
},
|
|
"cms_seo": {
|
|
"name": "SEO Tools",
|
|
"description": "Search engine optimization tools"
|
|
},
|
|
"cms_scheduling": {
|
|
"name": "Content Scheduling",
|
|
"description": "Schedule content for future publication"
|
|
},
|
|
"cms_templates": {
|
|
"name": "Page Templates",
|
|
"description": "Access to premium page templates"
|
|
}
|
|
},
|
|
"menu": {
|
|
"content_management": "Content Management",
|
|
"shop_content": "Shop Content",
|
|
"content_pages": "Content Pages",
|
|
"store_themes": "Store Themes",
|
|
"media_library": "Media Library"
|
|
},
|
|
"storefront": {
|
|
"my_account": "My Account",
|
|
"learn_more": "Learn More",
|
|
"explore": "Explore",
|
|
"quick_links": "Quick Links",
|
|
"information": "Information",
|
|
"about": "About Us",
|
|
"contact": "Contact",
|
|
"faq": "FAQ"
|
|
}
|
|
}
|