import type { DashboardLocale } from '@meshkee/dashboard-core'

const en = {
  'app.dashboardName': 'Customer Dashboard',
  'app.role.customer': 'Website user',
  'app.storeFallback': 'Store',
  'app.poweredBy': 'powered by Meshkee.app',

  'nav.home': 'Home',
  'nav.cart': 'Shopping Cart',
  'nav.profile': 'My Profile',
  'nav.addresses': 'My Addresses',
  'nav.orders': 'My Orders',
  'nav.favorites': 'My Favorites',
  'nav.myProducts': 'My Products',
  'nav.help': 'Help Center',
  'nav.logout': 'Logout',

  'header.toggleMenu': 'Toggle menu',
  'header.messages': 'Messages',
  'header.notifications': 'Notifications',
  'header.changePassword': 'Change password',
  'header.myProfile': 'My Profile',

  'home.welcome': 'Welcome, dear {name}.',
  'home.welcomeFallback': 'there',
  'home.subtitle': 'Manage your profile, addresses, orders, and favorites in one place.',
  'home.card.profile.title': 'My Profile',
  'home.card.profile.desc': 'View and update your personal information and contact details.',
  'home.card.profile.link': 'View profile',
  'home.card.addresses.title': 'My Addresses',
  'home.card.addresses.desc': 'Manage your shipping addresses for checkout and deliveries.',
  'home.card.addresses.link': 'View addresses',
  'home.card.addresses.count': 'addresses',
  'home.card.orders.title': 'My Orders',
  'home.card.orders.desc': 'Track your orders, view order history and order details.',
  'home.card.orders.link': 'View orders',
  'home.card.orders.count': 'orders',
  'home.card.favorites.title': 'My Favorites',
  'home.card.favorites.desc': 'Browse and manage your saved favorite products.',
  'home.card.favorites.link': 'View favorites',
  'home.card.favorites.count': 'favorites',
  'home.card.myProducts.title': 'My Products',
  'home.card.myProducts.desc': 'List and manage products you have submitted.',
  'home.card.myProducts.link': 'View my products',
  'home.card.myProducts.count': 'products',

  'profile.title': 'My Profile',
  'profile.subtitle': 'Update your personal information and contact details.',
  'profile.section.account': 'Account',
  'profile.section.about': 'About',
  'profile.section.social': 'Social',
  'profile.mobile': 'Mobile number',
  'profile.email': 'Email',
  'profile.firstName': 'First name (FA)',
  'profile.lastName': 'Last name (FA)',
  'profile.firstNameEn': 'First name (EN)',
  'profile.lastNameEn': 'Last name (EN)',
  'profile.landline': 'Landline',
  'profile.backupPhone': 'Backup phone number',
  'profile.about': 'About',
  'profile.instagram': 'Instagram',
  'profile.telegram': 'Telegram',
  'profile.linkedin': 'LinkedIn',
  'profile.emailPlaceholder': 'you@example.com',
  'profile.save': 'Save changes',
  'profile.saving': 'Saving...',
  'profile.toast.success': 'Profile updated successfully.',
  'profile.error.update': 'Unable to update profile. Please try again.',

  'addresses.title': 'My Addresses',
  'addresses.subtitle': 'Manage your shipping addresses for orders at this store.',
  'addresses.save': 'Save addresses',
  'addresses.saveOne': 'Save address',
  'addresses.saving': 'Saving...',
  'addresses.cancel': 'Cancel',
  'addresses.editorTitle': 'Saved addresses',
  'addresses.add': 'Add address',
  'addresses.edit': 'Edit address',
  'addresses.empty': 'No addresses yet.',
  'addresses.loading': 'Loading addresses...',
  'addresses.label': 'Address name',
  'addresses.labelPlaceholder': 'e.g. Home, Office',
  'addresses.optional': '(optional)',
  'addresses.province': 'Province',
  'addresses.city': 'City',
  'addresses.address': 'Address',
  'addresses.postalCode': 'Postal code',
  'addresses.landline': 'Landline',
  'addresses.selectProvince': 'Select province',
  'addresses.selectCity': 'Select city',
  'addresses.streetPlaceholder': 'Street, plaque, unit',
  'addresses.postalPlaceholder': 'Postal code',
  'addresses.landlinePlaceholder': 'Landline',
  'addresses.remove': 'Remove address',
  'addresses.modal.addTitle': 'Add address',
  'addresses.modal.editTitle': 'Edit address',
  'addresses.modal.subtitle': 'Enter the shipping address details.',
  'addresses.toast.removed': 'Address removed.',
  'addresses.toast.saved': 'Addresses saved.',
  'addresses.toast.created': 'Address saved.',
  'addresses.toast.updated': 'Address updated.',
  'addresses.error.load': 'Unable to load addresses.',
  'addresses.error.remove': 'Unable to remove address.',
  'addresses.error.incomplete': 'Add at least one complete address.',
  'addresses.error.incompleteForm': 'Please fill in all required fields.',
  'addresses.error.save': 'Unable to save address. Please try again.',
  'addresses.error.loadLocations': 'Unable to load provinces.',
  'addresses.error.loadCities': 'Unable to load cities.',

  'orders.title': 'My Orders',
  'orders.subtitle': 'View your order history and details.',
  'orders.listTitle': 'Order list',
  'orders.showing': 'Showing {from} - {to} of {total}',
  'orders.none': 'No orders',
  'orders.empty': 'You have no orders yet.',
  'orders.loading': 'Loading orders...',
  'orders.error.load': 'Unable to load orders.',
  'orders.col.orderId': 'Order ID',
  'orders.col.items': 'Items',
  'orders.col.total': 'Total cost',
  'orders.col.date': 'Date & time',
  'orders.col.step': 'Step',
  'orders.col.source': 'Registered by',
  'orders.col.actions': 'Actions',
  'orders.pageMeta': 'Page {page} / {totalPages} · {pageSize} per page · {total} total',
  'orders.viewItems': 'View items',
  'orders.source.operator': 'Operator',
  'orders.source.app': 'Application',
  'orders.source.website': 'Website',
  'orders.step.processing': 'Under processing',
  'orders.step.ready': 'Ready for shipping',
  'orders.step.shipped': 'Shipped',
  'orders.step.delivered': 'Delivered',

  'orderItems.title': 'Order items',
  'orderItems.customer': 'Customer',
  'orderItems.phone': 'Phone',
  'orderItems.items': 'Items',
  'orderItems.empty': 'No items in this order.',
  'orderItems.product': 'Product',
  'orderItems.qty': 'Qty',
  'orderItems.unitPrice': 'Unit price',
  'orderItems.lineTotal': 'Line total',
  'orderItems.sku': 'SKU: {sku}',
  'orderItems.summary': 'Order total · {count} {itemsLabel}',
  'orderItems.item': 'item',
  'orderItems.itemsPlural': 'items',
  'orderItems.close': 'Close',

  'favorites.title': 'My Favorites',
  'favorites.subtitle': 'Products you have saved for later.',
  'favorites.loading': 'Loading favorites...',
  'favorites.empty': 'No favorites yet.',
  'favorites.error.load': 'Unable to load favorites.',
  'favorites.toast.removed': 'Removed from favorites.',
  'favorites.error.remove': 'Unable to remove favorite.',
  'favorites.cartSoon': 'Shopping cart is coming soon.',
  'favorites.remove': 'Remove from favorites',
  'favorites.addToCart': 'Add to shopping cart',
  'favorites.festival': 'Festival',
  'favorites.inStock': '{count} in stock',
  'favorites.variantOne': '1 variant',
  'favorites.variantMany': '{count} variants',

  'myProducts.title': 'My Products',
  'myProducts.subtitle':
    'The products below are yours and will be sold on our website after supervisor approval.',
  'myProducts.empty': 'You have not added any products yet.',
  'myProducts.add': 'Add product',
  'myProducts.addTitle': 'Add product',
  'myProducts.addSubtitle': 'Submit a new product for review.',
  'myProducts.addComingSoon': 'The add form will be designed next.',
  'myProducts.backToList': 'Back to my products',
  'myProducts.editTitle': 'Edit product',
  'myProducts.editSubtitle': 'Update your listing details, then save.',
  'myProducts.detailsTitle': 'Product details',
  'myProducts.detailsSubtitle': 'Review your submitted listing.',
  'myProducts.edit': 'Edit product',
  'myProducts.yes': 'Yes',
  'myProducts.editSoon': 'Edit product will be available soon.',
  'myProducts.remove': 'Remove product',
  'myProducts.removeConfirm': 'Remove this product from your stock?',
  'myProducts.removeSuccess': 'Product removed.',
  'myProducts.promote': 'Promote product',
  'myProducts.promoted': 'Promoted',
  'myProducts.promoteSuccess': 'Product promoted.',
  'myProducts.priceUnavailable': 'Price on request',
  'myProducts.status.pending': 'Pending',
  'myProducts.status.published': 'Approved',
  'myProducts.status.rejected': 'Rejected',
  'myProducts.status.archived': 'Archived',
  'myProducts.stepperLabel': 'Add product steps',
  'myProducts.step.basics': 'Basics',
  'myProducts.step.basicsHint': 'Category, names, description, price, and location.',
  'myProducts.step.basicsPlaceholder': 'Basic fields will go here.',
  'myProducts.step.images': 'Images',
  'myProducts.step.imagesHint': 'Add a cropped thumbnail and gallery photos.',
  'myProducts.step.details': 'Details',
  'myProducts.step.detailsHint': 'Description and technical information for the selected category.',
  'myProducts.step.detailsPlaceholder': 'Details and technical fields will go here.',
  'myProducts.step.technical': 'Technical data',
  'myProducts.step.technicalHint':
    'Choose condition, add optional notes, then fill the category technical form.',
  'myProducts.optional': '(optional)',
  'myProducts.loading': 'Loading products…',
  'myProducts.fields.category': 'Category',
  'myProducts.fields.selectCategory': 'Select category',
  'myProducts.fields.searchCategory': 'Search category…',
  'myProducts.fields.clearCategory': 'Clear category',
  'myProducts.fields.noCategories': 'No categories found',
  'myProducts.fields.titleFa': 'Name (FA)',
  'myProducts.fields.titleFaPlaceholder': 'Product name in Farsi',
  'myProducts.fields.titleEn': 'Name (EN)',
  'myProducts.fields.titleEnPlaceholder': 'Product name in English',
  'myProducts.fields.description': 'Description',
  'myProducts.fields.descriptionPlaceholder': 'Short description of your product',
  'myProducts.fields.price': 'Desired price',
  'myProducts.fields.priceSuggested': 'Your suggested price',
  'myProducts.fields.priceByExpert': 'I want an expert to set the price',
  'myProducts.fields.pricePlaceholder': 'e.g. 1,500,000',
  'myProducts.fields.priceUnit': 'Unit',
  'myProducts.fields.priceUnit.IRT': 'IRT',
  'myProducts.fields.priceUnit.USD': 'Dollar',
  'myProducts.fields.priceUnit.EUR': 'EURO',
  'myProducts.fields.priceUnit.AED': 'AED',
  'myProducts.fields.location': 'Location',
  'myProducts.fields.country': 'Country',
  'myProducts.fields.selectCountry': 'Select country',
  'myProducts.fields.province': 'Province',
  'myProducts.fields.selectProvince': 'Select province',
  'myProducts.fields.city': 'City',
  'myProducts.fields.selectCity': 'Select city',
  'myProducts.fields.searchCity': 'Search city…',
  'myProducts.fields.clearCity': 'Clear city',
  'myProducts.fields.noCities': 'No cities found',
  'myProducts.fields.deliveryNote': 'Pickup / delivery note',
  'myProducts.fields.deliveryNotePlaceholder': 'e.g. pickup only, evening delivery…',
  'myProducts.fields.district': 'District',
  'myProducts.fields.selectDistrict': 'Select district',
  'myProducts.fields.condition': 'Condition',
  'myProducts.fields.technicalNotes': 'Technical notes',
  'myProducts.fields.technicalNotesPlaceholder': 'Optional extra technical details…',
  'myProducts.condition.new': 'New',
  'myProducts.condition.stock': 'Stock',
  'myProducts.condition.needs_repair': 'Needs repair',
  'myProducts.condition.scrap': 'Scrap',
  'myProducts.images.thumbnail': 'Thumbnail',
  'myProducts.images.thumbnailUpload': 'Upload thumbnail',
  'myProducts.images.thumbnailHint': '3:2 landscape works best',
  'myProducts.images.thumbnailChange': 'Change thumbnail',
  'myProducts.images.thumbnailRemove': 'Remove thumbnail',
  'myProducts.images.zoom': 'Zoom',
  'myProducts.images.applyCrop': 'Apply crop',
  'myProducts.images.gallery': 'Gallery',
  'myProducts.images.galleryAdd': 'Add photos',
  'myProducts.images.galleryHint': 'You can select multiple images.',
  'myProducts.images.galleryRemove': 'Remove image {index}',
  'myProducts.technical.select': 'Select…',
  'myProducts.technical.needCategory': 'Choose a category in step 1 to load technical fields.',
  'myProducts.technical.empty': 'This category has no technical fields yet.',
  'myProducts.technical.categoryForm': 'Category technical form',
  'myProducts.technical.loading': 'Loading technical fields…',
  'myProducts.cancel': 'Cancel',
  'myProducts.next': 'Next',
  'myProducts.back': 'Back',
  'myProducts.submit': 'Submit',
  'myProducts.save': 'Save changes',
  'myProducts.submitting': 'Submitting…',
  'myProducts.submitSuccess': 'Product submitted for review.',
  'myProducts.updateSuccess': 'Product updated.',
  'myProducts.error.load': 'Unable to load your products.',
  'myProducts.error.loadDetail': 'Unable to load this product.',
  'myProducts.error.loadLocations': 'Unable to load locations.',
  'myProducts.error.loadCategories': 'Unable to load categories.',
  'myProducts.error.loadTechnicalForm': 'Unable to load the category technical form.',
  'myProducts.error.categoryRequired': 'Please select a category.',
  'myProducts.error.titleFaRequired': 'Please enter the Farsi name.',
  'myProducts.error.locationRequired': 'Please select country and city.',
  'myProducts.error.priceInvalid': 'Please enter a valid price.',
  'myProducts.error.conditionRequired': 'Please select a condition.',
  'myProducts.error.technicalRequired': 'Please fill required technical fields.',
  'myProducts.error.submit': 'Unable to submit the product.',
  'myProducts.error.update': 'Unable to update the product.',
  'myProducts.error.remove': 'Unable to remove the product.',
  'myProducts.error.promote': 'Unable to promote the product.',
  'storeItems.price.contact': 'Contact for price',

  'title.signIn': 'Sign in',
  'title.checkout': 'Checkout',
  'title.cart': 'Shopping Cart',
  'title.delivery': 'Delivery',
  'title.payment': 'Payment',
  'title.success': 'Success',
  'title.failed': 'Failed',

  'login.welcome': 'Welcome back',
  'login.subtitle': 'Sign in with your mobile number',
  'login.mobile': 'Mobile number',
  'login.password': 'Password',
  'login.passwordPlaceholder': 'Enter your password',
  'login.hidePassword': 'Hide password',
  'login.showPassword': 'Show password',
  'login.forgot': 'Forgot password?',
  'login.signIn': 'Sign in',
  'login.signingIn': 'Signing in...',
  'login.or': 'or',
  'login.otp': 'One-time login with SMS',
  'login.noAccount': "Don't have an account?",
  'login.signUp': 'Sign up',
  'login.error.signIn': 'Unable to sign in. Check your connection and try again.',
  'login.error.sendCode': 'Unable to send verification code.',
  'login.error.cellEnglishDigits': 'Please use English digits for the mobile number.',
  'login.error.smsProvider': 'SMS service is temporarily unavailable. Please try again later.',

  'signup.title': 'Create account',
  'signup.subtitle': 'Register as a customer of {domain}',
  'signup.firstName': 'First name',
  'signup.lastName': 'Last name',
  'signup.passwordPlaceholder': 'Choose a password',
  'signup.confirm': 'Confirm password',
  'signup.confirmPlaceholder': 'Repeat your password',
  'signup.create': 'Create account',
  'signup.creating': 'Creating account...',
  'signup.hasAccount': 'Already have an account?',
  'signup.signIn': 'Sign in',
  'signup.error.match': 'Passwords do not match.',
  'signup.error.length': 'Password must be at least 8 characters.',
  'signup.error.create': 'Unable to create account.',
  'signup.error.cellExists':
    'This mobile number already has a Meshkee account on {sites}. For a better experience we use that account’s name and password. Sign in with that password, reset it, or use one-time login — then you can access this website too.',
  'signup.error.cellExistsGeneric':
    'This mobile number already has a Meshkee account on another website. For a better experience we use that account’s name and password. Sign in with that password, reset it, or use one-time login — then you can access this website too.',
  'signup.info.verify': 'Account created. Enter the SMS code to verify your number and sign in.',

  'forgot.back': 'Back to sign in',
  'forgot.title': 'Forgot password',
  'forgot.subtitlePhone': 'We will send a verification code via SMS',
  'forgot.subtitleCode': 'Enter the code and your new password',
  'forgot.sendCode': 'Send SMS code',
  'forgot.sending': 'Sending...',
  'forgot.code': 'SMS verification code',
  'forgot.newPassword': 'New password',
  'forgot.newPasswordPlaceholder': 'Enter new password',
  'forgot.confirm': 'Confirm password',
  'forgot.confirmPlaceholder': 'Repeat new password',
  'forgot.reset': 'Reset password',
  'forgot.verifying': 'Verifying...',
  'forgot.error.length': 'Password must be at least 8 characters.',
  'forgot.error.strength': 'Please choose a stronger password.',
  'forgot.error.match': 'Passwords do not match.',
  'forgot.error.verify': 'Unable to reset password. Check the code and try again.',
  'forgot.info.success': 'Password updated. You can sign in with your new password.',
  'password.strength': 'Password strength',
  'password.strength.empty': 'Enter a password',
  'password.strength.weak': 'Weak',
  'password.strength.fair': 'Fair',
  'password.strength.good': 'Good',
  'password.strength.strong': 'Strong',
  'password.rule.length': 'At least 8 characters',
  'password.rule.upper': 'One uppercase letter',
  'password.rule.number': 'One number',
  'password.rule.special': 'One special character',

  'otp.back': 'Back to sign in',
  'otp.title': 'One-time login',
  'otp.subtitlePhone': 'We will send a one-time SMS code to your mobile number',
  'otp.subtitleCode': 'Enter the SMS code to sign in',
  'otp.sendCode': 'Send SMS code',
  'otp.sending': 'Sending...',
  'otp.code': 'SMS verification code',
  'otp.signIn': 'Sign in',
  'otp.signingIn': 'Signing in...',
  'otp.error.signIn': 'Unable to sign in with SMS code.',

  'common.close': 'Close',
  'common.resendIn': 'Resend code in {seconds}s',
  'common.resend': 'Resend SMS code',
  'common.codeSent': 'Verification code sent to {phone}',
} as const

type MessageKey = keyof typeof en

const fa: Record<MessageKey, string> = {
  'app.dashboardName': 'پنل مشتری',
  'app.role.customer': 'کاربر وبسایت',
  'app.storeFallback': 'فروشگاه',
  'app.poweredBy': 'قدرت‌گرفته از Meshkee.app',

  'nav.home': 'خانه',
  'nav.cart': 'سبد خرید',
  'nav.profile': 'پروفایل من',
  'nav.addresses': 'آدرس‌های من',
  'nav.orders': 'سفارش‌های من',
  'nav.favorites': 'علاقه‌مندی‌ها',
  'nav.myProducts': 'محصولات من',
  'nav.help': 'مرکز راهنما',
  'nav.logout': 'خروج',

  'header.toggleMenu': 'باز و بسته کردن منو',
  'header.messages': 'پیام‌ها',
  'header.notifications': 'اعلان‌ها',
  'header.changePassword': 'تغییر رمز عبور',
  'header.myProfile': 'پروفایل من',

  'home.welcome': '{name} عزیز، خوش آمدی.',
  'home.welcomeFallback': 'کاربر',
  'home.subtitle': 'پروفایل، آدرس‌ها، سفارش‌ها و علاقه‌مندی‌ها را از یکجا مدیریت کنید.',
  'home.card.profile.title': 'پروفایل من',
  'home.card.profile.desc': 'اطلاعات شخصی و راه‌های ارتباطی خود را مشاهده و به‌روزرسانی کنید.',
  'home.card.profile.link': 'مشاهده پروفایل',
  'home.card.addresses.title': 'آدرس‌های من',
  'home.card.addresses.desc': 'آدرس‌های ارسال برای تسویه‌حساب و تحویل را مدیریت کنید.',
  'home.card.addresses.link': 'مشاهده آدرس‌ها',
  'home.card.addresses.count': 'آدرس',
  'home.card.orders.title': 'سفارش‌های من',
  'home.card.orders.desc': 'سفارش‌ها را پیگیری کنید و تاریخچه و جزئیات را ببینید.',
  'home.card.orders.link': 'مشاهده سفارش‌ها',
  'home.card.orders.count': 'سفارش',
  'home.card.favorites.title': 'علاقه‌مندی‌ها',
  'home.card.favorites.desc': 'محصولات ذخیره‌شده مورد علاقه‌تان را ببینید و مدیریت کنید.',
  'home.card.favorites.link': 'مشاهده علاقه‌مندی‌ها',
  'home.card.favorites.count': 'علاقه‌مندی',
  'home.card.myProducts.title': 'محصولات من',
  'home.card.myProducts.desc': 'محصولاتی که ثبت کرده‌اید را ببینید و مدیریت کنید.',
  'home.card.myProducts.link': 'مشاهده محصولات من',
  'home.card.myProducts.count': 'محصول',

  'profile.title': 'پروفایل من',
  'profile.subtitle': 'اطلاعات شخصی و راه‌های ارتباطی خود را به‌روزرسانی کنید.',
  'profile.section.account': 'حساب کاربری',
  'profile.section.about': 'درباره من',
  'profile.section.social': 'شبکه‌های اجتماعی',
  'profile.mobile': 'شماره موبایل',
  'profile.email': 'ایمیل',
  'profile.firstName': 'نام (فارسی)',
  'profile.lastName': 'نام خانوادگی (فارسی)',
  'profile.firstNameEn': 'نام (انگلیسی)',
  'profile.lastNameEn': 'نام خانوادگی (انگلیسی)',
  'profile.landline': 'تلفن ثابت',
  'profile.backupPhone': 'شماره تماس پشتیبان',
  'profile.about': 'درباره من',
  'profile.instagram': 'اینستاگرام',
  'profile.telegram': 'تلگرام',
  'profile.linkedin': 'لینکدین',
  'profile.emailPlaceholder': 'you@example.com',
  'profile.save': 'ذخیره تغییرات',
  'profile.saving': 'در حال ذخیره...',
  'profile.toast.success': 'پروفایل با موفقیت به‌روزرسانی شد.',
  'profile.error.update': 'به‌روزرسانی پروفایل ممکن نشد. دوباره تلاش کنید.',

  'addresses.title': 'آدرس‌های من',
  'addresses.subtitle': 'آدرس‌های ارسال سفارش در این فروشگاه را مدیریت کنید.',
  'addresses.save': 'ذخیره آدرس‌ها',
  'addresses.saveOne': 'ذخیره آدرس',
  'addresses.saving': 'در حال ذخیره...',
  'addresses.cancel': 'انصراف',
  'addresses.editorTitle': 'آدرس‌های ذخیره‌شده',
  'addresses.add': 'افزودن آدرس',
  'addresses.edit': 'ویرایش آدرس',
  'addresses.empty': 'هنوز آدرسی ثبت نشده است.',
  'addresses.loading': 'در حال بارگذاری آدرس‌ها...',
  'addresses.label': 'عنوان آدرس',
  'addresses.labelPlaceholder': 'مثلاً خانه، محل کار',
  'addresses.optional': '(اختیاری)',
  'addresses.province': 'استان',
  'addresses.city': 'شهر',
  'addresses.address': 'آدرس',
  'addresses.postalCode': 'کد پستی',
  'addresses.landline': 'تلفن ثابت',
  'addresses.selectProvince': 'انتخاب استان',
  'addresses.selectCity': 'انتخاب شهر',
  'addresses.streetPlaceholder': 'خیابان، پلاک، واحد',
  'addresses.postalPlaceholder': 'کد پستی',
  'addresses.landlinePlaceholder': 'تلفن ثابت',
  'addresses.remove': 'حذف آدرس',
  'addresses.modal.addTitle': 'افزودن آدرس',
  'addresses.modal.editTitle': 'ویرایش آدرس',
  'addresses.modal.subtitle': 'جزئیات آدرس ارسال را وارد کنید.',
  'addresses.toast.removed': 'آدرس حذف شد.',
  'addresses.toast.saved': 'آدرس‌ها ذخیره شدند.',
  'addresses.toast.created': 'آدرس ذخیره شد.',
  'addresses.toast.updated': 'آدرس به‌روزرسانی شد.',
  'addresses.error.load': 'بارگذاری آدرس‌ها ممکن نشد.',
  'addresses.error.remove': 'حذف آدرس ممکن نشد.',
  'addresses.error.incomplete': 'حداقل یک آدرس کامل اضافه کنید.',
  'addresses.error.incompleteForm': 'لطفاً همه فیلدهای الزامی را تکمیل کنید.',
  'addresses.error.save': 'ذخیره آدرس ممکن نشد. دوباره تلاش کنید.',
  'addresses.error.loadLocations': 'بارگذاری استان‌ها ممکن نشد.',
  'addresses.error.loadCities': 'بارگذاری شهرها ممکن نشد.',

  'orders.title': 'سفارش‌های من',
  'orders.subtitle': 'تاریخچه و جزئیات سفارش‌های خود را ببینید.',
  'orders.listTitle': 'فهرست سفارش‌ها',
  'orders.showing': 'نمایش {from} تا {to} از {total}',
  'orders.none': 'بدون سفارش',
  'orders.empty': 'هنوز سفارشی ندارید.',
  'orders.loading': 'در حال بارگذاری سفارش‌ها...',
  'orders.error.load': 'بارگذاری سفارش‌ها ممکن نشد.',
  'orders.col.orderId': 'شماره سفارش',
  'orders.col.items': 'اقلام',
  'orders.col.total': 'مبلغ کل',
  'orders.col.date': 'تاریخ و ساعت',
  'orders.col.step': 'وضعیت',
  'orders.col.source': 'ثبت‌شده توسط',
  'orders.col.actions': 'عملیات',
  'orders.pageMeta': 'صفحه {page} / {totalPages} · {pageSize} در هر صفحه · {total} کل',
  'orders.viewItems': 'مشاهده اقلام',
  'orders.source.operator': 'اپراتور',
  'orders.source.app': 'اپلیکیشن',
  'orders.source.website': 'وب‌سایت',
  'orders.step.processing': 'در حال پردازش',
  'orders.step.ready': 'آماده ارسال',
  'orders.step.shipped': 'ارسال‌شده',
  'orders.step.delivered': 'تحویل‌شده',

  'orderItems.title': 'اقلام سفارش',
  'orderItems.customer': 'مشتری',
  'orderItems.phone': 'تلفن',
  'orderItems.items': 'اقلام',
  'orderItems.empty': 'اقلامی در این سفارش نیست.',
  'orderItems.product': 'محصول',
  'orderItems.qty': 'تعداد',
  'orderItems.unitPrice': 'قیمت واحد',
  'orderItems.lineTotal': 'جمع ردیف',
  'orderItems.sku': 'کد کالا: {sku}',
  'orderItems.summary': 'جمع سفارش · {count} {itemsLabel}',
  'orderItems.item': 'قلم',
  'orderItems.itemsPlural': 'قلم',
  'orderItems.close': 'بستن',

  'favorites.title': 'علاقه‌مندی‌ها',
  'favorites.subtitle': 'محصولاتی که برای بعد ذخیره کرده‌اید.',
  'favorites.loading': 'در حال بارگذاری علاقه‌مندی‌ها...',
  'favorites.empty': 'هنوز علاقه‌مندی ندارید.',
  'favorites.error.load': 'بارگذاری علاقه‌مندی‌ها ممکن نشد.',
  'favorites.toast.removed': 'از علاقه‌مندی‌ها حذف شد.',
  'favorites.error.remove': 'حذف از علاقه‌مندی‌ها ممکن نشد.',
  'favorites.cartSoon': 'سبد خرید به‌زودی فعال می‌شود.',
  'favorites.remove': 'حذف از علاقه‌مندی‌ها',
  'favorites.addToCart': 'افزودن به سبد خرید',
  'favorites.festival': 'جشنواره',
  'favorites.inStock': '{count} موجود',
  'favorites.variantOne': '۱ تنوع',
  'favorites.variantMany': '{count} تنوع',

  'myProducts.title': 'محصولات من',
  'myProducts.subtitle':
    'محصولات زیر، محصولات شما هستند که توسط وبسایت ما بعد از تایید ناظر به فروش خواهد رسید.',
  'myProducts.empty': 'هنوز محصولی ثبت نکرده‌اید.',
  'myProducts.add': 'افزودن محصول',
  'myProducts.addTitle': 'افزودن محصول',
  'myProducts.addSubtitle': 'محصول جدید را برای بررسی ارسال کنید.',
  'myProducts.addComingSoon': 'فرم افزودن در مرحله بعد طراحی می‌شود.',
  'myProducts.backToList': 'بازگشت به محصولات من',
  'myProducts.editTitle': 'ویرایش محصول',
  'myProducts.editSubtitle': 'جزئیات آگهی را به‌روز کنید و ذخیره کنید.',
  'myProducts.detailsTitle': 'جزئیات محصول',
  'myProducts.detailsSubtitle': 'جزئیات آگهی ثبت‌شده را ببینید.',
  'myProducts.edit': 'ویرایش محصول',
  'myProducts.yes': 'بله',
  'myProducts.editSoon': 'ویرایش محصول به‌زودی در دسترس خواهد بود.',
  'myProducts.remove': 'حذف محصول',
  'myProducts.removeConfirm': 'این محصول از موجودی شما حذف شود؟',
  'myProducts.removeSuccess': 'محصول حذف شد.',
  'myProducts.promote': 'پروموت محصول',
  'myProducts.promoted': 'پروموت شده',
  'myProducts.promoteSuccess': 'محصول پروموت شد.',
  'myProducts.priceUnavailable': 'قیمت اعلام نشده',
  'myProducts.status.pending': 'در انتظار تأیید',
  'myProducts.status.published': 'تأیید شده',
  'myProducts.status.rejected': 'رد شده',
  'myProducts.status.archived': 'بایگانی',
  'myProducts.stepperLabel': 'مراحل افزودن محصول',
  'myProducts.step.basics': 'اطلاعات پایه',
  'myProducts.step.basicsHint': 'دسته‌بندی، نام، توضیحات، قیمت و موقعیت.',
  'myProducts.step.basicsPlaceholder': 'فیلدهای پایه اینجا قرار می‌گیرند.',
  'myProducts.step.images': 'تصاویر',
  'myProducts.step.imagesHint': 'تصویر شاخص با برش و گالری تصاویر را اضافه کنید.',
  'myProducts.step.details': 'جزئیات',
  'myProducts.step.detailsHint': 'توضیحات و اطلاعات فنی بر اساس دسته‌بندی انتخاب‌شده.',
  'myProducts.step.detailsPlaceholder': 'جزئیات و فیلدهای فنی اینجا قرار می‌گیرند.',
  'myProducts.step.technical': 'اطلاعات فنی',
  'myProducts.step.technicalHint':
    'وضعیت را انتخاب کنید، یادداشت اختیاری بنویسید و فرم فنی دسته‌بندی را تکمیل کنید.',
  'myProducts.optional': '(اختیاری)',
  'myProducts.loading': 'در حال بارگذاری محصولات…',
  'myProducts.fields.category': 'دسته‌بندی',
  'myProducts.fields.selectCategory': 'انتخاب دسته‌بندی',
  'myProducts.fields.searchCategory': 'جستجوی دسته‌بندی…',
  'myProducts.fields.clearCategory': 'پاک کردن دسته‌بندی',
  'myProducts.fields.noCategories': 'دسته‌بندی‌ای پیدا نشد',
  'myProducts.fields.titleFa': 'نام (فارسی)',
  'myProducts.fields.titleFaPlaceholder': 'نام محصول به فارسی',
  'myProducts.fields.titleEn': 'نام (انگلیسی)',
  'myProducts.fields.titleEnPlaceholder': 'نام محصول به انگلیسی',
  'myProducts.fields.description': 'توضیحات',
  'myProducts.fields.descriptionPlaceholder': 'توضیح کوتاه درباره محصول',
  'myProducts.fields.price': 'قیمت پیشنهادی',
  'myProducts.fields.priceSuggested': 'قیمت پیشنهادی شما',
  'myProducts.fields.priceByExpert': 'می‌خواهم قیمت توسط کارشناس مشخص شود',
  'myProducts.fields.pricePlaceholder': 'مثلاً ۱٬۵۰۰٬۰۰۰',
  'myProducts.fields.priceUnit': 'واحد',
  'myProducts.fields.priceUnit.IRT': 'IRT',
  'myProducts.fields.priceUnit.USD': 'Dollar',
  'myProducts.fields.priceUnit.EUR': 'EURO',
  'myProducts.fields.priceUnit.AED': 'AED',
  'myProducts.fields.location': 'موقعیت',
  'myProducts.fields.country': 'کشور',
  'myProducts.fields.selectCountry': 'انتخاب کشور',
  'myProducts.fields.province': 'استان',
  'myProducts.fields.selectProvince': 'انتخاب استان',
  'myProducts.fields.city': 'شهر',
  'myProducts.fields.selectCity': 'انتخاب شهر',
  'myProducts.fields.searchCity': 'جستجوی شهر…',
  'myProducts.fields.clearCity': 'پاک کردن شهر',
  'myProducts.fields.noCities': 'شهری پیدا نشد',
  'myProducts.fields.deliveryNote': 'یادداشت تحویل / دریافت',
  'myProducts.fields.deliveryNotePlaceholder': 'مثلاً فقط حضوری، تحویل عصر…',
  'myProducts.fields.district': 'منطقه',
  'myProducts.fields.selectDistrict': 'انتخاب منطقه',
  'myProducts.fields.condition': 'وضعیت',
  'myProducts.fields.technicalNotes': 'توضیحات فنی',
  'myProducts.fields.technicalNotesPlaceholder': 'جزئیات فنی اختیاری…',
  'myProducts.condition.new': 'نو',
  'myProducts.condition.stock': 'استوک',
  'myProducts.condition.needs_repair': 'نیاز به تعمیر',
  'myProducts.condition.scrap': 'اوراق',
  'myProducts.images.thumbnail': 'تصویر شاخص',
  'myProducts.images.thumbnailUpload': 'آپلود تصویر شاخص',
  'myProducts.images.thumbnailHint': 'نسبت ۳:۲ افقی بهتر است',
  'myProducts.images.thumbnailChange': 'تغییر تصویر شاخص',
  'myProducts.images.thumbnailRemove': 'حذف تصویر شاخص',
  'myProducts.images.zoom': 'بزرگنمایی',
  'myProducts.images.applyCrop': 'اعمال برش',
  'myProducts.images.gallery': 'گالری',
  'myProducts.images.galleryAdd': 'افزودن عکس',
  'myProducts.images.galleryHint': 'می‌توانید چند تصویر انتخاب کنید.',
  'myProducts.images.galleryRemove': 'حذف تصویر {index}',
  'myProducts.technical.select': 'انتخاب کنید…',
  'myProducts.technical.needCategory': 'برای نمایش فیلدهای فنی، در مرحله ۱ دسته‌بندی را انتخاب کنید.',
  'myProducts.technical.empty': 'برای این دسته‌بندی هنوز فیلد فنی تعریف نشده است.',
  'myProducts.technical.categoryForm': 'فرم فنی دسته‌بندی',
  'myProducts.technical.loading': 'در حال بارگذاری فیلدهای فنی…',
  'myProducts.cancel': 'انصراف',
  'myProducts.next': 'بعدی',
  'myProducts.back': 'قبلی',
  'myProducts.submit': 'ارسال',
  'myProducts.save': 'ذخیره تغییرات',
  'myProducts.submitting': 'در حال ارسال…',
  'myProducts.submitSuccess': 'محصول برای بررسی ارسال شد.',
  'myProducts.updateSuccess': 'محصول به‌روز شد.',
  'myProducts.error.load': 'بارگذاری محصولات ممکن نشد.',
  'myProducts.error.loadDetail': 'بارگذاری این محصول ممکن نشد.',
  'myProducts.error.loadLocations': 'بارگذاری موقعیت‌ها ممکن نشد.',
  'myProducts.error.loadCategories': 'بارگذاری دسته‌بندی‌ها ممکن نشد.',
  'myProducts.error.loadTechnicalForm': 'بارگذاری فرم فنی دسته‌بندی ممکن نشد.',
  'myProducts.error.categoryRequired': 'لطفاً دسته‌بندی را انتخاب کنید.',
  'myProducts.error.titleFaRequired': 'لطفاً نام فارسی را وارد کنید.',
  'myProducts.error.locationRequired': 'لطفاً کشور و شهر را انتخاب کنید.',
  'myProducts.error.priceInvalid': 'لطفاً قیمت معتبر وارد کنید.',
  'myProducts.error.conditionRequired': 'لطفاً وضعیت را انتخاب کنید.',
  'myProducts.error.technicalRequired': 'لطفاً فیلدهای فنی الزامی را تکمیل کنید.',
  'myProducts.error.submit': 'ارسال محصول ممکن نشد.',
  'myProducts.error.update': 'به‌روزرسانی محصول ممکن نشد.',
  'myProducts.error.remove': 'حذف محصول ممکن نشد.',
  'myProducts.error.promote': 'پروموت محصول ممکن نشد.',
  'storeItems.price.contact': 'برای قیمت، تماس بگیرید',

  'title.signIn': 'ورود',
  'title.checkout': 'تسویه‌حساب',
  'title.cart': 'سبد خرید',
  'title.delivery': 'ارسال',
  'title.payment': 'پرداخت',
  'title.success': 'موفق',
  'title.failed': 'ناموفق',

  'login.welcome': 'خوش آمدید',
  'login.subtitle': 'با شماره موبایل وارد شوید',
  'login.mobile': 'شماره موبایل',
  'login.password': 'رمز عبور',
  'login.passwordPlaceholder': 'رمز عبور خود را وارد کنید',
  'login.hidePassword': 'مخفی کردن رمز',
  'login.showPassword': 'نمایش رمز',
  'login.forgot': 'رمز عبور را فراموش کرده‌اید؟',
  'login.signIn': 'ورود',
  'login.signingIn': 'در حال ورود...',
  'login.or': 'یا',
  'login.otp': 'ورود یک‌بارمصرف با پیامک',
  'login.noAccount': 'حساب کاربری ندارید؟',
  'login.signUp': 'ثبت‌نام',
  'login.error.signIn': 'ورود ممکن نشد. اتصال خود را بررسی کنید و دوباره تلاش کنید.',
  'login.error.sendCode': 'ارسال کد تأیید ممکن نشد.',
  'login.error.cellEnglishDigits': 'خواهشمندیم از زبان انگلیسی برای شماره همراه استفاده کنید',
  'login.error.smsProvider': 'سرویس پیامک موقتاً در دسترس نیست. لطفاً بعداً دوباره تلاش کنید.',

  'signup.title': 'ایجاد حساب',
  'signup.subtitle': 'به‌عنوان مشتری {domain} ثبت‌نام کنید',
  'signup.firstName': 'نام',
  'signup.lastName': 'نام خانوادگی',
  'signup.passwordPlaceholder': 'یک رمز عبور انتخاب کنید',
  'signup.confirm': 'تأیید رمز عبور',
  'signup.confirmPlaceholder': 'رمز عبور را تکرار کنید',
  'signup.create': 'ایجاد حساب',
  'signup.creating': 'در حال ایجاد حساب...',
  'signup.hasAccount': 'قبلاً حساب دارید؟',
  'signup.signIn': 'ورود',
  'signup.error.match': 'رمزهای عبور یکسان نیستند.',
  'signup.error.length': 'رمز عبور باید حداقل ۸ کاراکتر باشد.',
  'signup.error.create': 'ایجاد حساب ممکن نشد.',
  'signup.error.cellExists':
    'این شماره موبایل قبلاً در مشکی حساب دارد ({sites}). برای تجربه بهتر از همان نام و رمز استفاده می‌کنیم. با همان رمز وارد شوید، رمز را بازیابی کنید، یا ورود یک‌بارمصرف را امتحان کنید — بعد می‌توانید وارد این وب‌سایت هم شوید.',
  'signup.error.cellExistsGeneric':
    'این شماره موبایل قبلاً در مشکی (وب‌سایت دیگری) حساب دارد. برای تجربه بهتر از همان نام و رمز استفاده می‌کنیم. با همان رمز وارد شوید، رمز را بازیابی کنید، یا ورود یک‌بارمصرف را امتحان کنید — بعد می‌توانید وارد این وب‌سایت هم شوید.',
  'signup.info.verify': 'حساب ایجاد شد. کد پیامکی را وارد کنید تا شماره تأیید شود و وارد شوید.',

  'forgot.back': 'بازگشت به ورود',
  'forgot.title': 'فراموشی رمز عبور',
  'forgot.subtitlePhone': 'کد تأیید را از طریق پیامک ارسال می‌کنیم',
  'forgot.subtitleCode': 'کد و رمز عبور جدید را وارد کنید',
  'forgot.sendCode': 'ارسال کد پیامکی',
  'forgot.sending': 'در حال ارسال...',
  'forgot.code': 'کد تأیید پیامکی',
  'forgot.newPassword': 'رمز عبور جدید',
  'forgot.newPasswordPlaceholder': 'رمز عبور جدید را وارد کنید',
  'forgot.confirm': 'تأیید رمز عبور',
  'forgot.confirmPlaceholder': 'رمز عبور جدید را تکرار کنید',
  'forgot.reset': 'بازیابی رمز عبور',
  'forgot.verifying': 'در حال تأیید...',
  'forgot.error.length': 'رمز عبور باید حداقل ۸ کاراکتر باشد.',
  'forgot.error.strength': 'لطفاً رمز عبور قوی‌تری انتخاب کنید.',
  'forgot.error.match': 'رمزهای عبور یکسان نیستند.',
  'forgot.error.verify': 'بازنشانی رمز ممکن نشد. کد را بررسی کنید و دوباره تلاش کنید.',
  'forgot.info.success': 'رمز عبور به‌روز شد. می‌توانید با رمز جدید وارد شوید.',
  'password.strength': 'قدرت رمز عبور',
  'password.strength.empty': 'رمز عبور را وارد کنید',
  'password.strength.weak': 'ضعیف',
  'password.strength.fair': 'متوسط',
  'password.strength.good': 'خوب',
  'password.strength.strong': 'قوی',
  'password.rule.length': 'حداقل ۸ کاراکتر',
  'password.rule.upper': 'یک حرف بزرگ انگلیسی',
  'password.rule.number': 'یک عدد',
  'password.rule.special': 'یک کاراکتر ویژه',

  'otp.back': 'بازگشت به ورود',
  'otp.title': 'ورود یک‌بارمصرف',
  'otp.subtitlePhone': 'کد یک‌بارمصرف را با پیامک به شماره موبایل ارسال می‌کنیم',
  'otp.subtitleCode': 'کد پیامکی را وارد کنید تا وارد شوید',
  'otp.sendCode': 'ارسال کد پیامکی',
  'otp.sending': 'در حال ارسال...',
  'otp.code': 'کد تأیید پیامکی',
  'otp.signIn': 'ورود',
  'otp.signingIn': 'در حال ورود...',
  'otp.error.signIn': 'ورود با کد پیامکی ممکن نشد.',

  'common.close': 'بستن',
  'common.resendIn': 'ارسال مجدد کد تا {seconds} ثانیه',
  'common.resend': 'ارسال مجدد کد پیامکی',
  'common.codeSent': 'کد تأیید به {phone} ارسال شد',
}

const dictionaries: Record<DashboardLocale, Record<MessageKey, string>> = {
  en: en as Record<MessageKey, string>,
  fa,
}

export type CustomerMessageKey = MessageKey

export function translate(
  locale: DashboardLocale,
  key: MessageKey,
  vars?: Record<string, string | number>,
): string {
  const dict = dictionaries[locale] ?? dictionaries.en
  let text = dict[key] ?? dictionaries.en[key] ?? key
  if (vars) {
    for (const [name, value] of Object.entries(vars)) {
      text = text.replaceAll(`{${name}}`, String(value))
    }
  }
  return text
}

export function getCustomerRouteTitleRules(locale: DashboardLocale) {
  const t = (key: MessageKey) => translate(locale, key)
  return [
    { match: '/login', labels: [t('title.signIn')] },
    { match: '/checkout/login', labels: [t('title.checkout'), t('title.signIn')] },
    { match: '/checkout/cart', labels: [t('title.checkout'), t('title.cart')] },
    { match: '/checkout/delivery', labels: [t('title.checkout'), t('title.delivery')] },
    { match: '/checkout/payment', labels: [t('title.checkout'), t('title.payment')] },
    { match: '/checkout/success', labels: [t('title.checkout'), t('title.success')] },
    { match: '/checkout/failed', labels: [t('title.checkout'), t('title.failed')] },
    { match: '/checkout', labels: [t('title.checkout')] },
    { match: '/profile', labels: [t('nav.profile')] },
    { match: '/addresses', labels: [t('nav.addresses')] },
    { match: '/orders', labels: [t('nav.orders')] },
    { match: '/favorites', labels: [t('nav.favorites')] },
    { match: '/my-products/new', labels: [t('nav.myProducts'), t('myProducts.addTitle')] },
    { match: /^\/my-products\/[^/]+\/edit$/, labels: [t('nav.myProducts'), t('myProducts.editTitle')] },
    { match: /^\/my-products\/[^/]+$/, labels: [t('nav.myProducts'), t('myProducts.detailsTitle')] },
    { match: '/my-products', labels: [t('nav.myProducts')] },
    { match: '/', labels: [t('nav.home')] },
  ]
}
