Editors can pick product, store, blog, portfolio, or video category links, and image cards expose compact info/link actions without dumping URLs in the footer. Co-authored-by: Cursor <cursoragent@cursor.com>
4054 lines
240 KiB
TypeScript
4054 lines
240 KiB
TypeScript
import type { DashboardLocale, RouteTitleRule } from '@meshkee/dashboard-core'
|
||
|
||
const en = {
|
||
'app.dashboardName': 'Business Dashboard',
|
||
'app.storeFallback': 'Business',
|
||
'app.poweredBy': 'powered by Meshkee.app',
|
||
'app.userFallback': 'User',
|
||
|
||
'role.superAdmin': 'Super Admin',
|
||
'role.owner': 'Business Owner',
|
||
'role.admin': 'Admin',
|
||
'role.staff': 'Staff',
|
||
|
||
'nav.home': 'Home',
|
||
'nav.businessProfile': 'Business Profile',
|
||
'sidebar.addLogo': 'Add logo',
|
||
'nav.products': 'Products',
|
||
'nav.products.overview': 'Overview',
|
||
'nav.products.list': 'My Products',
|
||
'nav.products.new': 'Add New Product',
|
||
'nav.products.categories': 'Categories',
|
||
'nav.products.brands': 'Brands',
|
||
'nav.products.settings': 'Settings',
|
||
'nav.store': 'Store',
|
||
'nav.store.overview': 'Overview',
|
||
'nav.store.items': 'My Store Items',
|
||
'nav.store.orders': 'My Orders',
|
||
'nav.store.shipping': 'Shipping Fees',
|
||
'nav.store.cards': 'Shopping Cards',
|
||
'nav.store.settings': 'Settings',
|
||
'nav.customers': 'Users',
|
||
'nav.customerProducts': 'Customer products',
|
||
'nav.invoices': 'Invoices',
|
||
'nav.invoices.list': 'Invoices',
|
||
'nav.invoices.templates': 'Templates',
|
||
'nav.finance': 'Finance Management',
|
||
'nav.finance.overview': 'Overview',
|
||
'nav.finance.invoices': 'Invoices',
|
||
'nav.finance.transactions': 'Transactions',
|
||
'nav.settings': 'Settings',
|
||
'nav.content': 'Content Management',
|
||
'nav.content.blog': 'News & Articles',
|
||
'nav.content.videos': 'Videos',
|
||
'nav.content.instructions': 'Instructions',
|
||
'nav.content.overview': 'Overview',
|
||
'nav.blog': 'Blog',
|
||
'nav.blog.overview': 'Overview',
|
||
'nav.blog.list': 'My Blogs',
|
||
'nav.blog.new': 'Add New Blog',
|
||
'nav.blog.categories': 'Categories',
|
||
'nav.blog.settings': 'Settings',
|
||
'nav.portfolios': 'Portfolios',
|
||
'nav.portfolios.overview': 'Overview',
|
||
'nav.portfolios.list': 'My Portfolios',
|
||
'nav.portfolios.new': 'Add New Portfolio',
|
||
'nav.portfolios.categories': 'Categories',
|
||
'nav.portfolios.settings': 'Settings',
|
||
'nav.videos': 'Videos',
|
||
'nav.videos.overview': 'Overview',
|
||
'nav.videos.list': 'My Videos',
|
||
'nav.videos.new': 'Add New Video',
|
||
'nav.videos.categories': 'Categories',
|
||
'nav.videos.settings': 'Settings',
|
||
'nav.instructions': 'Instructions',
|
||
'nav.instructions.overview': 'Overview',
|
||
'nav.instructions.list': 'My Instructions',
|
||
'nav.instructions.new': 'Add New Instruction',
|
||
'nav.instructions.categories': 'Categories',
|
||
'nav.instructions.settings': 'Settings',
|
||
'nav.website': 'Website',
|
||
'nav.website.overview': 'Overview',
|
||
'nav.website.staticImages': 'Static Images',
|
||
'nav.website.sliders': 'Sliders',
|
||
'nav.website.specialCategories': 'Special Categories',
|
||
'nav.website.specialBrands': 'Special Brands',
|
||
'nav.website.specialItems': 'Special Items',
|
||
'nav.website.contact': 'Contact Us Form',
|
||
'nav.website.subscriptions': 'Subscriptions',
|
||
'nav.website.faq': 'FAQ',
|
||
'nav.website.badges': 'Badges',
|
||
'nav.website.ePayment': 'E-Payment',
|
||
'nav.help': 'Help Center',
|
||
'nav.logout': 'Logout',
|
||
|
||
'header.toggleMenu': 'Toggle menu',
|
||
'header.closeMenu': 'Close menu',
|
||
'header.title': 'Admin Dashboard',
|
||
'header.messages': 'Messages',
|
||
'header.notifications': 'Notifications',
|
||
'header.profile': 'Profile',
|
||
'header.setting': 'Setting',
|
||
'header.changePassword': 'Change password',
|
||
|
||
'profile.title': 'My Profile',
|
||
'profile.subtitle': 'Manage your personal information and contact details.',
|
||
'profile.section.general': 'General',
|
||
'profile.section.social': 'Social media',
|
||
'profile.firstName': 'First name (FA)',
|
||
'profile.lastName': 'Last name (FA)',
|
||
'profile.firstNameEn': 'First name (EN)',
|
||
'profile.lastNameEn': 'Last name (EN)',
|
||
'profile.mobile': 'Mobile number',
|
||
'profile.email': 'Email',
|
||
'profile.emailPlaceholder': 'you@example.com',
|
||
'profile.about': 'About yourself',
|
||
'profile.addresses': 'Addresses',
|
||
'profile.addresses.add': 'Add address',
|
||
'profile.addresses.loading': 'Loading addresses...',
|
||
'profile.addresses.remove': 'Remove address',
|
||
'profile.addresses.error.load': 'Unable to load addresses.',
|
||
'profile.addresses.error.incomplete': 'Complete province, city, and address for each row you start.',
|
||
'profile.province': 'Province',
|
||
'profile.city': 'City',
|
||
'profile.postalCode': 'Postal code',
|
||
'profile.address': 'Address',
|
||
'profile.landline': 'Landline',
|
||
'profile.selectProvince': 'Select province',
|
||
'profile.selectCity': 'Select city',
|
||
'profile.streetPlaceholder': 'Street address',
|
||
'profile.instagram': 'Instagram',
|
||
'profile.telegram': 'Telegram ID',
|
||
'profile.linkedin': 'LinkedIn',
|
||
'profile.save': 'Save changes',
|
||
'profile.saving': 'Saving...',
|
||
'profile.toast.success': 'Profile saved successfully.',
|
||
'profile.error.update': 'Unable to save profile.',
|
||
|
||
'bizProfile.subtitle': 'Manage your storefront identity, contact details, and social links.',
|
||
'bizProfile.loading': 'Loading business profile...',
|
||
'bizProfile.loadError': 'Unable to load business profile.',
|
||
'bizProfile.saveError': 'Unable to save business profile.',
|
||
'bizProfile.toast.saved': 'Business profile saved.',
|
||
'bizProfile.section.basic': 'Basic info',
|
||
'bizProfile.section.contact': 'Contact',
|
||
'bizProfile.section.social': 'Social media',
|
||
'bizProfile.logo': 'Logo',
|
||
'bizProfile.logo.upload': 'Upload logo',
|
||
'bizProfile.logo.hint': 'Transparent PNG recommended',
|
||
'bizProfile.logo.change': 'Change logo',
|
||
'bizProfile.categories': 'Activity categories',
|
||
'bizProfile.categories.placeholder': 'Select activity categories',
|
||
'bizProfile.nameFa': 'Name (FA)',
|
||
'bizProfile.nameEn': 'Name (EN)',
|
||
'bizProfile.email': 'Email address',
|
||
'bizProfile.about': 'About us',
|
||
'bizProfile.vision': 'Our vision',
|
||
'bizProfile.addresses': 'Addresses',
|
||
'bizProfile.addresses.add': 'Add address',
|
||
'bizProfile.province': 'Province',
|
||
'bizProfile.city': 'City',
|
||
'bizProfile.address': 'Address',
|
||
'bizProfile.postalCode': 'Postal code',
|
||
'bizProfile.landline': 'Landline',
|
||
'bizProfile.selectProvince': 'Select province',
|
||
'bizProfile.selectCity': 'Select city',
|
||
'bizProfile.streetPlaceholder': 'Street address',
|
||
'bizProfile.removeAddress': 'Remove address',
|
||
'bizProfile.phones': 'Phone numbers',
|
||
'bizProfile.phones.add': 'Add number',
|
||
'bizProfile.phones.type': 'Type',
|
||
'bizProfile.phones.number': 'Phone number',
|
||
'bizProfile.phones.cell': 'Cell number',
|
||
'bizProfile.phones.landline': 'Landline',
|
||
'bizProfile.phones.remove': 'Remove phone number',
|
||
'bizProfile.social.placeholder': '{name} link or ID',
|
||
'bizProfile.save': 'Save profile',
|
||
'bizProfile.saving': 'Saving...',
|
||
|
||
'bc.dashboard': 'Dashboard',
|
||
'bc.editProduct': 'Edit Product',
|
||
'bc.productDetails': 'Product Details',
|
||
'bc.editBlog': 'Edit Blog',
|
||
'bc.blogDetails': 'Blog Details',
|
||
'bc.editPortfolio': 'Edit Portfolio',
|
||
'bc.portfolioDetails': 'Portfolio Details',
|
||
'bc.editVideo': 'Edit Video',
|
||
'bc.videoDetails': 'Video Details',
|
||
'bc.editInstruction': 'Edit Instruction',
|
||
'bc.instructionDetails': 'Instruction Details',
|
||
|
||
'home.welcome': 'Welcome back, {name}!',
|
||
'home.welcomeFallback': 'there',
|
||
'home.subtitle': "Here's what's happening with your store today.",
|
||
'home.card.products.title': 'Products',
|
||
'home.card.products.desc': 'Manage your products, inventory and categories.',
|
||
'home.card.products.link': 'View products',
|
||
'home.card.products.count': 'products',
|
||
'home.card.store.title': 'Store',
|
||
'home.card.store.desc': 'Manage your store settings, pages and themes.',
|
||
'home.card.store.link': 'View store',
|
||
'home.card.store.count': 'on sale',
|
||
'home.card.customers.title': 'Users',
|
||
'home.card.customers.desc': 'View and manage your customers and their activity.',
|
||
'home.card.customers.link': 'View customers',
|
||
'home.card.customers.count': 'people',
|
||
'home.card.settings.title': 'Settings',
|
||
'home.card.settings.desc': 'Configure your store preferences and system settings.',
|
||
'home.card.settings.link': 'View settings',
|
||
'home.card.content.title': 'Content',
|
||
'home.card.content.desc': 'Manage blog posts, videos, and other published content.',
|
||
'home.card.content.link': 'Manage content',
|
||
'home.card.content.count': 'items',
|
||
'content.page.subtitle': 'Blog, videos, and other content types for your website.',
|
||
'content.card.blog.desc': 'Create and manage blog posts and categories.',
|
||
'content.card.blog.link': 'Open blog',
|
||
'content.card.videos.desc': 'Embed YouTube and Aparat videos with categories and comments.',
|
||
'content.card.videos.link': 'Open videos',
|
||
'content.card.instructions.desc': 'Tutorials with rich text and optional embedded video.',
|
||
'content.card.instructions.link': 'Open instructions',
|
||
'home.card.blog.title': 'Blog',
|
||
'home.card.blog.desc': 'Create and manage blog posts and categories.',
|
||
'home.card.blog.link': 'View blog',
|
||
'home.card.blog.count': 'posts',
|
||
'home.card.videos.title': 'Videos',
|
||
'home.card.videos.desc': 'Embed YouTube and Aparat videos with categories and comments.',
|
||
'home.card.videos.link': 'View videos',
|
||
'home.card.videos.count': 'videos',
|
||
'home.card.portfolios.title': 'Portfolios',
|
||
'home.card.portfolios.desc': 'Manage your portfolio items and showcase projects.',
|
||
'home.card.portfolios.link': 'View portfolios',
|
||
'home.card.portfolios.count': 'portfolios',
|
||
'home.card.website.title': 'Website',
|
||
'home.card.website.desc': 'Manage contact forms, FAQ, badges, and subscriptions.',
|
||
'home.card.website.link': 'View website',
|
||
'home.card.finance.title': 'Finance Management',
|
||
'home.card.finance.desc': 'Manage invoices and financial transactions.',
|
||
'home.card.finance.link': 'View finance',
|
||
|
||
'home.chart.orders.title': 'Orders',
|
||
'home.chart.orders.subtitle': 'Orders and cart adds in the last 30 days',
|
||
'home.chart.orders.legend': 'Orders ({count})',
|
||
'home.chart.orders.cartLegend': 'Added to basket ({count})',
|
||
'home.chart.orders.loading': 'Loading chart...',
|
||
'home.chart.orders.error': 'Unable to load order activity.',
|
||
'home.chart.orders.bar': '{day}: {count} orders',
|
||
'home.chart.orders.cartBar': '{day}: {count} added to basket',
|
||
'home.chart.customers.title': 'Users',
|
||
'home.chart.customers.subtitle': 'Registrations and active users in the last 30 days',
|
||
'home.chart.customers.legend': 'Registered ({count})',
|
||
'home.chart.customers.activeLegend': 'Active ({count})',
|
||
'home.chart.customers.loading': 'Loading chart...',
|
||
'home.chart.customers.error': 'Unable to load customer activity.',
|
||
'home.chart.customers.bar': '{day}: {count} registered',
|
||
'home.chart.customers.activeBar': '{day}: {count} active',
|
||
'home.chart.customersJoined.title': 'Customers joined',
|
||
'home.chart.customersJoined.subtitle': 'Registrations and active users in the last year',
|
||
'home.chart.customersJoined.legend': 'Registered ({count})',
|
||
'home.chart.customersJoined.activeLegend': 'Active ({count})',
|
||
'home.chart.customersJoined.loading': 'Loading chart...',
|
||
'home.chart.customersJoined.error': 'Unable to load customer activity.',
|
||
'home.chart.customersJoined.bar': '{month}: {count} registered',
|
||
'home.chart.customersJoined.activeBar': '{month}: {count} active',
|
||
'home.chart.blogViews.title': 'Article views',
|
||
'home.chart.blogViews.subtitle': 'Blog article views in the last 30 days',
|
||
'home.chart.placeholder.title': 'Chart',
|
||
'home.chart.placeholder.subtitle': 'This chart will appear here once available.',
|
||
'home.chart.placeholder.comingSoon': 'Coming soon',
|
||
|
||
'products.overview.subtitle': 'Manage your products, inventory and categories.',
|
||
'products.card.list.desc': 'View, edit and manage all your existing products.',
|
||
'products.card.new.title': 'Add a New Product',
|
||
'products.card.new.desc': 'Create and publish a new product to your store.',
|
||
'products.form.edit.subtitle': 'Update product details and save changes.',
|
||
'products.card.categories.desc': 'Organize your products into categories and subcategories.',
|
||
'products.card.brands.desc': 'Manage product brands and assign them when creating products.',
|
||
'products.card.settings.desc': 'Configure product defaults, variants and display options.',
|
||
'products.activity.title': 'Product activity',
|
||
'products.activity.subtitle': 'Products added or updated in the last 12 months',
|
||
'products.activity.added': 'Added ({count})',
|
||
'products.activity.updated': 'Updated ({count})',
|
||
'products.activity.loading': 'Loading chart...',
|
||
'products.activity.error': 'Unable to load product activity.',
|
||
'products.activity.chartAria': 'Bar chart of products added and updated per month',
|
||
'products.activity.barAdded': '{month}: {count} added',
|
||
'products.activity.barUpdated': '{month}: {count} updated',
|
||
|
||
'products.list.subtitle': '{count} products · View, edit and manage your catalog.',
|
||
'products.list.filters': 'Filters',
|
||
'products.list.filterName': 'Name',
|
||
'products.list.filterNamePlaceholder': 'Search by product name',
|
||
'products.list.search': 'Search',
|
||
'products.list.clearFilters': 'Clear filters',
|
||
'products.list.loading': 'Loading products...',
|
||
'products.list.empty': 'No products found.',
|
||
'products.list.emptyFiltered': 'No products match your filters.',
|
||
'products.list.errorLoad': 'Unable to load products.',
|
||
'products.list.errorDelete': 'Unable to delete product.',
|
||
'products.list.pagination': 'Page {page} / {totalPages} · {perPage} per page · {total} total',
|
||
'products.list.deleteTitle': 'Delete Product',
|
||
'products.list.deleteMessage':
|
||
'Are you sure you want to delete "{name}"? This action cannot be undone.',
|
||
'products.list.addByAi': 'Add product by AI',
|
||
'products.list.addNew': 'Add new product',
|
||
|
||
'customerProducts.title': 'Customer products',
|
||
'customerProducts.subtitle': '{count} products submitted by customers.',
|
||
'customerProducts.empty': 'No customer products yet.',
|
||
'customerProducts.form.title': 'My Products',
|
||
'customerProducts.form.empty': 'You have not added any products yet.',
|
||
'customerProducts.form.add': 'Add product',
|
||
'customerProducts.form.addTitle': 'Add product',
|
||
'customerProducts.form.addSubtitle': 'Submit a new product for review.',
|
||
'customerProducts.form.addComingSoon': 'The add form will be designed next.',
|
||
'customerProducts.form.backToList': 'Back to my products',
|
||
'customerProducts.form.editTitle': 'Edit product',
|
||
'customerProducts.form.editSubtitle': 'Update your listing details, then save.',
|
||
'customerProducts.form.detailsTitle': 'Product details',
|
||
'customerProducts.form.detailsSubtitle': 'Review your submitted listing.',
|
||
'customerProducts.form.edit': 'Edit product',
|
||
'customerProducts.form.yes': 'Yes',
|
||
'customerProducts.form.editSoon': 'Edit product will be available soon.',
|
||
'customerProducts.form.remove': 'Remove product',
|
||
'customerProducts.form.removeConfirm': 'Remove this product from your stock?',
|
||
'customerProducts.form.removeSuccess': 'Product removed.',
|
||
'customerProducts.form.promote': 'Promote product',
|
||
'customerProducts.form.promoted': 'Promoted',
|
||
'customerProducts.form.promoteSuccess': 'Product promoted.',
|
||
'customerProducts.form.priceUnavailable': 'Price on request',
|
||
'customerProducts.form.status.pending': 'Pending',
|
||
'customerProducts.form.status.published': 'Approved',
|
||
'customerProducts.form.status.archived': 'Archived',
|
||
'customerProducts.form.stepperLabel': 'Add product steps',
|
||
'customerProducts.form.step.basics': 'Basics',
|
||
'customerProducts.form.step.basicsHint': 'Category, names, description, price, and location.',
|
||
'customerProducts.form.step.basicsPlaceholder': 'Basic fields will go here.',
|
||
'customerProducts.form.step.images': 'Images',
|
||
'customerProducts.form.step.imagesHint': 'Add a cropped thumbnail and gallery photos.',
|
||
'customerProducts.form.step.details': 'Details',
|
||
'customerProducts.form.step.detailsHint': 'Description and technical information for the selected category.',
|
||
'customerProducts.form.step.detailsPlaceholder': 'Details and technical fields will go here.',
|
||
'customerProducts.form.step.technical': 'Technical data',
|
||
'customerProducts.form.step.technicalHint':
|
||
'Choose condition, add optional notes, then fill the category technical form.',
|
||
'customerProducts.form.optional': '(optional)',
|
||
'customerProducts.form.loading': 'Loading products…',
|
||
'customerProducts.form.fields.category': 'Category',
|
||
'customerProducts.form.fields.selectCategory': 'Select category',
|
||
'customerProducts.form.fields.searchCategory': 'Search category…',
|
||
'customerProducts.form.fields.clearCategory': 'Clear category',
|
||
'customerProducts.form.fields.noCategories': 'No categories found',
|
||
'customerProducts.form.fields.titleFa': 'Name (FA)',
|
||
'customerProducts.form.fields.titleFaPlaceholder': 'Product name in Farsi',
|
||
'customerProducts.form.fields.titleEn': 'Name (EN)',
|
||
'customerProducts.form.fields.titleEnPlaceholder': 'Product name in English',
|
||
'customerProducts.form.fields.description': 'Description',
|
||
'customerProducts.form.fields.descriptionPlaceholder': 'Short description of your product',
|
||
'customerProducts.form.fields.price': 'Desired price',
|
||
'customerProducts.form.fields.priceSuggested': 'Your suggested price',
|
||
'customerProducts.form.fields.priceByExpert': 'I want an expert to set the price',
|
||
'customerProducts.form.fields.pricePlaceholder': 'e.g. 1,500,000',
|
||
'customerProducts.form.fields.priceUnit': 'Unit',
|
||
'customerProducts.form.fields.priceUnit.IRT': 'IRT',
|
||
'customerProducts.form.fields.priceUnit.USD': 'Dollar',
|
||
'customerProducts.form.fields.priceUnit.EUR': 'EURO',
|
||
'customerProducts.form.fields.priceUnit.AED': 'AED',
|
||
'customerProducts.form.fields.location': 'Location',
|
||
'customerProducts.form.fields.country': 'Country',
|
||
'customerProducts.form.fields.selectCountry': 'Select country',
|
||
'customerProducts.form.fields.province': 'Province',
|
||
'customerProducts.form.fields.selectProvince': 'Select province',
|
||
'customerProducts.form.fields.city': 'City',
|
||
'customerProducts.form.fields.selectCity': 'Select city',
|
||
'customerProducts.form.fields.searchCity': 'Search city…',
|
||
'customerProducts.form.fields.clearCity': 'Clear city',
|
||
'customerProducts.form.fields.noCities': 'No cities found',
|
||
'customerProducts.form.fields.deliveryNote': 'Pickup / delivery note',
|
||
'customerProducts.form.fields.deliveryNotePlaceholder': 'e.g. pickup only, evening delivery…',
|
||
'customerProducts.form.fields.district': 'District',
|
||
'customerProducts.form.fields.selectDistrict': 'Select district',
|
||
'customerProducts.form.fields.condition': 'Condition',
|
||
'customerProducts.form.fields.technicalNotes': 'Technical notes',
|
||
'customerProducts.form.fields.technicalNotesPlaceholder': 'Optional extra technical details…',
|
||
'customerProducts.form.condition.new': 'New',
|
||
'customerProducts.form.condition.stock': 'Stock',
|
||
'customerProducts.form.condition.needs_repair': 'Needs repair',
|
||
'customerProducts.form.condition.scrap': 'Scrap',
|
||
'customerProducts.form.images.thumbnail': 'Thumbnail',
|
||
'customerProducts.form.images.thumbnailUpload': 'Upload thumbnail',
|
||
'customerProducts.form.images.thumbnailHint': '3:2 landscape works best',
|
||
'customerProducts.form.images.thumbnailChange': 'Change thumbnail',
|
||
'customerProducts.form.images.thumbnailRemove': 'Remove thumbnail',
|
||
'customerProducts.form.images.zoom': 'Zoom',
|
||
'customerProducts.form.images.applyCrop': 'Apply crop',
|
||
'customerProducts.form.images.gallery': 'Gallery',
|
||
'customerProducts.form.images.galleryAdd': 'Add photos',
|
||
'customerProducts.form.images.galleryHint': 'You can select multiple images.',
|
||
'customerProducts.form.images.galleryRemove': 'Remove image {index}',
|
||
'customerProducts.form.technical.select': 'Select…',
|
||
'customerProducts.form.technical.needCategory': 'Choose a category in step 1 to load technical fields.',
|
||
'customerProducts.form.technical.empty': 'This category has no technical fields yet.',
|
||
'customerProducts.form.technical.categoryForm': 'Category technical form',
|
||
'customerProducts.form.technical.loading': 'Loading technical fields…',
|
||
'customerProducts.form.cancel': 'Cancel',
|
||
'customerProducts.form.next': 'Next',
|
||
'customerProducts.form.back': 'Back',
|
||
'customerProducts.form.submit': 'Submit',
|
||
'customerProducts.form.save': 'Save changes',
|
||
'customerProducts.form.submitting': 'Submitting…',
|
||
'customerProducts.form.submitSuccess': 'Product submitted for review.',
|
||
'customerProducts.form.updateSuccess': 'Product updated.',
|
||
'customerProducts.form.error.load': 'Unable to load your products.',
|
||
'customerProducts.form.error.loadDetail': 'Unable to load this product.',
|
||
'customerProducts.form.error.loadLocations': 'Unable to load locations.',
|
||
'customerProducts.form.error.loadCategories': 'Unable to load categories.',
|
||
'customerProducts.form.error.loadTechnicalForm': 'Unable to load the category technical form.',
|
||
'customerProducts.form.error.categoryRequired': 'Please select a category.',
|
||
'customerProducts.form.error.titleFaRequired': 'Please enter the Farsi name.',
|
||
'customerProducts.form.error.locationRequired': 'Please select country and city.',
|
||
'customerProducts.form.error.priceInvalid': 'Please enter a valid price.',
|
||
'customerProducts.form.error.conditionRequired': 'Please select a condition.',
|
||
'customerProducts.form.error.technicalRequired': 'Please fill required technical fields.',
|
||
'customerProducts.form.error.submit': 'Unable to submit the product.',
|
||
'customerProducts.form.error.update': 'Unable to update the product.',
|
||
'customerProducts.form.error.remove': 'Unable to remove the product.',
|
||
'customerProducts.form.error.promote': 'Unable to promote the product.',
|
||
|
||
'customerProducts.add': 'Add product',
|
||
'customerProducts.detailsTitle': 'Product details',
|
||
'customerProducts.detailsSubtitle': 'Review a customer-submitted listing.',
|
||
'customerProducts.backToList': 'Back to customer products',
|
||
'customerProducts.owner': 'Customer',
|
||
'customerProducts.location': 'Location',
|
||
'customerProducts.promote': 'Promote product',
|
||
'customerProducts.promoted': 'Promoted',
|
||
'customerProducts.promoteSuccess': 'Product promoted.',
|
||
'customerProducts.remove': 'Remove product',
|
||
'customerProducts.removeConfirm': 'Delete this customer product?',
|
||
'customerProducts.removeSuccess': 'Product deleted.',
|
||
'customerProducts.statusChange': 'Change status',
|
||
'customerProducts.statusModalTitle': 'Change product status',
|
||
'customerProducts.statusModalSave': 'Update status',
|
||
'customerProducts.statusModalHint': 'Choose how this listing should appear.',
|
||
'customerProducts.status.pending': 'Pending',
|
||
'customerProducts.status.published': 'Approved',
|
||
'customerProducts.status.rejected': 'Rejected',
|
||
'customerProducts.status.archived': 'Archived',
|
||
'customerProducts.statusSuccess': 'Status updated.',
|
||
'customerProducts.loading': 'Loading products…',
|
||
'customerProducts.error.load': 'Unable to load customer products.',
|
||
'customerProducts.error.loadDetail': 'Unable to load this product.',
|
||
'customerProducts.error.remove': 'Unable to delete the product.',
|
||
'customerProducts.error.promote': 'Unable to promote the product.',
|
||
'customerProducts.error.status': 'Unable to update status.',
|
||
'customerProducts.yes': 'Yes',
|
||
'customerProducts.edit': 'Edit product',
|
||
'customerProducts.approve': 'Approve product',
|
||
'customerProducts.editSoon': 'Customer product editing comes next.',
|
||
'customerProducts.toast.approved': 'Product approved.',
|
||
'customerProducts.priceUnavailable': 'Price on request',
|
||
|
||
'products.card.edit': 'Edit product',
|
||
'products.card.quickInfo': 'Quick info',
|
||
'products.card.variations': 'Manage variations',
|
||
'products.card.comments': 'View comments',
|
||
'products.card.technical': 'Technical data',
|
||
'products.card.remove': 'Remove product',
|
||
'products.card.draft': 'Draft',
|
||
|
||
'products.details.loading': 'Loading product...',
|
||
'products.details.notFound': 'Product not found.',
|
||
'products.details.errorLoad': 'Unable to load product.',
|
||
'products.details.back': 'Back to My Products',
|
||
'products.details.openGallery': 'Open image gallery',
|
||
'products.details.noImage': 'No image',
|
||
'products.details.viewImage': 'View image {index}',
|
||
'products.details.tabsAria': 'Product details',
|
||
'products.details.tab.technical': 'Technical Info',
|
||
'products.details.tab.comments': 'Comments',
|
||
'products.details.tab.reviews': 'Expert Reviews',
|
||
'products.details.technical.loading': 'Loading technical info...',
|
||
'products.details.technical.noForm':
|
||
'No technical form is defined for this product category.',
|
||
'products.details.technical.noData':
|
||
'No technical data has been added for this product yet.',
|
||
'products.details.technical.noCategory': 'Product has no category assigned.',
|
||
'products.details.technical.empty': 'No technical data available.',
|
||
'products.details.technical.errorLoad': 'Unable to load technical info.',
|
||
'products.details.comments.loading': 'Loading comments...',
|
||
'products.details.comments.empty': 'No comments yet for this product.',
|
||
'products.details.comments.errorLoad': 'Unable to load comments.',
|
||
'products.details.comments.errorApprove': 'Unable to update comment approval.',
|
||
'products.details.comments.errorDelete': 'Unable to delete comment.',
|
||
'products.details.reviews.loading': 'Loading expert reviews...',
|
||
'products.details.reviews.empty': 'No expert reviews yet.',
|
||
'products.details.reviews.errorLoad': 'Unable to load expert reviews.',
|
||
'products.details.reviews.errorApprove': 'Unable to update expert review approval.',
|
||
'products.details.reviews.errorDelete': 'Unable to delete expert review.',
|
||
'products.details.pending': 'Pending approval',
|
||
'products.details.approve': 'Approve',
|
||
'products.details.reject': 'Reject',
|
||
'products.details.remove': 'Remove',
|
||
'products.details.positivePoints': 'Positive points',
|
||
'products.details.negativePoints': 'Negative points',
|
||
'products.details.ratingAria': 'Rating {rate} out of 10',
|
||
|
||
'products.form.errorOptions': 'Unable to load form options.',
|
||
'products.form.errorSave': 'Unable to save product.',
|
||
'products.form.thumbnail': 'Thumbnail Image',
|
||
'products.form.thumbnailUpload': 'Upload thumbnail image',
|
||
'products.form.thumbnailHint': 'Click to select, then crop',
|
||
'products.form.thumbnailChange': 'Change thumbnail',
|
||
'products.form.thumbnailRemove': 'Remove thumbnail',
|
||
'products.form.zoom': 'Zoom',
|
||
'products.form.applyCrop': 'Apply Crop',
|
||
'products.form.category': 'Category',
|
||
'products.form.categoryPlaceholder': 'Search and select category...',
|
||
'products.form.brand': 'Brand',
|
||
'products.form.optional': '(optional)',
|
||
'products.form.brandPlaceholder': 'Search and select brand...',
|
||
'products.form.nameFa': 'Name (FA)',
|
||
'products.form.nameFaPlaceholder': 'نام محصول',
|
||
'products.form.nameEn': 'Name (EN)',
|
||
'products.form.nameEnPlaceholder': 'Product name',
|
||
'products.form.summary': 'Summary',
|
||
'products.form.summaryPlaceholder': 'Short summary shown in product listings',
|
||
'products.form.description': 'Description',
|
||
'products.form.descriptionPlaceholder': 'Full product description with formatting...',
|
||
'products.form.aiFill': 'AI',
|
||
'products.form.aiFillSummaryTitle': 'Generate summary with AI',
|
||
'products.form.aiFillDescriptionTitle': 'Generate description with AI',
|
||
'products.form.aiFillSubtitle': 'Edit the prompt below, then run it to fill this field.',
|
||
'products.form.aiPrompt': 'Prompt',
|
||
'products.form.aiPromptTooShort': 'Prompt must be at least 10 characters.',
|
||
'products.form.aiFillError': 'Unable to generate with AI.',
|
||
'products.form.aiFillNeedName': 'Enter a product name first.',
|
||
'products.form.aiGenerating': 'Generating…',
|
||
'products.form.aiRun': 'Run',
|
||
'products.form.aiSummaryFilled': 'Summary filled with AI.',
|
||
'products.form.aiDescriptionFilled': 'Description filled with AI.',
|
||
'products.form.images': 'Product Images',
|
||
'products.form.imagesAdd': 'Add images',
|
||
'products.form.imagesHint': 'Upload multiple product images. Click + to add more.',
|
||
'products.form.imagesRemove': 'Remove image {index}',
|
||
'products.form.tags': 'Tags',
|
||
'products.form.tagsPlaceholder': 'Type a tag and press Enter',
|
||
'products.form.cancel': 'Cancel',
|
||
'products.form.saving': 'Saving...',
|
||
'products.form.save': 'Save Product',
|
||
'products.form.update': 'Update Product',
|
||
|
||
'categories.page.subtitle': 'Manage your product categories and subcategories.',
|
||
'categories.loading': 'Loading categories...',
|
||
'categories.empty': 'No categories yet. Use + or AI to add categories.',
|
||
'categories.add': 'Add Category',
|
||
'categories.addSub': 'Add Sub Category',
|
||
'categories.edit': 'Edit Category',
|
||
'categories.addByAi': 'Fill categories by AI',
|
||
'categories.ai.title': 'Fill Categories with AI',
|
||
'categories.ai.subtitle':
|
||
'Edit the prompt below, then run it to generate and save a category tree.',
|
||
'categories.ai.error': 'Unable to generate categories with AI.',
|
||
'categories.deleteTitle': 'Delete Category',
|
||
'categories.deleteMessage':
|
||
'Are you sure you want to delete "{name}"? Subcategories will also be removed.',
|
||
'categories.tooltip.addSub': 'Add sub category',
|
||
'categories.tooltip.edit': 'Edit category',
|
||
'categories.tooltip.variations': 'Manage variations',
|
||
'categories.tooltip.technical': 'Technical data form',
|
||
'categories.tooltip.options': 'Category options',
|
||
'categories.tooltip.remove': 'Remove category',
|
||
'categories.tooltip.expand': 'Expand',
|
||
'categories.tooltip.collapse': 'Collapse',
|
||
'categories.modal.parent': 'Parent Category',
|
||
'categories.modal.nameFa': 'Name (FA)',
|
||
'categories.modal.nameEn': 'Name (EN)',
|
||
'categories.modal.description': 'Description',
|
||
'categories.modal.nameFaPlaceholder': 'نام دستهبندی',
|
||
'categories.modal.nameEnPlaceholder': 'Category name',
|
||
'categories.modal.descriptionPlaceholder': 'Short description of this category',
|
||
'categories.modal.cancel': 'Cancel',
|
||
'categories.modal.save': 'Save Category',
|
||
'categories.modal.saving': 'Saving...',
|
||
'categories.select.search': 'Search categories...',
|
||
'categories.select.none': '— None (root category) —',
|
||
'categories.select.empty': 'No categories found',
|
||
'categories.select.clear': 'Clear selection',
|
||
|
||
'categories.technical.title': 'Technical Data Form',
|
||
'categories.technical.loading': 'Loading form...',
|
||
'categories.technical.empty':
|
||
'No fields yet. Add text, textarea, select, or multi-select inputs.',
|
||
'categories.technical.fieldLabel': 'Field label',
|
||
'categories.technical.inputType': 'Input type',
|
||
'categories.technical.required': 'Required',
|
||
'categories.technical.removeField': 'Remove field',
|
||
'categories.technical.options': 'Options',
|
||
'categories.technical.optionN': 'Option {n}',
|
||
'categories.technical.removeOption': 'Remove option',
|
||
'categories.technical.addOption': 'Add option',
|
||
'categories.technical.addField': 'Add field',
|
||
'categories.technical.generateAi': 'Generate with AI',
|
||
'categories.technical.save': 'Save form',
|
||
'categories.technical.saving': 'Saving…',
|
||
'categories.technical.type.text': 'Text',
|
||
'categories.technical.type.textarea': 'Textarea',
|
||
'categories.technical.type.select': 'Select',
|
||
'categories.technical.type.multi_select': 'Multi',
|
||
'categories.technical.ai.title': 'Generate Technical Form with AI',
|
||
'categories.technical.ai.subtitle':
|
||
'Edit the prompt below, then run it to fill the form fields.',
|
||
'categories.technical.ai.error': 'Unable to generate technical form with AI.',
|
||
|
||
'brands.page.subtitle': 'Manage product brands for your store catalog.',
|
||
'brands.loading': 'Loading brands...',
|
||
'brands.empty': 'No brands yet. Click + to add one.',
|
||
'brands.add': 'Add Brand',
|
||
'brands.edit': 'Edit Brand',
|
||
'brands.deleteTitle': 'Delete Brand',
|
||
'brands.deleteMessage':
|
||
'Are you sure you want to delete "{name}"? Products linked to this brand will have their brand cleared.',
|
||
'brands.toast.created': 'Brand created.',
|
||
'brands.toast.updated': 'Brand updated.',
|
||
'brands.toast.deleted': 'Brand deleted.',
|
||
'brands.errorLoad': 'Unable to load brands.',
|
||
'brands.errorSave': 'Unable to save brand.',
|
||
'brands.errorDelete': 'Unable to delete brand.',
|
||
'brands.tooltip.edit': 'Edit brand',
|
||
'brands.tooltip.remove': 'Remove brand',
|
||
'brands.modal.logo': 'Brand logo',
|
||
'brands.modal.uploadLogo': 'Upload brand logo',
|
||
'brands.modal.logoHint': 'PNG only — transparent background recommended',
|
||
'brands.modal.changeLogo': 'Change logo',
|
||
'brands.modal.nameFa': 'Name (FA)',
|
||
'brands.modal.nameEn': 'Name (EN)',
|
||
'brands.modal.about': 'About',
|
||
'brands.modal.nameFaPlaceholder': 'نام برند',
|
||
'brands.modal.nameEnPlaceholder': 'Brand name',
|
||
'brands.modal.aboutPlaceholder': 'Short description of this brand',
|
||
'brands.modal.cancel': 'Cancel',
|
||
'brands.modal.save': 'Save Brand',
|
||
'brands.modal.saving': 'Saving...',
|
||
|
||
'productSettings.title': 'Product settings',
|
||
'productSettings.subtitle': 'Configure how comments and expert reviews are moderated.',
|
||
'productSettings.moderation': 'Moderation',
|
||
'productSettings.loading': 'Loading settings...',
|
||
'productSettings.errorLoad': 'Unable to load settings.',
|
||
'productSettings.errorSave': 'Unable to save settings.',
|
||
'productSettings.saved': 'Settings saved.',
|
||
'productSettings.commentsAuto': 'Auto-approve comments',
|
||
'productSettings.commentsAutoDesc':
|
||
'New comments are published immediately when submitted. You can still reject them later if needed.',
|
||
'productSettings.reviewsAuto': 'Auto-approve expert reviews',
|
||
'productSettings.reviewsAutoDesc':
|
||
'New expert reviews are published immediately when submitted. You can still reject them later if needed.',
|
||
|
||
'store.page.subtitle': 'Manage your store items, orders and settings.',
|
||
'store.card.items.desc': 'View and manage all items listed in your store.',
|
||
'store.card.items.link': 'View items',
|
||
'store.card.orders.desc': 'Track and manage customer orders and fulfillment.',
|
||
'store.card.orders.link': 'View orders',
|
||
'store.card.shipping.desc': 'Configure shipping rates, zones and delivery options.',
|
||
'store.card.shipping.link': 'Manage shipping',
|
||
'store.card.cards.desc': 'Manage saved shopping cards and payment methods.',
|
||
'store.card.cards.link': 'View cards',
|
||
'store.card.settings.desc': 'Configure store preferences, pages and themes.',
|
||
'store.card.settings.link': 'View settings',
|
||
|
||
'storeItems.subtitle': 'Products for sale with one or more priced variants.',
|
||
'storeItems.filters': 'Filters',
|
||
'storeItems.filterName': 'Name',
|
||
'storeItems.filterNamePlaceholder': 'Search by product name',
|
||
'storeItems.minPrice': 'Min price (IRT)',
|
||
'storeItems.maxPrice': 'Max price (IRT)',
|
||
'storeItems.onlyDiscounted': 'Only discounted',
|
||
'storeItems.search': 'Search',
|
||
'storeItems.clearFilters': 'Clear filters',
|
||
'storeItems.loading': 'Loading store items...',
|
||
'storeItems.empty': "You don't have any products for sale yet.",
|
||
'storeItems.emptyHint': 'Add products from your catalog to start selling.',
|
||
'storeItems.emptyFiltered': 'No store items match your filters.',
|
||
'storeItems.pagination':
|
||
'Page {page} / {totalPages} · {perPage} per page · {total} total',
|
||
'storeItems.errorLoad': 'Unable to load store items.',
|
||
'storeItems.errorRemove': 'Unable to remove store item.',
|
||
'storeItems.add': 'Add store items',
|
||
'storeItems.cartOpen': 'Open shopping cart, {count} items',
|
||
'storeItems.cartOne': 'item in cart',
|
||
'storeItems.cartMany': 'items in cart',
|
||
'storeItems.addedToCart': 'Added to shopping cart.',
|
||
'storeItems.deleteTitle': 'Remove from Store',
|
||
'storeItems.deleteMessage':
|
||
'Remove "{name}" and all {variants} from your store? This cannot be undone.',
|
||
'storeItems.card.inStock': '{count} in stock',
|
||
'storeItems.card.festival': 'Festival',
|
||
'storeItems.card.variantOne': '1 variant',
|
||
'storeItems.card.variantMany': '{count} variants',
|
||
'storeItems.card.edit': 'Edit store items',
|
||
'storeItems.card.discount': 'Set discounts',
|
||
'storeItems.card.festivalPoints': 'Festival reward points',
|
||
'storeItems.card.remove': 'Remove from store',
|
||
'storeItems.card.addToCart': 'Add to shopping cart',
|
||
'storeItems.pick.title': 'Choose variant',
|
||
'storeItems.pick.inStock': '{count} in stock',
|
||
'storeItems.create.title': 'Add Store Items',
|
||
'storeItems.create.subtitle': "Create sellable variants from a product's variations.",
|
||
'storeItems.create.productPlaceholder': 'Product — type 3+ characters to search',
|
||
'storeItems.create.loadingVariations': 'Loading product variations...',
|
||
'storeItems.create.price': 'Price (IRT)',
|
||
'storeItems.create.stock': 'Stock',
|
||
'storeItems.create.unlimited': 'Unlimited',
|
||
'storeItems.create.removeRow': 'Remove row',
|
||
'storeItems.create.addRow': 'Add row',
|
||
'storeItems.create.addAllProducts': 'Add all products',
|
||
'storeItems.create.addingAll': 'Creating for all products…',
|
||
'storeItems.create.addAllDone': 'Created {created}, skipped {skipped}, failed {failed}',
|
||
'storeItems.create.addAllConfirmTitle': 'Add store items for all products?',
|
||
'storeItems.create.addAllConfirmIntro':
|
||
'Sellable variants will be created for every product that is not yet in the store. Use this only when you want to add all products to the store at once.',
|
||
'storeItems.create.addAllConfirmMax':
|
||
'At most the first 5 options from variations will be created (not the full combination of all variations).',
|
||
'storeItems.create.addAllConfirmSkip':
|
||
'Products that are already in the store will be skipped.',
|
||
'storeItems.create.addAllConfirmHeavy':
|
||
'Especially with a large number of products, this is a heavy task — use it wisely.',
|
||
'storeItems.create.addAllAgree': 'I understand and want to continue',
|
||
'storeItems.create.addAllConfirm': 'Create all',
|
||
'storeItems.create.addAllResultTitle': 'Bulk create finished',
|
||
'storeItems.create.addAllDoneBtn': 'Done',
|
||
'storeItems.create.cancel': 'Cancel',
|
||
'storeItems.create.submit': 'Create store items',
|
||
'storeItems.create.submitting': 'Creating…',
|
||
'storeItems.create.errorProducts': 'Unable to load products.',
|
||
'storeItems.create.errorVariations': 'Unable to load product variations.',
|
||
'storeItems.create.errorCreate': 'Unable to create store items.',
|
||
'storeItems.price.contact': 'Contact for price',
|
||
'storeItems.edit.title': 'Edit Store Items',
|
||
'storeItems.edit.save': 'Save changes',
|
||
'storeItems.edit.saving': 'Saving…',
|
||
'storeItems.edit.errorSave': 'Unable to save store items.',
|
||
'storeItems.search.clear': 'Clear selection',
|
||
'storeItems.search.noProducts': 'No products available.',
|
||
'storeItems.search.noMatch': 'No matching products.',
|
||
'storeItems.search.minChars': 'Type at least {count} characters to search',
|
||
'storeItems.discount.title': 'Set Discounts',
|
||
'storeItems.discount.variant': 'Variant',
|
||
'storeItems.discount.regularPrice': 'Regular price',
|
||
'storeItems.discount.discountedPrice': 'Discounted price (IRT)',
|
||
'storeItems.discount.placeholder': 'No discount',
|
||
'storeItems.discount.save': 'Save discounts',
|
||
'storeItems.discount.saving': 'Saving…',
|
||
'storeItems.discount.errorSave': 'Unable to save discounts.',
|
||
|
||
'orders.title': 'Orders',
|
||
'orders.subtitle':
|
||
'Track customer orders placed through your website, application, or by operators.',
|
||
'orders.filters': 'Filters',
|
||
'orders.filter.orderId': 'Order ID',
|
||
'orders.filter.customer': 'Customer name or number',
|
||
'orders.filter.dateFrom': 'Date from',
|
||
'orders.filter.dateTo': 'Date to',
|
||
'orders.filter.minCost': 'Min cost (IRT)',
|
||
'orders.filter.maxCost': 'Max cost (IRT)',
|
||
'orders.search': 'Search',
|
||
'orders.clearFilters': 'Clear filters',
|
||
'orders.listTitle': 'Order list',
|
||
'orders.showing': 'Showing {from} - {to} of {total}',
|
||
'orders.none': 'No orders',
|
||
'orders.empty': 'No results found.',
|
||
'orders.loading': 'Loading orders...',
|
||
'orders.error.load': 'Unable to load orders.',
|
||
'orders.error.minMax': 'Minimum cost cannot be greater than maximum cost.',
|
||
'orders.error.remove': 'Unable to remove order.',
|
||
'orders.removed': 'Order {orderNumber} has been removed.',
|
||
'orders.col.orderId': 'Order ID',
|
||
'orders.col.customer': 'Customer',
|
||
'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.transactions': 'Transaction details',
|
||
'orders.remove': 'Remove order',
|
||
'orders.changeStep': 'Change step: {step}',
|
||
'orders.deleteTitle': 'Remove order?',
|
||
'orders.deleteMessage': 'Remove order {orderNumber}? This cannot be undone.',
|
||
'orders.source.operator': 'Operator',
|
||
'orders.source.app': 'Application',
|
||
'orders.source.website': 'Website',
|
||
|
||
'shoppingCards.title': 'Shopping cards',
|
||
'shoppingCards.subtitle': 'Saved operator carts waiting to be completed as orders.',
|
||
'shoppingCards.listTitle': 'Shopping card list',
|
||
'shoppingCards.none': 'No shopping cards',
|
||
'shoppingCards.empty': 'No results found.',
|
||
'shoppingCards.loading': 'Loading shopping cards...',
|
||
'shoppingCards.error.load': 'Unable to load shopping cards.',
|
||
'shoppingCards.error.remove': 'Unable to remove shopping card.',
|
||
'shoppingCards.removed': 'Shopping card removed.',
|
||
'shoppingCards.continue': 'Continue',
|
||
'shoppingCards.continueAria': 'Continue shopping card',
|
||
'shoppingCards.remove': 'Remove card',
|
||
'shoppingCards.removeAria': 'Remove shopping card',
|
||
'shoppingCards.deleteTitle': 'Remove shopping card?',
|
||
'shoppingCards.deleteMessage':
|
||
'Remove this shopping card for {name}? This cannot be undone.',
|
||
|
||
'storeSettings.title': 'Store settings',
|
||
'storeSettings.subtitle':
|
||
'Control online sales and define how orders move through fulfillment.',
|
||
'storeSettings.sales': 'Sales',
|
||
'storeSettings.onlineSell': 'Online sell',
|
||
'storeSettings.onlineSellDesc':
|
||
'When disabled, all sales on your website are turned off. Customers will not be able to place new orders online.',
|
||
'storeSettings.orderProcess': 'Order process',
|
||
'storeSettings.orderProcessDesc':
|
||
'Define the steps an order can move through — for example: under processing, ready for shipping, shipped, delivered.',
|
||
'storeSettings.labelEn': 'Label (EN)',
|
||
'storeSettings.labelFa': 'عنوان (فارسی)',
|
||
'storeSettings.stepEnAria': 'Order step {index} English label',
|
||
'storeSettings.stepFaAria': 'Order step {index} Farsi label',
|
||
'storeSettings.stepColorAria': 'Color for step {index}',
|
||
'storeSettings.moveUp': 'Move step up',
|
||
'storeSettings.moveDown': 'Move step down',
|
||
'storeSettings.removeStep': 'Remove step',
|
||
'storeSettings.addStep': 'Add step',
|
||
'storeSettings.saveSteps': 'Save steps',
|
||
'storeSettings.saving': 'Saving...',
|
||
'storeSettings.emptySteps':
|
||
'No order steps yet. Add the first step to define your workflow.',
|
||
'storeSettings.error.minSteps': 'Add at least one order process step.',
|
||
'storeSettings.error.labels': 'Every order step needs an English and Farsi label.',
|
||
'storeSettings.error.saveSteps': 'Unable to save order process steps.',
|
||
'storeSettings.stepsSaved': 'Order process steps saved.',
|
||
|
||
'customers.title': 'Users',
|
||
'customers.subtitle':
|
||
'View customers who have registered or ordered from your business.',
|
||
'customers.filters': 'Filters',
|
||
'customers.filter.name': 'Search by name',
|
||
'customers.filter.cell': 'Cell number',
|
||
'customers.filter.access': 'User role',
|
||
'customers.filter.access.all': 'All users',
|
||
'customers.filter.access.customers': 'Customers',
|
||
'customers.filter.access.managers': 'Managers',
|
||
'customers.search': 'Search',
|
||
'customers.clearFilters': 'Clear filters',
|
||
'customers.listTitle': 'User list',
|
||
'customers.showing': 'Showing {from} - {to} of {total}',
|
||
'customers.none': 'No customers',
|
||
'customers.empty': 'No results found.',
|
||
'customers.loading': 'Loading customers...',
|
||
'customers.pageMeta': 'Page {page} / {totalPages} · {pageSize} per page · {total} total',
|
||
'customers.col.name': 'Name',
|
||
'customers.col.role': 'Role',
|
||
'customers.col.cell': 'Cell number',
|
||
'customers.col.email': 'Email',
|
||
'customers.col.orders': 'Orders',
|
||
'customers.col.transactions': 'Transactions',
|
||
'customers.col.date': 'Date joined',
|
||
'customers.col.actions': 'Actions',
|
||
'customers.noOrders': 'No order yet',
|
||
'customers.disabled': 'Disabled',
|
||
'customers.enable': 'Enable customer',
|
||
'customers.disable': 'Disable customer',
|
||
'customers.enableAria': 'Enable {name}',
|
||
'customers.disableAria': 'Disable {name}',
|
||
'customers.edit': 'Edit customer',
|
||
'customers.sms': 'Send SMS',
|
||
'customers.tickets': 'Tickets',
|
||
'customers.invoices': 'View invoices',
|
||
'customers.remove': 'Remove customer',
|
||
'customers.add': 'Add customer',
|
||
'customers.error.load': 'Unable to load customers.',
|
||
'customers.error.update': 'Unable to update customer.',
|
||
'customers.error.remove': 'Unable to remove customer.',
|
||
'customers.toast.enabled': '"{name}" has been enabled.',
|
||
'customers.toast.disabled': '"{name}" has been disabled.',
|
||
'customers.toast.removed': '"{name}" has been removed.',
|
||
'customers.toast.updated': '"{name}" has been updated.',
|
||
'customers.toast.added': '"{name}" has been added.',
|
||
'customers.toast.smsSoon': 'SMS to {phone} is not available yet.',
|
||
'customers.toast.ticketsSoon': 'Tickets for "{name}" are not available yet.',
|
||
'customers.deleteTitle': 'Remove customer?',
|
||
'customers.deleteMessage':
|
||
'Remove "{name}" from your business? Their account will not be deleted.',
|
||
'customers.addModal.title': 'Add customer',
|
||
'customers.addModal.subtitle':
|
||
'Creates a verified customer account or links an existing user to your business.',
|
||
'customers.addModal.hint':
|
||
'Password is required only for new accounts. Existing users are added as verified customers.',
|
||
'customers.addModal.pointCreate':
|
||
'Creates a verified customer account or links an existing user to your business.',
|
||
'customers.addModal.pointPassword':
|
||
'Password is required only for new accounts. Existing users are added as verified customers.',
|
||
'customers.addModal.firstName': 'First name',
|
||
'customers.addModal.lastName': 'Last name',
|
||
'customers.addModal.firstNameFa': 'First name (FA)',
|
||
'customers.addModal.lastNameFa': 'Last name (FA)',
|
||
'customers.addModal.firstNameEn': 'First name (EN)',
|
||
'customers.addModal.lastNameEn': 'Last name (EN)',
|
||
'customers.addModal.cell': 'Cell number',
|
||
'customers.addModal.cellPlaceholder': '0912...',
|
||
'customers.addModal.password': 'Password (new users)',
|
||
'customers.addModal.passwordPlaceholder': 'Min. 8 characters',
|
||
'customers.addModal.passwordConfirm': 'Retype password',
|
||
'customers.addModal.passwordConfirmPlaceholder': 'Repeat password',
|
||
'customers.addModal.cancel': 'Cancel',
|
||
'customers.addModal.submit': 'Add customer',
|
||
'customers.addModal.error': 'Unable to add customer.',
|
||
'customers.addModal.errorPasswordMatch': 'Passwords do not match.',
|
||
'customers.addModal.errorPasswordLength': 'Password must be at least 8 characters.',
|
||
'customers.addModal.errorNameEnLength': 'English names must be at least 2 characters.',
|
||
'customers.access.title': 'Change access',
|
||
'customers.access.subtitle': 'Choose customer or manager access for {name}.',
|
||
'customers.access.customer': 'Customer',
|
||
'customers.access.manager': 'Manager',
|
||
'customers.access.role.admin': 'Admin',
|
||
'customers.access.role.editor': 'Editor',
|
||
'customers.access.role.viewer': 'Observer',
|
||
'customers.access.role.admin.desc':
|
||
'Can view and edit content, and also assign editors and observers.',
|
||
'customers.access.role.editor.desc': 'Can view content and edit it.',
|
||
'customers.access.role.viewer.desc':
|
||
'Can only view content. Best for order management and content quality review.',
|
||
'customers.access.hintSuperAdmin':
|
||
'Admin can manage other managers (except other admins). Editor and viewer manage content only.',
|
||
'customers.access.hintBusiness':
|
||
'Managers can be Editor or Observer. Only a super admin can assign Admin.',
|
||
'customers.access.cancel': 'Cancel',
|
||
'customers.access.save': 'Save',
|
||
'customers.access.error': 'Unable to update access.',
|
||
'customers.access.change': 'Change access',
|
||
'customers.access.ownerLocked': 'Business owner cannot be changed',
|
||
'customers.access.adminLocked': 'Only a super admin can change an admin',
|
||
'customers.access.badge.owner': 'Owner',
|
||
'customers.access.badge.admin': 'Admin',
|
||
'customers.access.badge.editor': 'Editor',
|
||
'customers.access.badge.viewer': 'Observer',
|
||
'customers.access.badge.manager': 'Manager',
|
||
'customers.toast.accessUpdated': 'Access updated to {role}.',
|
||
|
||
'blog.page.subtitle': 'Create and manage blog posts and categories.',
|
||
'blog.card.list.desc': 'View, edit and manage all your blog posts.',
|
||
'blog.card.list.link': 'View blogs',
|
||
'blog.card.new.desc': 'Create and publish a new blog post.',
|
||
'blog.card.new.link': 'Add blog',
|
||
'blog.card.categories.title': 'Blog Categories',
|
||
'blog.card.categories.desc': 'Organize your blog posts into categories and subcategories.',
|
||
'blog.card.categories.link': 'View categories',
|
||
'blog.card.settings.desc': 'Configure blog comment moderation and display options.',
|
||
'blog.card.settings.link': 'View settings',
|
||
|
||
'blog.list.subtitle': '{count} posts · View, edit and manage your blog content.',
|
||
'blog.list.loading': 'Loading blog posts...',
|
||
'blog.list.empty': 'No blog posts yet.',
|
||
'blog.list.emptyHint': 'Share news, stories, and updates with your audience.',
|
||
'blog.list.emptyCta': 'Write your first post',
|
||
'blog.list.errorLoad': 'Unable to load blog posts.',
|
||
'blog.list.errorDelete': 'Unable to delete blog post.',
|
||
'blog.list.errorVerify': 'Unable to update blog verification.',
|
||
'blog.list.toast.removed': 'Blog post removed.',
|
||
'blog.list.toast.verified': 'Blog verified.',
|
||
'blog.list.toast.unverified': 'Blog unverified.',
|
||
'blog.list.deleteTitle': 'Delete Blog Post',
|
||
'blog.list.deleteMessage':
|
||
'Are you sure you want to delete "{name}"? This action cannot be undone.',
|
||
'blog.list.addNew': 'Add new blog',
|
||
|
||
'blog.card.edit': 'Edit blog',
|
||
'blog.card.verify': 'Verify blog',
|
||
'blog.card.unverify': 'Unverify blog',
|
||
'blog.card.comments': 'View comments',
|
||
'blog.card.remove': 'Remove blog',
|
||
'blog.card.waiting': 'Waiting',
|
||
'blog.card.verified': 'Verified',
|
||
'blog.card.noSummary': 'No summary yet.',
|
||
|
||
'blog.settings.title': 'Blog settings',
|
||
'blog.settings.subtitle': 'Configure how blog comments are moderated.',
|
||
'blog.settings.commentsAuto': 'Auto-approve comments',
|
||
'blog.settings.commentsAutoDesc':
|
||
'New blog comments are published immediately when submitted. You can still reject them later if needed.',
|
||
'blog.settings.commentsAutoAria': 'Auto-approve blog comments',
|
||
|
||
'blog.categories.title': 'Blog Categories',
|
||
'blog.categories.subtitle': 'Organize your blog posts into categories and subcategories.',
|
||
'blog.categories.empty': 'No categories yet. Click + to add one.',
|
||
'blog.categories.errorLoad': 'Unable to load categories.',
|
||
'blog.categories.errorSave': 'Unable to save category.',
|
||
'blog.categories.errorDelete': 'Unable to delete category.',
|
||
|
||
'blog.form.add.subtitle': 'Create and publish a new blog post.',
|
||
'blog.form.edit.subtitle': 'Update blog post details and save changes.',
|
||
'blog.form.cancel': 'Cancel',
|
||
'blog.form.saving': 'Saving...',
|
||
'blog.form.save': 'Save Blog',
|
||
'blog.form.update': 'Update Blog',
|
||
'blog.form.errorSave': 'Unable to save blog post.',
|
||
'blog.form.toast.created': 'Blog post created.',
|
||
'blog.form.toast.updated': 'Blog post updated.',
|
||
'blog.form.titleImage': 'Title Image',
|
||
'blog.form.uploadTitleImage': 'Upload title image',
|
||
'blog.form.changeTitleImage': 'Change title image',
|
||
'blog.form.cropHint': 'Click to select, then crop',
|
||
'blog.form.type': 'Type',
|
||
'blog.form.category': 'Category',
|
||
'blog.form.categoryPlaceholder': 'Search and select category...',
|
||
'blog.form.title': 'Title',
|
||
'blog.form.titlePlaceholder': 'Blog post title',
|
||
'blog.form.abstract': 'Abstract',
|
||
'blog.form.abstractPlaceholder': 'Short summary shown in blog listings',
|
||
'blog.form.mainText': 'Main Text',
|
||
'blog.form.mainTextPlaceholder': 'Full blog content with formatting and images...',
|
||
'blog.form.tags': 'Tags',
|
||
'blog.form.type.article': 'Article',
|
||
'blog.form.type.news': 'News',
|
||
'blog.form.type.blog': 'Blog',
|
||
|
||
'blog.details.loading': 'Loading blog post...',
|
||
'blog.details.notFound': 'Blog post not found.',
|
||
'blog.details.errorLoad': 'Unable to load blog post.',
|
||
'blog.details.back': 'Back to My Blogs',
|
||
'blog.details.noContent': 'No content yet.',
|
||
'blog.details.author': 'Author',
|
||
|
||
'video.page.subtitle': 'Embed and manage YouTube and Aparat videos for your website.',
|
||
'video.card.list.desc': 'View, edit and manage all your videos.',
|
||
'video.card.list.link': 'View videos',
|
||
'video.card.new.desc': 'Add a new embedded video with cover image and description.',
|
||
'video.card.new.link': 'Add video',
|
||
'video.card.categories.title': 'Video Categories',
|
||
'video.card.categories.desc': 'Organize videos into categories and subcategories.',
|
||
'video.card.categories.link': 'View categories',
|
||
'video.card.settings.desc': 'Configure video comment moderation options.',
|
||
'video.card.settings.link': 'View settings',
|
||
|
||
'video.list.subtitle': '{count} videos · View, edit and manage your video content.',
|
||
'video.list.loading': 'Loading videos...',
|
||
'video.list.empty': 'No videos yet.',
|
||
'video.list.emptyHint': 'Share embedded videos from YouTube or Aparat with your audience.',
|
||
'video.list.emptyCta': 'Add your first video',
|
||
'video.list.errorLoad': 'Unable to load videos.',
|
||
'video.list.errorDelete': 'Unable to delete video.',
|
||
'video.list.toast.removed': 'Video removed.',
|
||
'video.list.deleteTitle': 'Delete Video',
|
||
'video.list.deleteMessage':
|
||
'Are you sure you want to delete "{name}"? This action cannot be undone.',
|
||
'video.list.addNew': 'Add new video',
|
||
|
||
'video.card.edit': 'Edit video',
|
||
'video.card.comments': 'View comments',
|
||
'video.card.remove': 'Remove video',
|
||
'video.card.noSummary': 'No summary yet.',
|
||
|
||
'video.settings.title': 'Video settings',
|
||
'video.settings.subtitle': 'Configure how video comments are moderated.',
|
||
'video.settings.commentsAuto': 'Auto-approve comments',
|
||
'video.settings.commentsAutoDesc':
|
||
'When enabled, new comments on videos are published immediately without manual approval.',
|
||
'video.settings.commentsAutoAria': 'Auto-approve video comments',
|
||
|
||
'video.categories.title': 'Video Categories',
|
||
'video.categories.subtitle': 'Organize your videos into categories and subcategories.',
|
||
'video.categories.empty': 'No categories yet. Click + to add one.',
|
||
'video.categories.errorLoad': 'Unable to load categories.',
|
||
'video.categories.errorSave': 'Unable to save category.',
|
||
'video.categories.errorDelete': 'Unable to delete category.',
|
||
|
||
'video.form.add.subtitle': 'Add an embedded video from YouTube or Aparat.',
|
||
'video.form.edit.subtitle': 'Update video details and save changes.',
|
||
'video.form.cancel': 'Cancel',
|
||
'video.form.saving': 'Saving...',
|
||
'video.form.save': 'Save Video',
|
||
'video.form.update': 'Update Video',
|
||
'video.form.errorSave': 'Unable to save video.',
|
||
'video.form.toast.created': 'Video created.',
|
||
'video.form.toast.updated': 'Video updated.',
|
||
'video.form.coverImage': 'Cover Image',
|
||
'video.form.uploadCoverImage': 'Upload cover image',
|
||
'video.form.changeCoverImage': 'Change cover image',
|
||
'video.form.cropHint': 'Click to select, then crop (3:2)',
|
||
'video.form.provider': 'Video Provider',
|
||
'video.form.category': 'Category',
|
||
'video.form.categoryPlaceholder': 'Search and select category...',
|
||
'video.form.titleFa': 'Title (FA)',
|
||
'video.form.titleFaPlaceholder': 'عنوان فارسی',
|
||
'video.form.titleEn': 'Title (EN)',
|
||
'video.form.titleEnPlaceholder': 'English title',
|
||
'video.form.abstract': 'Abstract',
|
||
'video.form.abstractPlaceholder': 'Short summary shown in video listings',
|
||
'video.form.embedCode': 'Embed Code',
|
||
'video.form.embedCodePlaceholder': 'Paste the full iframe embed code from YouTube or Aparat',
|
||
'video.form.description': 'Description',
|
||
'video.form.descriptionPlaceholder': 'Full video description with formatting...',
|
||
'video.form.tags': 'Tags',
|
||
|
||
'video.details.loading': 'Loading video...',
|
||
'video.details.notFound': 'Video not found.',
|
||
'video.details.errorLoad': 'Unable to load video.',
|
||
'video.details.back': 'Back to My Videos',
|
||
'video.details.noDescription': 'No description yet.',
|
||
'video.details.author': 'Author',
|
||
|
||
'instruction.page.subtitle': 'Create and manage tutorials with rich text and optional embedded video.',
|
||
'instruction.card.list.desc': 'View, edit and manage all your instructions.',
|
||
'instruction.card.list.link': 'View instructions',
|
||
'instruction.card.new.desc': 'Add a new tutorial with cover image, rich text, and optional video embed.',
|
||
'instruction.card.new.link': 'Add instruction',
|
||
'instruction.card.categories.title': 'Instruction Categories',
|
||
'instruction.card.categories.desc': 'Organize instructions into categories and subcategories.',
|
||
'instruction.card.categories.link': 'View categories',
|
||
'instruction.card.settings.desc': 'Configure instruction comment moderation options.',
|
||
'instruction.card.settings.link': 'View settings',
|
||
|
||
'instruction.list.subtitle': '{count} instructions · View, edit and manage your tutorials.',
|
||
'instruction.list.loading': 'Loading instructions...',
|
||
'instruction.list.empty': 'No instructions yet.',
|
||
'instruction.list.emptyHint': 'Publish tutorials with rich text and optional video for your audience.',
|
||
'instruction.list.emptyCta': 'Add your first instruction',
|
||
'instruction.list.errorLoad': 'Unable to load instructions.',
|
||
'instruction.list.errorDelete': 'Unable to delete instruction.',
|
||
'instruction.list.toast.removed': 'Instruction removed.',
|
||
'instruction.list.deleteTitle': 'Delete Instruction',
|
||
'instruction.list.deleteMessage':
|
||
'Are you sure you want to delete "{name}"? This action cannot be undone.',
|
||
'instruction.list.addNew': 'Add new instruction',
|
||
|
||
'instruction.card.edit': 'Edit instruction',
|
||
'instruction.card.comments': 'View comments',
|
||
'instruction.card.remove': 'Remove instruction',
|
||
'instruction.card.noSummary': 'No summary yet.',
|
||
|
||
'instruction.settings.title': 'Instruction settings',
|
||
'instruction.settings.subtitle': 'Configure how instruction comments are moderated.',
|
||
'instruction.settings.commentsAuto': 'Auto-approve comments',
|
||
'instruction.settings.commentsAutoDesc':
|
||
'When enabled, new comments on instructions are published immediately without manual approval.',
|
||
'instruction.settings.commentsAutoAria': 'Auto-approve instruction comments',
|
||
|
||
'instruction.categories.title': 'Instruction Categories',
|
||
'instruction.categories.subtitle': 'Organize your instructions into categories and subcategories.',
|
||
'instruction.categories.empty': 'No categories yet. Click + to add one.',
|
||
'instruction.categories.errorLoad': 'Unable to load categories.',
|
||
'instruction.categories.errorSave': 'Unable to save category.',
|
||
'instruction.categories.errorDelete': 'Unable to delete category.',
|
||
|
||
'instruction.form.add.subtitle': 'Add a tutorial with rich text and optional embedded video.',
|
||
'instruction.form.edit.subtitle': 'Update instruction details and save changes.',
|
||
'instruction.form.cancel': 'Cancel',
|
||
'instruction.form.saving': 'Saving...',
|
||
'instruction.form.save': 'Save Instruction',
|
||
'instruction.form.update': 'Update Instruction',
|
||
'instruction.form.errorSave': 'Unable to save instruction.',
|
||
'instruction.form.toast.created': 'Instruction created.',
|
||
'instruction.form.toast.updated': 'Instruction updated.',
|
||
'instruction.form.coverImage': 'Cover Image',
|
||
'instruction.form.uploadCoverImage': 'Upload cover image',
|
||
'instruction.form.changeCoverImage': 'Change cover image',
|
||
'instruction.form.cropHint': 'Click to select, then crop (3:2)',
|
||
'instruction.form.provider': 'Video provider',
|
||
'instruction.form.category': 'Category',
|
||
'instruction.form.categoryPlaceholder': 'Search and select category...',
|
||
'instruction.form.titleFa': 'Title (FA)',
|
||
'instruction.form.titleFaPlaceholder': 'عنوان فارسی',
|
||
'instruction.form.titleEn': 'Title (EN)',
|
||
'instruction.form.titleEnPlaceholder': 'English title',
|
||
'instruction.form.abstract': 'Abstract',
|
||
'instruction.form.abstractPlaceholder': 'Short summary shown in instruction listings',
|
||
'instruction.form.embedCode': 'Embed Code',
|
||
'instruction.form.embedCodePlaceholder': 'Paste the full iframe embed code from YouTube or Aparat',
|
||
'instruction.form.description': 'Description',
|
||
'instruction.form.descriptionPlaceholder': 'Full instruction description with formatting...',
|
||
'instruction.form.tags': 'Tags',
|
||
|
||
'instruction.details.loading': 'Loading instruction...',
|
||
'instruction.details.notFound': 'Instruction not found.',
|
||
'instruction.details.errorLoad': 'Unable to load instruction.',
|
||
'instruction.details.back': 'Back to My Instructions',
|
||
'instruction.details.noDescription': 'No description yet.',
|
||
'instruction.details.author': 'Author',
|
||
|
||
'portfolio.page.subtitle': 'Manage your portfolio items and showcase projects.',
|
||
'portfolio.card.list.desc': 'View, edit and manage all your portfolio items.',
|
||
'portfolio.card.list.link': 'View portfolios',
|
||
'portfolio.card.new.desc': 'Create and publish a new portfolio project.',
|
||
'portfolio.card.new.link': 'Add portfolio',
|
||
'portfolio.card.categories.title': 'Portfolio Categories',
|
||
'portfolio.card.categories.desc': 'Organize portfolio items into categories and subcategories.',
|
||
'portfolio.card.categories.link': 'View categories',
|
||
'portfolio.card.settings.desc': 'Configure portfolio comment moderation and display options.',
|
||
'portfolio.card.settings.link': 'View settings',
|
||
|
||
'portfolio.list.subtitle': '{count} items · View, edit and manage your portfolio content.',
|
||
'portfolio.list.loading': 'Loading portfolios...',
|
||
'portfolio.list.empty': 'No portfolio items found.',
|
||
'portfolio.list.errorLoad': 'Unable to load portfolios.',
|
||
'portfolio.list.errorDelete': 'Unable to delete portfolio.',
|
||
'portfolio.list.errorMove': 'Unable to move portfolio.',
|
||
'portfolio.list.toast.removed': 'Portfolio removed.',
|
||
'portfolio.list.toast.movedUp': 'Portfolio moved up.',
|
||
'portfolio.list.deleteTitle': 'Delete Portfolio',
|
||
'portfolio.list.deleteMessage':
|
||
'Are you sure you want to delete "{name}"? This action cannot be undone.',
|
||
'portfolio.list.addNew': 'Add new portfolio',
|
||
|
||
'portfolio.card.moveUp': 'Move up',
|
||
'portfolio.card.edit': 'Edit portfolio',
|
||
'portfolio.card.comments': 'View comments',
|
||
'portfolio.card.remove': 'Remove portfolio',
|
||
'portfolio.card.noSummary': 'No summary yet.',
|
||
|
||
'portfolio.settings.title': 'Portfolio settings',
|
||
'portfolio.settings.subtitle': 'Configure how portfolio comments are moderated.',
|
||
'portfolio.settings.commentsAuto': 'Auto-approve comments',
|
||
'portfolio.settings.commentsAutoDesc':
|
||
'New portfolio comments are published immediately when submitted. You can still reject them later if needed.',
|
||
'portfolio.settings.commentsAutoAria': 'Auto-approve portfolio comments',
|
||
|
||
'portfolio.categories.title': 'Portfolio Categories',
|
||
'portfolio.categories.subtitle':
|
||
'Organize your portfolio items into categories and subcategories.',
|
||
'portfolio.categories.empty': 'No categories yet. Click + to add one.',
|
||
'portfolio.categories.errorLoad': 'Unable to load categories.',
|
||
'portfolio.categories.errorSave': 'Unable to save category.',
|
||
'portfolio.categories.errorDelete': 'Unable to delete category.',
|
||
|
||
'portfolio.form.add.subtitle': 'Create and publish a new portfolio project.',
|
||
'portfolio.form.edit.subtitle': 'Update portfolio details and save changes.',
|
||
'portfolio.form.cancel': 'Cancel',
|
||
'portfolio.form.saving': 'Saving...',
|
||
'portfolio.form.save': 'Save Portfolio',
|
||
'portfolio.form.update': 'Update Portfolio',
|
||
'portfolio.form.errorSave': 'Unable to save portfolio.',
|
||
'portfolio.form.toast.created': 'Portfolio created.',
|
||
'portfolio.form.toast.updated': 'Portfolio updated.',
|
||
'portfolio.form.titleImage': 'Title Image',
|
||
'portfolio.form.aspectAria': 'Title image aspect ratio',
|
||
'portfolio.form.aspect.square': 'Square',
|
||
'portfolio.form.aspect.reel': '9:16 (Reel)',
|
||
'portfolio.form.uploadTitleImage': 'Upload title image',
|
||
'portfolio.form.changeTitleImage': 'Change title image',
|
||
'portfolio.form.cropHint': 'Click to select, then crop',
|
||
'portfolio.form.category': 'Category',
|
||
'portfolio.form.categoryPlaceholder': 'Search and select category...',
|
||
'portfolio.form.titleFa': 'Title (FA)',
|
||
'portfolio.form.titleFaPlaceholder': 'عنوان فارسی',
|
||
'portfolio.form.titleEn': 'Title (EN)',
|
||
'portfolio.form.titleEnPlaceholder': 'English title',
|
||
'portfolio.form.abstract': 'Abstract',
|
||
'portfolio.form.abstractPlaceholder': 'Short summary shown in portfolio listings',
|
||
'portfolio.form.mainText': 'Main Text',
|
||
'portfolio.form.mainTextPlaceholder': 'Full portfolio content with formatting and images...',
|
||
'portfolio.form.gallery': 'Image Gallery',
|
||
'portfolio.form.tags': 'Tags',
|
||
|
||
'portfolio.details.loading': 'Loading portfolio...',
|
||
'portfolio.details.notFound': 'Portfolio not found.',
|
||
'portfolio.details.errorLoad': 'Unable to load portfolio.',
|
||
'portfolio.details.back': 'Back to My Portfolios',
|
||
'portfolio.details.noContent': 'No content yet.',
|
||
'portfolio.details.gallery': 'Gallery',
|
||
'portfolio.details.galleryImage': 'View gallery image {index}',
|
||
|
||
'website.page.subtitle': 'Manage public website content, forms, and customer-facing settings.',
|
||
'website.card.staticImages.desc':
|
||
'Replace named website images (heroes, banners, galleries) without a deploy.',
|
||
'website.card.staticImages.link': 'Manage images',
|
||
'website.card.sliders.desc': 'Manage homepage banner sliders and promotional image carousels.',
|
||
'website.card.sliders.link': 'Manage sliders',
|
||
'website.card.specialCategories.desc':
|
||
'Highlight selected product categories on your website homepage.',
|
||
'website.card.specialCategories.link': 'Manage categories',
|
||
'website.card.specialBrands.desc': 'Showcase partner or featured brands on your website homepage.',
|
||
'website.card.specialBrands.link': 'Manage brands',
|
||
'website.card.specialItems.desc':
|
||
'Curate featured store items into categories for your website carousels.',
|
||
'website.card.specialItems.link': 'Manage special items',
|
||
'website.card.contact.desc': 'View submissions from your website contact form.',
|
||
'website.card.contact.link': 'View submissions',
|
||
'website.card.subscriptions.desc':
|
||
'Manage newsletter sign-ups and subscription options for visitors.',
|
||
'website.card.subscriptions.link': 'Manage subscriptions',
|
||
'website.card.faq.desc': 'Create and organize frequently asked questions for your website.',
|
||
'website.card.faq.link': 'Manage FAQ',
|
||
'website.card.badges.desc': 'Show trust badges, certifications, and highlights on your website.',
|
||
'website.card.badges.link': 'Manage badges',
|
||
'settings.subtitle': 'Configure online payment gateways and checkout payment options.',
|
||
|
||
'website.scrollLeft': 'Scroll left',
|
||
'website.scrollRight': 'Scroll right',
|
||
'website.editGroup': 'Edit group',
|
||
'website.deleteGroup': 'Delete group',
|
||
'website.removeFromGroup': 'Remove from group',
|
||
'website.save': 'Save',
|
||
'website.create': 'Create',
|
||
'website.adding': 'Adding...',
|
||
'website.saving': 'Saving...',
|
||
'website.groupTitle': 'Group title',
|
||
'website.groupTitlePlaceholder': 'e.g. Featured, Best Sellers',
|
||
'website.groupKey': 'Key (English)',
|
||
'website.groupKeyPlaceholder': 'e.g. top-selling',
|
||
'website.groupKeyHint':
|
||
'English only — letters, numbers, hyphens, underscores. Used by websites.',
|
||
'website.groupKeyError':
|
||
'Use English letters, numbers, hyphens, or underscores only — e.g. special-sale.',
|
||
'website.groupValue': 'Display title',
|
||
'website.groupValuePlaceholder': 'Shown on the website in any language',
|
||
'website.removeFromGroupTitle': 'Remove from Group',
|
||
'website.removeFromGroupMessage': 'Remove "{name}" from "{group}"?',
|
||
'website.pick.addTo': 'Add to {title}',
|
||
'website.pick.addOneCategory': 'Add 1 category',
|
||
'website.pick.addCategories': 'Add {count} categories',
|
||
'website.pick.addOneBrand': 'Add 1 brand',
|
||
'website.pick.addBrands': 'Add {count} brands',
|
||
|
||
'website.sliders.subtitle': 'Manage homepage banner slides in a 9:4 gallery.',
|
||
'website.sliders.loading': 'Loading slides...',
|
||
'website.sliders.errorLoad': 'Unable to load slides.',
|
||
'website.sliders.errorUpload': 'Unable to upload slide image.',
|
||
'website.sliders.errorAdd': 'Unable to add slide.',
|
||
'website.sliders.errorRemove': 'Unable to remove slide.',
|
||
'website.sliders.toastAdded': 'Slide added.',
|
||
'website.sliders.toastRemoved': 'Slide removed.',
|
||
'website.sliders.removeTitle': 'Remove Slide',
|
||
'website.sliders.removeMessage': 'Remove this slide from the homepage slider?',
|
||
'website.sliders.defaultTitle': 'Homepage slider',
|
||
'website.sliders.addSlide': 'Add slide',
|
||
'website.sliders.removeSlide': 'Remove slide',
|
||
'website.sliders.untitled': 'Untitled slide',
|
||
'website.sliders.slideAlt': 'Slider slide',
|
||
'website.sliders.modal.title': 'Add slide',
|
||
'website.sliders.modal.image': 'Slide image',
|
||
'website.sliders.modal.upload': 'Upload slide image',
|
||
'website.sliders.modal.hint': '9:4 banner ratio recommended',
|
||
'website.sliders.modal.changeImage': 'Change image',
|
||
'website.sliders.modal.titleOptional': 'Title (optional)',
|
||
'website.sliders.modal.titlePlaceholder': 'e.g. Summer sale',
|
||
'website.sliders.modal.linkOptional': 'Link URL (optional)',
|
||
'website.sliders.modal.addSlide': 'Add slide',
|
||
|
||
'website.linkGenerator.generate': 'Generate',
|
||
'website.linkGenerator.title': 'Generate link',
|
||
'website.linkGenerator.subtitle': 'Pick a content type, then a category. The link is inserted into the field.',
|
||
'website.linkGenerator.type': 'Type',
|
||
'website.linkGenerator.category': 'Category',
|
||
'website.linkGenerator.pickCategory': 'Search categories...',
|
||
'website.linkGenerator.insert': 'Insert link',
|
||
'website.linkGenerator.loading': 'Loading categories...',
|
||
'website.linkGenerator.empty': 'No categories for this type yet.',
|
||
'website.linkGenerator.errorLoad': 'Unable to load categories.',
|
||
'website.linkGenerator.types.product': 'Product',
|
||
'website.linkGenerator.types.storeItem': 'Store item',
|
||
'website.linkGenerator.types.blog': 'Blog',
|
||
'website.linkGenerator.types.portfolio': 'Portfolio',
|
||
'website.linkGenerator.types.video': 'Video',
|
||
|
||
'website.staticImages.subtitle':
|
||
'Websites load these by key from GET /tenants/{domain}/website/static-images',
|
||
'website.staticImages.loading': 'Loading static images...',
|
||
'website.staticImages.empty': 'No image slots yet for this website.',
|
||
'website.staticImages.emptyPage': 'No static images on this page yet.',
|
||
'website.staticImages.errorLoad': 'Unable to load static images.',
|
||
'website.staticImages.errorCreate': 'Unable to create image slot.',
|
||
'website.staticImages.errorUpdate': 'Unable to update image slot.',
|
||
'website.staticImages.errorDelete': 'Unable to delete image slot.',
|
||
'website.staticImages.errorUpload': 'Unable to upload image.',
|
||
'website.staticImages.errorAddImage': 'Unable to save image.',
|
||
'website.staticImages.errorRemoveImage': 'Unable to remove image.',
|
||
'website.staticImages.toastCreated': 'Image slot created.',
|
||
'website.staticImages.toastUpdated': 'Image slot updated.',
|
||
'website.staticImages.toastDeleted': 'Image slot deleted.',
|
||
'website.staticImages.toastImageSaved': 'Image saved.',
|
||
'website.staticImages.toastImageRemoved': 'Image removed.',
|
||
'website.staticImages.addSlot': 'Add image slot',
|
||
'website.staticImages.createTitle': 'Add image slot',
|
||
'website.staticImages.editTitle': 'Edit image slot',
|
||
'website.staticImages.deleteTitle': 'Delete image slot',
|
||
'website.staticImages.deleteMessage':
|
||
'Delete slot {label}? The website placeholder will have no image until you add one again.',
|
||
'website.staticImages.addImage': 'Add image',
|
||
'website.staticImages.replaceImage': 'Replace image',
|
||
'website.staticImages.editImage': 'Edit image',
|
||
'website.staticImages.imageInfo': 'Image details',
|
||
'website.staticImages.removeImage': 'Remove image',
|
||
'website.staticImages.removeImageTitle': 'Remove image',
|
||
'website.staticImages.removeImageMessage': 'Remove this image from the slot?',
|
||
'website.staticImages.slotLabel': 'Label',
|
||
'website.staticImages.slotLabelPlaceholder': 'e.g. Home hero',
|
||
'website.staticImages.slotKey': 'Key (matches website placeholder)',
|
||
'website.staticImages.kind': 'Type',
|
||
'website.staticImages.page': 'Page',
|
||
'website.staticImages.pageHome': 'Home',
|
||
'website.staticImages.pageProducts': 'Products',
|
||
'website.staticImages.pageProduct': 'Product',
|
||
'website.staticImages.pageCategories': 'Categories',
|
||
'website.staticImages.pageBrands': 'Brands',
|
||
'website.staticImages.pageBlog': 'Blog',
|
||
'website.staticImages.pageAbout': 'About',
|
||
'website.staticImages.pageContact': 'Contact',
|
||
'website.staticImages.kindSingle': 'Single image',
|
||
'website.staticImages.kindList': 'List (add more)',
|
||
'website.staticImages.kindFixed': '{count} images',
|
||
'website.staticImages.itemCount': 'Number of images',
|
||
'website.staticImages.itemCountPlaceholder': 'Empty = add more freely',
|
||
'website.staticImages.itemCountHint': 'e.g. 2 for a two-banner row. Leave empty for an unlimited list.',
|
||
'website.staticImages.aspectRatio': 'Aspect ratio',
|
||
'website.staticImages.recommendedWidth': 'Recommended width (px)',
|
||
'website.staticImages.cropHint': '{ratio} recommended',
|
||
'website.staticImages.titleFa': 'Title (FA)',
|
||
'website.staticImages.titleEn': 'Title (EN)',
|
||
'website.staticImages.titleFaPlaceholder': 'Persian title',
|
||
'website.staticImages.titleEnPlaceholder': 'English title',
|
||
'website.staticImages.subtext': 'Subtext',
|
||
'website.staticImages.subtextPlaceholder': 'Optional caption under the title',
|
||
|
||
'website.specialCategories.subtitle':
|
||
'Curate featured product categories into groups for your website homepage.',
|
||
'website.specialCategories.loading': 'Loading special category groups...',
|
||
'website.specialCategories.empty':
|
||
'No special category groups yet. Use the + button to create one, then add categories to each carousel.',
|
||
'website.specialCategories.errorLoad': 'Unable to load special category groups.',
|
||
'website.specialCategories.errorCreate': 'Unable to create special category group.',
|
||
'website.specialCategories.errorUpdate': 'Unable to update special category group.',
|
||
'website.specialCategories.errorDelete': 'Unable to delete special category group.',
|
||
'website.specialCategories.errorAdd': 'Unable to add categories.',
|
||
'website.specialCategories.errorRemove': 'Unable to remove category.',
|
||
'website.specialCategories.toastCreated': 'Special category group created.',
|
||
'website.specialCategories.toastUpdated': 'Special category group updated.',
|
||
'website.specialCategories.toastDeleted': 'Special category group deleted.',
|
||
'website.specialCategories.toastAdded': 'Categories added to group.',
|
||
'website.specialCategories.toastRemoved': 'Removed from special category group.',
|
||
'website.specialCategories.addFab': 'Add special category group',
|
||
'website.specialCategories.addTooltip': 'Add categories to {title}',
|
||
'website.specialCategories.createTitle': 'Add Special Category Group',
|
||
'website.specialCategories.editTitle': 'Edit Special Category Group',
|
||
'website.specialCategories.deleteTitle': 'Delete Special Category Group',
|
||
'website.specialCategories.deleteMessage':
|
||
'Delete "{title}"? Product categories will remain in your catalog.',
|
||
'website.specialCategories.pickSubtitle':
|
||
'Select product categories to feature in this group.',
|
||
'website.specialCategories.pickLoading': 'Loading categories...',
|
||
'website.specialCategories.pickEmpty': 'All categories are already in this group.',
|
||
'website.specialCategories.pickSearch': 'Type 3+ characters to search categories',
|
||
'website.specialCategories.pickErrorLoad': 'Unable to load categories.',
|
||
|
||
'website.specialBrands.subtitle': 'Curate featured brands into groups for your website homepage.',
|
||
'website.specialBrands.loading': 'Loading special brand groups...',
|
||
'website.specialBrands.empty':
|
||
'No special brand groups yet. Use the + button to create one, then add brands to each carousel.',
|
||
'website.specialBrands.errorLoad': 'Unable to load special brand groups.',
|
||
'website.specialBrands.errorCreate': 'Unable to create special brand group.',
|
||
'website.specialBrands.errorUpdate': 'Unable to update special brand group.',
|
||
'website.specialBrands.errorDelete': 'Unable to delete special brand group.',
|
||
'website.specialBrands.errorAdd': 'Unable to add brands.',
|
||
'website.specialBrands.errorRemove': 'Unable to remove brand.',
|
||
'website.specialBrands.toastCreated': 'Special brand group created.',
|
||
'website.specialBrands.toastUpdated': 'Special brand group updated.',
|
||
'website.specialBrands.toastDeleted': 'Special brand group deleted.',
|
||
'website.specialBrands.toastAdded': 'Brands added to group.',
|
||
'website.specialBrands.toastRemoved': 'Removed from special brand group.',
|
||
'website.specialBrands.addFab': 'Add special brand group',
|
||
'website.specialBrands.addTooltip': 'Add brands to {title}',
|
||
'website.specialBrands.createTitle': 'Add Special Brand Group',
|
||
'website.specialBrands.editTitle': 'Edit Special Brand Group',
|
||
'website.specialBrands.deleteTitle': 'Delete Special Brand Group',
|
||
'website.specialBrands.deleteMessage':
|
||
'Delete "{title}"? Brands will remain in your catalog.',
|
||
'website.specialBrands.pickSubtitle': 'Select brands to feature in this group.',
|
||
'website.specialBrands.pickLoading': 'Loading brands...',
|
||
'website.specialBrands.pickEmpty': 'All brands are already in this group.',
|
||
'website.specialBrands.pickSearch': 'Type 3+ characters to search brands',
|
||
'website.specialBrands.pickErrorLoad': 'Unable to load brands.',
|
||
|
||
'website.specialItems.subtitle':
|
||
'Curate featured store items into categories for your website carousels.',
|
||
'website.specialItems.loading': 'Loading special categories...',
|
||
'website.specialItems.empty':
|
||
'No special categories yet. Use the + button to create one, then add store items to each carousel.',
|
||
'website.specialItems.errorLoad': 'Unable to load special categories.',
|
||
'website.specialItems.errorCreate': 'Unable to create special category.',
|
||
'website.specialItems.errorUpdate': 'Unable to update special category.',
|
||
'website.specialItems.errorDelete': 'Unable to delete special category.',
|
||
'website.specialItems.errorAdd': 'Unable to add store items.',
|
||
'website.specialItems.errorRemove': 'Unable to remove store item.',
|
||
'website.specialItems.toastCreated': 'Special category created.',
|
||
'website.specialItems.toastUpdated': 'Special category updated.',
|
||
'website.specialItems.toastDeleted': 'Special category deleted.',
|
||
'website.specialItems.toastAdded': 'Store items added to special category.',
|
||
'website.specialItems.toastRemoved': 'Removed from special category.',
|
||
'website.specialItems.addFab': 'Add special category',
|
||
'website.specialItems.createTitle': 'Add Special Category',
|
||
'website.specialItems.editTitle': 'Edit Special Category',
|
||
'website.specialItems.deleteTitle': 'Delete Special Category',
|
||
'website.specialItems.deleteMessage':
|
||
'Delete "{title}"? Store items will remain in your catalog.',
|
||
'website.specialItems.removeTitle': 'Remove from Special',
|
||
'website.specialItems.removeMessage':
|
||
'Remove "{name}" from "{group}"?',
|
||
'website.specialItems.editCategory': 'Edit category',
|
||
'website.specialItems.deleteCategory': 'Delete category',
|
||
'website.specialItems.scrollLeft': 'Scroll left',
|
||
'website.specialItems.scrollRight': 'Scroll right',
|
||
'website.specialItems.addItemsTo': 'Add store items to {title}',
|
||
'website.specialItems.removeFromSpecial': 'Remove from special',
|
||
'website.specialItems.pickSubtitle': 'Select store items to feature in this category.',
|
||
'website.specialItems.pickLoading': 'Loading store items...',
|
||
'website.specialItems.pickEmpty': 'All store items are already in this category.',
|
||
'website.specialItems.pickSearch': 'Type 3+ characters to search store items',
|
||
'website.specialItems.pickErrorLoad': 'Unable to load store items.',
|
||
'website.pick.addOneItem': 'Add 1 item',
|
||
'website.pick.addItems': 'Add {count} items',
|
||
|
||
'website.contact.subtitle': 'Submissions received from your website contact form.',
|
||
'website.contact.filters': 'Filters',
|
||
'website.contact.searchPlaceholder': 'Title, name, email, cell number, or message',
|
||
'website.contact.search': 'Search',
|
||
'website.contact.clearFilters': 'Clear filters',
|
||
'website.contact.listTitle': 'Submissions',
|
||
'website.contact.showing': 'Showing {from} - {to} of {total}',
|
||
'website.contact.none': 'No submissions',
|
||
'website.contact.empty': 'No submissions found.',
|
||
'website.contact.loading': 'Loading...',
|
||
'website.contact.errorLoad': 'Unable to load contact submissions.',
|
||
'website.contact.pageMeta': 'Page {page} / {totalPages} · {pageSize} per page · {total} total',
|
||
'website.contact.col.title': 'Title',
|
||
'website.contact.col.name': 'Name',
|
||
'website.contact.col.email': 'Email',
|
||
'website.contact.col.cell': 'Cell number',
|
||
'website.contact.col.date': 'Date',
|
||
'website.contact.col.time': 'Time',
|
||
'website.contact.viewSubmission': 'View submission from {name}',
|
||
'website.contact.detailTitle': 'Contact submission',
|
||
'website.contact.detailMessage': 'Message',
|
||
|
||
'website.subscriptions.subtitle': 'Manage newsletter and subscription sign-ups on your website.',
|
||
'website.subscriptions.lead': 'Control how visitors subscribe to updates from your business.',
|
||
'website.subscriptions.note': 'Subscription management will be connected here. Planned options include:',
|
||
'website.subscriptions.feature.enable': 'Enable or disable subscription forms',
|
||
'website.subscriptions.feature.welcome': 'Custom welcome message and consent text',
|
||
'website.subscriptions.feature.export': 'Export or view subscriber list',
|
||
|
||
'website.faq.subtitle': 'Create and organize frequently asked questions for your website.',
|
||
'website.faq.lead':
|
||
'Build an FAQ section to answer common customer questions before they contact you.',
|
||
'website.faq.note': 'FAQ editor will be connected here. Planned options include:',
|
||
'website.faq.feature.crud': 'Add, edit, and reorder questions and answers',
|
||
'website.faq.feature.groups': 'Group items by category',
|
||
'website.faq.feature.publish': 'Publish or hide individual entries',
|
||
|
||
'website.badges.subtitle': 'Show trust badges and highlights on your public website.',
|
||
'website.badges.lead':
|
||
'Display certifications, guarantees, and trust signals to website visitors.',
|
||
'website.badges.note': 'Badge management will be connected here. Planned options include:',
|
||
'website.badges.feature.upload': 'Upload badge images with title and link',
|
||
'website.badges.feature.reorder': 'Reorder badges for homepage or footer display',
|
||
'website.badges.feature.toggle': 'Toggle visibility per badge',
|
||
|
||
'website.ePayment.subtitle': 'Configure online payment methods for your website checkout.',
|
||
'website.ePayment.master': 'Enable online payments',
|
||
'website.ePayment.masterDesc':
|
||
'When a gateway is enabled and configured, customers can use it at website checkout or in the app.',
|
||
'website.ePayment.gateway.mellat': 'Bank Mellat (Behpardakht)',
|
||
'website.ePayment.gateway.mellatDesc':
|
||
'Enter terminal ID, username, and password from the Mellat merchant panel.',
|
||
'website.ePayment.gateway.sep': 'SEP (Saman Kish)',
|
||
'website.ePayment.gateway.sepDesc': 'Saman electronic payment — coming soon.',
|
||
'website.ePayment.gateway.snappay': 'Snapp Pay',
|
||
'website.ePayment.gateway.snappayDesc': 'Snapp Pay checkout — coming soon.',
|
||
'website.ePayment.gateway.digipay': 'DigiPay',
|
||
'website.ePayment.gateway.digipayDesc': 'DigiPay checkout — coming soon.',
|
||
'website.ePayment.gateway.zarinpal': 'Zarinpal',
|
||
'website.ePayment.gateway.zarinpalDesc':
|
||
'Enter your Merchant ID from the ZarinPal panel. Customers can choose ZarinPal or Mellat at checkout when both are enabled.',
|
||
'website.ePayment.comingSoon': 'Coming soon',
|
||
'website.ePayment.terminalId': 'Terminal ID',
|
||
'website.ePayment.username': 'Username',
|
||
'website.ePayment.password': 'Password',
|
||
'website.ePayment.merchantId': 'Merchant ID',
|
||
'website.ePayment.merchantIdPlaceholder': 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx',
|
||
'website.ePayment.sandbox': 'Sandbox mode',
|
||
'website.ePayment.sandboxDesc':
|
||
'Use ZarinPal sandbox endpoints for testing. Turn off for live payments.',
|
||
'website.ePayment.passwordSet': 'saved',
|
||
'website.ePayment.passwordPlaceholder': 'Enter gateway password',
|
||
'website.ePayment.passwordPlaceholderSet': 'Leave blank to keep current password',
|
||
'website.ePayment.showPassword': 'Show password',
|
||
'website.ePayment.hidePassword': 'Hide password',
|
||
'website.ePayment.saveCredentials': 'Save credentials',
|
||
'website.ePayment.error.credentials': 'Terminal ID and username are required when Mellat is enabled.',
|
||
'website.ePayment.error.passwordRequired': 'Password is required the first time you enable Mellat.',
|
||
'website.ePayment.error.zarinpalMerchant': 'Merchant ID is required when ZarinPal is enabled.',
|
||
|
||
'title.signIn': 'Sign in',
|
||
'title.home': 'Home',
|
||
'title.profile': 'Profile',
|
||
'title.businessProfile': 'Business Profile',
|
||
'title.products': 'Products',
|
||
'title.myProducts': 'My Products',
|
||
'title.addProduct': 'Add New Product',
|
||
'title.editProduct': 'Edit Product',
|
||
'title.productDetails': 'Product Details',
|
||
'title.categories': 'Categories',
|
||
'title.brands': 'Brands',
|
||
'title.settings': 'Settings',
|
||
'title.store': 'Store',
|
||
'title.storeItems': 'My Store Items',
|
||
'title.orders': 'My Orders',
|
||
'title.shoppingCards': 'Shopping Cards',
|
||
'title.customers': 'Users',
|
||
'title.customerProducts': 'Customer products',
|
||
'title.content': 'Content',
|
||
'title.blog': 'Blog',
|
||
'title.myBlogs': 'My Blogs',
|
||
'title.addBlog': 'Add New Blog',
|
||
'title.editBlog': 'Edit Blog',
|
||
'title.blogDetails': 'Blog Details',
|
||
'title.videos': 'Videos',
|
||
'title.instructions': 'Instructions',
|
||
'title.myInstructions': 'My Instructions',
|
||
'title.addInstruction': 'Add New Instruction',
|
||
'title.editInstruction': 'Edit Instruction',
|
||
'title.instructionDetails': 'Instruction Details',
|
||
'title.myVideos': 'My Videos',
|
||
'title.addVideo': 'Add New Video',
|
||
'title.editVideo': 'Edit Video',
|
||
'title.videoDetails': 'Video Details',
|
||
'title.portfolios': 'Portfolios',
|
||
'title.myPortfolios': 'My Portfolios',
|
||
'title.addPortfolio': 'Add New Portfolio',
|
||
'title.editPortfolio': 'Edit Portfolio',
|
||
'title.portfolioDetails': 'Portfolio Details',
|
||
'title.website': 'Website',
|
||
'title.staticImages': 'Static Images',
|
||
'title.sliders': 'Sliders',
|
||
'title.specialCategories': 'Special Categories',
|
||
'title.specialBrands': 'Special Brands',
|
||
'title.specialItems': 'Special Items',
|
||
'title.contactForm': 'Contact Us Form',
|
||
'title.subscriptions': 'Subscriptions',
|
||
'title.faq': 'FAQ',
|
||
'title.badges': 'Badges',
|
||
'title.ePayment': 'E-Payment',
|
||
'title.invoices': 'Invoices',
|
||
'title.finance': 'Finance Management',
|
||
'title.issueInvoice': 'Issue Invoice',
|
||
'title.editInvoice': 'Edit Invoice',
|
||
'title.invoiceTemplates': 'Invoice Templates',
|
||
'title.addInvoiceTemplate': 'Add Invoice Template',
|
||
'title.editInvoiceTemplate': 'Edit Invoice Template',
|
||
'title.transactions': 'Transactions',
|
||
|
||
'finance.page.subtitle': 'Manage invoices and financial transactions.',
|
||
'finance.card.invoices.desc': 'Issue and track invoices for your customers.',
|
||
'finance.card.transactions.desc': 'View payment and financial transactions.',
|
||
|
||
'transactions.subtitle': 'View payment and financial transactions.',
|
||
'transactions.lead': 'Transactions will appear here.',
|
||
'transactions.note': 'This section is coming soon. You can still review order payment details from Orders.',
|
||
|
||
'invoices.subtitle': 'Manage invoices issued to your customers.',
|
||
'invoices.templatesLink': 'Template management',
|
||
'invoices.issue': 'Issue invoice',
|
||
'invoices.tableTitle': 'Invoices',
|
||
'invoices.countOne': '{count} invoice',
|
||
'invoices.countMany': '{count} invoices',
|
||
'invoices.loading': 'Loading…',
|
||
'invoices.empty': 'No invoices yet.',
|
||
'invoices.col.name': 'Name',
|
||
'invoices.col.customer': 'Customer',
|
||
'invoices.col.issued': 'Issued',
|
||
'invoices.col.status': 'Status',
|
||
'invoices.col.total': 'Total',
|
||
'invoices.col.link': 'Link',
|
||
'invoices.col.actions': 'Actions',
|
||
'invoices.itemCountOne': '{count} item',
|
||
'invoices.itemCountMany': '{count} items',
|
||
'invoices.changeStatus': 'Change status',
|
||
'invoices.changeStatusAria': 'Change status ({status})',
|
||
'invoices.view': 'View',
|
||
'invoices.viewAria': 'View invoice',
|
||
'invoices.edit': 'Edit',
|
||
'invoices.editAria': 'Edit invoice',
|
||
'invoices.editDisabledTitle': 'Approved invoices cannot be edited',
|
||
'invoices.editDisabledAria': 'Edit invoice (disabled — approved)',
|
||
'invoices.remove': 'Remove',
|
||
'invoices.removeAria': 'Remove invoice',
|
||
'invoices.copyLink': 'Copy link',
|
||
'invoices.copyLinkAria': 'Copy invoice link',
|
||
'invoices.linkCopied': 'Invoice link copied.',
|
||
'invoices.linkCopyError': 'Unable to copy link.',
|
||
'invoices.deleteTitle': 'Remove invoice?',
|
||
'invoices.deleteMessage': 'Remove this invoice permanently? This cannot be undone.',
|
||
'invoices.removed': 'Invoice removed.',
|
||
'invoices.removeError': 'Unable to remove invoice.',
|
||
'invoices.statusUpdated': 'Invoice status updated.',
|
||
'invoices.statusUpdateError': 'Unable to update status.',
|
||
'invoices.loadError': 'Unable to load invoices.',
|
||
'invoices.filterBannerNamed': "{name}'s invoices",
|
||
'invoices.filterBannerGeneric': "This customer's invoices",
|
||
'invoices.filterCancel': 'Cancel',
|
||
'invoices.filterClear': 'Clear filter',
|
||
'invoices.issueForCustomer': 'Issue invoice for this customer',
|
||
'invoices.detailFallbackTitle': 'Invoice',
|
||
'invoices.detail.status': 'Status',
|
||
'invoices.detail.total': 'Total',
|
||
'invoices.detail.link': 'Public link',
|
||
'invoices.detail.billedTo': 'Billed to',
|
||
'invoices.detail.notes': 'Notes: {notes}',
|
||
'invoices.status.draft': 'Draft',
|
||
'invoices.status.issued': 'Issued',
|
||
'invoices.status.approved': 'Approved',
|
||
'invoices.status.paid': 'Paid',
|
||
'invoices.status.cancelled': 'Cancelled',
|
||
|
||
'issueInvoice.subtitleNew': 'Select an invoice template and edit it, or create a blank invoice.',
|
||
'issueInvoice.subtitleEdit': 'Update invoice content. Approved invoices cannot be changed.',
|
||
'issueInvoice.startFromTemplate': 'Start from template',
|
||
'issueInvoice.blankInvoice': 'Without template',
|
||
'issueInvoice.name': 'Name (optional)',
|
||
'issueInvoice.namePlaceholder': 'e.g. Website redesign package',
|
||
'issueInvoice.noTemplatesHint': 'No invoice templates yet. Manage them in {link}, or fill a blank invoice below.',
|
||
'issueInvoice.noTemplatesLink': 'Invoice Templates',
|
||
'issueInvoice.topText': 'Top text',
|
||
'issueInvoice.topTextPlaceholder': 'Optional intro text at the top of the invoice',
|
||
'issueInvoice.notes': 'Notes',
|
||
'issueInvoice.notesPlaceholder': 'Optional internal notes',
|
||
'issueInvoice.total': 'Total: {total}',
|
||
'issueInvoice.totalLabel': 'Total',
|
||
'issueInvoice.cancel': 'Cancel',
|
||
'issueInvoice.save': 'Save changes',
|
||
'issueInvoice.saving': 'Saving…',
|
||
'issueInvoice.issue': 'Issue invoice',
|
||
'issueInvoice.issuing': 'Issuing…',
|
||
'issueInvoice.backToInvoices': 'Back to invoices',
|
||
'issueInvoice.approvedLocked': 'This invoice is approved and can no longer be edited.',
|
||
'issueInvoice.loadError': 'Unable to load invoice form.',
|
||
'issueInvoice.updateError': 'Unable to update invoice.',
|
||
'issueInvoice.createError': 'Unable to create invoice.',
|
||
'issueInvoice.updated': 'Invoice updated.',
|
||
'issueInvoice.issued': 'Invoice issued.',
|
||
'issueInvoice.recipient': 'Issue invoice for',
|
||
'issueInvoice.recipientFor': 'Issue invoice for {name}',
|
||
'issueInvoice.recipientRequired': 'Select a customer to bill this invoice to.',
|
||
'issueInvoice.pickCustomer': 'Select customer',
|
||
'issueInvoice.pickCustomerPlaceholder': 'Search by name or cell number…',
|
||
'issueInvoice.pickCustomerNoResults': 'No customers found.',
|
||
'issueInvoice.pickCustomerHint': 'Type at least 2 characters to search.',
|
||
'issueInvoice.changeCustomer': 'Change',
|
||
'issueInvoice.unknownCustomer': 'Customer',
|
||
'issueInvoice.loading': 'Loading…',
|
||
|
||
'invoiceDraft.itemLabel': 'Item {index}',
|
||
'invoiceDraft.removeItem': 'Remove item',
|
||
'invoiceDraft.fieldTitle': 'Title',
|
||
'invoiceDraft.fieldTitlePlaceholder': 'Service title',
|
||
'invoiceDraft.fieldDuration': 'Duration',
|
||
'invoiceDraft.fieldDurationPlaceholder': 'e.g. 3 months',
|
||
'invoiceDraft.fieldWorktime': 'Worktime',
|
||
'invoiceDraft.fieldWorktimePlaceholder': 'e.g. 40 hours',
|
||
'invoiceDraft.fieldPrice': 'Price (IRT)',
|
||
'invoiceDraft.fieldDiscountedPrice': 'Discounted price (IRT)',
|
||
'invoiceDraft.fieldDiscountedPricePlaceholder': 'Optional',
|
||
'invoiceDraft.optional': 'Optional',
|
||
'invoiceDraft.fieldDescription': 'Description',
|
||
'invoiceDraft.fieldDescriptionPlaceholder': 'Optional details',
|
||
'invoiceDraft.addFromTemplate': 'Add from template…',
|
||
'invoiceDraft.addFromTemplateAria': 'Add from item template',
|
||
'invoiceDraft.add': 'Add',
|
||
'invoiceDraft.addCustomItem': 'Add custom item',
|
||
'invoiceDraft.keyPoints': 'Key points',
|
||
'invoiceDraft.addPoint': 'Add point',
|
||
'invoiceDraft.noKeyPoints': 'No key points yet.',
|
||
'invoiceDraft.keyPointPlaceholder': 'e.g. Payment due within 7 days',
|
||
'invoiceDraft.keyPointAria': 'Key point {index}',
|
||
'invoiceDraft.removeKeyPoint': 'Remove key point',
|
||
'invoiceDraft.accounts': 'Account numbers',
|
||
'invoiceDraft.addAccount': 'Add account',
|
||
'invoiceDraft.noAccounts': 'No bank accounts yet.',
|
||
'invoiceDraft.bankName': 'Bank name',
|
||
'invoiceDraft.accountHolder': 'Account holder',
|
||
'invoiceDraft.cardNumber': 'Card number',
|
||
'invoiceDraft.iban': 'IBAN',
|
||
'invoiceDraft.removeAccount': 'Remove account',
|
||
'invoiceDraft.error.itemTitle': 'Each item needs a title.',
|
||
'invoiceDraft.error.itemPrice': 'Price is required for "{title}".',
|
||
'invoiceDraft.error.itemDiscountInvalid': 'Discounted price is invalid for "{title}".',
|
||
'invoiceDraft.error.itemDiscountExceeds': 'Discounted price cannot exceed price for "{title}".',
|
||
|
||
'invoiceTemplates.subtitle': 'Manage reusable invoice templates and predefined line items.',
|
||
'invoiceTemplates.section.templates.title': 'Invoice templates',
|
||
'invoiceTemplates.section.templates.desc':
|
||
'Full blueprints for faster issuing — pick one and edit, or start blank.',
|
||
'invoiceTemplates.addTemplate': 'Add template',
|
||
'invoiceTemplates.templatesTableTitle': 'Templates',
|
||
'invoiceTemplates.countTemplatesOne': '{count} template',
|
||
'invoiceTemplates.countTemplatesMany': '{count} templates',
|
||
'invoiceTemplates.col.name': 'Name',
|
||
'invoiceTemplates.col.items': 'Items',
|
||
'invoiceTemplates.col.keyPoints': 'Key points',
|
||
'invoiceTemplates.col.accounts': 'Accounts',
|
||
'invoiceTemplates.col.actions': 'Actions',
|
||
'invoiceTemplates.emptyTemplates': 'No invoice templates yet. Add one to speed up issuing invoices.',
|
||
'invoiceTemplates.section.items.title': 'Invoice item templates',
|
||
'invoiceTemplates.section.items.desc':
|
||
'Reusable line items you can drop into invoice templates or when issuing an invoice.',
|
||
'invoiceTemplates.addItem': 'Add item',
|
||
'invoiceTemplates.itemsTableTitle': 'Predefined line items',
|
||
'invoiceTemplates.countItemsOne': '{count} item',
|
||
'invoiceTemplates.countItemsMany': '{count} items',
|
||
'invoiceTemplates.col.title': 'Title',
|
||
'invoiceTemplates.col.duration': 'Duration',
|
||
'invoiceTemplates.col.worktime': 'Worktime',
|
||
'invoiceTemplates.col.price': 'Price',
|
||
'invoiceTemplates.col.discounted': 'Discounted',
|
||
'invoiceTemplates.emptyItems': 'No predefined items yet.',
|
||
'invoiceTemplates.editTemplate': 'Edit',
|
||
'invoiceTemplates.removeTemplate': 'Remove',
|
||
'invoiceTemplates.editItem': 'Edit',
|
||
'invoiceTemplates.removeItem': 'Remove',
|
||
'invoiceTemplates.deleteTemplateTitle': 'Remove invoice template',
|
||
'invoiceTemplates.deleteTemplateMessage': 'Remove "{name}" from invoice templates?',
|
||
'invoiceTemplates.deleteItemTitle': 'Remove item template',
|
||
'invoiceTemplates.deleteItemMessage': 'Remove "{title}" from predefined line items?',
|
||
'invoiceTemplates.itemModalAddTitle': 'Add item template',
|
||
'invoiceTemplates.itemModalEditTitle': 'Edit item template',
|
||
'invoiceTemplates.itemUpdated': 'Item template updated.',
|
||
'invoiceTemplates.itemCreated': 'Item template created.',
|
||
'invoiceTemplates.itemRemoved': 'Item template removed.',
|
||
'invoiceTemplates.templateRemoved': 'Invoice template removed.',
|
||
'invoiceTemplates.loadError': 'Unable to load invoice settings.',
|
||
'invoiceTemplates.itemSaveError': 'Unable to save item template.',
|
||
'invoiceTemplates.itemRemoveError': 'Unable to remove item.',
|
||
'invoiceTemplates.templateRemoveError': 'Unable to remove template.',
|
||
'invoiceTemplates.saveItem': 'Save changes',
|
||
'invoiceTemplates.savingItem': 'Saving…',
|
||
'invoiceTemplates.createItem': 'Create item',
|
||
'invoiceTemplates.cancel': 'Cancel',
|
||
'invoiceTemplates.hint': 'Tip: issue an invoice from the Invoices page using a template or from scratch.',
|
||
|
||
'invoiceTemplateEditor.addTitle': 'Add invoice template',
|
||
'invoiceTemplateEditor.editTitle': 'Edit invoice template',
|
||
'invoiceTemplateEditor.subtitle':
|
||
'Define name, top text, line items, key points, and bank accounts for reuse when issuing invoices.',
|
||
'invoiceTemplateEditor.name': 'Name',
|
||
'invoiceTemplateEditor.namePlaceholder': 'e.g. Standard website package',
|
||
'invoiceTemplateEditor.topText': 'Top text',
|
||
'invoiceTemplateEditor.topTextPlaceholder': 'Optional intro shown at the top of the invoice',
|
||
'invoiceTemplateEditor.nameRequired': 'Template name is required.',
|
||
'invoiceTemplateEditor.loadError': 'Unable to load template editor.',
|
||
'invoiceTemplateEditor.saveError': 'Unable to save invoice template.',
|
||
'invoiceTemplateEditor.updated': 'Invoice template updated.',
|
||
'invoiceTemplateEditor.created': 'Invoice template created.',
|
||
'invoiceTemplateEditor.backToTemplates': 'Back to templates',
|
||
'invoiceTemplateEditor.create': 'Create template',
|
||
'invoiceTemplateEditor.save': 'Save changes',
|
||
'invoiceTemplateEditor.saving': 'Saving…',
|
||
'invoiceTemplateEditor.cancel': 'Cancel',
|
||
'invoiceTemplateEditor.loading': 'Loading…',
|
||
|
||
'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.',
|
||
'login.error.access': 'You do not have access to this business dashboard.',
|
||
|
||
'signup.title': 'Create account',
|
||
'signup.subtitle': 'Register for {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.',
|
||
|
||
'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}',
|
||
'common.breadcrumb': 'Breadcrumb',
|
||
'common.overview': 'Overview',
|
||
} as const
|
||
|
||
type MessageKey = keyof typeof en
|
||
|
||
const fa: Record<MessageKey, string> = {
|
||
'app.dashboardName': 'پنل کسبوکار',
|
||
'app.storeFallback': 'کسبوکار',
|
||
'app.poweredBy': 'قدرتگرفته از Meshkee.app',
|
||
'app.userFallback': 'کاربر',
|
||
|
||
'role.superAdmin': 'سوپرادمین',
|
||
'role.owner': 'صاحب کسبوکار',
|
||
'role.admin': 'ادمین',
|
||
'role.staff': 'کارمند',
|
||
|
||
'nav.home': 'خانه',
|
||
'nav.businessProfile': 'پروفایل کسبوکار',
|
||
'sidebar.addLogo': 'افزودن لوگو',
|
||
'nav.products': 'محصولات',
|
||
'nav.products.overview': 'نمای کلی',
|
||
'nav.products.list': 'محصولات من',
|
||
'nav.products.new': 'افزودن محصول',
|
||
'nav.products.categories': 'دستهبندیها',
|
||
'nav.products.brands': 'برندها',
|
||
'nav.products.settings': 'تنظیمات',
|
||
'nav.store': 'فروشگاه',
|
||
'nav.store.overview': 'نمای کلی',
|
||
'nav.store.items': 'محصولات فروشگاه',
|
||
'nav.store.orders': 'سفارشهای من',
|
||
'nav.store.shipping': 'هزینه ارسال',
|
||
'nav.store.cards': 'کارتهای خرید',
|
||
'nav.store.settings': 'تنظیمات',
|
||
'nav.customers': 'کاربران',
|
||
'nav.customerProducts': 'محصولات مشتریان',
|
||
'nav.invoices': 'فاکتورها',
|
||
'nav.invoices.list': 'فاکتورها',
|
||
'nav.invoices.templates': 'قالبها',
|
||
'nav.finance': 'مدیریت مالی',
|
||
'nav.finance.overview': 'نمای کلی',
|
||
'nav.finance.invoices': 'فاکتورها',
|
||
'nav.finance.transactions': 'تراکنشها',
|
||
'nav.settings': 'تنظیمات',
|
||
'nav.content': 'مدیریت محتوا',
|
||
'nav.content.blog': 'اخبار و مطالب',
|
||
'nav.content.videos': 'ویدیوها',
|
||
'nav.content.instructions': 'آموزشها',
|
||
'nav.content.overview': 'نمای کلی',
|
||
'nav.blog': 'بلاگ',
|
||
'nav.blog.overview': 'نمای کلی',
|
||
'nav.blog.list': 'بلاگهای من',
|
||
'nav.blog.new': 'افزودن بلاگ',
|
||
'nav.blog.categories': 'دستهبندیها',
|
||
'nav.blog.settings': 'تنظیمات',
|
||
'nav.portfolios': 'نمونه کارها',
|
||
'nav.portfolios.overview': 'نمای کلی',
|
||
'nav.portfolios.list': 'نمونه کارهای من',
|
||
'nav.portfolios.new': 'افزودن نمونه کار',
|
||
'nav.portfolios.categories': 'دستهبندیها',
|
||
'nav.portfolios.settings': 'تنظیمات',
|
||
'nav.videos': 'ویدیوها',
|
||
'nav.videos.overview': 'نمای کلی',
|
||
'nav.videos.list': 'ویدیوهای من',
|
||
'nav.videos.new': 'افزودن ویدیو',
|
||
'nav.videos.categories': 'دستهبندیها',
|
||
'nav.videos.settings': 'تنظیمات',
|
||
'nav.instructions': 'آموزشها',
|
||
'nav.instructions.overview': 'نمای کلی',
|
||
'nav.instructions.list': 'آموزشهای من',
|
||
'nav.instructions.new': 'افزودن آموزش',
|
||
'nav.instructions.categories': 'دستهبندیها',
|
||
'nav.instructions.settings': 'تنظیمات',
|
||
'nav.website': 'وبسایت',
|
||
'nav.website.overview': 'نمای کلی',
|
||
'nav.website.staticImages': 'تصاویر ثابت',
|
||
'nav.website.sliders': 'اسلایدرها',
|
||
'nav.website.specialCategories': 'دستههای ویژه',
|
||
'nav.website.specialBrands': 'برندهای ویژه',
|
||
'nav.website.specialItems': 'محصولات ویژه فروشگاه',
|
||
'nav.website.contact': 'فرم تماس با ما',
|
||
'nav.website.subscriptions': 'عضویتها',
|
||
'nav.website.faq': 'سوالات متداول',
|
||
'nav.website.badges': 'نشانها',
|
||
'nav.website.ePayment': 'پرداخت الکترونیک',
|
||
'nav.help': 'مرکز راهنما',
|
||
'nav.logout': 'خروج',
|
||
|
||
'header.toggleMenu': 'باز و بسته کردن منو',
|
||
'header.closeMenu': 'بستن منو',
|
||
'header.title': 'پنل مدیریت',
|
||
'header.messages': 'پیامها',
|
||
'header.notifications': 'اعلانها',
|
||
'header.profile': 'پروفایل',
|
||
'header.setting': 'تنظیمات',
|
||
'header.changePassword': 'تغییر رمز عبور',
|
||
|
||
'profile.title': 'پروفایل من',
|
||
'profile.subtitle': 'اطلاعات شخصی و راههای ارتباطی خود را مدیریت کنید.',
|
||
'profile.section.general': 'عمومی',
|
||
'profile.section.social': 'شبکههای اجتماعی',
|
||
'profile.firstName': 'نام (فارسی)',
|
||
'profile.lastName': 'نام خانوادگی (فارسی)',
|
||
'profile.firstNameEn': 'نام (انگلیسی)',
|
||
'profile.lastNameEn': 'نام خانوادگی (انگلیسی)',
|
||
'profile.mobile': 'شماره موبایل',
|
||
'profile.email': 'ایمیل',
|
||
'profile.emailPlaceholder': 'you@example.com',
|
||
'profile.about': 'درباره من',
|
||
'profile.addresses': 'آدرسها',
|
||
'profile.addresses.add': 'افزودن آدرس',
|
||
'profile.addresses.loading': 'در حال بارگذاری آدرسها...',
|
||
'profile.addresses.remove': 'حذف آدرس',
|
||
'profile.addresses.error.load': 'بارگذاری آدرسها ممکن نشد.',
|
||
'profile.addresses.error.incomplete': 'برای هر ردیفی که شروع کردهاید، استان، شهر و آدرس را کامل کنید.',
|
||
'profile.province': 'استان',
|
||
'profile.city': 'شهر',
|
||
'profile.postalCode': 'کد پستی',
|
||
'profile.address': 'آدرس',
|
||
'profile.landline': 'تلفن ثابت',
|
||
'profile.selectProvince': 'انتخاب استان',
|
||
'profile.selectCity': 'انتخاب شهر',
|
||
'profile.streetPlaceholder': 'آدرس خیابان',
|
||
'profile.instagram': 'اینستاگرام',
|
||
'profile.telegram': 'آیدی تلگرام',
|
||
'profile.linkedin': 'لینکدین',
|
||
'profile.save': 'ذخیره تغییرات',
|
||
'profile.saving': 'در حال ذخیره...',
|
||
'profile.toast.success': 'پروفایل با موفقیت ذخیره شد.',
|
||
'profile.error.update': 'ذخیره پروفایل ممکن نشد.',
|
||
|
||
'bizProfile.subtitle': 'هویت فروشگاه، اطلاعات تماس و لینکهای شبکههای اجتماعی را مدیریت کنید.',
|
||
'bizProfile.loading': 'در حال بارگذاری پروفایل کسبوکار...',
|
||
'bizProfile.loadError': 'بارگذاری پروفایل کسبوکار ممکن نشد.',
|
||
'bizProfile.saveError': 'ذخیره پروفایل کسبوکار ممکن نشد.',
|
||
'bizProfile.toast.saved': 'پروفایل کسبوکار ذخیره شد.',
|
||
'bizProfile.section.basic': 'اطلاعات پایه',
|
||
'bizProfile.section.contact': 'تماس',
|
||
'bizProfile.section.social': 'شبکههای اجتماعی',
|
||
'bizProfile.logo': 'لوگو',
|
||
'bizProfile.logo.upload': 'آپلود لوگو',
|
||
'bizProfile.logo.hint': 'PNG شفاف توصیه میشود',
|
||
'bizProfile.logo.change': 'تغییر لوگو',
|
||
'bizProfile.categories': 'دستهبندیهای فعالیت',
|
||
'bizProfile.categories.placeholder': 'انتخاب دستهبندیهای فعالیت',
|
||
'bizProfile.nameFa': 'نام (فارسی)',
|
||
'bizProfile.nameEn': 'نام (انگلیسی)',
|
||
'bizProfile.email': 'آدرس ایمیل',
|
||
'bizProfile.about': 'درباره ما',
|
||
'bizProfile.vision': 'چشمانداز ما',
|
||
'bizProfile.addresses': 'آدرسها',
|
||
'bizProfile.addresses.add': 'افزودن آدرس',
|
||
'bizProfile.province': 'استان',
|
||
'bizProfile.city': 'شهر',
|
||
'bizProfile.address': 'آدرس',
|
||
'bizProfile.postalCode': 'کد پستی',
|
||
'bizProfile.landline': 'تلفن ثابت',
|
||
'bizProfile.selectProvince': 'انتخاب استان',
|
||
'bizProfile.selectCity': 'انتخاب شهر',
|
||
'bizProfile.streetPlaceholder': 'آدرس خیابان',
|
||
'bizProfile.removeAddress': 'حذف آدرس',
|
||
'bizProfile.phones': 'شمارههای تماس',
|
||
'bizProfile.phones.add': 'افزودن شماره',
|
||
'bizProfile.phones.type': 'نوع',
|
||
'bizProfile.phones.number': 'شماره تلفن',
|
||
'bizProfile.phones.cell': 'شماره موبایل',
|
||
'bizProfile.phones.landline': 'تلفن ثابت',
|
||
'bizProfile.phones.remove': 'حذف شماره تماس',
|
||
'bizProfile.social.placeholder': 'لینک یا آیدی {name}',
|
||
'bizProfile.save': 'ذخیره پروفایل',
|
||
'bizProfile.saving': 'در حال ذخیره...',
|
||
|
||
'bc.dashboard': 'داشبورد',
|
||
'bc.editProduct': 'ویرایش محصول',
|
||
'bc.productDetails': 'جزئیات محصول',
|
||
'bc.editBlog': 'ویرایش بلاگ',
|
||
'bc.blogDetails': 'جزئیات بلاگ',
|
||
'bc.editPortfolio': 'ویرایش نمونه کار',
|
||
'bc.portfolioDetails': 'جزئیات نمونه کار',
|
||
'bc.editVideo': 'ویرایش ویدیو',
|
||
'bc.videoDetails': 'جزئیات ویدیو',
|
||
'bc.editInstruction': 'ویرایش آموزش',
|
||
'bc.instructionDetails': 'جزئیات آموزش',
|
||
|
||
'home.welcome': '{name} عزیز، خوش آمدی.',
|
||
'home.welcomeFallback': 'کاربر',
|
||
'home.subtitle': 'وضعیت فروشگاهتان را از اینجا دنبال کنید.',
|
||
'home.card.products.title': 'محصولات',
|
||
'home.card.products.desc': 'محصولات، موجودی و دستهبندیها را مدیریت کنید.',
|
||
'home.card.products.link': 'مشاهده محصولات',
|
||
'home.card.products.count': 'محصول',
|
||
'home.card.store.title': 'فروشگاه',
|
||
'home.card.store.desc': 'تنظیمات، صفحات و ظاهر فروشگاه را مدیریت کنید.',
|
||
'home.card.store.link': 'مشاهده فروشگاه',
|
||
'home.card.store.count': 'محصول فروش',
|
||
'home.card.customers.title': 'کاربران',
|
||
'home.card.customers.desc': 'مشتریان و فعالیت آنها را ببینید و مدیریت کنید.',
|
||
'home.card.customers.link': 'مشاهده مشتریان',
|
||
'home.card.customers.count': 'نفر',
|
||
'home.card.settings.title': 'تنظیمات',
|
||
'home.card.settings.desc': 'ترجیحات فروشگاه و تنظیمات سیستم را پیکربندی کنید.',
|
||
'home.card.settings.link': 'مشاهده تنظیمات',
|
||
'home.card.content.title': 'مدیریت محتوا',
|
||
'home.card.content.desc': 'بلاگ، ویدیو و سایر محتوای منتشرشده را مدیریت کنید.',
|
||
'home.card.content.link': 'مدیریت محتوا',
|
||
'home.card.content.count': 'مورد',
|
||
'content.page.subtitle': 'بلاگ، ویدیو و سایر انواع محتوا برای وبسایت شما.',
|
||
'content.card.blog.desc': 'مطالب و دستهبندیهای بلاگ را ایجاد و مدیریت کنید.',
|
||
'content.card.blog.link': 'ورود به بلاگ',
|
||
'content.card.videos.desc': 'ویدیوهای یوتیوب و آپارات را با دستهبندی و نظرات مدیریت کنید.',
|
||
'content.card.videos.link': 'ورود به ویدیوها',
|
||
'content.card.instructions.desc': 'آموزشها با متن غنی و ویدیوی جاسازیشده اختیاری.',
|
||
'content.card.instructions.link': 'ورود به آموزشها',
|
||
'home.card.blog.title': 'بلاگ',
|
||
'home.card.blog.desc': 'مطالب و دستهبندیهای بلاگ را ایجاد و مدیریت کنید.',
|
||
'home.card.blog.link': 'مشاهده بلاگ',
|
||
'home.card.blog.count': 'مطلب',
|
||
'home.card.portfolios.title': 'نمونه کارها',
|
||
'home.card.portfolios.desc': 'نمونه کارها و پروژههای نمایشی را مدیریت کنید.',
|
||
'home.card.portfolios.link': 'مشاهده نمونه کارها',
|
||
'home.card.portfolios.count': 'نمونه کار',
|
||
'home.card.videos.title': 'ویدیوها',
|
||
'home.card.videos.desc': 'ویدیوهای یوتیوب و آپارات را با دستهبندی و نظرات مدیریت کنید.',
|
||
'home.card.videos.link': 'مشاهده ویدیوها',
|
||
'home.card.videos.count': 'ویدیو',
|
||
'home.card.website.title': 'وبسایت',
|
||
'home.card.website.desc': 'فرم تماس، سوالات متداول، نشانها و عضویتها.',
|
||
'home.card.website.link': 'مشاهده وبسایت',
|
||
'home.card.finance.title': 'مدیریت مالی',
|
||
'home.card.finance.desc': 'فاکتورها و تراکنشهای مالی را مدیریت کنید.',
|
||
'home.card.finance.link': 'مشاهده مالی',
|
||
|
||
'home.chart.orders.title': 'سفارشها',
|
||
'home.chart.orders.subtitle': 'سفارشها در ۳۰ روز گذشته',
|
||
'home.chart.orders.legend': 'سفارش ({count})',
|
||
'home.chart.orders.cartLegend': 'افزودن به سبد ({count})',
|
||
'home.chart.orders.loading': 'در حال بارگذاری نمودار...',
|
||
'home.chart.orders.error': 'بارگذاری فعالیت سفارشها ممکن نشد.',
|
||
'home.chart.orders.bar': '{day}: {count} سفارش',
|
||
'home.chart.orders.cartBar': '{day}: {count} افزودن به سبد',
|
||
'home.chart.customers.title': 'کاربران',
|
||
'home.chart.customers.subtitle': 'ثبتنام و کاربران فعال در ۳۰ روز گذشته',
|
||
'home.chart.customers.legend': 'ثبتنام ({count})',
|
||
'home.chart.customers.activeLegend': 'فعال ({count})',
|
||
'home.chart.customers.loading': 'در حال بارگذاری نمودار...',
|
||
'home.chart.customers.error': 'بارگذاری فعالیت مشتریان ممکن نشد.',
|
||
'home.chart.customers.bar': '{day}: {count} ثبتنام',
|
||
'home.chart.customers.activeBar': '{day}: {count} فعال',
|
||
'home.chart.customersJoined.title': 'مشتریان عضو شده',
|
||
'home.chart.customersJoined.subtitle': 'مشتریان عضو شده در ۱ سال گذشته',
|
||
'home.chart.customersJoined.legend': 'ثبتنام ({count})',
|
||
'home.chart.customersJoined.activeLegend': 'فعال ({count})',
|
||
'home.chart.customersJoined.loading': 'در حال بارگذاری نمودار...',
|
||
'home.chart.customersJoined.error': 'بارگذاری فعالیت مشتریان ممکن نشد.',
|
||
'home.chart.customersJoined.bar': '{month}: {count} ثبتنام',
|
||
'home.chart.customersJoined.activeBar': '{month}: {count} فعال',
|
||
'home.chart.blogViews.title': 'بازدید مقالات',
|
||
'home.chart.blogViews.subtitle': 'بازدید مقالات در ۳۰ روز گذشته',
|
||
'home.chart.placeholder.title': 'نمودار',
|
||
'home.chart.placeholder.subtitle': 'این نمودار بهزودی در دسترس خواهد بود.',
|
||
'home.chart.placeholder.comingSoon': 'بهزودی',
|
||
|
||
'products.overview.subtitle': 'محصولات، موجودی و دستهبندیها را مدیریت کنید.',
|
||
'products.card.list.desc': 'همه محصولات موجود را ببینید، ویرایش و مدیریت کنید.',
|
||
'products.card.new.title': 'افزودن محصول جدید',
|
||
'products.card.new.desc': 'یک محصول جدید بسازید و در فروشگاه منتشر کنید.',
|
||
'products.form.edit.subtitle': 'جزئیات محصول را بهروز کنید و ذخیره کنید.',
|
||
'products.card.categories.desc': 'محصولات را در دستهبندیها و زیردستهها سازماندهی کنید.',
|
||
'products.card.brands.desc': 'برندهای محصول را مدیریت کنید و هنگام ساخت محصول به آنها اختصاص دهید.',
|
||
'products.card.settings.desc': 'پیشفرضها، تنوعها و گزینههای نمایش محصول را پیکربندی کنید.',
|
||
'products.activity.title': 'فعالیت محصولات',
|
||
'products.activity.subtitle': 'محصولات افزودهشده یا بهروزرسانیشده در ۱۲ ماه گذشته',
|
||
'products.activity.added': 'افزودهشده ({count})',
|
||
'products.activity.updated': 'بهروزرسانیشده ({count})',
|
||
'products.activity.loading': 'در حال بارگذاری نمودار...',
|
||
'products.activity.error': 'بارگذاری فعالیت محصولات ممکن نشد.',
|
||
'products.activity.chartAria': 'نمودار میلهای محصولات افزودهشده و بهروزرسانیشده در هر ماه',
|
||
'products.activity.barAdded': '{month}: {count} افزودهشده',
|
||
'products.activity.barUpdated': '{month}: {count} بهروزرسانیشده',
|
||
|
||
'products.list.subtitle': '{count} محصول · کاتالوگ خود را ببینید، ویرایش و مدیریت کنید.',
|
||
'products.list.filters': 'فیلترها',
|
||
'products.list.filterName': 'نام',
|
||
'products.list.filterNamePlaceholder': 'جستجو بر اساس نام محصول',
|
||
'products.list.search': 'جستجو',
|
||
'products.list.clearFilters': 'پاک کردن فیلترها',
|
||
'products.list.loading': 'در حال بارگذاری محصولات...',
|
||
'products.list.empty': 'محصولی یافت نشد.',
|
||
'products.list.emptyFiltered': 'هیچ محصولی با فیلترهای شما مطابقت ندارد.',
|
||
'products.list.errorLoad': 'بارگذاری محصولات ممکن نشد.',
|
||
'products.list.errorDelete': 'حذف محصول ممکن نشد.',
|
||
'products.list.pagination': 'صفحه {page} / {totalPages} · {perPage} در هر صفحه · {total} مجموع',
|
||
'products.list.deleteTitle': 'حذف محصول',
|
||
'products.list.deleteMessage':
|
||
'آیا از حذف «{name}» مطمئن هستید؟ این عمل قابل بازگشت نیست.',
|
||
'products.list.addByAi': 'افزودن محصول با هوش مصنوعی',
|
||
'products.list.addNew': 'افزودن محصول جدید',
|
||
|
||
'customerProducts.title': 'محصولات مشتریان',
|
||
'customerProducts.subtitle': '{count} محصول ثبتشده توسط مشتریان.',
|
||
'customerProducts.empty': 'هنوز محصول مشتری ثبت نشده است.',
|
||
'customerProducts.form.title': 'محصولات من',
|
||
'customerProducts.form.empty': 'هنوز محصولی ثبت نکردهاید.',
|
||
'customerProducts.form.add': 'افزودن محصول',
|
||
'customerProducts.form.addTitle': 'افزودن محصول',
|
||
'customerProducts.form.addSubtitle': 'محصول جدید را برای بررسی ارسال کنید.',
|
||
'customerProducts.form.addComingSoon': 'فرم افزودن در مرحله بعد طراحی میشود.',
|
||
'customerProducts.form.backToList': 'بازگشت به محصولات من',
|
||
'customerProducts.form.editTitle': 'ویرایش محصول',
|
||
'customerProducts.form.editSubtitle': 'جزئیات آگهی را بهروز کنید و ذخیره کنید.',
|
||
'customerProducts.form.detailsTitle': 'جزئیات محصول',
|
||
'customerProducts.form.detailsSubtitle': 'جزئیات آگهی ثبتشده را ببینید.',
|
||
'customerProducts.form.edit': 'ویرایش محصول',
|
||
'customerProducts.form.yes': 'بله',
|
||
'customerProducts.form.editSoon': 'ویرایش محصول بهزودی در دسترس خواهد بود.',
|
||
'customerProducts.form.remove': 'حذف محصول',
|
||
'customerProducts.form.removeConfirm': 'این محصول از موجودی شما حذف شود؟',
|
||
'customerProducts.form.removeSuccess': 'محصول حذف شد.',
|
||
'customerProducts.form.promote': 'پروموت محصول',
|
||
'customerProducts.form.promoted': 'پروموت شده',
|
||
'customerProducts.form.promoteSuccess': 'محصول پروموت شد.',
|
||
'customerProducts.form.priceUnavailable': 'قیمت اعلام نشده',
|
||
'customerProducts.form.status.pending': 'در انتظار تأیید',
|
||
'customerProducts.form.status.published': 'تأیید شده',
|
||
'customerProducts.form.status.archived': 'بایگانی',
|
||
'customerProducts.form.stepperLabel': 'مراحل افزودن محصول',
|
||
'customerProducts.form.step.basics': 'اطلاعات پایه',
|
||
'customerProducts.form.step.basicsHint': 'دستهبندی، نام، توضیحات، قیمت و موقعیت.',
|
||
'customerProducts.form.step.basicsPlaceholder': 'فیلدهای پایه اینجا قرار میگیرند.',
|
||
'customerProducts.form.step.images': 'تصاویر',
|
||
'customerProducts.form.step.imagesHint': 'تصویر شاخص با برش و گالری تصاویر را اضافه کنید.',
|
||
'customerProducts.form.step.details': 'جزئیات',
|
||
'customerProducts.form.step.detailsHint': 'توضیحات و اطلاعات فنی بر اساس دستهبندی انتخابشده.',
|
||
'customerProducts.form.step.detailsPlaceholder': 'جزئیات و فیلدهای فنی اینجا قرار میگیرند.',
|
||
'customerProducts.form.step.technical': 'اطلاعات فنی',
|
||
'customerProducts.form.step.technicalHint':
|
||
'وضعیت را انتخاب کنید، یادداشت اختیاری بنویسید و فرم فنی دستهبندی را تکمیل کنید.',
|
||
'customerProducts.form.optional': '(اختیاری)',
|
||
'customerProducts.form.loading': 'در حال بارگذاری محصولات…',
|
||
'customerProducts.form.fields.category': 'دستهبندی',
|
||
'customerProducts.form.fields.selectCategory': 'انتخاب دستهبندی',
|
||
'customerProducts.form.fields.searchCategory': 'جستجوی دستهبندی…',
|
||
'customerProducts.form.fields.clearCategory': 'پاک کردن دستهبندی',
|
||
'customerProducts.form.fields.noCategories': 'دستهبندیای پیدا نشد',
|
||
'customerProducts.form.fields.titleFa': 'نام (فارسی)',
|
||
'customerProducts.form.fields.titleFaPlaceholder': 'نام محصول به فارسی',
|
||
'customerProducts.form.fields.titleEn': 'نام (انگلیسی)',
|
||
'customerProducts.form.fields.titleEnPlaceholder': 'نام محصول به انگلیسی',
|
||
'customerProducts.form.fields.description': 'توضیحات',
|
||
'customerProducts.form.fields.descriptionPlaceholder': 'توضیح کوتاه درباره محصول',
|
||
'customerProducts.form.fields.price': 'قیمت پیشنهادی',
|
||
'customerProducts.form.fields.priceSuggested': 'قیمت پیشنهادی شما',
|
||
'customerProducts.form.fields.priceByExpert': 'میخواهم قیمت توسط کارشناس مشخص شود',
|
||
'customerProducts.form.fields.pricePlaceholder': 'مثلاً ۱٬۵۰۰٬۰۰۰',
|
||
'customerProducts.form.fields.priceUnit': 'واحد',
|
||
'customerProducts.form.fields.priceUnit.IRT': 'IRT',
|
||
'customerProducts.form.fields.priceUnit.USD': 'Dollar',
|
||
'customerProducts.form.fields.priceUnit.EUR': 'EURO',
|
||
'customerProducts.form.fields.priceUnit.AED': 'AED',
|
||
'customerProducts.form.fields.location': 'موقعیت',
|
||
'customerProducts.form.fields.country': 'کشور',
|
||
'customerProducts.form.fields.selectCountry': 'انتخاب کشور',
|
||
'customerProducts.form.fields.province': 'استان',
|
||
'customerProducts.form.fields.selectProvince': 'انتخاب استان',
|
||
'customerProducts.form.fields.city': 'شهر',
|
||
'customerProducts.form.fields.selectCity': 'انتخاب شهر',
|
||
'customerProducts.form.fields.searchCity': 'جستجوی شهر…',
|
||
'customerProducts.form.fields.clearCity': 'پاک کردن شهر',
|
||
'customerProducts.form.fields.noCities': 'شهری پیدا نشد',
|
||
'customerProducts.form.fields.deliveryNote': 'یادداشت تحویل / دریافت',
|
||
'customerProducts.form.fields.deliveryNotePlaceholder': 'مثلاً فقط حضوری، تحویل عصر…',
|
||
'customerProducts.form.fields.district': 'منطقه',
|
||
'customerProducts.form.fields.selectDistrict': 'انتخاب منطقه',
|
||
'customerProducts.form.fields.condition': 'وضعیت',
|
||
'customerProducts.form.fields.technicalNotes': 'توضیحات فنی',
|
||
'customerProducts.form.fields.technicalNotesPlaceholder': 'جزئیات فنی اختیاری…',
|
||
'customerProducts.form.condition.new': 'نو',
|
||
'customerProducts.form.condition.stock': 'استوک',
|
||
'customerProducts.form.condition.needs_repair': 'نیاز به تعمیر',
|
||
'customerProducts.form.condition.scrap': 'اوراق',
|
||
'customerProducts.form.images.thumbnail': 'تصویر شاخص',
|
||
'customerProducts.form.images.thumbnailUpload': 'آپلود تصویر شاخص',
|
||
'customerProducts.form.images.thumbnailHint': 'نسبت ۳:۲ افقی بهتر است',
|
||
'customerProducts.form.images.thumbnailChange': 'تغییر تصویر شاخص',
|
||
'customerProducts.form.images.thumbnailRemove': 'حذف تصویر شاخص',
|
||
'customerProducts.form.images.zoom': 'بزرگنمایی',
|
||
'customerProducts.form.images.applyCrop': 'اعمال برش',
|
||
'customerProducts.form.images.gallery': 'گالری',
|
||
'customerProducts.form.images.galleryAdd': 'افزودن عکس',
|
||
'customerProducts.form.images.galleryHint': 'میتوانید چند تصویر انتخاب کنید.',
|
||
'customerProducts.form.images.galleryRemove': 'حذف تصویر {index}',
|
||
'customerProducts.form.technical.select': 'انتخاب کنید…',
|
||
'customerProducts.form.technical.needCategory': 'برای نمایش فیلدهای فنی، در مرحله ۱ دستهبندی را انتخاب کنید.',
|
||
'customerProducts.form.technical.empty': 'برای این دستهبندی هنوز فیلد فنی تعریف نشده است.',
|
||
'customerProducts.form.technical.categoryForm': 'فرم فنی دستهبندی',
|
||
'customerProducts.form.technical.loading': 'در حال بارگذاری فیلدهای فنی…',
|
||
'customerProducts.form.cancel': 'انصراف',
|
||
'customerProducts.form.next': 'بعدی',
|
||
'customerProducts.form.back': 'قبلی',
|
||
'customerProducts.form.submit': 'ارسال',
|
||
'customerProducts.form.save': 'ذخیره تغییرات',
|
||
'customerProducts.form.submitting': 'در حال ارسال…',
|
||
'customerProducts.form.submitSuccess': 'محصول برای بررسی ارسال شد.',
|
||
'customerProducts.form.updateSuccess': 'محصول بهروز شد.',
|
||
'customerProducts.form.error.load': 'بارگذاری محصولات ممکن نشد.',
|
||
'customerProducts.form.error.loadDetail': 'بارگذاری این محصول ممکن نشد.',
|
||
'customerProducts.form.error.loadLocations': 'بارگذاری موقعیتها ممکن نشد.',
|
||
'customerProducts.form.error.loadCategories': 'بارگذاری دستهبندیها ممکن نشد.',
|
||
'customerProducts.form.error.loadTechnicalForm': 'بارگذاری فرم فنی دستهبندی ممکن نشد.',
|
||
'customerProducts.form.error.categoryRequired': 'لطفاً دستهبندی را انتخاب کنید.',
|
||
'customerProducts.form.error.titleFaRequired': 'لطفاً نام فارسی را وارد کنید.',
|
||
'customerProducts.form.error.locationRequired': 'لطفاً کشور و شهر را انتخاب کنید.',
|
||
'customerProducts.form.error.priceInvalid': 'لطفاً قیمت معتبر وارد کنید.',
|
||
'customerProducts.form.error.conditionRequired': 'لطفاً وضعیت را انتخاب کنید.',
|
||
'customerProducts.form.error.technicalRequired': 'لطفاً فیلدهای فنی الزامی را تکمیل کنید.',
|
||
'customerProducts.form.error.submit': 'ارسال محصول ممکن نشد.',
|
||
'customerProducts.form.error.update': 'بهروزرسانی محصول ممکن نشد.',
|
||
'customerProducts.form.error.remove': 'حذف محصول ممکن نشد.',
|
||
'customerProducts.form.error.promote': 'پروموت محصول ممکن نشد.',
|
||
|
||
'customerProducts.add': 'افزودن محصول',
|
||
'customerProducts.detailsTitle': 'جزئیات محصول',
|
||
'customerProducts.detailsSubtitle': 'جزئیات محصول ثبتشده توسط مشتری را ببینید.',
|
||
'customerProducts.backToList': 'بازگشت به محصولات مشتریان',
|
||
'customerProducts.owner': 'مشتری',
|
||
'customerProducts.location': 'موقعیت',
|
||
'customerProducts.promote': 'پروموت محصول',
|
||
'customerProducts.promoted': 'پروموت شده',
|
||
'customerProducts.promoteSuccess': 'محصول پروموت شد.',
|
||
'customerProducts.remove': 'حذف محصول',
|
||
'customerProducts.removeConfirm': 'این محصول مشتری حذف شود؟',
|
||
'customerProducts.removeSuccess': 'محصول حذف شد.',
|
||
'customerProducts.statusChange': 'تغییر وضعیت',
|
||
'customerProducts.statusModalTitle': 'تغییر وضعیت محصول',
|
||
'customerProducts.statusModalSave': 'بهروزرسانی وضعیت',
|
||
'customerProducts.statusModalHint': 'وضعیت نمایش این آگهی را انتخاب کنید.',
|
||
'customerProducts.status.pending': 'در انتظار تأیید',
|
||
'customerProducts.status.published': 'تأیید شده',
|
||
'customerProducts.status.rejected': 'رد شده',
|
||
'customerProducts.status.archived': 'بایگانی',
|
||
'customerProducts.statusSuccess': 'وضعیت بهروز شد.',
|
||
'customerProducts.loading': 'در حال بارگذاری محصولات…',
|
||
'customerProducts.error.load': 'بارگذاری محصولات مشتریان ممکن نشد.',
|
||
'customerProducts.error.loadDetail': 'بارگذاری این محصول ممکن نشد.',
|
||
'customerProducts.error.remove': 'حذف محصول ممکن نشد.',
|
||
'customerProducts.error.promote': 'پروموت محصول ممکن نشد.',
|
||
'customerProducts.error.status': 'بهروزرسانی وضعیت ممکن نشد.',
|
||
'customerProducts.yes': 'بله',
|
||
'customerProducts.edit': 'ویرایش محصول',
|
||
'customerProducts.approve': 'تأیید محصول',
|
||
'customerProducts.editSoon': 'ویرایش محصول مشتری در مرحله بعد اضافه میشود.',
|
||
'customerProducts.toast.approved': 'محصول تأیید شد.',
|
||
'customerProducts.priceUnavailable': 'قیمت اعلام نشده',
|
||
|
||
'products.card.edit': 'ویرایش محصول',
|
||
'products.card.quickInfo': 'اطلاعات سریع',
|
||
'products.card.variations': 'مدیریت تنوعها',
|
||
'products.card.comments': 'مشاهده نظرات',
|
||
'products.card.technical': 'اطلاعات فنی',
|
||
'products.card.remove': 'حذف محصول',
|
||
'products.card.draft': 'پیشنویس',
|
||
|
||
'products.details.loading': 'در حال بارگذاری محصول...',
|
||
'products.details.notFound': 'محصول یافت نشد.',
|
||
'products.details.errorLoad': 'بارگذاری محصول ممکن نشد.',
|
||
'products.details.back': 'بازگشت به محصولات من',
|
||
'products.details.openGallery': 'باز کردن گالری تصاویر',
|
||
'products.details.noImage': 'بدون تصویر',
|
||
'products.details.viewImage': 'مشاهده تصویر {index}',
|
||
'products.details.tabsAria': 'جزئیات محصول',
|
||
'products.details.tab.technical': 'اطلاعات فنی',
|
||
'products.details.tab.comments': 'نظرات',
|
||
'products.details.tab.reviews': 'بررسی کارشناسان',
|
||
'products.details.technical.loading': 'در حال بارگذاری اطلاعات فنی...',
|
||
'products.details.technical.noForm': 'برای این دستهبندی فرم فنی تعریف نشده است.',
|
||
'products.details.technical.noData': 'هنوز اطلاعات فنی برای این محصول ثبت نشده است.',
|
||
'products.details.technical.noCategory': 'این محصول به دستهبندی اختصاص داده نشده است.',
|
||
'products.details.technical.empty': 'اطلاعات فنی موجود نیست.',
|
||
'products.details.technical.errorLoad': 'بارگذاری اطلاعات فنی ممکن نشد.',
|
||
'products.details.comments.loading': 'در حال بارگذاری نظرات...',
|
||
'products.details.comments.empty': 'هنوز نظری برای این محصول ثبت نشده است.',
|
||
'products.details.comments.errorLoad': 'بارگذاری نظرات ممکن نشد.',
|
||
'products.details.comments.errorApprove': 'بهروزرسانی تأیید نظر ممکن نشد.',
|
||
'products.details.comments.errorDelete': 'حذف نظر ممکن نشد.',
|
||
'products.details.reviews.loading': 'در حال بارگذاری بررسی کارشناسان...',
|
||
'products.details.reviews.empty': 'هنوز بررسی کارشناسی ثبت نشده است.',
|
||
'products.details.reviews.errorLoad': 'بارگذاری بررسی کارشناسان ممکن نشد.',
|
||
'products.details.reviews.errorApprove': 'بهروزرسانی تأیید بررسی ممکن نشد.',
|
||
'products.details.reviews.errorDelete': 'حذف بررسی کارشناسی ممکن نشد.',
|
||
'products.details.pending': 'در انتظار تأیید',
|
||
'products.details.approve': 'تأیید',
|
||
'products.details.reject': 'رد',
|
||
'products.details.remove': 'حذف',
|
||
'products.details.positivePoints': 'نقاط قوت',
|
||
'products.details.negativePoints': 'نقاط ضعف',
|
||
'products.details.ratingAria': 'امتیاز {rate} از ۱۰',
|
||
|
||
'products.form.errorOptions': 'بارگذاری گزینههای فرم ممکن نشد.',
|
||
'products.form.errorSave': 'ذخیره محصول ممکن نشد.',
|
||
'products.form.thumbnail': 'تصویر بندانگشتی',
|
||
'products.form.thumbnailUpload': 'آپلود تصویر بندانگشتی',
|
||
'products.form.thumbnailHint': 'برای انتخاب کلیک کنید، سپس برش دهید',
|
||
'products.form.thumbnailChange': 'تغییر تصویر بندانگشتی',
|
||
'products.form.thumbnailRemove': 'حذف تصویر بندانگشتی',
|
||
'products.form.zoom': 'بزرگنمایی',
|
||
'products.form.applyCrop': 'اعمال برش',
|
||
'products.form.category': 'دستهبندی',
|
||
'products.form.categoryPlaceholder': 'جستجو و انتخاب دستهبندی...',
|
||
'products.form.brand': 'برند',
|
||
'products.form.optional': '(اختیاری)',
|
||
'products.form.brandPlaceholder': 'جستجو و انتخاب برند...',
|
||
'products.form.nameFa': 'نام (فارسی)',
|
||
'products.form.nameFaPlaceholder': 'نام محصول',
|
||
'products.form.nameEn': 'نام (انگلیسی)',
|
||
'products.form.nameEnPlaceholder': 'Product name',
|
||
'products.form.summary': 'خلاصه',
|
||
'products.form.summaryPlaceholder': 'خلاصه کوتاه برای نمایش در فهرست محصولات',
|
||
'products.form.description': 'توضیحات',
|
||
'products.form.descriptionPlaceholder': 'توضیحات کامل محصول با قالببندی...',
|
||
'products.form.aiFill': 'هوش مصنوعی',
|
||
'products.form.aiFillSummaryTitle': 'تولید خلاصه با هوش مصنوعی',
|
||
'products.form.aiFillDescriptionTitle': 'تولید توضیحات با هوش مصنوعی',
|
||
'products.form.aiFillSubtitle': 'پرامپت را ویرایش کنید، سپس اجرا کنید تا این فیلد پر شود.',
|
||
'products.form.aiPrompt': 'پرامپت',
|
||
'products.form.aiPromptTooShort': 'پرامپت باید حداقل ۱۰ کاراکتر باشد.',
|
||
'products.form.aiFillError': 'تولید با هوش مصنوعی ممکن نشد.',
|
||
'products.form.aiFillNeedName': 'ابتدا نام محصول را وارد کنید.',
|
||
'products.form.aiGenerating': 'در حال تولید…',
|
||
'products.form.aiRun': 'اجرا',
|
||
'products.form.aiSummaryFilled': 'خلاصه با هوش مصنوعی پر شد.',
|
||
'products.form.aiDescriptionFilled': 'توضیحات با هوش مصنوعی پر شد.',
|
||
'products.form.images': 'تصاویر محصول',
|
||
'products.form.imagesAdd': 'افزودن تصاویر',
|
||
'products.form.imagesHint': 'چند تصویر محصول آپلود کنید. برای افزودن بیشتر روی + کلیک کنید.',
|
||
'products.form.imagesRemove': 'حذف تصویر {index}',
|
||
'products.form.tags': 'برچسبها',
|
||
'products.form.tagsPlaceholder': 'برچسب را بنویسید و Enter بزنید',
|
||
'products.form.cancel': 'انصراف',
|
||
'products.form.saving': 'در حال ذخیره...',
|
||
'products.form.save': 'ذخیره محصول',
|
||
'products.form.update': 'بهروزرسانی محصول',
|
||
|
||
'categories.page.subtitle': 'دستهبندیها و زیردستههای محصولات خود را مدیریت کنید.',
|
||
'categories.loading': 'در حال بارگذاری دستهبندیها...',
|
||
'categories.empty': 'هنوز دستهبندیای نیست. با + یا هوش مصنوعی اضافه کنید.',
|
||
'categories.add': 'افزودن دستهبندی',
|
||
'categories.addSub': 'افزودن زیردسته',
|
||
'categories.edit': 'ویرایش دستهبندی',
|
||
'categories.addByAi': 'پر کردن دستهها با هوش مصنوعی',
|
||
'categories.ai.title': 'پر کردن دستهها با هوش مصنوعی',
|
||
'categories.ai.subtitle':
|
||
'پرامپت زیر را ویرایش کنید، سپس اجرا کنید تا درخت دستهبندی ساخته و ذخیره شود.',
|
||
'categories.ai.error': 'تولید دستهبندی با هوش مصنوعی ممکن نشد.',
|
||
'categories.deleteTitle': 'حذف دستهبندی',
|
||
'categories.deleteMessage':
|
||
'آیا از حذف «{name}» مطمئن هستید؟ زیردستهها نیز حذف میشوند.',
|
||
'categories.tooltip.addSub': 'افزودن زیردسته',
|
||
'categories.tooltip.edit': 'ویرایش دستهبندی',
|
||
'categories.tooltip.variations': 'مدیریت تنوعها',
|
||
'categories.tooltip.technical': 'فرم اطلاعات فنی',
|
||
'categories.tooltip.options': 'گزینههای دستهبندی',
|
||
'categories.tooltip.remove': 'حذف دستهبندی',
|
||
'categories.tooltip.expand': 'باز کردن',
|
||
'categories.tooltip.collapse': 'بستن',
|
||
'categories.modal.parent': 'دسته والد',
|
||
'categories.modal.nameFa': 'نام (فارسی)',
|
||
'categories.modal.nameEn': 'نام (انگلیسی)',
|
||
'categories.modal.description': 'توضیحات',
|
||
'categories.modal.nameFaPlaceholder': 'نام دستهبندی',
|
||
'categories.modal.nameEnPlaceholder': 'Category name',
|
||
'categories.modal.descriptionPlaceholder': 'توضیح کوتاه این دستهبندی',
|
||
'categories.modal.cancel': 'انصراف',
|
||
'categories.modal.save': 'ذخیره دستهبندی',
|
||
'categories.modal.saving': 'در حال ذخیره...',
|
||
'categories.select.search': 'جستجوی دستهبندیها...',
|
||
'categories.select.none': '— بدون والد (دسته اصلی) —',
|
||
'categories.select.empty': 'دستهبندیای یافت نشد',
|
||
'categories.select.clear': 'پاک کردن انتخاب',
|
||
|
||
'categories.technical.title': 'فرم اطلاعات فنی',
|
||
'categories.technical.loading': 'در حال بارگذاری فرم...',
|
||
'categories.technical.empty':
|
||
'هنوز فیلدی نیست. فیلد متنی، چندخطی، انتخابی یا چندانتخابی اضافه کنید.',
|
||
'categories.technical.fieldLabel': 'برچسب فیلد',
|
||
'categories.technical.inputType': 'نوع ورودی',
|
||
'categories.technical.required': 'الزامی',
|
||
'categories.technical.removeField': 'حذف فیلد',
|
||
'categories.technical.options': 'گزینهها',
|
||
'categories.technical.optionN': 'گزینه {n}',
|
||
'categories.technical.removeOption': 'حذف گزینه',
|
||
'categories.technical.addOption': 'افزودن گزینه',
|
||
'categories.technical.addField': 'افزودن فیلد',
|
||
'categories.technical.generateAi': 'تولید با هوش مصنوعی',
|
||
'categories.technical.save': 'ذخیره فرم',
|
||
'categories.technical.saving': 'در حال ذخیره…',
|
||
'categories.technical.type.text': 'متنی',
|
||
'categories.technical.type.textarea': 'چندخطی',
|
||
'categories.technical.type.select': 'انتخابی',
|
||
'categories.technical.type.multi_select': 'چندانتخابی',
|
||
'categories.technical.ai.title': 'تولید فرم فنی با هوش مصنوعی',
|
||
'categories.technical.ai.subtitle':
|
||
'پرامپت زیر را ویرایش کنید، سپس اجرا کنید تا فیلدهای فرم پر شوند.',
|
||
'categories.technical.ai.error': 'تولید فرم فنی با هوش مصنوعی ممکن نشد.',
|
||
|
||
'brands.page.subtitle': 'برندهای محصول فروشگاه خود را مدیریت کنید.',
|
||
'brands.loading': 'در حال بارگذاری برندها...',
|
||
'brands.empty': 'هنوز برندی نیست. برای افزودن روی + کلیک کنید.',
|
||
'brands.add': 'افزودن برند',
|
||
'brands.edit': 'ویرایش برند',
|
||
'brands.deleteTitle': 'حذف برند',
|
||
'brands.deleteMessage':
|
||
'آیا از حذف «{name}» مطمئن هستید؟ برند محصولات مرتبط پاک میشود.',
|
||
'brands.toast.created': 'برند ایجاد شد.',
|
||
'brands.toast.updated': 'برند بهروزرسانی شد.',
|
||
'brands.toast.deleted': 'برند حذف شد.',
|
||
'brands.errorLoad': 'بارگذاری برندها ممکن نشد.',
|
||
'brands.errorSave': 'ذخیره برند ممکن نشد.',
|
||
'brands.errorDelete': 'حذف برند ممکن نشد.',
|
||
'brands.tooltip.edit': 'ویرایش برند',
|
||
'brands.tooltip.remove': 'حذف برند',
|
||
'brands.modal.logo': 'لوگوی برند',
|
||
'brands.modal.uploadLogo': 'آپلود لوگوی برند',
|
||
'brands.modal.logoHint': 'فقط PNG — پسزمینه شفاف توصیه میشود',
|
||
'brands.modal.changeLogo': 'تغییر لوگو',
|
||
'brands.modal.nameFa': 'نام (فارسی)',
|
||
'brands.modal.nameEn': 'نام (انگلیسی)',
|
||
'brands.modal.about': 'درباره',
|
||
'brands.modal.nameFaPlaceholder': 'نام برند',
|
||
'brands.modal.nameEnPlaceholder': 'Brand name',
|
||
'brands.modal.aboutPlaceholder': 'توضیح کوتاه این برند',
|
||
'brands.modal.cancel': 'انصراف',
|
||
'brands.modal.save': 'ذخیره برند',
|
||
'brands.modal.saving': 'در حال ذخیره...',
|
||
|
||
'productSettings.title': 'تنظیمات محصول',
|
||
'productSettings.subtitle': 'نحوه تأیید نظرات و بررسیهای کارشناسی را پیکربندی کنید.',
|
||
'productSettings.moderation': 'نظارت',
|
||
'productSettings.loading': 'در حال بارگذاری تنظیمات...',
|
||
'productSettings.errorLoad': 'بارگذاری تنظیمات ممکن نشد.',
|
||
'productSettings.errorSave': 'ذخیره تنظیمات ممکن نشد.',
|
||
'productSettings.saved': 'تنظیمات ذخیره شد.',
|
||
'productSettings.commentsAuto': 'تأیید خودکار نظرات',
|
||
'productSettings.commentsAutoDesc':
|
||
'نظرات جدید بلافاصله پس از ثبت منتشر میشوند. در صورت نیاز بعداً میتوانید آنها را رد کنید.',
|
||
'productSettings.reviewsAuto': 'تأیید خودکار بررسی کارشناسی',
|
||
'productSettings.reviewsAutoDesc':
|
||
'بررسیهای کارشناسی جدید بلافاصله پس از ثبت منتشر میشوند. در صورت نیاز بعداً میتوانید آنها را رد کنید.',
|
||
|
||
'store.page.subtitle': 'محصولات، سفارشها و تنظیمات فروشگاه را مدیریت کنید.',
|
||
'store.card.items.desc': 'همه محصولات فهرستشده در فروشگاه را ببینید و مدیریت کنید.',
|
||
'store.card.items.link': 'مشاهده محصولات',
|
||
'store.card.orders.desc': 'سفارشهای مشتریان و ارسال را پیگیری و مدیریت کنید.',
|
||
'store.card.orders.link': 'مشاهده سفارشها',
|
||
'store.card.shipping.desc': 'نرخها، مناطق و گزینههای ارسال را پیکربندی کنید.',
|
||
'store.card.shipping.link': 'مدیریت ارسال',
|
||
'store.card.cards.desc': 'کارتهای خرید ذخیرهشده و روشهای پرداخت را مدیریت کنید.',
|
||
'store.card.cards.link': 'مشاهده کارتها',
|
||
'store.card.settings.desc': 'ترجیحات، صفحات و ظاهر فروشگاه را پیکربندی کنید.',
|
||
'store.card.settings.link': 'مشاهده تنظیمات',
|
||
|
||
'storeItems.subtitle': 'محصولات فروش با یک یا چند تنوع قیمتگذاریشده.',
|
||
'storeItems.filters': 'فیلترها',
|
||
'storeItems.filterName': 'نام',
|
||
'storeItems.filterNamePlaceholder': 'جستجو بر اساس نام محصول',
|
||
'storeItems.minPrice': 'حداقل قیمت (IRT)',
|
||
'storeItems.maxPrice': 'حداکثر قیمت (IRT)',
|
||
'storeItems.onlyDiscounted': 'فقط تخفیفدار',
|
||
'storeItems.search': 'جستجو',
|
||
'storeItems.clearFilters': 'پاک کردن فیلترها',
|
||
'storeItems.loading': 'در حال بارگذاری محصولات فروشگاه...',
|
||
'storeItems.empty': 'هنوز هیچ محصولی برای فروش ندارید',
|
||
'storeItems.emptyHint': 'از کاتالوگ محصول اضافه کنید.',
|
||
'storeItems.emptyFiltered': 'هیچ محصولی با فیلترهای شما مطابقت ندارد.',
|
||
'storeItems.pagination':
|
||
'صفحه {page} / {totalPages} · {perPage} در هر صفحه · {total} مجموع',
|
||
'storeItems.errorLoad': 'بارگذاری محصولات فروشگاه ممکن نشد.',
|
||
'storeItems.errorRemove': 'حذف محصول از فروشگاه ممکن نشد.',
|
||
'storeItems.add': 'افزودن محصول به فروشگاه',
|
||
'storeItems.cartOpen': 'باز کردن سبد خرید، {count} قلم',
|
||
'storeItems.cartOne': 'قلم در سبد',
|
||
'storeItems.cartMany': 'قلم در سبد',
|
||
'storeItems.addedToCart': 'به سبد خرید اضافه شد.',
|
||
'storeItems.deleteTitle': 'حذف از فروشگاه',
|
||
'storeItems.deleteMessage':
|
||
'«{name}» و همه {variants} از فروشگاه حذف شوند؟ این عمل قابل بازگشت نیست.',
|
||
'storeItems.card.inStock': '{count} موجود',
|
||
'storeItems.card.festival': 'جشنواره',
|
||
'storeItems.card.variantOne': '۱ تنوع',
|
||
'storeItems.card.variantMany': '{count} تنوع',
|
||
'storeItems.card.edit': 'ویرایش محصول فروشگاه',
|
||
'storeItems.card.discount': 'تنظیم تخفیف',
|
||
'storeItems.card.festivalPoints': 'امتیاز جشنواره',
|
||
'storeItems.card.remove': 'حذف از فروشگاه',
|
||
'storeItems.card.addToCart': 'افزودن به سبد خرید',
|
||
'storeItems.pick.title': 'انتخاب تنوع',
|
||
'storeItems.pick.inStock': '{count} موجود',
|
||
'storeItems.create.title': 'افزودن محصول به فروشگاه',
|
||
'storeItems.create.subtitle': 'تنوعهای قابل فروش را از تنوعهای یک محصول بسازید.',
|
||
'storeItems.create.productPlaceholder': 'محصول — حداقل ۳ کاراکتر برای جستجو',
|
||
'storeItems.create.loadingVariations': 'در حال بارگذاری تنوعهای محصول...',
|
||
'storeItems.create.price': 'قیمت (IRT)',
|
||
'storeItems.create.stock': 'موجودی',
|
||
'storeItems.create.unlimited': 'نامحدود',
|
||
'storeItems.create.removeRow': 'حذف ردیف',
|
||
'storeItems.create.addRow': 'افزودن ردیف',
|
||
'storeItems.create.addAllProducts': 'افزودن همه محصولات',
|
||
'storeItems.create.addingAll': 'در حال ایجاد برای همه محصولات…',
|
||
'storeItems.create.addAllDone': 'ایجاد شد {created}، رد شد {skipped}، ناموفق {failed}',
|
||
'storeItems.create.addAllConfirmTitle': 'افزودن همه محصولات به فروشگاه؟',
|
||
'storeItems.create.addAllConfirmIntro':
|
||
'برای هر محصولی که هنوز به فروشگاه اضافه نشده است، تنوعهای قابل فروش ساخته میشود. فقط وقتی میخواهید همهٔ محصولات یکجا به فروشگاه اضافه شود از این گزینه استفاده کنید.',
|
||
'storeItems.create.addAllConfirmMax':
|
||
'حداکثر ۵ گزینهٔ اول از تنوعها ساخته خواهد شد (نه ترکیب کامل همهٔ تنوعها).',
|
||
'storeItems.create.addAllConfirmSkip':
|
||
'محصولاتی که در فروشگاه هستند رد خواهند شد.',
|
||
'storeItems.create.addAllConfirmHeavy':
|
||
'این کار بهخصوص در تعداد محصول بالا، کار سنگینی محسوب میشود — از آن هوشمندانه استفاده کنید.',
|
||
'storeItems.create.addAllAgree': 'متوجه شدم و میخواهم ادامه دهم',
|
||
'storeItems.create.addAllConfirm': 'ایجاد برای همه',
|
||
'storeItems.create.addAllResultTitle': 'ایجاد گروهی تمام شد',
|
||
'storeItems.create.addAllDoneBtn': 'باشه',
|
||
'storeItems.create.cancel': 'انصراف',
|
||
'storeItems.create.submit': 'افزودن محصول به فروشگاه',
|
||
'storeItems.create.submitting': 'در حال افزودن…',
|
||
'storeItems.create.errorProducts': 'بارگذاری محصولات ممکن نشد.',
|
||
'storeItems.create.errorVariations': 'بارگذاری تنوعهای محصول ممکن نشد.',
|
||
'storeItems.create.errorCreate': 'افزودن محصول به فروشگاه ممکن نشد.',
|
||
'storeItems.price.contact': 'برای قیمت، تماس بگیرید',
|
||
'storeItems.edit.title': 'ویرایش محصول فروشگاه',
|
||
'storeItems.edit.save': 'ذخیره تغییرات',
|
||
'storeItems.edit.saving': 'در حال ذخیره…',
|
||
'storeItems.edit.errorSave': 'ذخیره محصول فروشگاه ممکن نشد.',
|
||
'storeItems.search.clear': 'پاک کردن انتخاب',
|
||
'storeItems.search.noProducts': 'محصولی موجود نیست.',
|
||
'storeItems.search.noMatch': 'محصولی یافت نشد.',
|
||
'storeItems.search.minChars': 'حداقل {count} کاراکتر برای جستجو وارد کنید',
|
||
'storeItems.discount.title': 'تنظیم تخفیف',
|
||
'storeItems.discount.variant': 'تنوع',
|
||
'storeItems.discount.regularPrice': 'قیمت عادی',
|
||
'storeItems.discount.discountedPrice': 'قیمت با تخفیف (IRT)',
|
||
'storeItems.discount.placeholder': 'بدون تخفیف',
|
||
'storeItems.discount.save': 'ذخیره تخفیف',
|
||
'storeItems.discount.saving': 'در حال ذخیره…',
|
||
'storeItems.discount.errorSave': 'ذخیره تخفیف ممکن نشد.',
|
||
|
||
'orders.title': 'سفارشها',
|
||
'orders.subtitle':
|
||
'سفارشهای مشتریان از وبسایت، اپلیکیشن یا ثبتشده توسط اپراتور را پیگیری کنید.',
|
||
'orders.filters': 'فیلترها',
|
||
'orders.filter.orderId': 'شماره سفارش',
|
||
'orders.filter.customer': 'نام یا شماره مشتری',
|
||
'orders.filter.dateFrom': 'از تاریخ',
|
||
'orders.filter.dateTo': 'تا تاریخ',
|
||
'orders.filter.minCost': 'حداقل مبلغ (IRT)',
|
||
'orders.filter.maxCost': 'حداکثر مبلغ (IRT)',
|
||
'orders.search': 'جستجو',
|
||
'orders.clearFilters': 'پاک کردن فیلترها',
|
||
'orders.listTitle': 'فهرست سفارشها',
|
||
'orders.showing': 'نمایش {from} تا {to} از {total}',
|
||
'orders.none': 'بدون سفارش',
|
||
'orders.empty': 'نتیجهای یافت نشد.',
|
||
'orders.loading': 'در حال بارگذاری سفارشها...',
|
||
'orders.error.load': 'بارگذاری سفارشها ممکن نشد.',
|
||
'orders.error.minMax': 'حداقل مبلغ نمیتواند از حداکثر بیشتر باشد.',
|
||
'orders.error.remove': 'حذف سفارش ممکن نشد.',
|
||
'orders.removed': 'سفارش {orderNumber} حذف شد.',
|
||
'orders.col.orderId': 'شماره سفارش',
|
||
'orders.col.customer': 'مشتری',
|
||
'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.transactions': 'جزئیات تراکنش',
|
||
'orders.remove': 'حذف سفارش',
|
||
'orders.changeStep': 'تغییر وضعیت: {step}',
|
||
'orders.deleteTitle': 'حذف سفارش؟',
|
||
'orders.deleteMessage': 'سفارش {orderNumber} حذف شود؟ این عمل قابل بازگشت نیست.',
|
||
'orders.source.operator': 'اپراتور',
|
||
'orders.source.app': 'اپلیکیشن',
|
||
'orders.source.website': 'وبسایت',
|
||
|
||
'shoppingCards.title': 'کارتهای خرید',
|
||
'shoppingCards.subtitle': 'سبدهای ذخیرهشده اپراتور که منتظر تکمیل بهصورت سفارش هستند.',
|
||
'shoppingCards.listTitle': 'فهرست کارتهای خرید',
|
||
'shoppingCards.none': 'بدون کارت خرید',
|
||
'shoppingCards.empty': 'نتیجهای یافت نشد.',
|
||
'shoppingCards.loading': 'در حال بارگذاری کارتهای خرید...',
|
||
'shoppingCards.error.load': 'بارگذاری کارتهای خرید ممکن نشد.',
|
||
'shoppingCards.error.remove': 'حذف کارت خرید ممکن نشد.',
|
||
'shoppingCards.removed': 'کارت خرید حذف شد.',
|
||
'shoppingCards.continue': 'ادامه',
|
||
'shoppingCards.continueAria': 'ادامه کارت خرید',
|
||
'shoppingCards.remove': 'حذف کارت',
|
||
'shoppingCards.removeAria': 'حذف کارت خرید',
|
||
'shoppingCards.deleteTitle': 'حذف کارت خرید؟',
|
||
'shoppingCards.deleteMessage':
|
||
'کارت خرید «{name}» حذف شود؟ این عمل قابل بازگشت نیست.',
|
||
|
||
'storeSettings.title': 'تنظیمات فروشگاه',
|
||
'storeSettings.subtitle':
|
||
'فروش آنلاین را کنترل کنید و مسیر پردازش سفارشها را تعریف کنید.',
|
||
'storeSettings.sales': 'فروش',
|
||
'storeSettings.onlineSell': 'فروش آنلاین',
|
||
'storeSettings.onlineSellDesc':
|
||
'در صورت غیرفعال بودن، همه فروشهای وبسایت خاموش میشوند و مشتریان نمیتوانند سفارش آنلاین ثبت کنند.',
|
||
'storeSettings.orderProcess': 'فرآیند سفارش',
|
||
'storeSettings.orderProcessDesc':
|
||
'مراحل طیشده توسط سفارش را تعریف کنید — مثلاً: در حال پردازش، آماده ارسال، ارسالشده، تحویلشده.',
|
||
'storeSettings.labelEn': 'Label (EN)',
|
||
'storeSettings.labelFa': 'عنوان (فارسی)',
|
||
'storeSettings.stepEnAria': 'برچسب انگلیسی مرحله {index}',
|
||
'storeSettings.stepFaAria': 'برچسب فارسی مرحله {index}',
|
||
'storeSettings.stepColorAria': 'رنگ مرحله {index}',
|
||
'storeSettings.moveUp': 'جابهجایی به بالا',
|
||
'storeSettings.moveDown': 'جابهجایی به پایین',
|
||
'storeSettings.removeStep': 'حذف مرحله',
|
||
'storeSettings.addStep': 'افزودن مرحله',
|
||
'storeSettings.saveSteps': 'ذخیره مراحل',
|
||
'storeSettings.saving': 'در حال ذخیره...',
|
||
'storeSettings.emptySteps':
|
||
'هنوز مرحلهای نیست. اولین مرحله را برای تعریف گردش کار اضافه کنید.',
|
||
'storeSettings.error.minSteps': 'حداقل یک مرحله فرآیند سفارش اضافه کنید.',
|
||
'storeSettings.error.labels': 'هر مرحله باید برچسب انگلیسی و فارسی داشته باشد.',
|
||
'storeSettings.error.saveSteps': 'ذخیره مراحل فرآیند سفارش ممکن نشد.',
|
||
'storeSettings.stepsSaved': 'مراحل فرآیند سفارش ذخیره شد.',
|
||
|
||
'customers.title': 'کاربران',
|
||
'customers.subtitle':
|
||
'مشتریانی را ببینید که در کسبوکار شما ثبتنام کرده یا سفارش دادهاند.',
|
||
'customers.filters': 'فیلترها',
|
||
'customers.filter.name': 'جستجو بر اساس نام',
|
||
'customers.filter.cell': 'شماره موبایل',
|
||
'customers.filter.access': 'نقش کاربر',
|
||
'customers.filter.access.all': 'تمام کاربران',
|
||
'customers.filter.access.customers': 'مشتریان',
|
||
'customers.filter.access.managers': 'مدیران سیستم',
|
||
'customers.search': 'جستجو',
|
||
'customers.clearFilters': 'پاک کردن فیلترها',
|
||
'customers.listTitle': 'فهرست کاربران',
|
||
'customers.showing': 'نمایش {from} تا {to} از {total}',
|
||
'customers.none': 'بدون مشتری',
|
||
'customers.empty': 'نتیجهای یافت نشد.',
|
||
'customers.loading': 'در حال بارگذاری مشتریان...',
|
||
'customers.pageMeta': 'صفحه {page} / {totalPages} · {pageSize} در هر صفحه · {total} کل',
|
||
'customers.col.name': 'نام',
|
||
'customers.col.role': 'نقش',
|
||
'customers.col.cell': 'شماره موبایل',
|
||
'customers.col.email': 'ایمیل',
|
||
'customers.col.orders': 'سفارشها',
|
||
'customers.col.transactions': 'تراکنشها',
|
||
'customers.col.date': 'تاریخ عضویت',
|
||
'customers.col.actions': 'عملیات',
|
||
'customers.noOrders': 'بدون سفارش',
|
||
'customers.disabled': 'غیرفعال',
|
||
'customers.enable': 'فعالسازی مشتری',
|
||
'customers.disable': 'غیرفعالسازی مشتری',
|
||
'customers.enableAria': 'فعالسازی {name}',
|
||
'customers.disableAria': 'غیرفعالسازی {name}',
|
||
'customers.edit': 'ویرایش مشتری',
|
||
'customers.sms': 'ارسال پیامک',
|
||
'customers.tickets': 'تیکتها',
|
||
'customers.invoices': 'مشاهده فاکتورها',
|
||
'customers.remove': 'حذف مشتری',
|
||
'customers.add': 'افزودن مشتری',
|
||
'customers.error.load': 'بارگذاری مشتریان ممکن نشد.',
|
||
'customers.error.update': 'بهروزرسانی مشتری ممکن نشد.',
|
||
'customers.error.remove': 'حذف مشتری ممکن نشد.',
|
||
'customers.toast.enabled': '«{name}» فعال شد.',
|
||
'customers.toast.disabled': '«{name}» غیرفعال شد.',
|
||
'customers.toast.removed': '«{name}» حذف شد.',
|
||
'customers.toast.updated': '«{name}» بهروزرسانی شد.',
|
||
'customers.toast.added': '«{name}» اضافه شد.',
|
||
'customers.toast.smsSoon': 'ارسال پیامک به {phone} هنوز در دسترس نیست.',
|
||
'customers.toast.ticketsSoon': 'تیکتهای «{name}» هنوز در دسترس نیست.',
|
||
'customers.deleteTitle': 'حذف مشتری؟',
|
||
'customers.deleteMessage':
|
||
'«{name}» از کسبوکار شما حذف شود؟ حساب کاربری او حذف نخواهد شد.',
|
||
'customers.addModal.title': 'افزودن مشتری',
|
||
'customers.addModal.subtitle':
|
||
'یک حساب تأییدشده مشتری میسازد یا کاربر موجود را به کسبوکار شما وصل میکند.',
|
||
'customers.addModal.hint':
|
||
'رمز عبور فقط برای حسابهای جدید لازم است. کاربران موجود بهعنوان مشتری تأییدشده اضافه میشوند.',
|
||
'customers.addModal.pointCreate':
|
||
'یک حساب تأییدشده مشتری میسازد یا کاربر موجود را به کسبوکار شما وصل میکند.',
|
||
'customers.addModal.pointPassword':
|
||
'رمز عبور فقط برای حسابهای جدید لازم است. کاربران موجود بهعنوان مشتری تأییدشده اضافه میشوند.',
|
||
'customers.addModal.firstName': 'نام',
|
||
'customers.addModal.lastName': 'نام خانوادگی',
|
||
'customers.addModal.firstNameFa': 'نام (فارسی)',
|
||
'customers.addModal.lastNameFa': 'نام خانوادگی (فارسی)',
|
||
'customers.addModal.firstNameEn': 'نام (انگلیسی)',
|
||
'customers.addModal.lastNameEn': 'نام خانوادگی (انگلیسی)',
|
||
'customers.addModal.cell': 'شماره موبایل',
|
||
'customers.addModal.cellPlaceholder': '۰۹۱۲...',
|
||
'customers.addModal.password': 'رمز عبور (کاربران جدید)',
|
||
'customers.addModal.passwordPlaceholder': 'حداقل ۸ کاراکتر',
|
||
'customers.addModal.passwordConfirm': 'تکرار رمز عبور',
|
||
'customers.addModal.passwordConfirmPlaceholder': 'رمز عبور را تکرار کنید',
|
||
'customers.addModal.cancel': 'انصراف',
|
||
'customers.addModal.submit': 'افزودن مشتری',
|
||
'customers.addModal.error': 'افزودن مشتری ممکن نشد.',
|
||
'customers.addModal.errorPasswordMatch': 'رمزهای عبور یکسان نیستند.',
|
||
'customers.addModal.errorPasswordLength': 'رمز عبور باید حداقل ۸ کاراکتر باشد.',
|
||
'customers.addModal.errorNameEnLength': 'نام انگلیسی باید حداقل ۲ کاراکتر باشد.',
|
||
'customers.access.title': 'تغییر دسترسی',
|
||
'customers.access.subtitle': 'دسترسی مشتری یا مدیر را برای {name} انتخاب کنید.',
|
||
'customers.access.customer': 'مشتری',
|
||
'customers.access.manager': 'مدیر',
|
||
'customers.access.role.admin': 'ادمین',
|
||
'customers.access.role.editor': 'ویرایشگر',
|
||
'customers.access.role.viewer': 'ناظر',
|
||
'customers.access.role.admin.desc':
|
||
'ادمین میتواند ببیند، ویرایش کند و همچنین دیگر ویرایشگران و ناظرین را مشخص کند.',
|
||
'customers.access.role.editor.desc': 'ویرایشگر میتواند محتواها را ببیند و آنها را ویرایش کند.',
|
||
'customers.access.role.viewer.desc':
|
||
'ناظر میتواند فقط محتوا را ببیند. ناظر بیشتر برای مدیریت سفارشات و بررسی کیفی محتواها کاربرد دارد.',
|
||
'customers.access.hintSuperAdmin':
|
||
'ادمین میتواند مدیران دیگر را مدیریت کند (بهجز ادمینهای دیگر). ویرایشگر و ناظر محتوا را مدیریت میکنند.',
|
||
'customers.access.hintBusiness':
|
||
'مدیران میتوانند ویرایشگر یا ناظر باشند. فقط سوپرادمین میتواند ادمین تعیین کند.',
|
||
'customers.access.cancel': 'انصراف',
|
||
'customers.access.save': 'ذخیره',
|
||
'customers.access.error': 'بهروزرسانی دسترسی ممکن نشد.',
|
||
'customers.access.change': 'تغییر دسترسی',
|
||
'customers.access.ownerLocked': 'نقش صاحب کسبوکار قابل تغییر نیست',
|
||
'customers.access.adminLocked': 'فقط سوپرادمین میتواند ادمین را تغییر دهد',
|
||
'customers.access.badge.owner': 'مالک کسب و کار',
|
||
'customers.access.badge.admin': 'ادمین',
|
||
'customers.access.badge.editor': 'ویرایشگر',
|
||
'customers.access.badge.viewer': 'ناظر',
|
||
'customers.access.badge.manager': 'مدیر',
|
||
'customers.toast.accessUpdated': 'دسترسی به {role} بهروزرسانی شد.',
|
||
|
||
'blog.page.subtitle': 'مطالب و دستهبندیهای بلاگ را ایجاد و مدیریت کنید.',
|
||
'blog.card.list.desc': 'همه مطالب بلاگ را مشاهده، ویرایش و مدیریت کنید.',
|
||
'blog.card.list.link': 'مشاهده بلاگها',
|
||
'blog.card.new.desc': 'یک مطلب بلاگ جدید ایجاد و منتشر کنید.',
|
||
'blog.card.new.link': 'افزودن بلاگ',
|
||
'blog.card.categories.title': 'دستهبندیهای بلاگ',
|
||
'blog.card.categories.desc': 'مطالب بلاگ را در دستهبندیها و زیردستهها سازماندهی کنید.',
|
||
'blog.card.categories.link': 'مشاهده دستهبندیها',
|
||
'blog.card.settings.desc': 'تأیید نظرات بلاگ و گزینههای نمایش را پیکربندی کنید.',
|
||
'blog.card.settings.link': 'مشاهده تنظیمات',
|
||
|
||
'blog.list.subtitle': '{count} مطلب · مشاهده، ویرایش و مدیریت محتوای بلاگ.',
|
||
'blog.list.loading': 'در حال بارگذاری مطالب بلاگ...',
|
||
'blog.list.empty': 'هنوز مطلب بلاگی ندارید.',
|
||
'blog.list.emptyHint': 'اخبار، داستانها و بهروزرسانیها را با مخاطبان خود به اشتراک بگذارید.',
|
||
'blog.list.emptyCta': 'اولین مطلب را بنویسید',
|
||
'blog.list.errorLoad': 'بارگذاری مطالب بلاگ ممکن نشد.',
|
||
'blog.list.errorDelete': 'حذف مطلب بلاگ ممکن نشد.',
|
||
'blog.list.errorVerify': 'بهروزرسانی وضعیت تأیید بلاگ ممکن نشد.',
|
||
'blog.list.toast.removed': 'مطلب بلاگ حذف شد.',
|
||
'blog.list.toast.verified': 'بلاگ تأیید شد.',
|
||
'blog.list.toast.unverified': 'تأیید بلاگ لغو شد.',
|
||
'blog.list.deleteTitle': 'حذف مطلب بلاگ',
|
||
'blog.list.deleteMessage':
|
||
'آیا از حذف «{name}» مطمئن هستید؟ این عمل قابل بازگشت نیست.',
|
||
'blog.list.addNew': 'افزودن بلاگ',
|
||
|
||
'blog.card.edit': 'ویرایش بلاگ',
|
||
'blog.card.verify': 'تأیید بلاگ',
|
||
'blog.card.unverify': 'لغو تأیید بلاگ',
|
||
'blog.card.comments': 'مشاهده نظرات',
|
||
'blog.card.remove': 'حذف بلاگ',
|
||
'blog.card.waiting': 'در انتظار',
|
||
'blog.card.verified': 'تأییدشده',
|
||
'blog.card.noSummary': 'هنوز خلاصهای نیست.',
|
||
|
||
'blog.settings.title': 'تنظیمات بلاگ',
|
||
'blog.settings.subtitle': 'نحوه تأیید نظرات بلاگ را پیکربندی کنید.',
|
||
'blog.settings.commentsAuto': 'تأیید خودکار نظرات',
|
||
'blog.settings.commentsAutoDesc':
|
||
'نظرات جدید بلاگ بلافاصله پس از ارسال منتشر میشوند. در صورت نیاز میتوانید بعداً آنها را رد کنید.',
|
||
'blog.settings.commentsAutoAria': 'تأیید خودکار نظرات بلاگ',
|
||
|
||
'blog.categories.title': 'دستهبندیهای بلاگ',
|
||
'blog.categories.subtitle': 'مطالب بلاگ را در دستهبندیها و زیردستهها سازماندهی کنید.',
|
||
'blog.categories.empty': 'هنوز دستهبندیای نیست. برای افزودن روی + کلیک کنید.',
|
||
'blog.categories.errorLoad': 'بارگذاری دستهبندیها ممکن نشد.',
|
||
'blog.categories.errorSave': 'ذخیره دستهبندی ممکن نشد.',
|
||
'blog.categories.errorDelete': 'حذف دستهبندی ممکن نشد.',
|
||
|
||
'blog.form.add.subtitle': 'یک مطلب بلاگ جدید ایجاد و منتشر کنید.',
|
||
'blog.form.edit.subtitle': 'جزئیات مطلب بلاگ را بهروزرسانی و ذخیره کنید.',
|
||
'blog.form.cancel': 'انصراف',
|
||
'blog.form.saving': 'در حال ذخیره...',
|
||
'blog.form.save': 'ذخیره بلاگ',
|
||
'blog.form.update': 'بهروزرسانی بلاگ',
|
||
'blog.form.errorSave': 'ذخیره مطلب بلاگ ممکن نشد.',
|
||
'blog.form.toast.created': 'مطلب بلاگ ایجاد شد.',
|
||
'blog.form.toast.updated': 'مطلب بلاگ بهروزرسانی شد.',
|
||
'blog.form.titleImage': 'تصویر عنوان',
|
||
'blog.form.uploadTitleImage': 'آپلود تصویر عنوان',
|
||
'blog.form.changeTitleImage': 'تغییر تصویر عنوان',
|
||
'blog.form.cropHint': 'برای انتخاب کلیک کنید، سپس برش دهید',
|
||
'blog.form.type': 'نوع',
|
||
'blog.form.category': 'دستهبندی',
|
||
'blog.form.categoryPlaceholder': 'جستجو و انتخاب دستهبندی...',
|
||
'blog.form.title': 'عنوان',
|
||
'blog.form.titlePlaceholder': 'عنوان مطلب بلاگ',
|
||
'blog.form.abstract': 'خلاصه',
|
||
'blog.form.abstractPlaceholder': 'خلاصه کوتاه برای نمایش در فهرست بلاگ',
|
||
'blog.form.mainText': 'متن اصلی',
|
||
'blog.form.mainTextPlaceholder': 'محتوای کامل بلاگ با قالببندی و تصاویر...',
|
||
'blog.form.tags': 'برچسبها',
|
||
'blog.form.type.article': 'مقاله',
|
||
'blog.form.type.news': 'خبر',
|
||
'blog.form.type.blog': 'بلاگ',
|
||
|
||
'blog.details.loading': 'در حال بارگذاری مطلب بلاگ...',
|
||
'blog.details.notFound': 'مطلب بلاگ یافت نشد.',
|
||
'blog.details.errorLoad': 'بارگذاری مطلب بلاگ ممکن نشد.',
|
||
'blog.details.back': 'بازگشت به بلاگهای من',
|
||
'blog.details.noContent': 'هنوز محتوایی نیست.',
|
||
'blog.details.author': 'نویسنده',
|
||
|
||
'video.page.subtitle': 'ویدیوهای یوتیوب و آپارات را برای وبسایت خود مدیریت کنید.',
|
||
'video.card.list.desc': 'همه ویدیوها را مشاهده، ویرایش و مدیریت کنید.',
|
||
'video.card.list.link': 'مشاهده ویدیوها',
|
||
'video.card.new.desc': 'یک ویدیوی جاسازیشده با تصویر کاور و توضیحات اضافه کنید.',
|
||
'video.card.new.link': 'افزودن ویدیو',
|
||
'video.card.categories.title': 'دستهبندیهای ویدیو',
|
||
'video.card.categories.desc': 'ویدیوها را در دستهبندیها و زیردستهها سازماندهی کنید.',
|
||
'video.card.categories.link': 'مشاهده دستهبندیها',
|
||
'video.card.settings.desc': 'تأیید نظرات ویدیو را پیکربندی کنید.',
|
||
'video.card.settings.link': 'مشاهده تنظیمات',
|
||
|
||
'video.list.subtitle': '{count} ویدیو · مشاهده، ویرایش و مدیریت محتوای ویدیو.',
|
||
'video.list.loading': 'در حال بارگذاری ویدیوها...',
|
||
'video.list.empty': 'هنوز ویدیویی نیست.',
|
||
'video.list.emptyHint': 'ویدیوهای جاسازیشده از یوتیوب یا آپارات را با مخاطبان به اشتراک بگذارید.',
|
||
'video.list.emptyCta': 'اولین ویدیو را اضافه کنید',
|
||
'video.list.errorLoad': 'بارگذاری ویدیوها ممکن نشد.',
|
||
'video.list.errorDelete': 'حذف ویدیو ممکن نشد.',
|
||
'video.list.toast.removed': 'ویدیو حذف شد.',
|
||
'video.list.deleteTitle': 'حذف ویدیو',
|
||
'video.list.deleteMessage':
|
||
'آیا از حذف «{name}» مطمئن هستید؟ این عمل قابل بازگشت نیست.',
|
||
'video.list.addNew': 'افزودن ویدیو',
|
||
|
||
'video.card.edit': 'ویرایش ویدیو',
|
||
'video.card.comments': 'مشاهده نظرات',
|
||
'video.card.remove': 'حذف ویدیو',
|
||
'video.card.noSummary': 'هنوز خلاصهای نیست.',
|
||
|
||
'video.settings.title': 'تنظیمات ویدیو',
|
||
'video.settings.subtitle': 'نحوه تأیید نظرات ویدیو را پیکربندی کنید.',
|
||
'video.settings.commentsAuto': 'تأیید خودکار نظرات',
|
||
'video.settings.commentsAutoDesc':
|
||
'در صورت فعال بودن، نظرات جدید روی ویدیوها بدون تأیید دستی منتشر میشوند.',
|
||
'video.settings.commentsAutoAria': 'تأیید خودکار نظرات ویدیو',
|
||
|
||
'video.categories.title': 'دستهبندیهای ویدیو',
|
||
'video.categories.subtitle': 'ویدیوها را در دستهبندیها و زیردستهها سازماندهی کنید.',
|
||
'video.categories.empty': 'هنوز دستهبندیای نیست. برای افزودن روی + بزنید.',
|
||
'video.categories.errorLoad': 'بارگذاری دستهبندیها ممکن نشد.',
|
||
'video.categories.errorSave': 'ذخیره دستهبندی ممکن نشد.',
|
||
'video.categories.errorDelete': 'حذف دستهبندی ممکن نشد.',
|
||
|
||
'video.form.add.subtitle': 'یک ویدیوی جاسازیشده از یوتیوب یا آپارات اضافه کنید.',
|
||
'video.form.edit.subtitle': 'جزئیات ویدیو را بهروزرسانی و ذخیره کنید.',
|
||
'video.form.cancel': 'انصراف',
|
||
'video.form.saving': 'در حال ذخیره...',
|
||
'video.form.save': 'ذخیره ویدیو',
|
||
'video.form.update': 'بهروزرسانی ویدیو',
|
||
'video.form.errorSave': 'ذخیره ویدیو ممکن نشد.',
|
||
'video.form.toast.created': 'ویدیو ایجاد شد.',
|
||
'video.form.toast.updated': 'ویدیو بهروزرسانی شد.',
|
||
'video.form.coverImage': 'تصویر کاور',
|
||
'video.form.uploadCoverImage': 'بارگذاری تصویر کاور',
|
||
'video.form.changeCoverImage': 'تغییر تصویر کاور',
|
||
'video.form.cropHint': 'برای انتخاب و برش (۳:۲) کلیک کنید',
|
||
'video.form.provider': 'ارائهدهنده ویدیو',
|
||
'video.form.category': 'دستهبندی',
|
||
'video.form.categoryPlaceholder': 'جستجو و انتخاب دستهبندی...',
|
||
'video.form.titleFa': 'عنوان (فارسی)',
|
||
'video.form.titleFaPlaceholder': 'عنوان فارسی',
|
||
'video.form.titleEn': 'عنوان (انگلیسی)',
|
||
'video.form.titleEnPlaceholder': 'English title',
|
||
'video.form.abstract': 'چکیده',
|
||
'video.form.abstractPlaceholder': 'خلاصه کوتاه در فهرست ویدیوها',
|
||
'video.form.embedCode': 'کد جاسازی',
|
||
'video.form.embedCodePlaceholder': 'کد iframe کامل را از یوتیوب یا آپارات بچسبانید',
|
||
'video.form.description': 'توضیحات',
|
||
'video.form.descriptionPlaceholder': 'توضیحات کامل ویدیو با قالببندی...',
|
||
'video.form.tags': 'برچسبها',
|
||
|
||
'video.details.loading': 'در حال بارگذاری ویدیو...',
|
||
'video.details.notFound': 'ویدیو یافت نشد.',
|
||
'video.details.errorLoad': 'بارگذاری ویدیو ممکن نشد.',
|
||
'video.details.back': 'بازگشت به ویدیوهای من',
|
||
'video.details.noDescription': 'هنوز توضیحاتی نیست.',
|
||
'video.details.author': 'نویسنده',
|
||
|
||
'instruction.page.subtitle': 'آموزشها را با متن غنی و ویدیوی جاسازیشده اختیاری ایجاد و مدیریت کنید.',
|
||
'instruction.card.list.desc': 'همه آموزشها را مشاهده، ویرایش و مدیریت کنید.',
|
||
'instruction.card.list.link': 'مشاهده آموزشها',
|
||
'instruction.card.new.desc': 'یک آموزش جدید با تصویر کاور، متن غنی و ویدیوی اختیاری اضافه کنید.',
|
||
'instruction.card.new.link': 'افزودن آموزش',
|
||
'instruction.card.categories.title': 'دستهبندیهای آموزش',
|
||
'instruction.card.categories.desc': 'آموزشها را در دستهبندیها و زیردستهها سازماندهی کنید.',
|
||
'instruction.card.categories.link': 'مشاهده دستهبندیها',
|
||
'instruction.card.settings.desc': 'تأیید نظرات آموزش را پیکربندی کنید.',
|
||
'instruction.card.settings.link': 'مشاهده تنظیمات',
|
||
|
||
'instruction.list.subtitle': '{count} آموزش · مشاهده، ویرایش و مدیریت محتوای آموزشی.',
|
||
'instruction.list.loading': 'در حال بارگذاری آموزشها...',
|
||
'instruction.list.empty': 'هنوز آموزشی نیست.',
|
||
'instruction.list.emptyHint': 'آموزشها را با متن غنی و ویدیوی اختیاری برای مخاطبان منتشر کنید.',
|
||
'instruction.list.emptyCta': 'اولین آموزش را اضافه کنید',
|
||
'instruction.list.errorLoad': 'بارگذاری آموزشها ممکن نشد.',
|
||
'instruction.list.errorDelete': 'حذف آموزش ممکن نشد.',
|
||
'instruction.list.toast.removed': 'آموزش حذف شد.',
|
||
'instruction.list.deleteTitle': 'حذف آموزش',
|
||
'instruction.list.deleteMessage':
|
||
'آیا از حذف «{name}» مطمئن هستید؟ این عمل قابل بازگشت نیست.',
|
||
'instruction.list.addNew': 'افزودن آموزش',
|
||
|
||
'instruction.card.edit': 'ویرایش آموزش',
|
||
'instruction.card.comments': 'مشاهده نظرات',
|
||
'instruction.card.remove': 'حذف آموزش',
|
||
'instruction.card.noSummary': 'هنوز خلاصهای نیست.',
|
||
|
||
'instruction.settings.title': 'تنظیمات آموزش',
|
||
'instruction.settings.subtitle': 'نحوه تأیید نظرات آموزش را پیکربندی کنید.',
|
||
'instruction.settings.commentsAuto': 'تأیید خودکار نظرات',
|
||
'instruction.settings.commentsAutoDesc':
|
||
'در صورت فعال بودن، نظرات جدید روی آموزشها بدون تأیید دستی منتشر میشوند.',
|
||
'instruction.settings.commentsAutoAria': 'تأیید خودکار نظرات آموزش',
|
||
|
||
'instruction.categories.title': 'دستهبندیهای آموزش',
|
||
'instruction.categories.subtitle': 'آموزشها را در دستهبندیها و زیردستهها سازماندهی کنید.',
|
||
'instruction.categories.empty': 'هنوز دستهبندیای نیست. برای افزودن روی + بزنید.',
|
||
'instruction.categories.errorLoad': 'بارگذاری دستهبندیها ممکن نشد.',
|
||
'instruction.categories.errorSave': 'ذخیره دستهبندی ممکن نشد.',
|
||
'instruction.categories.errorDelete': 'حذف دستهبندی ممکن نشد.',
|
||
|
||
'instruction.form.add.subtitle': 'یک آموزش با متن غنی و ویدیوی جاسازیشده اختیاری اضافه کنید.',
|
||
'instruction.form.edit.subtitle': 'جزئیات آموزش را بهروزرسانی و ذخیره کنید.',
|
||
'instruction.form.cancel': 'انصراف',
|
||
'instruction.form.saving': 'در حال ذخیره...',
|
||
'instruction.form.save': 'ذخیره آموزش',
|
||
'instruction.form.update': 'بهروزرسانی آموزش',
|
||
'instruction.form.errorSave': 'ذخیره آموزش ممکن نشد.',
|
||
'instruction.form.toast.created': 'آموزش ایجاد شد.',
|
||
'instruction.form.toast.updated': 'آموزش بهروزرسانی شد.',
|
||
'instruction.form.coverImage': 'تصویر کاور',
|
||
'instruction.form.uploadCoverImage': 'بارگذاری تصویر کاور',
|
||
'instruction.form.changeCoverImage': 'تغییر تصویر کاور',
|
||
'instruction.form.cropHint': 'برای انتخاب و برش (۳:۲) کلیک کنید',
|
||
'instruction.form.provider': 'ارائهدهنده ویدیو',
|
||
'instruction.form.category': 'دستهبندی',
|
||
'instruction.form.categoryPlaceholder': 'جستجو و انتخاب دستهبندی...',
|
||
'instruction.form.titleFa': 'عنوان (فارسی)',
|
||
'instruction.form.titleFaPlaceholder': 'عنوان فارسی',
|
||
'instruction.form.titleEn': 'عنوان (انگلیسی)',
|
||
'instruction.form.titleEnPlaceholder': 'English title',
|
||
'instruction.form.abstract': 'چکیده',
|
||
'instruction.form.abstractPlaceholder': 'خلاصه کوتاه در فهرست آموزشها',
|
||
'instruction.form.embedCode': 'کد جاسازی',
|
||
'instruction.form.embedCodePlaceholder': 'کد iframe کامل را از یوتیوب یا آپارات بچسبانید',
|
||
'instruction.form.description': 'توضیحات',
|
||
'instruction.form.descriptionPlaceholder': 'توضیحات کامل آموزش با قالببندی...',
|
||
'instruction.form.tags': 'برچسبها',
|
||
|
||
'instruction.details.loading': 'در حال بارگذاری آموزش...',
|
||
'instruction.details.notFound': 'آموزش یافت نشد.',
|
||
'instruction.details.errorLoad': 'بارگذاری آموزش ممکن نشد.',
|
||
'instruction.details.back': 'بازگشت به آموزشهای من',
|
||
'instruction.details.noDescription': 'هنوز توضیحاتی نیست.',
|
||
'instruction.details.author': 'نویسنده',
|
||
|
||
'portfolio.page.subtitle': 'نمونه کارها را مدیریت کنید و پروژهها را به نمایش بگذارید.',
|
||
'portfolio.card.list.desc': 'همه نمونه کارها را مشاهده، ویرایش و مدیریت کنید.',
|
||
'portfolio.card.list.link': 'مشاهده نمونه کارها',
|
||
'portfolio.card.new.desc': 'یک پروژه نمونه کار جدید ایجاد و منتشر کنید.',
|
||
'portfolio.card.new.link': 'افزودن نمونه کار',
|
||
'portfolio.card.categories.title': 'دستهبندیهای نمونه کار',
|
||
'portfolio.card.categories.desc':
|
||
'نمونه کارها را در دستهبندیها و زیردستهها سازماندهی کنید.',
|
||
'portfolio.card.categories.link': 'مشاهده دستهبندیها',
|
||
'portfolio.card.settings.desc': 'تأیید نظرات نمونه کار و گزینههای نمایش را پیکربندی کنید.',
|
||
'portfolio.card.settings.link': 'مشاهده تنظیمات',
|
||
|
||
'portfolio.list.subtitle': '{count} مورد · مشاهده، ویرایش و مدیریت محتوای نمونه کار.',
|
||
'portfolio.list.loading': 'در حال بارگذاری نمونه کارها...',
|
||
'portfolio.list.empty': 'نمونه کاری یافت نشد.',
|
||
'portfolio.list.errorLoad': 'بارگذاری نمونه کارها ممکن نشد.',
|
||
'portfolio.list.errorDelete': 'حذف نمونه کار ممکن نشد.',
|
||
'portfolio.list.errorMove': 'جابهجایی نمونه کار ممکن نشد.',
|
||
'portfolio.list.toast.removed': 'نمونه کار حذف شد.',
|
||
'portfolio.list.toast.movedUp': 'نمونه کار به بالا منتقل شد.',
|
||
'portfolio.list.deleteTitle': 'حذف نمونه کار',
|
||
'portfolio.list.deleteMessage':
|
||
'آیا از حذف «{name}» مطمئن هستید؟ این عمل قابل بازگشت نیست.',
|
||
'portfolio.list.addNew': 'افزودن نمونه کار',
|
||
|
||
'portfolio.card.moveUp': 'انتقال به بالا',
|
||
'portfolio.card.edit': 'ویرایش نمونه کار',
|
||
'portfolio.card.comments': 'مشاهده نظرات',
|
||
'portfolio.card.remove': 'حذف نمونه کار',
|
||
'portfolio.card.noSummary': 'هنوز خلاصهای نیست.',
|
||
|
||
'portfolio.settings.title': 'تنظیمات نمونه کار',
|
||
'portfolio.settings.subtitle': 'نحوه تأیید نظرات نمونه کار را پیکربندی کنید.',
|
||
'portfolio.settings.commentsAuto': 'تأیید خودکار نظرات',
|
||
'portfolio.settings.commentsAutoDesc':
|
||
'نظرات جدید نمونه کار بلافاصله پس از ارسال منتشر میشوند. در صورت نیاز میتوانید بعداً آنها را رد کنید.',
|
||
'portfolio.settings.commentsAutoAria': 'تأیید خودکار نظرات نمونه کار',
|
||
|
||
'portfolio.categories.title': 'دستهبندیهای نمونه کار',
|
||
'portfolio.categories.subtitle':
|
||
'نمونه کارها را در دستهبندیها و زیردستهها سازماندهی کنید.',
|
||
'portfolio.categories.empty': 'هنوز دستهبندیای نیست. برای افزودن روی + کلیک کنید.',
|
||
'portfolio.categories.errorLoad': 'بارگذاری دستهبندیها ممکن نشد.',
|
||
'portfolio.categories.errorSave': 'ذخیره دستهبندی ممکن نشد.',
|
||
'portfolio.categories.errorDelete': 'حذف دستهبندی ممکن نشد.',
|
||
|
||
'portfolio.form.add.subtitle': 'یک پروژه نمونه کار جدید ایجاد و منتشر کنید.',
|
||
'portfolio.form.edit.subtitle': 'جزئیات نمونه کار را بهروزرسانی و ذخیره کنید.',
|
||
'portfolio.form.cancel': 'انصراف',
|
||
'portfolio.form.saving': 'در حال ذخیره...',
|
||
'portfolio.form.save': 'ذخیره نمونه کار',
|
||
'portfolio.form.update': 'بهروزرسانی نمونه کار',
|
||
'portfolio.form.errorSave': 'ذخیره نمونه کار ممکن نشد.',
|
||
'portfolio.form.toast.created': 'نمونه کار ایجاد شد.',
|
||
'portfolio.form.toast.updated': 'نمونه کار بهروزرسانی شد.',
|
||
'portfolio.form.titleImage': 'تصویر عنوان',
|
||
'portfolio.form.aspectAria': 'نسبت تصویر عنوان',
|
||
'portfolio.form.aspect.square': 'مربع',
|
||
'portfolio.form.aspect.reel': '۹:۱۶ (ریل)',
|
||
'portfolio.form.uploadTitleImage': 'آپلود تصویر عنوان',
|
||
'portfolio.form.changeTitleImage': 'تغییر تصویر عنوان',
|
||
'portfolio.form.cropHint': 'برای انتخاب کلیک کنید، سپس برش دهید',
|
||
'portfolio.form.category': 'دستهبندی',
|
||
'portfolio.form.categoryPlaceholder': 'جستجو و انتخاب دستهبندی...',
|
||
'portfolio.form.titleFa': 'عنوان (فارسی)',
|
||
'portfolio.form.titleFaPlaceholder': 'عنوان فارسی',
|
||
'portfolio.form.titleEn': 'عنوان (انگلیسی)',
|
||
'portfolio.form.titleEnPlaceholder': 'English title',
|
||
'portfolio.form.abstract': 'خلاصه',
|
||
'portfolio.form.abstractPlaceholder': 'خلاصه کوتاه برای نمایش در فهرست نمونه کارها',
|
||
'portfolio.form.mainText': 'متن اصلی',
|
||
'portfolio.form.mainTextPlaceholder': 'محتوای کامل نمونه کار با قالببندی و تصاویر...',
|
||
'portfolio.form.gallery': 'گالری تصاویر',
|
||
'portfolio.form.tags': 'برچسبها',
|
||
|
||
'portfolio.details.loading': 'در حال بارگذاری نمونه کار...',
|
||
'portfolio.details.notFound': 'نمونه کار یافت نشد.',
|
||
'portfolio.details.errorLoad': 'بارگذاری نمونه کار ممکن نشد.',
|
||
'portfolio.details.back': 'بازگشت به نمونه کارهای من',
|
||
'portfolio.details.noContent': 'هنوز محتوایی نیست.',
|
||
'portfolio.details.gallery': 'گالری',
|
||
'portfolio.details.galleryImage': 'مشاهده تصویر گالری {index}',
|
||
|
||
'website.page.subtitle':
|
||
'محتوای عمومی وبسایت، فرمها و تنظیمات مشتریمحور را مدیریت کنید.',
|
||
'website.card.staticImages.desc':
|
||
'تصاویر نامگذاریشده وبسایت (هیرو، بنر، گالری) را بدون دیپلوی عوض کنید.',
|
||
'website.card.staticImages.link': 'مدیریت تصاویر',
|
||
'website.card.sliders.desc': 'اسلایدرهای بنر صفحه اصلی و کاروسلهای تبلیغاتی را مدیریت کنید.',
|
||
'website.card.sliders.link': 'مدیریت اسلایدرها',
|
||
'website.card.specialCategories.desc':
|
||
'دستهبندیهای منتخب محصول را در صفحه اصلی وبسایت برجسته کنید.',
|
||
'website.card.specialCategories.link': 'مدیریت دستهبندیها',
|
||
'website.card.specialBrands.desc': 'برندهای شریک یا ویژه را در صفحه اصلی وبسایت نمایش دهید.',
|
||
'website.card.specialBrands.link': 'مدیریت برندها',
|
||
'website.card.specialItems.desc':
|
||
'محصولات ویژه فروشگاه را در دستهها برای کاروسلهای وبسایت گردآوری کنید.',
|
||
'website.card.specialItems.link': 'مدیریت محصولات ویژه',
|
||
'website.card.contact.desc': 'ارسالهای فرم تماس وبسایت را مشاهده کنید.',
|
||
'website.card.contact.link': 'مشاهده ارسالها',
|
||
'website.card.subscriptions.desc': 'عضویت خبرنامه و گزینههای اشتراک بازدیدکنندگان را مدیریت کنید.',
|
||
'website.card.subscriptions.link': 'مدیریت عضویتها',
|
||
'website.card.faq.desc': 'سوالات متداول وبسایت را ایجاد و سازماندهی کنید.',
|
||
'website.card.faq.link': 'مدیریت سوالات متداول',
|
||
'website.card.badges.desc': 'نشانهای اعتماد، گواهیها و برجستهها را در وبسایت نمایش دهید.',
|
||
'website.card.badges.link': 'مدیریت نشانها',
|
||
'settings.subtitle': 'درگاههای پرداخت آنلاین و گزینههای تسویه حساب را پیکربندی کنید.',
|
||
|
||
'website.scrollLeft': 'اسکرول به چپ',
|
||
'website.scrollRight': 'اسکرول به راست',
|
||
'website.editGroup': 'ویرایش گروه',
|
||
'website.deleteGroup': 'حذف گروه',
|
||
'website.removeFromGroup': 'حذف از گروه',
|
||
'website.save': 'ذخیره',
|
||
'website.create': 'ایجاد',
|
||
'website.adding': 'در حال افزودن...',
|
||
'website.saving': 'در حال ذخیره...',
|
||
'website.groupTitle': 'عنوان گروه',
|
||
'website.groupTitlePlaceholder': 'مثلاً: ویژه، پرفروشترینها',
|
||
'website.groupKey': 'کلید (انگلیسی)',
|
||
'website.groupKeyPlaceholder': 'مثلاً: top-selling',
|
||
'website.groupKeyHint':
|
||
'فقط انگلیسی — حروف، اعداد، خط تیره و زیرخط. برای استفاده وبسایت.',
|
||
'website.groupKeyError':
|
||
'فقط حروف انگلیسی، اعداد، خط تیره یا زیرخط — مثلاً special-sale.',
|
||
'website.groupValue': 'عنوان نمایشی',
|
||
'website.groupValuePlaceholder': 'عنوانی که در وبسایت نمایش داده میشود (هر زبانی)',
|
||
'website.removeFromGroupTitle': 'حذف از گروه',
|
||
'website.removeFromGroupMessage': '«{name}» از «{group}» حذف شود؟',
|
||
'website.pick.addTo': 'افزودن به {title}',
|
||
'website.pick.addOneCategory': 'افزودن ۱ دستهبندی',
|
||
'website.pick.addCategories': 'افزودن {count} دستهبندی',
|
||
'website.pick.addOneBrand': 'افزودن ۱ برند',
|
||
'website.pick.addBrands': 'افزودن {count} برند',
|
||
|
||
'website.sliders.subtitle': 'اسلایدهای بنر صفحه اصلی را در گالری ۹:۴ مدیریت کنید.',
|
||
'website.sliders.loading': 'در حال بارگذاری اسلایدها...',
|
||
'website.sliders.errorLoad': 'بارگذاری اسلایدها ممکن نشد.',
|
||
'website.sliders.errorUpload': 'آپلود تصویر اسلاید ممکن نشد.',
|
||
'website.sliders.errorAdd': 'افزودن اسلاید ممکن نشد.',
|
||
'website.sliders.errorRemove': 'حذف اسلاید ممکن نشد.',
|
||
'website.sliders.toastAdded': 'اسلاید افزوده شد.',
|
||
'website.sliders.toastRemoved': 'اسلاید حذف شد.',
|
||
'website.sliders.removeTitle': 'حذف اسلاید',
|
||
'website.sliders.removeMessage': 'این اسلاید از اسلایدر صفحه اصلی حذف شود؟',
|
||
'website.sliders.defaultTitle': 'اسلایدر صفحه اصلی',
|
||
'website.sliders.addSlide': 'افزودن اسلاید',
|
||
'website.sliders.removeSlide': 'حذف اسلاید',
|
||
'website.sliders.untitled': 'اسلاید بدون عنوان',
|
||
'website.sliders.slideAlt': 'اسلاید',
|
||
'website.sliders.modal.title': 'افزودن اسلاید',
|
||
'website.sliders.modal.image': 'تصویر اسلاید',
|
||
'website.sliders.modal.upload': 'آپلود تصویر اسلاید',
|
||
'website.sliders.modal.hint': 'نسبت بنر ۹:۴ توصیه میشود',
|
||
'website.sliders.modal.changeImage': 'تغییر تصویر',
|
||
'website.sliders.modal.titleOptional': 'عنوان (اختیاری)',
|
||
'website.sliders.modal.titlePlaceholder': 'مثلاً: حراج تابستان',
|
||
'website.sliders.modal.linkOptional': 'آدرس لینک (اختیاری)',
|
||
'website.sliders.modal.addSlide': 'افزودن اسلاید',
|
||
|
||
'website.linkGenerator.generate': 'ساخت لینک',
|
||
'website.linkGenerator.title': 'ساخت لینک',
|
||
'website.linkGenerator.subtitle': 'نوع محتوا را انتخاب کنید، سپس یک دستهبندی. لینک در فیلد درج میشود.',
|
||
'website.linkGenerator.type': 'نوع',
|
||
'website.linkGenerator.category': 'دستهبندی',
|
||
'website.linkGenerator.pickCategory': 'جستجوی دستهبندیها...',
|
||
'website.linkGenerator.insert': 'درج لینک',
|
||
'website.linkGenerator.loading': 'در حال بارگذاری دستهبندیها...',
|
||
'website.linkGenerator.empty': 'هنوز دستهبندیای برای این نوع نیست.',
|
||
'website.linkGenerator.errorLoad': 'بارگذاری دستهبندیها ممکن نشد.',
|
||
'website.linkGenerator.types.product': 'محصول',
|
||
'website.linkGenerator.types.storeItem': 'آیتم فروشگاه',
|
||
'website.linkGenerator.types.blog': 'بلاگ',
|
||
'website.linkGenerator.types.portfolio': 'نمونه کار',
|
||
'website.linkGenerator.types.video': 'ویدیو',
|
||
|
||
'website.staticImages.subtitle':
|
||
'وبسایتها این تصاویر را با کلید از GET /tenants/{domain}/website/static-images میخوانند',
|
||
'website.staticImages.loading': 'در حال بارگذاری تصاویر ثابت...',
|
||
'website.staticImages.empty': 'هنوز اسلاتی برای این وبسایت نیست.',
|
||
'website.staticImages.emptyPage': 'در این صفحه هنوز تصویر ثابتی نیست.',
|
||
'website.staticImages.errorLoad': 'بارگذاری تصاویر ثابت ممکن نشد.',
|
||
'website.staticImages.errorCreate': 'ساخت اسلات تصویر ممکن نشد.',
|
||
'website.staticImages.errorUpdate': 'بهروزرسانی اسلات ممکن نشد.',
|
||
'website.staticImages.errorDelete': 'حذف اسلات ممکن نشد.',
|
||
'website.staticImages.errorUpload': 'آپلود تصویر ممکن نشد.',
|
||
'website.staticImages.errorAddImage': 'ذخیره تصویر ممکن نشد.',
|
||
'website.staticImages.errorRemoveImage': 'حذف تصویر ممکن نشد.',
|
||
'website.staticImages.toastCreated': 'اسلات تصویر ساخته شد.',
|
||
'website.staticImages.toastUpdated': 'اسلات تصویر بهروز شد.',
|
||
'website.staticImages.toastDeleted': 'اسلات تصویر حذف شد.',
|
||
'website.staticImages.toastImageSaved': 'تصویر ذخیره شد.',
|
||
'website.staticImages.toastImageRemoved': 'تصویر حذف شد.',
|
||
'website.staticImages.addSlot': 'افزودن اسلات تصویر',
|
||
'website.staticImages.createTitle': 'افزودن اسلات تصویر',
|
||
'website.staticImages.editTitle': 'ویرایش اسلات تصویر',
|
||
'website.staticImages.deleteTitle': 'حذف اسلات تصویر',
|
||
'website.staticImages.deleteMessage':
|
||
'اسلات {label} حذف شود؟ تا وقتی تصویر جدیدی نگذارید، جاینگهدار وبسایت خالی میماند.',
|
||
'website.staticImages.addImage': 'افزودن تصویر',
|
||
'website.staticImages.replaceImage': 'جایگزینی تصویر',
|
||
'website.staticImages.editImage': 'ویرایش تصویر',
|
||
'website.staticImages.imageInfo': 'جزئیات تصویر',
|
||
'website.staticImages.removeImage': 'حذف تصویر',
|
||
'website.staticImages.removeImageTitle': 'حذف تصویر',
|
||
'website.staticImages.removeImageMessage': 'این تصویر از اسلات حذف شود؟',
|
||
'website.staticImages.slotLabel': 'برچسب',
|
||
'website.staticImages.slotLabelPlaceholder': 'مثلاً: هیرو صفحه اصلی',
|
||
'website.staticImages.slotKey': 'کلید (مطابق جاینگهدار وبسایت)',
|
||
'website.staticImages.kind': 'نوع',
|
||
'website.staticImages.page': 'صفحه',
|
||
'website.staticImages.pageHome': 'خانه',
|
||
'website.staticImages.pageProducts': 'محصولات',
|
||
'website.staticImages.pageProduct': 'محصول',
|
||
'website.staticImages.pageCategories': 'دستهبندیها',
|
||
'website.staticImages.pageBrands': 'برندها',
|
||
'website.staticImages.pageBlog': 'بلاگ',
|
||
'website.staticImages.pageAbout': 'درباره ما',
|
||
'website.staticImages.pageContact': 'تماس',
|
||
'website.staticImages.kindSingle': 'یک تصویر',
|
||
'website.staticImages.kindList': 'فهرست (قابل افزودن)',
|
||
'website.staticImages.kindFixed': '{count} تصویر',
|
||
'website.staticImages.itemCount': 'تعداد تصویر',
|
||
'website.staticImages.itemCountPlaceholder': 'خالی = افزودن آزاد',
|
||
'website.staticImages.itemCountHint': 'مثلاً ۲ برای ردیف دو بنر. خالی بگذارید تا فهرست نامحدود باشد.',
|
||
'website.staticImages.aspectRatio': 'نسبت تصویر',
|
||
'website.staticImages.recommendedWidth': 'عرض پیشنهادی (پیکسل)',
|
||
'website.staticImages.cropHint': 'نسبت {ratio} توصیه میشود',
|
||
'website.staticImages.titleFa': 'عنوان (فارسی)',
|
||
'website.staticImages.titleEn': 'عنوان (انگلیسی)',
|
||
'website.staticImages.titleFaPlaceholder': 'عنوان فارسی',
|
||
'website.staticImages.titleEnPlaceholder': 'English title',
|
||
'website.staticImages.subtext': 'متن فرعی',
|
||
'website.staticImages.subtextPlaceholder': 'متن کوتاه زیر عنوان (اختیاری)',
|
||
|
||
'website.specialCategories.subtitle':
|
||
'دستهبندیهای ویژه محصول را برای صفحه اصلی وبسایت در گروهها گردآوری کنید.',
|
||
'website.specialCategories.loading': 'در حال بارگذاری گروههای دسته ویژه...',
|
||
'website.specialCategories.empty':
|
||
'هنوز گروه دسته ویژهای نیست. با دکمه + یکی بسازید، سپس دستهها را به هر کاروسل اضافه کنید.',
|
||
'website.specialCategories.errorLoad': 'بارگذاری گروههای دسته ویژه ممکن نشد.',
|
||
'website.specialCategories.errorCreate': 'ایجاد گروه دسته ویژه ممکن نشد.',
|
||
'website.specialCategories.errorUpdate': 'بهروزرسانی گروه دسته ویژه ممکن نشد.',
|
||
'website.specialCategories.errorDelete': 'حذف گروه دسته ویژه ممکن نشد.',
|
||
'website.specialCategories.errorAdd': 'افزودن دستهبندیها ممکن نشد.',
|
||
'website.specialCategories.errorRemove': 'حذف دستهبندی ممکن نشد.',
|
||
'website.specialCategories.toastCreated': 'گروه دسته ویژه ایجاد شد.',
|
||
'website.specialCategories.toastUpdated': 'گروه دسته ویژه بهروزرسانی شد.',
|
||
'website.specialCategories.toastDeleted': 'گروه دسته ویژه حذف شد.',
|
||
'website.specialCategories.toastAdded': 'دستهبندیها به گروه افزوده شد.',
|
||
'website.specialCategories.toastRemoved': 'از گروه دسته ویژه حذف شد.',
|
||
'website.specialCategories.addFab': 'افزودن گروه دسته ویژه',
|
||
'website.specialCategories.addTooltip': 'افزودن دستهبندی به {title}',
|
||
'website.specialCategories.createTitle': 'افزودن گروه دسته ویژه',
|
||
'website.specialCategories.editTitle': 'ویرایش گروه دسته ویژه',
|
||
'website.specialCategories.deleteTitle': 'حذف گروه دسته ویژه',
|
||
'website.specialCategories.deleteMessage':
|
||
'«{title}» حذف شود؟ دستهبندیهای محصول در کاتالوگ باقی میمانند.',
|
||
'website.specialCategories.pickSubtitle':
|
||
'دستهبندیهای محصول را برای نمایش در این گروه انتخاب کنید.',
|
||
'website.specialCategories.pickLoading': 'در حال بارگذاری دستهبندیها...',
|
||
'website.specialCategories.pickEmpty': 'همه دستهبندیها قبلاً در این گروه هستند.',
|
||
'website.specialCategories.pickSearch': 'حداقل ۳ حرف برای جستجوی دستهبندی تایپ کنید',
|
||
'website.specialCategories.pickErrorLoad': 'بارگذاری دستهبندیها ممکن نشد.',
|
||
|
||
'website.specialBrands.subtitle': 'برندهای ویژه را برای صفحه اصلی وبسایت در گروهها گردآوری کنید.',
|
||
'website.specialBrands.loading': 'در حال بارگذاری گروههای برند ویژه...',
|
||
'website.specialBrands.empty':
|
||
'هنوز گروه برند ویژهای نیست. با دکمه + یکی بسازید، سپس برندها را به هر کاروسل اضافه کنید.',
|
||
'website.specialBrands.errorLoad': 'بارگذاری گروههای برند ویژه ممکن نشد.',
|
||
'website.specialBrands.errorCreate': 'ایجاد گروه برند ویژه ممکن نشد.',
|
||
'website.specialBrands.errorUpdate': 'بهروزرسانی گروه برند ویژه ممکن نشد.',
|
||
'website.specialBrands.errorDelete': 'حذف گروه برند ویژه ممکن نشد.',
|
||
'website.specialBrands.errorAdd': 'افزودن برندها ممکن نشد.',
|
||
'website.specialBrands.errorRemove': 'حذف برند ممکن نشد.',
|
||
'website.specialBrands.toastCreated': 'گروه برند ویژه ایجاد شد.',
|
||
'website.specialBrands.toastUpdated': 'گروه برند ویژه بهروزرسانی شد.',
|
||
'website.specialBrands.toastDeleted': 'گروه برند ویژه حذف شد.',
|
||
'website.specialBrands.toastAdded': 'برندها به گروه افزوده شد.',
|
||
'website.specialBrands.toastRemoved': 'از گروه برند ویژه حذف شد.',
|
||
'website.specialBrands.addFab': 'افزودن گروه برند ویژه',
|
||
'website.specialBrands.addTooltip': 'افزودن برند به {title}',
|
||
'website.specialBrands.createTitle': 'افزودن گروه برند ویژه',
|
||
'website.specialBrands.editTitle': 'ویرایش گروه برند ویژه',
|
||
'website.specialBrands.deleteTitle': 'حذف گروه برند ویژه',
|
||
'website.specialBrands.deleteMessage': '«{title}» حذف شود؟ برندها در کاتالوگ باقی میمانند.',
|
||
'website.specialBrands.pickSubtitle': 'برندها را برای نمایش در این گروه انتخاب کنید.',
|
||
'website.specialBrands.pickLoading': 'در حال بارگذاری برندها...',
|
||
'website.specialBrands.pickEmpty': 'همه برندها قبلاً در این گروه هستند.',
|
||
'website.specialBrands.pickSearch': 'حداقل ۳ حرف برای جستجوی برند تایپ کنید',
|
||
'website.specialBrands.pickErrorLoad': 'بارگذاری برندها ممکن نشد.',
|
||
|
||
'website.specialItems.subtitle':
|
||
'محصولات ویژه فروشگاه را برای کاروسلهای وبسایت در دستهها گردآوری کنید.',
|
||
'website.specialItems.loading': 'در حال بارگذاری دستههای ویژه...',
|
||
'website.specialItems.empty':
|
||
'هنوز دسته ویژهای نیست. با دکمه + یکی بسازید، سپس محصولات فروشگاه را به هر کاروسل اضافه کنید.',
|
||
'website.specialItems.errorLoad': 'بارگذاری دستههای ویژه ممکن نشد.',
|
||
'website.specialItems.errorCreate': 'ایجاد دسته ویژه ممکن نشد.',
|
||
'website.specialItems.errorUpdate': 'بهروزرسانی دسته ویژه ممکن نشد.',
|
||
'website.specialItems.errorDelete': 'حذف دسته ویژه ممکن نشد.',
|
||
'website.specialItems.errorAdd': 'افزودن محصولات فروشگاه ممکن نشد.',
|
||
'website.specialItems.errorRemove': 'حذف محصول فروشگاه ممکن نشد.',
|
||
'website.specialItems.toastCreated': 'دسته ویژه ایجاد شد.',
|
||
'website.specialItems.toastUpdated': 'دسته ویژه بهروزرسانی شد.',
|
||
'website.specialItems.toastDeleted': 'دسته ویژه حذف شد.',
|
||
'website.specialItems.toastAdded': 'محصولات فروشگاه به دسته ویژه افزوده شد.',
|
||
'website.specialItems.toastRemoved': 'از دسته ویژه حذف شد.',
|
||
'website.specialItems.addFab': 'افزودن دسته ویژه',
|
||
'website.specialItems.createTitle': 'افزودن دسته ویژه',
|
||
'website.specialItems.editTitle': 'ویرایش دسته ویژه',
|
||
'website.specialItems.deleteTitle': 'حذف دسته ویژه',
|
||
'website.specialItems.deleteMessage':
|
||
'«{title}» حذف شود؟ محصولات فروشگاه در کاتالوگ باقی میمانند.',
|
||
'website.specialItems.removeTitle': 'حذف از ویژه',
|
||
'website.specialItems.removeMessage': '«{name}» از «{group}» حذف شود؟',
|
||
'website.specialItems.editCategory': 'ویرایش دسته',
|
||
'website.specialItems.deleteCategory': 'حذف دسته',
|
||
'website.specialItems.scrollLeft': 'اسکرول به چپ',
|
||
'website.specialItems.scrollRight': 'اسکرول به راست',
|
||
'website.specialItems.addItemsTo': 'افزودن محصولات فروشگاه به {title}',
|
||
'website.specialItems.removeFromSpecial': 'حذف از ویژه',
|
||
'website.specialItems.pickSubtitle': 'محصولات فروشگاه را برای نمایش در این دسته انتخاب کنید.',
|
||
'website.specialItems.pickLoading': 'در حال بارگذاری محصولات فروشگاه...',
|
||
'website.specialItems.pickEmpty': 'همه محصولات فروشگاه قبلاً در این دسته هستند.',
|
||
'website.specialItems.pickSearch': 'حداقل ۳ حرف برای جستجوی محصولات فروشگاه تایپ کنید',
|
||
'website.specialItems.pickErrorLoad': 'بارگذاری محصولات فروشگاه ممکن نشد.',
|
||
'website.pick.addOneItem': 'افزودن ۱ قلم',
|
||
'website.pick.addItems': 'افزودن {count} قلم',
|
||
|
||
'website.contact.subtitle': 'ارسالهای دریافتی از فرم تماس وبسایت.',
|
||
'website.contact.filters': 'فیلترها',
|
||
'website.contact.searchPlaceholder': 'عنوان، نام، ایمیل، موبایل یا پیام',
|
||
'website.contact.search': 'جستجو',
|
||
'website.contact.clearFilters': 'پاک کردن فیلترها',
|
||
'website.contact.listTitle': 'ارسالها',
|
||
'website.contact.showing': 'نمایش {from} تا {to} از {total}',
|
||
'website.contact.none': 'بدون ارسال',
|
||
'website.contact.empty': 'ارسالی یافت نشد.',
|
||
'website.contact.loading': 'در حال بارگذاری...',
|
||
'website.contact.errorLoad': 'بارگذاری ارسالهای تماس ممکن نشد.',
|
||
'website.contact.pageMeta': 'صفحه {page} / {totalPages} · {pageSize} در هر صفحه · {total} کل',
|
||
'website.contact.col.title': 'عنوان',
|
||
'website.contact.col.name': 'نام',
|
||
'website.contact.col.email': 'ایمیل',
|
||
'website.contact.col.cell': 'شماره موبایل',
|
||
'website.contact.col.date': 'تاریخ',
|
||
'website.contact.col.time': 'ساعت',
|
||
'website.contact.viewSubmission': 'مشاهده ارسال از {name}',
|
||
'website.contact.detailTitle': 'ارسال تماس',
|
||
'website.contact.detailMessage': 'پیام',
|
||
|
||
'website.subscriptions.subtitle': 'عضویت خبرنامه و اشتراکها در وبسایت را مدیریت کنید.',
|
||
'website.subscriptions.lead': 'نحوه عضویت بازدیدکنندگان برای دریافت بهروزرسانیها را کنترل کنید.',
|
||
'website.subscriptions.note': 'مدیریت عضویت بهزودی اینجا متصل میشود. گزینههای برنامهریزیشده:',
|
||
'website.subscriptions.feature.enable': 'فعال یا غیرفعال کردن فرمهای عضویت',
|
||
'website.subscriptions.feature.welcome': 'پیام خوشآمد و متن رضایت سفارشی',
|
||
'website.subscriptions.feature.export': 'خروجی گرفتن یا مشاهده فهرست مشترکین',
|
||
|
||
'website.faq.subtitle': 'سوالات متداول وبسایت را ایجاد و سازماندهی کنید.',
|
||
'website.faq.lead':
|
||
'بخش سوالات متداول بسازید تا پیش از تماس، پرسشهای رایج مشتریان پاسخ داده شود.',
|
||
'website.faq.note': 'ویرایشگر سوالات متداول بهزودی اینجا متصل میشود. گزینههای برنامهریزیشده:',
|
||
'website.faq.feature.crud': 'افزودن، ویرایش و مرتبسازی پرسش و پاسخ',
|
||
'website.faq.feature.groups': 'گروهبندی موارد بر اساس دسته',
|
||
'website.faq.feature.publish': 'انتشار یا مخفی کردن هر مورد',
|
||
|
||
'website.badges.subtitle': 'نشانهای اعتماد و برجستهها را در وبسایت عمومی نمایش دهید.',
|
||
'website.badges.lead': 'گواهیها، تضمینها و نشانههای اعتماد را به بازدیدکنندگان نشان دهید.',
|
||
'website.badges.note': 'مدیریت نشانها بهزودی اینجا متصل میشود. گزینههای برنامهریزیشده:',
|
||
'website.badges.feature.upload': 'آپلود تصویر نشان با عنوان و لینک',
|
||
'website.badges.feature.reorder': 'مرتبسازی نشانها برای صفحه اصلی یا پاورقی',
|
||
'website.badges.feature.toggle': 'نمایش یا مخفی کردن هر نشان',
|
||
|
||
'website.ePayment.subtitle': 'روشهای پرداخت آنلاین برای تسویه حساب وبسایت را پیکربندی کنید.',
|
||
'website.ePayment.master': 'فعالسازی پرداخت آنلاین',
|
||
'website.ePayment.masterDesc':
|
||
'با فعال بودن هر درگاه و پیکربندی آن، مشتریان در تسویه حساب وبسایت و یا اپلیکیشن از آن درگاه استفاده کنند.',
|
||
'website.ePayment.gateway.mellat': 'بانک ملت (بهپرداخت)',
|
||
'website.ePayment.gateway.mellatDesc':
|
||
'شناسه ترمینال، نام کاربری و رمز عبور را از پنل پذیرنده ملت وارد کنید.',
|
||
'website.ePayment.gateway.sep': 'سپ (سامان کیش)',
|
||
'website.ePayment.gateway.sepDesc': 'درگاه پرداخت سامان — بهزودی.',
|
||
'website.ePayment.gateway.snappay': 'اسنپپی',
|
||
'website.ePayment.gateway.snappayDesc': 'پرداخت اسنپپی — بهزودی.',
|
||
'website.ePayment.gateway.digipay': 'دیجیپی',
|
||
'website.ePayment.gateway.digipayDesc': 'پرداخت دیجیپی — بهزودی.',
|
||
'website.ePayment.gateway.zarinpal': 'زرینپال',
|
||
'website.ePayment.gateway.zarinpalDesc':
|
||
'کد درگاه (Merchant ID) را از پنل زرینپال وارد کنید. اگر ملت و زرینپال هر دو فعال باشند، مشتری در مرحله پرداخت یکی را انتخاب میکند.',
|
||
'website.ePayment.comingSoon': 'بهزودی',
|
||
'website.ePayment.terminalId': 'شناسه ترمینال',
|
||
'website.ePayment.username': 'نام کاربری',
|
||
'website.ePayment.password': 'رمز عبور',
|
||
'website.ePayment.merchantId': 'کد درگاه (Merchant ID)',
|
||
'website.ePayment.merchantIdPlaceholder': 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx',
|
||
'website.ePayment.sandbox': 'حالت آزمایشی (Sandbox)',
|
||
'website.ePayment.sandboxDesc':
|
||
'برای تست از محیط سندباکس زرینپال استفاده میشود. برای پرداخت واقعی خاموش کنید.',
|
||
'website.ePayment.passwordSet': 'ذخیرهشده',
|
||
'website.ePayment.passwordPlaceholder': 'رمز عبور درگاه را وارد کنید',
|
||
'website.ePayment.passwordPlaceholderSet': 'برای حفظ رمز فعلی خالی بگذارید',
|
||
'website.ePayment.showPassword': 'نمایش رمز',
|
||
'website.ePayment.hidePassword': 'مخفی کردن رمز',
|
||
'website.ePayment.saveCredentials': 'ذخیره اطلاعات',
|
||
'website.ePayment.error.credentials':
|
||
'با فعال بودن ملت، شناسه ترمینال و نام کاربری الزامی است.',
|
||
'website.ePayment.error.passwordRequired':
|
||
'برای اولین بار فعالسازی ملت، رمز عبور الزامی است.',
|
||
'website.ePayment.error.zarinpalMerchant':
|
||
'با فعال بودن زرینپال، کد درگاه (Merchant ID) الزامی است.',
|
||
|
||
'title.signIn': 'ورود',
|
||
'title.home': 'خانه',
|
||
'title.profile': 'پروفایل',
|
||
'title.businessProfile': 'پروفایل کسبوکار',
|
||
'title.products': 'محصولات',
|
||
'title.myProducts': 'محصولات من',
|
||
'title.addProduct': 'افزودن محصول',
|
||
'title.editProduct': 'ویرایش محصول',
|
||
'title.productDetails': 'جزئیات محصول',
|
||
'title.categories': 'دستهبندیها',
|
||
'title.brands': 'برندها',
|
||
'title.settings': 'تنظیمات',
|
||
'title.store': 'فروشگاه',
|
||
'title.storeItems': 'محصولات فروشگاه',
|
||
'title.orders': 'سفارشهای من',
|
||
'title.shoppingCards': 'کارتهای خرید',
|
||
'title.customers': 'کاربران',
|
||
'title.customerProducts': 'محصولات مشتریان',
|
||
'title.content': 'مدیریت محتوا',
|
||
'title.blog': 'بلاگ',
|
||
'title.myBlogs': 'بلاگهای من',
|
||
'title.addBlog': 'افزودن بلاگ',
|
||
'title.editBlog': 'ویرایش بلاگ',
|
||
'title.blogDetails': 'جزئیات بلاگ',
|
||
'title.videos': 'ویدیوها',
|
||
'title.instructions': 'آموزشها',
|
||
'title.myInstructions': 'آموزشهای من',
|
||
'title.addInstruction': 'افزودن آموزش',
|
||
'title.editInstruction': 'ویرایش آموزش',
|
||
'title.instructionDetails': 'جزئیات آموزش',
|
||
'title.myVideos': 'ویدیوهای من',
|
||
'title.addVideo': 'افزودن ویدیو',
|
||
'title.editVideo': 'ویرایش ویدیو',
|
||
'title.videoDetails': 'جزئیات ویدیو',
|
||
'title.portfolios': 'نمونه کارها',
|
||
'title.myPortfolios': 'نمونه کارهای من',
|
||
'title.addPortfolio': 'افزودن نمونه کار',
|
||
'title.editPortfolio': 'ویرایش نمونه کار',
|
||
'title.portfolioDetails': 'جزئیات نمونه کار',
|
||
'title.website': 'وبسایت',
|
||
'title.staticImages': 'تصاویر ثابت',
|
||
'title.sliders': 'اسلایدرها',
|
||
'title.specialCategories': 'دستههای ویژه',
|
||
'title.specialBrands': 'برندهای ویژه',
|
||
'title.specialItems': 'محصولات ویژه فروشگاه',
|
||
'title.contactForm': 'فرم تماس با ما',
|
||
'title.subscriptions': 'عضویتها',
|
||
'title.faq': 'سوالات متداول',
|
||
'title.badges': 'نشانها',
|
||
'title.ePayment': 'پرداخت الکترونیک',
|
||
'title.invoices': 'فاکتورها',
|
||
'title.finance': 'مدیریت مالی',
|
||
'title.issueInvoice': 'صدور فاکتور',
|
||
'title.editInvoice': 'ویرایش فاکتور',
|
||
'title.invoiceTemplates': 'قالبهای فاکتور',
|
||
'title.addInvoiceTemplate': 'افزودن قالب فاکتور',
|
||
'title.editInvoiceTemplate': 'ویرایش قالب فاکتور',
|
||
'title.transactions': 'تراکنشها',
|
||
|
||
'finance.page.subtitle': 'فاکتورها و تراکنشهای مالی را مدیریت کنید.',
|
||
'finance.card.invoices.desc': 'صدور و پیگیری فاکتور برای مشتریان.',
|
||
'finance.card.transactions.desc': 'مشاهده تراکنشهای پرداختی و مالی.',
|
||
|
||
'transactions.subtitle': 'تراکنشهای پرداختی و مالی را مشاهده کنید.',
|
||
'transactions.lead': 'تراکنشها اینجا نمایش داده میشوند.',
|
||
'transactions.note': 'این بخش بهزودی آماده میشود. فعلاً میتوانید جزئیات پرداخت سفارش را از صفحه سفارشها ببینید.',
|
||
|
||
'invoices.subtitle': 'فاکتورهای صادر شده برای مشتریان خود را مدیریت کنید.',
|
||
'invoices.templatesLink': 'مدیریت قالب ها',
|
||
'invoices.issue': 'صدور فاکتور',
|
||
'invoices.tableTitle': 'فاکتورها',
|
||
'invoices.countOne': '{count} فاکتور',
|
||
'invoices.countMany': '{count} فاکتور',
|
||
'invoices.loading': 'در حال بارگذاری...',
|
||
'invoices.empty': 'هنوز فاکتوری ثبت نشده است.',
|
||
'invoices.col.name': 'نام',
|
||
'invoices.col.customer': 'مشتری',
|
||
'invoices.col.issued': 'تاریخ صدور',
|
||
'invoices.col.status': 'وضعیت',
|
||
'invoices.col.total': 'مبلغ کل',
|
||
'invoices.col.link': 'لینک',
|
||
'invoices.col.actions': 'عملیات',
|
||
'invoices.itemCountOne': '{count} آیتم',
|
||
'invoices.itemCountMany': '{count} آیتم',
|
||
'invoices.changeStatus': 'تغییر وضعیت',
|
||
'invoices.changeStatusAria': 'تغییر وضعیت ({status})',
|
||
'invoices.view': 'مشاهده',
|
||
'invoices.viewAria': 'مشاهده فاکتور',
|
||
'invoices.edit': 'ویرایش',
|
||
'invoices.editAria': 'ویرایش فاکتور',
|
||
'invoices.editDisabledTitle': 'فاکتورهای تاییدشده قابل ویرایش نیستند',
|
||
'invoices.editDisabledAria': 'ویرایش فاکتور (غیرفعال — تاییدشده)',
|
||
'invoices.remove': 'حذف',
|
||
'invoices.removeAria': 'حذف فاکتور',
|
||
'invoices.copyLink': 'کپی لینک',
|
||
'invoices.copyLinkAria': 'کپی لینک فاکتور',
|
||
'invoices.linkCopied': 'لینک فاکتور کپی شد.',
|
||
'invoices.linkCopyError': 'کپی لینک ممکن نشد.',
|
||
'invoices.deleteTitle': 'حذف فاکتور؟',
|
||
'invoices.deleteMessage': 'این فاکتور برای همیشه حذف شود؟ این عملیات قابل بازگشت نیست.',
|
||
'invoices.removed': 'فاکتور حذف شد.',
|
||
'invoices.removeError': 'حذف فاکتور ممکن نشد.',
|
||
'invoices.statusUpdated': 'وضعیت فاکتور بهروزرسانی شد.',
|
||
'invoices.statusUpdateError': 'بهروزرسانی وضعیت ممکن نشد.',
|
||
'invoices.loadError': 'بارگذاری فاکتورها ممکن نشد.',
|
||
'invoices.filterBannerNamed': 'فاکتور های {name}',
|
||
'invoices.filterBannerGeneric': 'فاکتور های این مشتری',
|
||
'invoices.filterCancel': 'انصراف',
|
||
'invoices.filterClear': 'پاک کردن فیلتر',
|
||
'invoices.issueForCustomer': 'صدور فاکتور برای این مشتری',
|
||
'invoices.detailFallbackTitle': 'فاکتور',
|
||
'invoices.detail.status': 'وضعیت',
|
||
'invoices.detail.total': 'مبلغ کل',
|
||
'invoices.detail.link': 'لینک عمومی',
|
||
'invoices.detail.billedTo': 'صادر شده برای',
|
||
'invoices.detail.notes': 'یادداشت: {notes}',
|
||
'invoices.status.draft': 'پیشنویس',
|
||
'invoices.status.issued': 'صادرشده',
|
||
'invoices.status.approved': 'تاییدشده',
|
||
'invoices.status.paid': 'پرداختشده',
|
||
'invoices.status.cancelled': 'لغوشده',
|
||
|
||
'issueInvoice.subtitleNew': 'یک قالب فاکتور انتخاب و ویرایش کنید یا یک فاکتور خالی بسازید.',
|
||
'issueInvoice.subtitleEdit': 'محتوای فاکتور را بهروزرسانی کنید. فاکتورهای تاییدشده قابل تغییر نیستند.',
|
||
'issueInvoice.startFromTemplate': 'شروع از قالب',
|
||
'issueInvoice.blankInvoice': 'بدون قالب',
|
||
'issueInvoice.name': 'نام (اختیاری)',
|
||
'issueInvoice.namePlaceholder': 'مثلاً بسته طراحی سایت',
|
||
'issueInvoice.noTemplatesHint': 'هنوز قالب فاکتوری ندارید. آنها را در {link} مدیریت کنید یا فاکتور خالی زیر را تکمیل کنید.',
|
||
'issueInvoice.noTemplatesLink': 'قالبهای فاکتور',
|
||
'issueInvoice.topText': 'متن بالای فاکتور',
|
||
'issueInvoice.topTextPlaceholder': 'متن مقدماتی اختیاری در بالای فاکتور',
|
||
'issueInvoice.notes': 'یادداشتها',
|
||
'issueInvoice.notesPlaceholder': 'یادداشت داخلی اختیاری',
|
||
'issueInvoice.total': 'مبلغ کل: {total}',
|
||
'issueInvoice.totalLabel': 'مبلغ کل',
|
||
'issueInvoice.cancel': 'انصراف',
|
||
'issueInvoice.save': 'ذخیره تغییرات',
|
||
'issueInvoice.saving': 'در حال ذخیره...',
|
||
'issueInvoice.issue': 'صدور فاکتور',
|
||
'issueInvoice.issuing': 'در حال صدور...',
|
||
'issueInvoice.backToInvoices': 'بازگشت به فاکتورها',
|
||
'issueInvoice.approvedLocked': 'این فاکتور تاییدشده و دیگر قابل ویرایش نیست.',
|
||
'issueInvoice.loadError': 'بارگذاری فرم فاکتور ممکن نشد.',
|
||
'issueInvoice.updateError': 'بهروزرسانی فاکتور ممکن نشد.',
|
||
'issueInvoice.createError': 'ایجاد فاکتور ممکن نشد.',
|
||
'issueInvoice.updated': 'فاکتور بهروزرسانی شد.',
|
||
'issueInvoice.issued': 'فاکتور صادر شد.',
|
||
'issueInvoice.recipient': 'صدور فاکتور برای',
|
||
'issueInvoice.recipientFor': 'صدور فاکتور برای {name}',
|
||
'issueInvoice.recipientRequired': 'یک مشتری برای صدور این فاکتور انتخاب کنید.',
|
||
'issueInvoice.pickCustomer': 'انتخاب مشتری',
|
||
'issueInvoice.pickCustomerPlaceholder': 'جستجو بر اساس نام یا شماره تماس...',
|
||
'issueInvoice.pickCustomerNoResults': 'مشتریای یافت نشد.',
|
||
'issueInvoice.pickCustomerHint': 'برای جستجو حداقل ۲ کاراکتر وارد کنید.',
|
||
'issueInvoice.changeCustomer': 'تغییر',
|
||
'issueInvoice.unknownCustomer': 'مشتری',
|
||
'issueInvoice.loading': 'در حال بارگذاری...',
|
||
|
||
'invoiceDraft.itemLabel': 'آیتم {index}',
|
||
'invoiceDraft.removeItem': 'حذف آیتم',
|
||
'invoiceDraft.fieldTitle': 'عنوان',
|
||
'invoiceDraft.fieldTitlePlaceholder': 'عنوان خدمت',
|
||
'invoiceDraft.fieldDuration': 'مدت',
|
||
'invoiceDraft.fieldDurationPlaceholder': 'مثلاً ۳ ماه',
|
||
'invoiceDraft.fieldWorktime': 'ساعت کاری',
|
||
'invoiceDraft.fieldWorktimePlaceholder': 'مثلاً ۴۰ ساعت',
|
||
'invoiceDraft.fieldPrice': 'قیمت (تومان)',
|
||
'invoiceDraft.fieldDiscountedPrice': 'قیمت با تخفیف (تومان)',
|
||
'invoiceDraft.fieldDiscountedPricePlaceholder': 'اختیاری',
|
||
'invoiceDraft.optional': 'اختیاری',
|
||
'invoiceDraft.fieldDescription': 'توضیحات',
|
||
'invoiceDraft.fieldDescriptionPlaceholder': 'جزئیات اختیاری',
|
||
'invoiceDraft.addFromTemplate': 'افزودن از قالب...',
|
||
'invoiceDraft.addFromTemplateAria': 'افزودن از قالب آیتم',
|
||
'invoiceDraft.add': 'افزودن',
|
||
'invoiceDraft.addCustomItem': 'افزودن آیتم سفارشی',
|
||
'invoiceDraft.keyPoints': 'نکات کلیدی',
|
||
'invoiceDraft.addPoint': 'افزودن نکته',
|
||
'invoiceDraft.noKeyPoints': 'هنوز نکته کلیدیای ثبت نشده است.',
|
||
'invoiceDraft.keyPointPlaceholder': 'مثلاً پرداخت ظرف ۷ روز',
|
||
'invoiceDraft.keyPointAria': 'نکته کلیدی {index}',
|
||
'invoiceDraft.removeKeyPoint': 'حذف نکته کلیدی',
|
||
'invoiceDraft.accounts': 'شماره حسابها',
|
||
'invoiceDraft.addAccount': 'افزودن حساب',
|
||
'invoiceDraft.noAccounts': 'هنوز حساب بانکیای ثبت نشده است.',
|
||
'invoiceDraft.bankName': 'نام بانک',
|
||
'invoiceDraft.accountHolder': 'صاحب حساب',
|
||
'invoiceDraft.cardNumber': 'شماره کارت',
|
||
'invoiceDraft.iban': 'شبا',
|
||
'invoiceDraft.removeAccount': 'حذف حساب',
|
||
'invoiceDraft.error.itemTitle': 'هر آیتم به عنوان نیاز دارد.',
|
||
'invoiceDraft.error.itemPrice': 'قیمت برای «{title}» الزامی است.',
|
||
'invoiceDraft.error.itemDiscountInvalid': 'قیمت با تخفیف برای «{title}» نامعتبر است.',
|
||
'invoiceDraft.error.itemDiscountExceeds': 'قیمت با تخفیف نمیتواند از قیمت اصلی «{title}» بیشتر باشد.',
|
||
|
||
'invoiceTemplates.subtitle': 'قالبهای فاکتور و آیتمهای از پیش تعریفشده را مدیریت کنید.',
|
||
'invoiceTemplates.section.templates.title': 'قالبهای فاکتور',
|
||
'invoiceTemplates.section.templates.desc':
|
||
'الگوهای کامل برای صدور سریعتر فاکتور — یکی را انتخاب کنید یا از خالی شروع کنید.',
|
||
'invoiceTemplates.addTemplate': 'افزودن قالب',
|
||
'invoiceTemplates.templatesTableTitle': 'قالبها',
|
||
'invoiceTemplates.countTemplatesOne': '{count} قالب',
|
||
'invoiceTemplates.countTemplatesMany': '{count} قالب',
|
||
'invoiceTemplates.col.name': 'نام',
|
||
'invoiceTemplates.col.items': 'آیتمها',
|
||
'invoiceTemplates.col.keyPoints': 'نکات کلیدی',
|
||
'invoiceTemplates.col.accounts': 'حسابها',
|
||
'invoiceTemplates.col.actions': 'عملیات',
|
||
'invoiceTemplates.emptyTemplates': 'هنوز قالب فاکتوری ندارید. یکی اضافه کنید تا صدور فاکتور سریعتر شود.',
|
||
'invoiceTemplates.section.items.title': 'قالبهای آیتم فاکتور',
|
||
'invoiceTemplates.section.items.desc':
|
||
'آیتمهای قابل استفاده مجدد که میتوانید در قالبهای فاکتور یا هنگام صدور فاکتور استفاده کنید.',
|
||
'invoiceTemplates.addItem': 'افزودن آیتم',
|
||
'invoiceTemplates.itemsTableTitle': 'آیتمهای از پیش تعریفشده',
|
||
'invoiceTemplates.countItemsOne': '{count} آیتم',
|
||
'invoiceTemplates.countItemsMany': '{count} آیتم',
|
||
'invoiceTemplates.col.title': 'عنوان',
|
||
'invoiceTemplates.col.duration': 'مدت',
|
||
'invoiceTemplates.col.worktime': 'ساعت کاری',
|
||
'invoiceTemplates.col.price': 'قیمت',
|
||
'invoiceTemplates.col.discounted': 'با تخفیف',
|
||
'invoiceTemplates.emptyItems': 'هنوز آیتم از پیش تعریفشدهای ندارید.',
|
||
'invoiceTemplates.editTemplate': 'ویرایش',
|
||
'invoiceTemplates.removeTemplate': 'حذف',
|
||
'invoiceTemplates.editItem': 'ویرایش',
|
||
'invoiceTemplates.removeItem': 'حذف',
|
||
'invoiceTemplates.deleteTemplateTitle': 'حذف قالب فاکتور',
|
||
'invoiceTemplates.deleteTemplateMessage': '«{name}» از قالبهای فاکتور حذف شود؟',
|
||
'invoiceTemplates.deleteItemTitle': 'حذف قالب آیتم',
|
||
'invoiceTemplates.deleteItemMessage': '«{title}» از آیتمهای از پیش تعریفشده حذف شود؟',
|
||
'invoiceTemplates.itemModalAddTitle': 'افزودن قالب آیتم',
|
||
'invoiceTemplates.itemModalEditTitle': 'ویرایش قالب آیتم',
|
||
'invoiceTemplates.itemUpdated': 'قالب آیتم بهروزرسانی شد.',
|
||
'invoiceTemplates.itemCreated': 'قالب آیتم ایجاد شد.',
|
||
'invoiceTemplates.itemRemoved': 'قالب آیتم حذف شد.',
|
||
'invoiceTemplates.templateRemoved': 'قالب فاکتور حذف شد.',
|
||
'invoiceTemplates.loadError': 'بارگذاری تنظیمات فاکتور ممکن نشد.',
|
||
'invoiceTemplates.itemSaveError': 'ذخیره قالب آیتم ممکن نشد.',
|
||
'invoiceTemplates.itemRemoveError': 'حذف آیتم ممکن نشد.',
|
||
'invoiceTemplates.templateRemoveError': 'حذف قالب ممکن نشد.',
|
||
'invoiceTemplates.saveItem': 'ذخیره تغییرات',
|
||
'invoiceTemplates.savingItem': 'در حال ذخیره...',
|
||
'invoiceTemplates.createItem': 'ایجاد آیتم',
|
||
'invoiceTemplates.cancel': 'انصراف',
|
||
'invoiceTemplates.hint': 'نکته: از صفحه فاکتورها با استفاده از یک قالب یا از ابتدا فاکتور صادر کنید.',
|
||
|
||
'invoiceTemplateEditor.addTitle': 'افزودن قالب فاکتور',
|
||
'invoiceTemplateEditor.editTitle': 'ویرایش قالب فاکتور',
|
||
'invoiceTemplateEditor.subtitle':
|
||
'نام، متن بالا، آیتمها، نکات کلیدی و حسابهای بانکی را برای استفاده مجدد هنگام صدور فاکتور تعریف کنید.',
|
||
'invoiceTemplateEditor.name': 'نام',
|
||
'invoiceTemplateEditor.namePlaceholder': 'مثلاً بسته استاندارد سایت',
|
||
'invoiceTemplateEditor.topText': 'متن بالای فاکتور',
|
||
'invoiceTemplateEditor.topTextPlaceholder': 'متن مقدماتی اختیاری در بالای فاکتور',
|
||
'invoiceTemplateEditor.nameRequired': 'نام قالب الزامی است.',
|
||
'invoiceTemplateEditor.loadError': 'بارگذاری ویرایشگر قالب ممکن نشد.',
|
||
'invoiceTemplateEditor.saveError': 'ذخیره قالب فاکتور ممکن نشد.',
|
||
'invoiceTemplateEditor.updated': 'قالب فاکتور بهروزرسانی شد.',
|
||
'invoiceTemplateEditor.created': 'قالب فاکتور ایجاد شد.',
|
||
'invoiceTemplateEditor.backToTemplates': 'بازگشت به قالبها',
|
||
'invoiceTemplateEditor.create': 'ایجاد قالب',
|
||
'invoiceTemplateEditor.save': 'ذخیره تغییرات',
|
||
'invoiceTemplateEditor.saving': 'در حال ذخیره...',
|
||
'invoiceTemplateEditor.cancel': 'انصراف',
|
||
'invoiceTemplateEditor.loading': 'در حال بارگذاری...',
|
||
|
||
'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': 'سرویس پیامک موقتاً در دسترس نیست. لطفاً بعداً دوباره تلاش کنید.',
|
||
'login.error.access': 'به این پنل کسبوکار دسترسی ندارید.',
|
||
|
||
'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': 'ایجاد حساب ممکن نشد.',
|
||
|
||
'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} ارسال شد',
|
||
'common.breadcrumb': 'مسیر صفحه',
|
||
'common.overview': 'نمای کلی',
|
||
}
|
||
|
||
const dictionaries: Record<DashboardLocale, Record<MessageKey, string>> = {
|
||
en: en as Record<MessageKey, string>,
|
||
fa,
|
||
}
|
||
|
||
export type BusinessMessageKey = MessageKey
|
||
|
||
/** Maps hardcoded English breadcrumb labels used across pages → message keys. */
|
||
const BREADCRUMB_LABEL_KEYS: Record<string, MessageKey> = {
|
||
Home: 'nav.home',
|
||
Dashboard: 'bc.dashboard',
|
||
'Business Profile': 'nav.businessProfile',
|
||
Products: 'nav.products',
|
||
Overview: 'common.overview',
|
||
'My Products': 'nav.products.list',
|
||
'Add New Product': 'nav.products.new',
|
||
'Add a New Product': 'nav.products.new',
|
||
'Edit Product': 'bc.editProduct',
|
||
'Product Details': 'bc.productDetails',
|
||
Categories: 'title.categories',
|
||
Brands: 'title.brands',
|
||
Settings: 'title.settings',
|
||
Store: 'nav.store',
|
||
'My Store Items': 'nav.store.items',
|
||
'My Orders': 'nav.store.orders',
|
||
'Shipping Fees': 'nav.store.shipping',
|
||
'Shopping Cards': 'nav.store.cards',
|
||
Customers: 'nav.customers',
|
||
'Customer products': 'nav.customerProducts',
|
||
Blog: 'nav.blog',
|
||
Content: 'nav.content',
|
||
'My Blogs': 'nav.blog.list',
|
||
'Add New Blog': 'nav.blog.new',
|
||
'Edit Blog': 'bc.editBlog',
|
||
'Blog Details': 'bc.blogDetails',
|
||
Videos: 'nav.videos',
|
||
Instructions: 'nav.instructions',
|
||
'My Instructions': 'nav.instructions.list',
|
||
'Add New Instruction': 'nav.instructions.new',
|
||
'Edit Instruction': 'bc.editInstruction',
|
||
'Instruction Details': 'bc.instructionDetails',
|
||
Portfolios: 'nav.portfolios',
|
||
'My Portfolios': 'nav.portfolios.list',
|
||
'Add New Portfolio': 'nav.portfolios.new',
|
||
'Edit Portfolio': 'bc.editPortfolio',
|
||
'Portfolio Details': 'bc.portfolioDetails',
|
||
'My Videos': 'nav.videos.list',
|
||
'Add New Video': 'nav.videos.new',
|
||
'Edit Video': 'bc.editVideo',
|
||
'Video Details': 'bc.videoDetails',
|
||
Website: 'nav.website',
|
||
'Static Images': 'nav.website.staticImages',
|
||
Sliders: 'nav.website.sliders',
|
||
'Special Categories': 'nav.website.specialCategories',
|
||
'Special Brands': 'nav.website.specialBrands',
|
||
'Special Items': 'nav.website.specialItems',
|
||
'Contact Us Form': 'nav.website.contact',
|
||
Subscriptions: 'nav.website.subscriptions',
|
||
FAQ: 'nav.website.faq',
|
||
Badges: 'nav.website.badges',
|
||
'E-Payment': 'nav.website.ePayment',
|
||
Orders: 'nav.store.orders',
|
||
Profile: 'header.profile',
|
||
'Sign in': 'title.signIn',
|
||
}
|
||
|
||
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 translateBreadcrumbLabel(locale: DashboardLocale, label: string): string {
|
||
const key = BREADCRUMB_LABEL_KEYS[label]
|
||
return key ? translate(locale, key) : label
|
||
}
|
||
|
||
export function getBusinessRouteTitleRules(locale: DashboardLocale): RouteTitleRule[] {
|
||
const t = (key: MessageKey) => translate(locale, key)
|
||
return [
|
||
{ match: '/login', labels: [t('title.signIn')] },
|
||
{ match: '/profile', labels: [t('title.profile')] },
|
||
{ match: '/business-profile', labels: [t('title.businessProfile')] },
|
||
{ match: '/products/categories', labels: [t('title.products'), t('title.categories')] },
|
||
{ match: '/products/brands', labels: [t('title.products'), t('title.brands')] },
|
||
{ match: '/products/new', labels: [t('title.products'), t('title.addProduct')] },
|
||
{ match: /^\/products\/edit\/[^/]+$/, labels: [t('title.products'), t('title.editProduct')] },
|
||
{ match: '/products/list', labels: [t('title.products'), t('title.myProducts')] },
|
||
{
|
||
match: /^\/products\/detail\/[^/]+$/,
|
||
labels: [t('title.products'), t('title.productDetails')],
|
||
},
|
||
{ match: '/products/settings', labels: [t('title.products'), t('title.settings')] },
|
||
{ match: '/products', labels: [t('title.products')] },
|
||
{ match: '/store/items', labels: [t('title.store'), t('title.storeItems')] },
|
||
{ match: '/store/orders', labels: [t('title.store'), t('title.orders')] },
|
||
{ match: '/store/cards', labels: [t('title.store'), t('title.shoppingCards')] },
|
||
{ match: '/store/settings', labels: [t('title.store'), t('title.settings')] },
|
||
{ match: '/store', labels: [t('title.store')] },
|
||
{ match: '/customers', labels: [t('title.customers')] },
|
||
{ match: '/finance', labels: [t('title.finance')] },
|
||
{ match: '/customer-products/new', labels: [t('title.customerProducts'), t('customerProducts.add')] },
|
||
{ match: /^\/customer-products\/[^/]+\/edit$/, labels: [t('title.customerProducts'), t('customerProducts.edit')] },
|
||
{ match: /^\/customer-products\/[^/]+$/, labels: [t('title.customerProducts'), t('customerProducts.detailsTitle')] },
|
||
{ match: '/customer-products', labels: [t('title.customerProducts')] },
|
||
{
|
||
match: /^\/invoices\/templates\/new$/,
|
||
labels: [t('title.finance'), t('title.invoiceTemplates'), t('title.addInvoiceTemplate')],
|
||
},
|
||
{
|
||
match: /^\/invoices\/templates\/[^/]+$/,
|
||
labels: [t('title.finance'), t('title.invoiceTemplates'), t('title.editInvoiceTemplate')],
|
||
},
|
||
{ match: '/invoices/templates', labels: [t('title.finance'), t('title.invoiceTemplates')] },
|
||
{ match: '/invoices/new', labels: [t('title.finance'), t('title.invoices'), t('title.issueInvoice')] },
|
||
{
|
||
match: /^\/invoices\/[^/]+\/edit$/,
|
||
labels: [t('title.finance'), t('title.invoices'), t('title.editInvoice')],
|
||
},
|
||
{ match: '/invoices', labels: [t('title.finance'), t('title.invoices')] },
|
||
{ match: '/transactions', labels: [t('title.finance'), t('title.transactions')] },
|
||
{ match: '/content', labels: [t('title.content')] },
|
||
{ match: '/blog/list', labels: [t('title.content'), t('title.blog'), t('title.myBlogs')] },
|
||
{ match: /^\/blog\/detail\/[^/]+$/, labels: [t('title.content'), t('title.blog'), t('title.blogDetails')] },
|
||
{ match: '/blog/new', labels: [t('title.content'), t('title.blog'), t('title.addBlog')] },
|
||
{ match: /^\/blog\/edit\/[^/]+$/, labels: [t('title.content'), t('title.blog'), t('title.editBlog')] },
|
||
{ match: '/blog/categories', labels: [t('title.content'), t('title.blog'), t('title.categories')] },
|
||
{ match: '/blog/settings', labels: [t('title.content'), t('title.blog'), t('title.settings')] },
|
||
{ match: '/blog', labels: [t('title.content'), t('title.blog')] },
|
||
{ match: '/videos/list', labels: [t('title.content'), t('title.videos'), t('title.myVideos')] },
|
||
{ match: /^\/videos\/detail\/[^/]+$/, labels: [t('title.content'), t('title.videos'), t('title.videoDetails')] },
|
||
{ match: '/videos/new', labels: [t('title.content'), t('title.videos'), t('title.addVideo')] },
|
||
{ match: /^\/videos\/edit\/[^/]+$/, labels: [t('title.content'), t('title.videos'), t('title.editVideo')] },
|
||
{ match: '/videos/categories', labels: [t('title.content'), t('title.videos'), t('title.categories')] },
|
||
{ match: '/videos/settings', labels: [t('title.content'), t('title.videos'), t('title.settings')] },
|
||
{ match: '/videos', labels: [t('title.content'), t('title.videos')] },
|
||
{ match: '/instructions/list', labels: [t('title.content'), t('title.instructions'), t('title.myInstructions')] },
|
||
{ match: /^\/instructions\/detail\/[^/]+$/, labels: [t('title.content'), t('title.instructions'), t('title.instructionDetails')] },
|
||
{ match: '/instructions/new', labels: [t('title.content'), t('title.instructions'), t('title.addInstruction')] },
|
||
{ match: /^\/instructions\/edit\/[^/]+$/, labels: [t('title.content'), t('title.instructions'), t('title.editInstruction')] },
|
||
{ match: '/instructions/categories', labels: [t('title.content'), t('title.instructions'), t('title.categories')] },
|
||
{ match: '/instructions/settings', labels: [t('title.content'), t('title.instructions'), t('title.settings')] },
|
||
{ match: '/instructions', labels: [t('title.content'), t('title.instructions')] },
|
||
{ match: '/portfolios/list', labels: [t('title.portfolios'), t('title.myPortfolios')] },
|
||
{
|
||
match: /^\/portfolios\/detail\/[^/]+$/,
|
||
labels: [t('title.portfolios'), t('title.portfolioDetails')],
|
||
},
|
||
{ match: '/portfolios/new', labels: [t('title.portfolios'), t('title.addPortfolio')] },
|
||
{
|
||
match: /^\/portfolios\/edit\/[^/]+$/,
|
||
labels: [t('title.portfolios'), t('title.editPortfolio')],
|
||
},
|
||
{ match: '/portfolios/categories', labels: [t('title.portfolios'), t('title.categories')] },
|
||
{ match: '/portfolios/settings', labels: [t('title.portfolios'), t('title.settings')] },
|
||
{ match: '/portfolios', labels: [t('title.portfolios')] },
|
||
{ match: '/website/static-images', labels: [t('title.website'), t('title.staticImages')] },
|
||
{ match: '/website/sliders', labels: [t('title.website'), t('title.sliders')] },
|
||
{
|
||
match: '/website/special-categories',
|
||
labels: [t('title.website'), t('title.specialCategories')],
|
||
},
|
||
{ match: '/website/special-brands', labels: [t('title.website'), t('title.specialBrands')] },
|
||
{ match: '/website/special-items', labels: [t('title.website'), t('title.specialItems')] },
|
||
{ match: '/website/contact', labels: [t('title.website'), t('title.contactForm')] },
|
||
{ match: '/website/subscriptions', labels: [t('title.website'), t('title.subscriptions')] },
|
||
{ match: '/website/faq', labels: [t('title.website'), t('title.faq')] },
|
||
{ match: '/website/badges', labels: [t('title.website'), t('title.badges')] },
|
||
{ match: '/website', labels: [t('title.website')] },
|
||
{ match: '/settings', labels: [t('title.settings')] },
|
||
{ match: '/', labels: [t('title.home')] },
|
||
]
|
||
}
|