Localize user and admin invoice pages.
Move both invoice views onto a shared invoices dictionary — statuses, filters, payment/line-item/transaction labels, manual status controls and toasts — with locale-aware Link, dates and RTL-aware table/search layout. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -335,6 +335,68 @@ const en: Dictionary = {
|
||||
hours: '{n} hours',
|
||||
days: '{n} days',
|
||||
},
|
||||
invoices: {
|
||||
status: {
|
||||
draft: 'Draft',
|
||||
issued: 'Unpaid',
|
||||
partially_paid: 'Partially paid',
|
||||
paid: 'Paid',
|
||||
void: 'Void',
|
||||
failed: 'Failed',
|
||||
},
|
||||
title: 'Invoices',
|
||||
subtitle: 'Review what each payment was for and pay open invoices.',
|
||||
walletBalance: 'Wallet balance',
|
||||
toman: 'Toman',
|
||||
filterAll: 'All',
|
||||
filterUnpaid: 'Unpaid',
|
||||
loadingInvoices: 'Loading invoices...',
|
||||
noInvoices: 'No invoices found',
|
||||
total: 'Total',
|
||||
due: 'Due',
|
||||
paidLabel: 'Paid',
|
||||
method: 'Method',
|
||||
selectInvoice: 'Select an invoice to view details',
|
||||
downloadPdf: 'Download PDF',
|
||||
lineItems: 'Line items',
|
||||
payment: 'Payment',
|
||||
walletCoversNote: 'Wallet balance covers {wallet} Toman. The remaining {rest} Toman will be paid through the gateway.',
|
||||
processing: 'Processing...',
|
||||
pay: 'Pay',
|
||||
paidOn: 'Paid on {date}',
|
||||
paymentFailed: 'Payment failed',
|
||||
waitingRemaining: 'Waiting for the remaining payment.',
|
||||
paymentComplete: 'Payment complete',
|
||||
paymentCompleteUpdated: 'Payment complete and service updated',
|
||||
gatewayFailed: 'Gateway payment failed',
|
||||
invoicePaid: 'Invoice paid',
|
||||
invoicePaidUpdated: 'Invoice paid and service updated',
|
||||
downloadFailed: 'Failed to download invoice PDF',
|
||||
adminTitle: 'Invoice Management',
|
||||
adminSubtitle: 'Track all user invoices, payments, gateway refs, and wallet transactions.',
|
||||
searchPlaceholder: 'Search invoice, email, or application',
|
||||
allStatuses: 'All statuses',
|
||||
allMethods: 'All methods',
|
||||
methodWallet: 'Wallet',
|
||||
methodGateway: 'Gateway',
|
||||
methodMixed: 'Mixed',
|
||||
colInvoice: 'Invoice',
|
||||
colUser: 'User',
|
||||
colStatus: 'Status',
|
||||
colMethod: 'Method',
|
||||
colDue: 'Due',
|
||||
selectInvoiceShort: 'Select an invoice',
|
||||
tracking: 'Tracking',
|
||||
transactions: 'Transactions',
|
||||
noTransactions: 'No linked transactions yet',
|
||||
manualStatusChange: 'Manual status change',
|
||||
reasonPlaceholder: 'Reason is required for audit visibility',
|
||||
failedBtn: 'Failed',
|
||||
voidBtn: 'Void',
|
||||
statusUpdated: 'Invoice status updated',
|
||||
statusUpdateFailed: 'Failed to update invoice status',
|
||||
reasonRequired: 'Reason is required for manual status changes',
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
|
||||
@@ -334,6 +334,68 @@ const fa = {
|
||||
hours: '{n} ساعت',
|
||||
days: '{n} روز',
|
||||
},
|
||||
invoices: {
|
||||
status: {
|
||||
draft: 'پیشنویس',
|
||||
issued: 'پرداختنشده',
|
||||
partially_paid: 'پرداخت جزئی',
|
||||
paid: 'پرداختشده',
|
||||
void: 'باطل',
|
||||
failed: 'ناموفق',
|
||||
},
|
||||
title: 'فاکتورها',
|
||||
subtitle: 'ببین هر پرداخت بابت چه بوده و فاکتورهای باز را پرداخت کن.',
|
||||
walletBalance: 'موجودی کیفپول',
|
||||
toman: 'تومان',
|
||||
filterAll: 'همه',
|
||||
filterUnpaid: 'پرداختنشده',
|
||||
loadingInvoices: 'در حال بارگذاری فاکتورها…',
|
||||
noInvoices: 'فاکتوری پیدا نشد',
|
||||
total: 'مجموع',
|
||||
due: 'مانده',
|
||||
paidLabel: 'پرداختشده',
|
||||
method: 'روش',
|
||||
selectInvoice: 'برای دیدن جزئیات یک فاکتور را انتخاب کن',
|
||||
downloadPdf: 'دانلود PDF',
|
||||
lineItems: 'اقلام',
|
||||
payment: 'پرداخت',
|
||||
walletCoversNote: 'موجودی کیفپول {wallet} تومان را پوشش میدهد. مابقی {rest} تومان از طریق درگاه پرداخت میشود.',
|
||||
processing: 'در حال پردازش…',
|
||||
pay: 'پرداخت',
|
||||
paidOn: 'پرداختشده در {date}',
|
||||
paymentFailed: 'پرداخت ناموفق بود',
|
||||
waitingRemaining: 'منتظر پرداخت مابقی.',
|
||||
paymentComplete: 'پرداخت کامل شد',
|
||||
paymentCompleteUpdated: 'پرداخت کامل شد و سرویس بهروزرسانی شد',
|
||||
gatewayFailed: 'پرداخت درگاهی ناموفق بود',
|
||||
invoicePaid: 'فاکتور پرداخت شد',
|
||||
invoicePaidUpdated: 'فاکتور پرداخت شد و سرویس بهروزرسانی شد',
|
||||
downloadFailed: 'دانلود PDF فاکتور ناموفق بود',
|
||||
adminTitle: 'مدیریت فاکتورها',
|
||||
adminSubtitle: 'پیگیری همهٔ فاکتورهای کاربران، پرداختها، ارجاع درگاه و تراکنشهای کیفپول.',
|
||||
searchPlaceholder: 'جستجوی فاکتور، ایمیل یا اپلیکیشن',
|
||||
allStatuses: 'همهٔ وضعیتها',
|
||||
allMethods: 'همهٔ روشها',
|
||||
methodWallet: 'کیفپول',
|
||||
methodGateway: 'درگاه',
|
||||
methodMixed: 'ترکیبی',
|
||||
colInvoice: 'فاکتور',
|
||||
colUser: 'کاربر',
|
||||
colStatus: 'وضعیت',
|
||||
colMethod: 'روش',
|
||||
colDue: 'مانده',
|
||||
selectInvoiceShort: 'یک فاکتور را انتخاب کن',
|
||||
tracking: 'کد رهگیری',
|
||||
transactions: 'تراکنشها',
|
||||
noTransactions: 'هنوز تراکنشی متصل نشده',
|
||||
manualStatusChange: 'تغییر دستی وضعیت',
|
||||
reasonPlaceholder: 'برای ثبت در لاگ، ذکر دلیل الزامی است',
|
||||
failedBtn: 'ناموفق',
|
||||
voidBtn: 'باطل',
|
||||
statusUpdated: 'وضعیت فاکتور بهروزرسانی شد',
|
||||
statusUpdateFailed: 'بهروزرسانی وضعیت فاکتور ناموفق بود',
|
||||
reasonRequired: 'برای تغییر دستی وضعیت، ذکر دلیل الزامی است',
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user