import type { DashboardLocale } from '@meshkee/dashboard-core' const en = { 'app.dashboardName': 'Customer Dashboard', 'app.role.customer': 'Website user', 'app.role.superAdmin': 'Super Admin', 'app.role.admin': 'Admin', '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', 'header.openBusinessDashboard': 'Open business dashboard', '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 an account in Meshkee Unified Management System (__MESHKEE_APP__) on {sites}. Your password and data will stay the same. Continue to verify by SMS and join this website too.', 'signup.error.cellExistsGeneric': 'This mobile number already has an account in Meshkee Unified Management System (__MESHKEE_APP__) on another website. Your password and data will stay the same. Continue to verify by SMS and join this website too.', 'signup.info.verify': 'Account created. Enter the SMS code to verify your number and sign in.', 'signup.info.verifyExisting': 'Enter the SMS code to join this website. Your Meshkee password and profile stay the same.', 'signup.cellExists.title': 'Existing Meshkee account', 'signup.cellExists.admit': 'I understand, continue', '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 = { 'app.dashboardName': 'پنل مشتری', 'app.role.customer': 'کاربر وبسایت', 'app.role.superAdmin': 'سوپرادمین', 'app.role.admin': 'ادمین', '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': 'پروفایل من', 'header.openBusinessDashboard': 'رفتن به داشبورد کسب‌وکار', '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': 'این شماره موبایل قبلاً در سیستم مدیریت یکپارچه ی مشکی (__MESHKEE_APP__) حساب دارد ({sites}). رمز عبور و اطلاعات شما همان خواهد بود. با ادامه، تأیید پیامکی را انجام دهید تا وارد این وب‌سایت هم شوید.', 'signup.error.cellExistsGeneric': 'این شماره موبایل قبلاً در سیستم مدیریت یکپارچه ی مشکی (__MESHKEE_APP__) (وب‌سایت دیگری) حساب دارد. رمز عبور و اطلاعات شما همان خواهد بود. با ادامه، تأیید پیامکی را انجام دهید تا وارد این وب‌سایت هم شوید.', 'signup.info.verify': 'حساب ایجاد شد. کد پیامکی را وارد کنید تا شماره تأیید شود و وارد شوید.', 'signup.info.verifyExisting': 'کد پیامکی را وارد کنید تا به این وب‌سایت بپیوندید. رمز عبور و اطلاعات مشکی شما همان می‌ماند.', 'signup.cellExists.title': 'حساب موجود در مشکی', 'signup.cellExists.admit': 'متوجه شدم، ادامه', '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> = { en: en as Record, fa, } export type CustomerMessageKey = MessageKey export function translate( locale: DashboardLocale, key: MessageKey, vars?: Record, ): 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')] }, ] }