Files
orion/static/locales/en.json
Samir Boulahtit d2b05441fc feat: add multi-language (i18n) support for vendor dashboard and storefront
- 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>
2025-12-13 22:36:09 +01:00

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}"
}
}