- Add database fields for language preferences: - Vendor: dashboard_language, storefront_language, storefront_languages - User: preferred_language - Customer: preferred_language - Add language middleware for request-level language detection: - Cookie-based persistence - Browser Accept-Language fallback - Vendor storefront language constraints - Add language API endpoints (/api/v1/language/*): - POST /set - Set language preference - GET /current - Get current language info - GET /list - List available languages - DELETE /clear - Clear preference - Add i18n utilities (app/utils/i18n.py): - JSON-based translation loading - Jinja2 template integration - Language resolution helpers - Add reusable language selector macros for templates - Add languageSelector() Alpine.js component - Add translation files (en, fr, de, lb) in static/locales/ - Add architecture rules documentation for language implementation - Update marketplace-product-detail.js to use native language names 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
476 lines
14 KiB
JSON
476 lines
14 KiB
JSON
{
|
|
"common": {
|
|
"save": "Save",
|
|
"cancel": "Cancel",
|
|
"delete": "Delete",
|
|
"edit": "Edit",
|
|
"create": "Create",
|
|
"update": "Update",
|
|
"add": "Add",
|
|
"remove": "Remove",
|
|
"close": "Close",
|
|
"back": "Back",
|
|
"next": "Next",
|
|
"previous": "Previous",
|
|
"submit": "Submit",
|
|
"confirm": "Confirm",
|
|
"yes": "Yes",
|
|
"no": "No",
|
|
"ok": "OK",
|
|
"done": "Done",
|
|
"loading": "Loading...",
|
|
"saving": "Saving...",
|
|
"processing": "Processing...",
|
|
"searching": "Searching...",
|
|
"refresh": "Refresh",
|
|
"retry": "Retry",
|
|
"view": "View",
|
|
"view_details": "View Details",
|
|
"view_all": "View All",
|
|
"show_more": "Show More",
|
|
"show_less": "Show Less",
|
|
"search": "Search",
|
|
"filter": "Filter",
|
|
"sort": "Sort",
|
|
"export": "Export",
|
|
"import": "Import",
|
|
"download": "Download",
|
|
"upload": "Upload",
|
|
"select": "Select",
|
|
"select_all": "Select All",
|
|
"deselect_all": "Deselect All",
|
|
"actions": "Actions",
|
|
"status": "Status",
|
|
"date": "Date",
|
|
"time": "Time",
|
|
"name": "Name",
|
|
"email": "Email",
|
|
"phone": "Phone",
|
|
"address": "Address",
|
|
"description": "Description",
|
|
"notes": "Notes",
|
|
"total": "Total",
|
|
"amount": "Amount",
|
|
"quantity": "Quantity",
|
|
"price": "Price",
|
|
"items": "Items",
|
|
"id": "ID",
|
|
"type": "Type",
|
|
"category": "Category",
|
|
"tags": "Tags",
|
|
"active": "Active",
|
|
"inactive": "Inactive",
|
|
"enabled": "Enabled",
|
|
"disabled": "Disabled",
|
|
"pending": "Pending",
|
|
"completed": "Completed",
|
|
"failed": "Failed",
|
|
"success": "Success",
|
|
"error": "Error",
|
|
"warning": "Warning",
|
|
"info": "Info",
|
|
"all": "All",
|
|
"none": "None",
|
|
"other": "Other",
|
|
"unknown": "Unknown",
|
|
"not_available": "N/A",
|
|
"required": "Required",
|
|
"optional": "Optional",
|
|
"language": "Language",
|
|
"settings": "Settings",
|
|
"help": "Help",
|
|
"support": "Support",
|
|
"contact": "Contact",
|
|
"about": "About",
|
|
"privacy": "Privacy",
|
|
"terms": "Terms",
|
|
"copyright": "Copyright"
|
|
},
|
|
"auth": {
|
|
"sign_in": "Sign In",
|
|
"sign_out": "Sign Out",
|
|
"sign_up": "Sign Up",
|
|
"login": "Login",
|
|
"logout": "Logout",
|
|
"register": "Register",
|
|
"forgot_password": "Forgot Password?",
|
|
"reset_password": "Reset Password",
|
|
"change_password": "Change Password",
|
|
"username": "Username",
|
|
"password": "Password",
|
|
"confirm_password": "Confirm Password",
|
|
"current_password": "Current Password",
|
|
"new_password": "New Password",
|
|
"remember_me": "Remember Me",
|
|
"email_placeholder": "Enter your email",
|
|
"username_placeholder": "Enter your username",
|
|
"password_placeholder": "Enter your password",
|
|
"login_success": "Login successful",
|
|
"login_failed": "Login failed",
|
|
"logout_success": "You have been logged out",
|
|
"invalid_credentials": "Invalid username or password",
|
|
"session_expired": "Your session has expired. Please login again.",
|
|
"account_locked": "Your account has been locked",
|
|
"account_inactive": "Your account is inactive"
|
|
},
|
|
"nav": {
|
|
"dashboard": "Dashboard",
|
|
"products": "Products",
|
|
"orders": "Orders",
|
|
"customers": "Customers",
|
|
"inventory": "Inventory",
|
|
"analytics": "Analytics",
|
|
"reports": "Reports",
|
|
"settings": "Settings",
|
|
"profile": "Profile",
|
|
"team": "Team",
|
|
"marketplace": "Marketplace",
|
|
"integrations": "Integrations",
|
|
"notifications": "Notifications",
|
|
"help": "Help",
|
|
"home": "Home",
|
|
"shop": "Shop",
|
|
"cart": "Cart",
|
|
"checkout": "Checkout",
|
|
"account": "Account",
|
|
"wishlist": "Wishlist"
|
|
},
|
|
"dashboard": {
|
|
"title": "Dashboard",
|
|
"welcome": "Welcome back",
|
|
"overview": "Overview",
|
|
"quick_stats": "Quick Stats",
|
|
"recent_activity": "Recent Activity",
|
|
"total_products": "Total Products",
|
|
"total_orders": "Total Orders",
|
|
"total_customers": "Total Customers",
|
|
"total_revenue": "Total Revenue",
|
|
"active_products": "Active Products",
|
|
"pending_orders": "Pending Orders",
|
|
"new_customers": "New Customers",
|
|
"today": "Today",
|
|
"this_week": "This Week",
|
|
"this_month": "This Month",
|
|
"this_year": "This Year",
|
|
"error_loading": "Error loading dashboard",
|
|
"no_data": "No data available"
|
|
},
|
|
"products": {
|
|
"title": "Products",
|
|
"product": "Product",
|
|
"add_product": "Add Product",
|
|
"edit_product": "Edit Product",
|
|
"delete_product": "Delete Product",
|
|
"product_name": "Product Name",
|
|
"product_code": "Product Code",
|
|
"sku": "SKU",
|
|
"price": "Price",
|
|
"sale_price": "Sale Price",
|
|
"cost": "Cost",
|
|
"stock": "Stock",
|
|
"in_stock": "In Stock",
|
|
"out_of_stock": "Out of Stock",
|
|
"low_stock": "Low Stock",
|
|
"availability": "Availability",
|
|
"available": "Available",
|
|
"unavailable": "Unavailable",
|
|
"brand": "Brand",
|
|
"category": "Category",
|
|
"categories": "Categories",
|
|
"image": "Image",
|
|
"images": "Images",
|
|
"main_image": "Main Image",
|
|
"gallery": "Gallery",
|
|
"weight": "Weight",
|
|
"dimensions": "Dimensions",
|
|
"color": "Color",
|
|
"size": "Size",
|
|
"material": "Material",
|
|
"condition": "Condition",
|
|
"new": "New",
|
|
"used": "Used",
|
|
"refurbished": "Refurbished",
|
|
"no_products": "No products found",
|
|
"search_products": "Search products...",
|
|
"filter_by_category": "Filter by category",
|
|
"filter_by_status": "Filter by status",
|
|
"sort_by": "Sort by",
|
|
"sort_newest": "Newest",
|
|
"sort_oldest": "Oldest",
|
|
"sort_price_low": "Price: Low to High",
|
|
"sort_price_high": "Price: High to Low",
|
|
"sort_name_az": "Name: A-Z",
|
|
"sort_name_za": "Name: Z-A"
|
|
},
|
|
"orders": {
|
|
"title": "Orders",
|
|
"order": "Order",
|
|
"order_id": "Order ID",
|
|
"order_number": "Order Number",
|
|
"order_date": "Order Date",
|
|
"order_status": "Order Status",
|
|
"order_details": "Order Details",
|
|
"order_items": "Order Items",
|
|
"order_total": "Order Total",
|
|
"subtotal": "Subtotal",
|
|
"shipping": "Shipping",
|
|
"tax": "Tax",
|
|
"discount": "Discount",
|
|
"customer": "Customer",
|
|
"shipping_address": "Shipping Address",
|
|
"billing_address": "Billing Address",
|
|
"payment_method": "Payment Method",
|
|
"payment_status": "Payment Status",
|
|
"tracking": "Tracking",
|
|
"tracking_number": "Tracking Number",
|
|
"carrier": "Carrier",
|
|
"no_orders": "No orders found",
|
|
"search_orders": "Search orders...",
|
|
"filter_by_status": "Filter by status",
|
|
"status_pending": "Pending",
|
|
"status_processing": "Processing",
|
|
"status_shipped": "Shipped",
|
|
"status_delivered": "Delivered",
|
|
"status_cancelled": "Cancelled",
|
|
"status_refunded": "Refunded",
|
|
"status_confirmed": "Confirmed",
|
|
"status_rejected": "Rejected",
|
|
"confirm_order": "Confirm Order",
|
|
"reject_order": "Reject Order",
|
|
"set_tracking": "Set Tracking",
|
|
"view_details": "View Details"
|
|
},
|
|
"customers": {
|
|
"title": "Customers",
|
|
"customer": "Customer",
|
|
"add_customer": "Add Customer",
|
|
"edit_customer": "Edit Customer",
|
|
"customer_name": "Customer Name",
|
|
"customer_email": "Customer Email",
|
|
"customer_phone": "Customer Phone",
|
|
"customer_number": "Customer Number",
|
|
"first_name": "First Name",
|
|
"last_name": "Last Name",
|
|
"company": "Company",
|
|
"total_orders": "Total Orders",
|
|
"total_spent": "Total Spent",
|
|
"last_order": "Last Order",
|
|
"registered": "Registered",
|
|
"no_customers": "No customers found",
|
|
"search_customers": "Search customers..."
|
|
},
|
|
"inventory": {
|
|
"title": "Inventory",
|
|
"stock_level": "Stock Level",
|
|
"quantity": "Quantity",
|
|
"reorder_point": "Reorder Point",
|
|
"adjust_stock": "Adjust Stock",
|
|
"stock_in": "Stock In",
|
|
"stock_out": "Stock Out",
|
|
"transfer": "Transfer",
|
|
"history": "History",
|
|
"low_stock_alert": "Low Stock Alert",
|
|
"out_of_stock_alert": "Out of Stock Alert"
|
|
},
|
|
"marketplace": {
|
|
"title": "Marketplace",
|
|
"import": "Import",
|
|
"export": "Export",
|
|
"sync": "Sync",
|
|
"source": "Source",
|
|
"source_url": "Source URL",
|
|
"import_products": "Import Products",
|
|
"start_import": "Start Import",
|
|
"importing": "Importing...",
|
|
"import_complete": "Import Complete",
|
|
"import_failed": "Import Failed",
|
|
"import_history": "Import History",
|
|
"job_id": "Job ID",
|
|
"started_at": "Started At",
|
|
"completed_at": "Completed At",
|
|
"duration": "Duration",
|
|
"imported_count": "Imported",
|
|
"error_count": "Errors",
|
|
"total_processed": "Total Processed",
|
|
"progress": "Progress",
|
|
"no_import_jobs": "No import jobs yet",
|
|
"start_first_import": "Start your first import using the form above"
|
|
},
|
|
"letzshop": {
|
|
"title": "Letzshop Integration",
|
|
"connection": "Connection",
|
|
"credentials": "Credentials",
|
|
"api_key": "API Key",
|
|
"api_endpoint": "API Endpoint",
|
|
"auto_sync": "Auto Sync",
|
|
"sync_interval": "Sync Interval",
|
|
"every_hour": "Every hour",
|
|
"every_day": "Every day",
|
|
"test_connection": "Test Connection",
|
|
"save_credentials": "Save Credentials",
|
|
"connection_success": "Connection successful",
|
|
"connection_failed": "Connection failed",
|
|
"last_sync": "Last Sync",
|
|
"sync_status": "Sync Status",
|
|
"import_orders": "Import Orders",
|
|
"export_products": "Export Products",
|
|
"no_credentials": "Configure your API key in Settings to get started",
|
|
"carriers": {
|
|
"dhl": "DHL",
|
|
"ups": "UPS",
|
|
"fedex": "FedEx",
|
|
"dpd": "DPD",
|
|
"gls": "GLS",
|
|
"post_luxembourg": "Post Luxembourg",
|
|
"other": "Other"
|
|
}
|
|
},
|
|
"team": {
|
|
"title": "Team",
|
|
"members": "Members",
|
|
"add_member": "Add Member",
|
|
"invite_member": "Invite Member",
|
|
"remove_member": "Remove Member",
|
|
"role": "Role",
|
|
"owner": "Owner",
|
|
"manager": "Manager",
|
|
"editor": "Editor",
|
|
"viewer": "Viewer",
|
|
"permissions": "Permissions",
|
|
"pending_invitations": "Pending Invitations",
|
|
"invitation_sent": "Invitation Sent",
|
|
"invitation_accepted": "Invitation Accepted"
|
|
},
|
|
"settings": {
|
|
"title": "Settings",
|
|
"general": "General",
|
|
"store": "Store",
|
|
"store_name": "Store Name",
|
|
"store_description": "Store Description",
|
|
"contact_email": "Contact Email",
|
|
"contact_phone": "Contact Phone",
|
|
"business_address": "Business Address",
|
|
"tax_number": "Tax Number",
|
|
"currency": "Currency",
|
|
"timezone": "Timezone",
|
|
"language": "Language",
|
|
"language_settings": "Language Settings",
|
|
"default_language": "Default Language",
|
|
"dashboard_language": "Dashboard Language",
|
|
"storefront_language": "Storefront Language",
|
|
"enabled_languages": "Enabled Languages",
|
|
"notifications": "Notifications",
|
|
"email_notifications": "Email Notifications",
|
|
"integrations": "Integrations",
|
|
"api_keys": "API Keys",
|
|
"webhooks": "Webhooks",
|
|
"save_settings": "Save Settings",
|
|
"settings_saved": "Settings saved successfully"
|
|
},
|
|
"profile": {
|
|
"title": "Profile",
|
|
"my_profile": "My Profile",
|
|
"edit_profile": "Edit Profile",
|
|
"personal_info": "Personal Information",
|
|
"first_name": "First Name",
|
|
"last_name": "Last Name",
|
|
"email": "Email",
|
|
"phone": "Phone",
|
|
"avatar": "Avatar",
|
|
"change_avatar": "Change Avatar",
|
|
"security": "Security",
|
|
"two_factor": "Two-Factor Authentication",
|
|
"sessions": "Active Sessions",
|
|
"preferences": "Preferences",
|
|
"language_preference": "Language Preference",
|
|
"save_profile": "Save Profile",
|
|
"profile_updated": "Profile updated successfully"
|
|
},
|
|
"errors": {
|
|
"generic": "An error occurred",
|
|
"not_found": "Not Found",
|
|
"unauthorized": "Unauthorized",
|
|
"forbidden": "Forbidden",
|
|
"bad_request": "Bad Request",
|
|
"server_error": "Server Error",
|
|
"network_error": "Network Error",
|
|
"timeout": "Request Timeout",
|
|
"validation_error": "Validation Error",
|
|
"field_required": "This field is required",
|
|
"invalid_email": "Invalid email address",
|
|
"invalid_phone": "Invalid phone number",
|
|
"password_mismatch": "Passwords do not match",
|
|
"password_too_short": "Password is too short",
|
|
"try_again": "Please try again",
|
|
"contact_support": "Please contact support if the problem persists"
|
|
},
|
|
"confirmations": {
|
|
"delete_title": "Confirm Delete",
|
|
"delete_message": "Are you sure you want to delete this item?",
|
|
"delete_warning": "This action cannot be undone.",
|
|
"cancel_title": "Confirm Cancel",
|
|
"cancel_message": "Are you sure you want to cancel?",
|
|
"unsaved_changes": "You have unsaved changes. Are you sure you want to leave?",
|
|
"logout_title": "Confirm Logout",
|
|
"logout_message": "Are you sure you want to log out?"
|
|
},
|
|
"notifications": {
|
|
"title": "Notifications",
|
|
"mark_read": "Mark as Read",
|
|
"mark_all_read": "Mark All as Read",
|
|
"no_notifications": "No notifications",
|
|
"new_order": "New Order",
|
|
"order_updated": "Order Updated",
|
|
"low_stock": "Low Stock Alert",
|
|
"import_complete": "Import Complete",
|
|
"import_failed": "Import Failed"
|
|
},
|
|
"shop": {
|
|
"welcome": "Welcome to our store",
|
|
"browse_products": "Browse Products",
|
|
"add_to_cart": "Add to Cart",
|
|
"buy_now": "Buy Now",
|
|
"view_cart": "View Cart",
|
|
"checkout": "Checkout",
|
|
"continue_shopping": "Continue Shopping",
|
|
"start_shopping": "Start Shopping",
|
|
"empty_cart": "Your cart is empty",
|
|
"cart_total": "Cart Total",
|
|
"proceed_checkout": "Proceed to Checkout",
|
|
"payment": "Payment",
|
|
"place_order": "Place Order",
|
|
"order_placed": "Order Placed Successfully",
|
|
"thank_you": "Thank you for your order",
|
|
"order_confirmation": "Order Confirmation"
|
|
},
|
|
"footer": {
|
|
"all_rights_reserved": "All rights reserved",
|
|
"powered_by": "Powered by"
|
|
},
|
|
"time": {
|
|
"now": "Now",
|
|
"today": "Today",
|
|
"yesterday": "Yesterday",
|
|
"tomorrow": "Tomorrow",
|
|
"this_week": "This Week",
|
|
"last_week": "Last Week",
|
|
"this_month": "This Month",
|
|
"last_month": "Last Month",
|
|
"this_year": "This Year",
|
|
"ago": "ago",
|
|
"seconds": "seconds",
|
|
"minutes": "minutes",
|
|
"hours": "hours",
|
|
"days": "days",
|
|
"weeks": "weeks",
|
|
"months": "months",
|
|
"years": "years"
|
|
},
|
|
"formats": {
|
|
"date": "MM/DD/YYYY",
|
|
"time": "HH:mm",
|
|
"datetime": "MM/DD/YYYY HH:mm",
|
|
"currency": "{symbol}{amount}"
|
|
}
|
|
}
|