Localize wallet and ticket pages.
Move the wallet page and all four ticket views (user list, ticket detail, staff queue, admin overview) onto the i18n dictionaries — statuses, priorities, departments, forms, stats, toasts and empty states — using locale-aware Link/router and locale-aware date formatting. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -248,6 +248,92 @@ const fa = {
|
||||
deleted: 'سرویس حذف شد',
|
||||
deletedWithCredit: 'سرویس حذف شد. منابع پیشپرداختت روی داشبورد است.',
|
||||
},
|
||||
wallet: {
|
||||
title: 'کیفپول',
|
||||
subtitle: 'موجودی و تراکنشهایت را مدیریت کن',
|
||||
currentBalance: 'موجودی فعلی',
|
||||
toman: 'تومان',
|
||||
topUp: 'افزایش موجودی',
|
||||
amountPlaceholder: 'مبلغ (تومان) — حداقل ۱٬۰۰۰',
|
||||
payNow: 'پرداخت',
|
||||
transactionHistory: 'تاریخچهٔ تراکنشها',
|
||||
noTransactions: 'هنوز تراکنشی نداری',
|
||||
balanceAfter: 'موجودی: {amount} {unit}',
|
||||
invoice: 'فاکتور {number}',
|
||||
minChargeError: 'حداقل مبلغ شارژ ۱٬۰۰۰ تومان است',
|
||||
chargedSuccess: 'کیفپول با موفقیت شارژ شد',
|
||||
chargeFailed: 'شارژ کیفپول ناموفق بود',
|
||||
paymentSuccess: 'پرداخت موفق — کیفپول شارژ شد',
|
||||
paymentFailed: 'پرداخت ناموفق بود',
|
||||
topUpDesc: 'شارژ کیفپول',
|
||||
topUpGatewayDesc: 'شارژ کیفپول از طریق درگاه',
|
||||
txTypes: {
|
||||
charge: 'واریز',
|
||||
deduction: 'پرداخت',
|
||||
refund: 'بازگشت وجه',
|
||||
gateway_payment: 'پرداخت درگاهی',
|
||||
},
|
||||
},
|
||||
tickets: {
|
||||
status: { open: 'باز', waiting: 'در انتظار', answered: 'پاسخدادهشده', closed: 'بسته' },
|
||||
priority: { low: 'کم', medium: 'متوسط', high: 'زیاد' },
|
||||
department: { technical: 'فنی', sales: 'فروش' },
|
||||
departmentFull: { technical: 'پشتیبانی فنی', sales: 'فروش' },
|
||||
role: { admin: 'مدیر', technical: 'فنی', sales: 'فروش' },
|
||||
myTickets: 'تیکتهای من',
|
||||
myTicketsSubtitle: 'تیکتهای پشتیبانی و وضعیتشان',
|
||||
newTicket: 'تیکت جدید',
|
||||
createNewTicket: 'ساخت تیکت جدید',
|
||||
subject: 'موضوع',
|
||||
subjectPlaceholder: 'توضیح کوتاهی از مشکلت',
|
||||
departmentField: 'بخش',
|
||||
priorityField: 'اولویت',
|
||||
messageField: 'پیام',
|
||||
messagePlaceholder: 'مشکلت را با جزئیات توضیح بده…',
|
||||
submitTicket: 'ثبت تیکت',
|
||||
creating: 'در حال ساخت…',
|
||||
noTickets: 'هنوز تیکتی نداری',
|
||||
noTicketsHint: 'اگر به کمک نیاز داری یک تیکت بساز',
|
||||
createdSuccess: 'تیکت با موفقیت ساخته شد',
|
||||
createFailed: 'ساخت تیکت ناموفق بود',
|
||||
messages: '{n} پیام',
|
||||
msg: '{n} پیام',
|
||||
back: 'بازگشت',
|
||||
notFound: 'تیکت پیدا نشد',
|
||||
by: 'توسط',
|
||||
closeTicket: 'بستن تیکت',
|
||||
closedNotice: 'این تیکت بسته شده است. اگر باز هم کمک خواستی، تیکت جدیدی بساز.',
|
||||
replyPlaceholder: 'پاسخت را بنویس…',
|
||||
send: 'ارسال',
|
||||
replySent: 'پاسخ ارسال شد',
|
||||
replyFailed: 'ارسال پاسخ ناموفق بود',
|
||||
ticketClosed: 'تیکت بسته شد',
|
||||
unknown: 'ناشناس',
|
||||
ticketsTitle: 'تیکتهای {dept}',
|
||||
totalTickets: '{n} تیکت در مجموع',
|
||||
unanswered: 'بیپاسخ',
|
||||
needResponse: 'نیازمند پاسخ',
|
||||
answered: 'پاسخدادهشده',
|
||||
waitingForUser: 'منتظر کاربر',
|
||||
totalOpen: 'مجموع باز',
|
||||
excludingClosed: 'بهجز بستهها',
|
||||
all: 'همه',
|
||||
noTicketsStaff: 'تیکتی نیست',
|
||||
noStatusTickets: 'تیکت «{status}» وجود ندارد',
|
||||
noDeptTickets: 'در این بخش تیکتی نیست',
|
||||
allTickets: 'همهٔ تیکتها',
|
||||
allTicketsSubtitle: 'نمای کلیِ همهٔ تیکتهای پشتیبانی در همهٔ بخشها',
|
||||
totalTicketsStat: 'کل تیکتها',
|
||||
needStaffResponse: 'نیازمند پاسخ پشتیبان',
|
||||
avgResponseTime: 'میانگین زمان پاسخ',
|
||||
byDepartment: 'بر اساس بخش',
|
||||
departmentLabel: 'بخش:',
|
||||
statusLabel: 'وضعیت:',
|
||||
noTicketsFound: 'تیکتی پیدا نشد',
|
||||
minutes: '{n} دقیقه',
|
||||
hours: '{n} ساعت',
|
||||
days: '{n} روز',
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user