change texts

This commit is contained in:
hamid zarghami
2026-02-07 16:22:02 +03:30
parent 6b9e808bfd
commit 2e6fdedbc2
21 changed files with 50 additions and 50 deletions
+1 -1
View File
@@ -9,7 +9,7 @@ const ServiceSection: FC = () => {
دی منو
</div>
<div className='text-xs text-description'>
منو رستوران
منو فروشگاه
</div>
</div>
</div>
+5 -5
View File
@@ -51,7 +51,7 @@
"menu": "منو",
"mainpage": "صفحه اصلی",
"schedule": "زمان سفارش گیری",
"foods": "غذا ها",
"foods": "کالا ها",
"orders": "سفارشات",
"customers": "مشتریان",
"discount": "کد تخفیف",
@@ -71,7 +71,7 @@
"statistics": "گزارشات"
},
"shipment": {
"dineIn": "سرو در رستوران",
"dineIn": "سرو در فروشگاه",
"customerPickup": "دریافت از محل",
"deliveryCar": "تحویل به خودرو",
"deliveryCourier": "بیرون بر"
@@ -93,8 +93,8 @@
"slider_deleted": "اسلایدر با موفقیت حذف شد"
},
"submenu": {
"foods_list": "لیست غذا ها",
"add_food": "افزودن غذا",
"foods_list": "لیست کالا ها",
"add_food": "افزودن کالا",
"categories": "دسته بندی ها",
"orders_list": "لیست سفارشات",
"add_order": "افزودن سفارش",
@@ -236,7 +236,7 @@
"footer": {
"home": "صفحه اصلی",
"customers": "مشتریان",
"foods": "غذا ها",
"foods": "کالا ها",
"announcements": "اطلاعیه ها",
"orders": "سفارشات"
},
+3 -3
View File
@@ -13,7 +13,7 @@ const CommentsDetails: FC = () => {
const [selectedCategories, setSelectedCategories] = useState<string[]>([])
const allFoods = ['پیتزا پپرونی', 'سالاد سزار', 'پاستا', 'همبرگر', 'سوشی']
const allCategories = ['پیش غذا', 'غذای اصلی', 'دسر', 'نوشیدنی', 'سالاد']
const allCategories = ['پیش کالا', 'کالای اصلی', 'دسر', 'نوشیدنی', 'سالاد']
const foods = ['همه', ...allFoods]
const categories = ['همه', ...allCategories]
@@ -88,7 +88,7 @@ const CommentsDetails: FC = () => {
</div>
<Input
label='غذا ها'
label='کالا ها'
value='پیتزا پپرونی ، سالاد سزار'
readOnly
/>
@@ -123,7 +123,7 @@ const CommentsDetails: FC = () => {
<div className='text-sm mb-4'>وضعیت نمایش</div>
<div className='mb-6 border border-border rounded-xl p-4'>
<div className='text-xs mb-3'>نمایش در غذاهای</div>
<div className='text-xs mb-3'>نمایش در کالاهای</div>
<Input
// variant='search'
placeholder='جستجو'
+3 -3
View File
@@ -72,7 +72,7 @@ const CommentsList: FC = () => {
},
{
key: 'food',
title: 'غذا',
title: 'کالا',
},
{
key: 'date',
@@ -142,7 +142,7 @@ const CommentsList: FC = () => {
number: '۱۲۳۳۷',
customerName: 'علی کریمی',
strengths: 'سرویس سریع',
weaknesses: 'کم بودن حجم غذا',
weaknesses: 'کم بودن حجم کالا',
food: 'پاستا کربونارا',
date: '2024-11-04',
isDisplayed: true,
@@ -161,7 +161,7 @@ const CommentsList: FC = () => {
id: 6,
number: '۱۲۳۳۹',
customerName: 'حسن نوری',
strengths: 'ارزش غذایی مناسب',
strengths: 'ارزش کالایی مناسب',
weaknesses: 'بوی نامطبوع',
food: 'کباب ترکی',
date: '2024-11-06',
+1 -1
View File
@@ -48,7 +48,7 @@ const FoodSelector: FC<FoodSelectorProps> = ({ formik, foods }) => {
return (
<div>
<div className='text-sm mb-3'>غذاهایی که شامل تخفیف میشوند</div>
<div className='text-sm mb-3'>کالاهایی که شامل تخفیف میشوند</div>
<div className='mb-6 border border-border rounded-xl p-4'>
<Input
variant='search'
+1 -1
View File
@@ -183,7 +183,7 @@ const CategoryFood: FC = () => {
<div className="flex flex-col lg:flex-row gap-4 lg:gap-6 p-4 lg:p-6">
<div className="flex-1 w-full lg:w-auto">
<div className="flex items-center justify-between mb-4 lg:mb-6">
<h1 className="text-base lg:text-lg font-light">دسته بندی غذا</h1>
<h1 className="text-base lg:text-lg font-light">دسته بندی کالا</h1>
</div>
<div className="mb-4 lg:mb-0">
<Filters
+8 -8
View File
@@ -53,7 +53,7 @@ const CreateFood: FC = () => {
order: 0
},
validationSchema: Yup.object().shape({
title: Yup.string().required('نام غذا الزامی است'),
title: Yup.string().required('نام کالا الزامی است'),
categoryId: Yup.string().required('دسته‌بندی الزامی است'),
price: Yup.number().required('قیمت الزامی است').min(0, 'قیمت باید مثبت باشد'),
prepareTime: Yup.number().required('زمان آماده‌سازی الزامی است').min(0, 'زمان آماده‌سازی باید مثبت باشد'),
@@ -75,11 +75,11 @@ const CreateFood: FC = () => {
createFood(foodData, {
onSuccess: () => {
toast.success('غذا با موفقیت ایجاد شد')
toast.success('کالا با موفقیت ایجاد شد')
window.location.href = Pages.foods.list
},
onError: (error: ErrorType) => {
toast.error(error?.response?.data?.error?.message[0] || 'خطا در ایجاد غذا')
toast.error(error?.response?.data?.error?.message[0] || 'خطا در ایجاد کالا')
}
})
}
@@ -104,7 +104,7 @@ const CreateFood: FC = () => {
<div className='w-full mt-4'>
<div className='flex flex-col sm:flex-row w-full justify-between items-start sm:items-center gap-4'>
<div className='text-lg font-light'>
غذای جدید
کالای جدید
</div>
<div>
<Button
@@ -114,7 +114,7 @@ const CreateFood: FC = () => {
>
<div className='flex gap-2 items-center'>
<TickCircle className='size-5' color='white' />
<div>ثبت غذا</div>
<div>ثبت کالا</div>
</div>
</Button>
</div>
@@ -124,7 +124,7 @@ const CreateFood: FC = () => {
<div className='flex-1'>
<div className='bg-white py-6 sm:py-8 xl:px-10 px-4 rounded-3xl'>
<Input
label='نام غذا'
label='نام کالا'
name='title'
placeholder=''
value={formik.values.title}
@@ -195,7 +195,7 @@ const CreateFood: FC = () => {
<div className='mt-5'>
<Textarea
name='desc'
label='توضیحات غذا'
label='توضیحات کالا'
placeholder=''
value={formik.values.desc}
onChange={formik.handleChange}
@@ -216,7 +216,7 @@ const CreateFood: FC = () => {
</div>
<div className='mt-5'>
<div className='text-sm mb-2'>محتوای غذا</div>
<div className='text-sm mb-2'>محتوای کالا</div>
<div className='space-y-2'>
{formik.values.content.map((item, index) => (
<div key={index} className='flex gap-2 items-center'>
+2 -2
View File
@@ -36,14 +36,14 @@ const FoodsList: FC = () => {
return (
<div className='mt-5'>
<div className='flex justify-between items-center'>
<h1 className='text-lg font-light'>لیست غذاها</h1>
<h1 className='text-lg font-light'>لیست کالاها</h1>
<Link
to={Pages.foods.add}
>
<Button className='w-fit px-6'>
<div className='flex gap-2 items-center'>
<Add color='#fff' size={20} />
<span>افزودن غذا</span>
<span>افزودن کالا</span>
</div>
</Button>
</Link>
+5 -5
View File
@@ -56,7 +56,7 @@ const UpdateFood: FC = () => {
order: 0
},
validationSchema: Yup.object().shape({
title: Yup.string().required('نام غذا الزامی است'),
title: Yup.string().required('نام کالا الزامی است'),
categoryId: Yup.string().required('دسته‌بندی الزامی است'),
price: Yup.number().required('قیمت الزامی است').min(0, 'قیمت باید مثبت باشد'),
prepareTime: Yup.number().required('زمان آماده‌سازی الزامی است').min(0, 'زمان آماده‌سازی باید مثبت باشد'),
@@ -68,7 +68,7 @@ const UpdateFood: FC = () => {
}),
onSubmit: (values) => {
if (!id) {
toast.error('شناسه غذا یافت نشد')
toast.error('شناسه کالا یافت نشد')
return
}
@@ -84,7 +84,7 @@ const UpdateFood: FC = () => {
updateFood({ id, params: foodData }, {
onSuccess: () => {
toast.success('غذا با موفقیت به‌روزرسانی شد')
toast.success('کالا با موفقیت به‌روزرسانی شد')
navigate(Pages.foods.list)
},
onError: (error: ErrorType) => {
@@ -152,7 +152,7 @@ const UpdateFood: FC = () => {
if (!food) {
return (
<div className='w-full mt-4 flex justify-center items-center'>
<div>غذا یافت نشد</div>
<div>کالا یافت نشد</div>
</div>
)
}
@@ -161,7 +161,7 @@ const UpdateFood: FC = () => {
<div className='w-full mt-4'>
<div className='flex flex-col sm:flex-row w-full justify-between items-start sm:items-center gap-4'>
<div className='text-lg font-light'>
ویرایش غذا
ویرایش کالا
</div>
<div>
<Button
@@ -14,7 +14,7 @@ const BasicInfoSection: FC<BasicInfoSectionProps> = ({ formik, categories }) =>
return (
<>
<Input
label='نام غذا'
label='نام کالا'
name='title'
placeholder=''
value={formik.values.title}
@@ -85,7 +85,7 @@ const BasicInfoSection: FC<BasicInfoSectionProps> = ({ formik, categories }) =>
<div className='mt-5'>
<Textarea
name='desc'
label='توضیحات غذا'
label='توضیحات کالا'
placeholder=''
value={formik.values.desc}
onChange={formik.handleChange}
@@ -19,7 +19,7 @@ const CreateFoodSidebar: FC<Props> = (props: Props) => {
<div>
<div className='flex items-center justify-between'>
<div>وضعیت غذا</div>
<div>وضعیت کالا</div>
<SwitchComponent
active={props.isActive}
onChange={(value) => props.onChangeActive(value)}
@@ -34,15 +34,15 @@ const CreateFoodSidebar: FC<Props> = (props: Props) => {
onCheckedChange={(checked) => props.onChangeSpecial(checked as boolean)}
/>
<label className='text-xs leading-tight cursor-pointer'>
این غذا پیشنهاد ویژه رستوران هست.
این کالا پیشنهاد ویژه فروشگاه هست.
</label>
</div>
</div>
<div className='mt-8'>
<div className='text-sm mb-2'>تصاویر غذا</div>
<div className='text-sm mb-2'>تصاویر کالا</div>
<UploadBoxDraggble
label='تصویر غذا را آپلود کنید'
label='تصویر کالا را آپلود کنید'
isMultiple={true}
onChange={(files: File[]) => props.onChangeImages(files)}
preview={props.existingImages}
@@ -12,7 +12,7 @@ const FoodContentSection: FC<FoodContentSectionProps> = ({ formik }) => {
return (
<div className='mt-5'>
<div className='text-sm mb-2'>محتوای غذا</div>
<div className='text-sm mb-2'>محتوای کالا</div>
<div className='space-y-2'>
{formik.values.content.map((item, index) => (
<div key={index} className='flex gap-2 items-center'>
@@ -35,7 +35,7 @@ export const getFoodTableColumns = ({ onDelete, isDeleting }: GetFoodTableColumn
},
{
key: 'title',
title: 'نام غذا',
title: 'نام کالا',
},
{
key: 'categories',
@@ -28,7 +28,7 @@ const MealTimesSection: FC<MealTimesSectionProps> = ({ formik }) => {
return (
<div className='mt-6'>
<div className='text-sm mb-3'>وعدههای غذایی</div>
<div className='text-sm mb-3'>وعدههای کالایی</div>
<div className='text-xs text-gray-500 mb-3 bg-gray-50 p-3 rounded-lg border border-gray-200'>
<div>ساعات 6 تا 11 صبح :صبحانه</div>
<div>11 تا 15 ناهار</div>
+1 -1
View File
@@ -22,7 +22,7 @@ const PaymentInfo: FC<PaymentInfoProps> = ({
const getDeliveryMethodText = (method: string): string => {
const methodMap: Record<string, string> = {
[DeliveryMethodEnum.DineIn]: 'سرو در رستوران',
[DeliveryMethodEnum.DineIn]: 'سرو در فروشگاه',
[DeliveryMethodEnum.CustomerPickup]: 'دریافت از محل',
[DeliveryMethodEnum.DeliveryCar]: 'تحویل به خودرو',
[DeliveryMethodEnum.DeliveryCourier]: 'بیرون بر',
+5 -5
View File
@@ -173,11 +173,11 @@ const DetailReview: FC = () => {
<div className='pt-6 border-t border-border'>
<div className='flex items-center gap-2 mb-4'>
<ShoppingCart size={20} color="#8C90A3" />
<span className='text-sm font-medium'>اطلاعات غذا</span>
<span className='text-sm font-medium'>اطلاعات کالا</span>
</div>
<div className='grid grid-cols-2 gap-4'>
<Input
label='عنوان غذا'
label='عنوان کالا'
value={review.food.title}
readOnly
/>
@@ -187,7 +187,7 @@ const DetailReview: FC = () => {
readOnly
/>
<Input
label='امتیاز غذا'
label='امتیاز کالا'
value={formatFaNumber(review.food.rate)}
readOnly
/>
@@ -199,13 +199,13 @@ const DetailReview: FC = () => {
</div>
{review.food.images && review.food.images.length > 0 && (
<div className='mt-4'>
<span className='text-sm mb-2 block'>تصاویر غذا</span>
<span className='text-sm mb-2 block'>تصاویر کالا</span>
<div className='flex gap-3 flex-wrap'>
{review.food.images.map((image, index) => (
<img
key={index}
src={image}
alt={`غذا ${index + 1}`}
alt={`کالا ${index + 1}`}
className='w-24 h-24 object-cover rounded-xl border border-border'
/>
))}
@@ -6,7 +6,7 @@ export const useReviewFiltersFields = (): FieldType[] => {
{
type: 'input',
name: 'search',
placeholder: 'جستجو (نام کاربر یا غذا)',
placeholder: 'جستجو (نام کاربر یا کالا)',
},
], [])
}
@@ -27,7 +27,7 @@ export const getReviewTableColumns = (): ColumnType<Review>[] => {
},
{
key: 'food',
title: 'غذا',
title: 'کالا',
render: (item: Review) => {
return item.food.title || '-'
}
+2 -2
View File
@@ -19,7 +19,7 @@ import { extractErrorMessage } from '@/config/func'
import ServiceAreaPicker from './components/ServiceAreaPicker'
const validationSchema = yup.object({
name: yup.string().required('نام رستوران الزامی است'),
name: yup.string().required('نام فروشگاه الزامی است'),
menuColor: yup.string().required('رنگ منو الزامی است'),
phone: yup.string().required('شماره تماس الزامی است'),
instagram: yup.string().url('لینک اینستاگرام معتبر نیست').nullable(),
@@ -123,7 +123,7 @@ const GeneralSettings: FC = () => {
<form onSubmit={formik.handleSubmit}>
<div className='mt-8 rowTwoInput'>
<Input
label='نام رستوران'
label='نام فروشگاه'
name='name'
value={formik.values.name}
onChange={formik.handleChange}
+1 -1
View File
@@ -27,7 +27,7 @@ const Statistics: FC = () => {
<div className='grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-4 mb-6'>
<StatCard
icon={<Category size={24} color='#6B7FED' />}
title='غذاها'
title='کالاها'
value={`${formatFaNumber(stats?.activeFoods)} عددی`}
color='#6B7FED'
/>
@@ -43,7 +43,7 @@ const FoodSalesChart: FC = () => {
return (
<div className='bg-white h-fit rounded-3xl p-6 shadow-sm'>
<h3 className='text-base font-medium mb-6'>میزان فروش غذاها</h3>
<h3 className='text-base font-medium mb-6'>میزان فروش کالاها</h3>
{/* Filters */}
{/* <div className='flex items-end gap-2 mb-4'>