fix(backoffice): wording quality pass across orders, moderation, transactions, users, customers
- Replaced hardcoded English audit/timeline text (order status changes,
review moderation events, user role/status changes) with proper
adminXxx.timelineEvent.*/adminUsers.audit.* i18n keys, so Recent
Activity/Timeline/Audit panels no longer mix English into ru/hy UI.
- Translated raw internal codes rendered directly to users: transaction
payment method ('card'/'qr'/'cash_on_delivery' -> adminTransactions.methodValue.*)
and user roles/permissions ('products.manage' etc -> adminUsers.roleValue.*/
adminUsers.permission.*), replacing developer-facing enum leakage with
real copy.
- Fixed wrong-noun list-footer counts: Orders/Transactions/Moderation
list pages all reused adminProducts.items ("N товаров"/"N products")
regardless of what was actually listed; each now has its own itemsCount
key ("N заказов", "N транзакций", "N отзывов").
- Fixed customer detail page's "Back" button reusing adminOrders.back
("Back to orders") instead of a customers-specific label.
- Added translation keys to en/ru/hy + translations.ts interface for all
of the above.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
@@ -1231,6 +1231,7 @@ export const en: Translations = {
|
||||
adminModeration: {
|
||||
search: 'Search by customer, product, or review text…',
|
||||
selectAllRows: 'Select all reviews',
|
||||
itemsCount: 'reviews',
|
||||
allStatuses: 'All statuses',
|
||||
allRatings: 'All ratings',
|
||||
rating: 'Rating',
|
||||
@@ -1287,6 +1288,16 @@ export const en: Translations = {
|
||||
rejected: 'Rejected',
|
||||
spam: 'Spam',
|
||||
},
|
||||
timelineEvent: {
|
||||
submitted: 'Review submitted',
|
||||
statusChanged: 'Status changed to "{{status}}"',
|
||||
restored: 'Review restored',
|
||||
hidden: 'Review hidden',
|
||||
},
|
||||
actor: {
|
||||
admin: 'Admin',
|
||||
customer: 'Customer',
|
||||
},
|
||||
targetType: {
|
||||
product: 'Product',
|
||||
review: 'Review',
|
||||
@@ -1315,6 +1326,11 @@ export const en: Translations = {
|
||||
createdAt: 'Placed',
|
||||
items: 'Items',
|
||||
timeline: 'Timeline',
|
||||
timelineEvent: {
|
||||
created: 'Order created',
|
||||
statusChanged: 'Status changed to "{{status}}"',
|
||||
refundRequested: 'Refund requested',
|
||||
},
|
||||
notes: 'Notes to customer',
|
||||
internalNotes: 'Internal notes',
|
||||
addNote: 'Add note',
|
||||
@@ -1349,6 +1365,7 @@ export const en: Translations = {
|
||||
refund_requested: 'Refund requested',
|
||||
refunded: 'Refunded',
|
||||
},
|
||||
itemsCount: 'orders',
|
||||
ordersToday: 'Orders today',
|
||||
paidCount: 'Paid',
|
||||
customersCount: 'Customers',
|
||||
@@ -1360,6 +1377,7 @@ export const en: Translations = {
|
||||
alertRefundRequested: 'orders have a refund request waiting',
|
||||
},
|
||||
adminCustomers: {
|
||||
back: 'Back to customers',
|
||||
search: 'Search by name, email, or phone…',
|
||||
name: 'Name',
|
||||
email: 'Email',
|
||||
@@ -1749,11 +1767,34 @@ export const en: Translations = {
|
||||
expired: 'Expired',
|
||||
revoked: 'Revoked',
|
||||
},
|
||||
roleValue: {
|
||||
owner: 'Owner',
|
||||
admin: 'Admin',
|
||||
editor: 'Editor',
|
||||
viewer: 'Viewer',
|
||||
},
|
||||
permission: {
|
||||
all: 'Full access to everything',
|
||||
productsManage: 'Manage products',
|
||||
productsView: 'View products',
|
||||
categoriesManage: 'Manage categories',
|
||||
ordersManage: 'Manage orders',
|
||||
ordersView: 'View orders',
|
||||
mediaManage: 'Manage media library',
|
||||
},
|
||||
actor: {
|
||||
admin: 'Admin',
|
||||
},
|
||||
audit: {
|
||||
roleChanged: 'Role changed to "{{role}}"',
|
||||
statusChanged: 'Status changed to "{{status}}"',
|
||||
},
|
||||
},
|
||||
adminTransactions: {
|
||||
search: 'Search transactions',
|
||||
type: 'Type',
|
||||
method: 'Payment method',
|
||||
itemsCount: 'transactions',
|
||||
fraud: 'Fraud check',
|
||||
flagged: 'Flagged',
|
||||
flag: 'Flag as suspicious',
|
||||
@@ -1775,6 +1816,11 @@ export const en: Translations = {
|
||||
refund: 'Refund',
|
||||
qr_payment: 'QR payment',
|
||||
},
|
||||
methodValue: {
|
||||
card: 'Card',
|
||||
qr: 'QR code',
|
||||
cash_on_delivery: 'Cash on delivery',
|
||||
},
|
||||
},
|
||||
adminMonitoring: {
|
||||
eventsEmptyTitle: 'No events found',
|
||||
|
||||
@@ -1226,6 +1226,7 @@ export const hy: Translations = {
|
||||
adminModeration: {
|
||||
search: 'Փնտրել ըստ հաճախորդի, ապրանքի կամ կարծիքի տեքստի…',
|
||||
selectAllRows: 'Ընտրել բոլոր կարծիքները',
|
||||
itemsCount: 'կարծիք',
|
||||
allStatuses: 'Բոլոր կարգավիճակները',
|
||||
allRatings: 'Բոլոր գնահատականները',
|
||||
rating: 'Գնահատական',
|
||||
@@ -1282,6 +1283,16 @@ export const hy: Translations = {
|
||||
rejected: 'Մերժված',
|
||||
spam: 'Սպամ',
|
||||
},
|
||||
timelineEvent: {
|
||||
submitted: 'Կարծիքն ուղարկվել է',
|
||||
statusChanged: 'Կարգավիճակը փոխվել է՝ «{{status}}»',
|
||||
restored: 'Կարծիքը վերականգնվել է',
|
||||
hidden: 'Կարծիքը թաքցվել է',
|
||||
},
|
||||
actor: {
|
||||
admin: 'Ադմինիստրատոր',
|
||||
customer: 'Հաճախորդ',
|
||||
},
|
||||
targetType: {
|
||||
product: 'Ապրանք',
|
||||
review: 'Կարծիք',
|
||||
@@ -1310,6 +1321,11 @@ export const hy: Translations = {
|
||||
createdAt: 'Ստեղծված է',
|
||||
items: 'Ապրանքներ',
|
||||
timeline: 'Ժամանակագրություն',
|
||||
timelineEvent: {
|
||||
created: 'Պատվերը ստեղծվել է',
|
||||
statusChanged: 'Կարգավիճակը փոխվել է՝ «{{status}}»',
|
||||
refundRequested: 'Հայցվել է վերադարձ',
|
||||
},
|
||||
notes: 'Նշումներ հաճախորդի համար',
|
||||
internalNotes: 'Ներքին նշումներ',
|
||||
addNote: 'Ավելացնել նշում',
|
||||
@@ -1344,6 +1360,7 @@ export const hy: Translations = {
|
||||
refund_requested: 'Հայցվել է վերադարձ',
|
||||
refunded: 'Վերադարձված',
|
||||
},
|
||||
itemsCount: 'պատվեր',
|
||||
ordersToday: 'Այսօրվա պատվերներ',
|
||||
paidCount: 'Վճարված',
|
||||
customersCount: 'Հաճախորդներ',
|
||||
@@ -1355,6 +1372,7 @@ export const hy: Translations = {
|
||||
alertRefundRequested: 'պատվեր սպասում է վերադարձի հայցի',
|
||||
},
|
||||
adminCustomers: {
|
||||
back: 'Վերադառնալ հաճախորդներին',
|
||||
search: 'Փնտրել ըստ անվան, էլ. փոստի կամ հեռախոսի…',
|
||||
name: 'Անուն',
|
||||
email: 'Էլ. փոստ',
|
||||
@@ -1744,11 +1762,34 @@ export const hy: Translations = {
|
||||
expired: 'Ժամկետանց',
|
||||
revoked: 'Չեղարկված',
|
||||
},
|
||||
roleValue: {
|
||||
owner: 'Սեփականատեր',
|
||||
admin: 'Ադմինիստրատոր',
|
||||
editor: 'Խմբագիր',
|
||||
viewer: 'Դիտող',
|
||||
},
|
||||
permission: {
|
||||
all: 'Ամբողջական հասանելիություն',
|
||||
productsManage: 'Ապրանքների կառավարում',
|
||||
productsView: 'Ապրանքների դիտում',
|
||||
categoriesManage: 'Կատեգորիաների կառավարում',
|
||||
ordersManage: 'Պատվերների կառավարում',
|
||||
ordersView: 'Պատվերների դիտում',
|
||||
mediaManage: 'Մեդիադարանի կառավարում',
|
||||
},
|
||||
actor: {
|
||||
admin: 'Ադմինիստրատոր',
|
||||
},
|
||||
audit: {
|
||||
roleChanged: 'Դերը փոխվել է՝ «{{role}}»',
|
||||
statusChanged: 'Կարգավիճակը փոխվել է՝ «{{status}}»',
|
||||
},
|
||||
},
|
||||
adminTransactions: {
|
||||
search: 'Գործարքների որոնում',
|
||||
type: 'Տեսակ',
|
||||
method: 'Վճարման եղանակ',
|
||||
itemsCount: 'գործարք',
|
||||
fraud: 'Խարդախության ստուգում',
|
||||
flagged: 'Նշված',
|
||||
flag: 'Նշել որպես կասկածելի',
|
||||
@@ -1770,6 +1811,11 @@ export const hy: Translations = {
|
||||
refund: 'Վերադարձ',
|
||||
qr_payment: 'QR վճարում',
|
||||
},
|
||||
methodValue: {
|
||||
card: 'Քարտ',
|
||||
qr: 'QR կոդ',
|
||||
cash_on_delivery: 'Կանխիկ առաքման ժամանակ',
|
||||
},
|
||||
},
|
||||
adminMonitoring: {
|
||||
eventsEmptyTitle: 'Իրադարձություններ չեն գտնվել',
|
||||
|
||||
@@ -1226,6 +1226,7 @@ export const ru: Translations = {
|
||||
adminModeration: {
|
||||
search: 'Поиск по клиенту, товару или тексту отзыва…',
|
||||
selectAllRows: 'Выбрать все отзывы',
|
||||
itemsCount: 'отзывов',
|
||||
allStatuses: 'Все статусы',
|
||||
allRatings: 'Все оценки',
|
||||
rating: 'Оценка',
|
||||
@@ -1282,6 +1283,16 @@ export const ru: Translations = {
|
||||
rejected: 'Отклонён',
|
||||
spam: 'Спам',
|
||||
},
|
||||
timelineEvent: {
|
||||
submitted: 'Отзыв отправлен',
|
||||
statusChanged: 'Статус изменён на «{{status}}»',
|
||||
restored: 'Отзыв восстановлен',
|
||||
hidden: 'Отзыв скрыт',
|
||||
},
|
||||
actor: {
|
||||
admin: 'Администратор',
|
||||
customer: 'Клиент',
|
||||
},
|
||||
targetType: {
|
||||
product: 'Товар',
|
||||
review: 'Отзыв',
|
||||
@@ -1310,6 +1321,11 @@ export const ru: Translations = {
|
||||
createdAt: 'Оформлен',
|
||||
items: 'Товары',
|
||||
timeline: 'Хронология',
|
||||
timelineEvent: {
|
||||
created: 'Заказ создан',
|
||||
statusChanged: 'Статус изменён на «{{status}}»',
|
||||
refundRequested: 'Запрошен возврат',
|
||||
},
|
||||
notes: 'Заметки для клиента',
|
||||
internalNotes: 'Внутренние заметки',
|
||||
addNote: 'Добавить заметку',
|
||||
@@ -1344,6 +1360,7 @@ export const ru: Translations = {
|
||||
refund_requested: 'Запрошен возврат',
|
||||
refunded: 'Возвращён',
|
||||
},
|
||||
itemsCount: 'заказов',
|
||||
ordersToday: 'Заказов сегодня',
|
||||
paidCount: 'Оплачено',
|
||||
customersCount: 'Клиенты',
|
||||
@@ -1355,6 +1372,7 @@ export const ru: Translations = {
|
||||
alertRefundRequested: 'заказов ждут запроса на возврат',
|
||||
},
|
||||
adminCustomers: {
|
||||
back: 'Назад к клиентам',
|
||||
search: 'Поиск по имени, email или телефону…',
|
||||
name: 'Имя',
|
||||
email: 'Email',
|
||||
@@ -1744,11 +1762,34 @@ export const ru: Translations = {
|
||||
expired: 'Истекло',
|
||||
revoked: 'Отозвано',
|
||||
},
|
||||
roleValue: {
|
||||
owner: 'Владелец',
|
||||
admin: 'Администратор',
|
||||
editor: 'Редактор',
|
||||
viewer: 'Наблюдатель',
|
||||
},
|
||||
permission: {
|
||||
all: 'Полный доступ ко всем разделам',
|
||||
productsManage: 'Управление товарами',
|
||||
productsView: 'Просмотр товаров',
|
||||
categoriesManage: 'Управление категориями',
|
||||
ordersManage: 'Управление заказами',
|
||||
ordersView: 'Просмотр заказов',
|
||||
mediaManage: 'Управление медиатекой',
|
||||
},
|
||||
actor: {
|
||||
admin: 'Администратор',
|
||||
},
|
||||
audit: {
|
||||
roleChanged: 'Роль изменена на «{{role}}»',
|
||||
statusChanged: 'Статус изменён на «{{status}}»',
|
||||
},
|
||||
},
|
||||
adminTransactions: {
|
||||
search: 'Поиск транзакций',
|
||||
type: 'Тип',
|
||||
method: 'Способ оплаты',
|
||||
itemsCount: 'транзакций',
|
||||
fraud: 'Проверка на мошенничество',
|
||||
flagged: 'Помечено',
|
||||
flag: 'Пометить как подозрительную',
|
||||
@@ -1770,6 +1811,11 @@ export const ru: Translations = {
|
||||
refund: 'Возврат',
|
||||
qr_payment: 'Оплата по QR',
|
||||
},
|
||||
methodValue: {
|
||||
card: 'Карта',
|
||||
qr: 'QR-код',
|
||||
cash_on_delivery: 'Наличными при получении',
|
||||
},
|
||||
},
|
||||
adminMonitoring: {
|
||||
eventsEmptyTitle: 'События не найдены',
|
||||
|
||||
@@ -1230,6 +1230,7 @@ export interface Translations {
|
||||
adminModeration: {
|
||||
search: string;
|
||||
selectAllRows: string;
|
||||
itemsCount: string;
|
||||
allStatuses: string;
|
||||
allRatings: string;
|
||||
rating: string;
|
||||
@@ -1286,6 +1287,16 @@ export interface Translations {
|
||||
rejected: string;
|
||||
spam: string;
|
||||
};
|
||||
timelineEvent: {
|
||||
submitted: string;
|
||||
statusChanged: string;
|
||||
restored: string;
|
||||
hidden: string;
|
||||
};
|
||||
actor: {
|
||||
admin: string;
|
||||
customer: string;
|
||||
};
|
||||
targetType: {
|
||||
product: string;
|
||||
review: string;
|
||||
@@ -1314,6 +1325,11 @@ export interface Translations {
|
||||
createdAt: string;
|
||||
items: string;
|
||||
timeline: string;
|
||||
timelineEvent: {
|
||||
created: string;
|
||||
statusChanged: string;
|
||||
refundRequested: string;
|
||||
};
|
||||
notes: string;
|
||||
internalNotes: string;
|
||||
addNote: string;
|
||||
@@ -1348,6 +1364,7 @@ export interface Translations {
|
||||
refund_requested: string;
|
||||
refunded: string;
|
||||
};
|
||||
itemsCount: string;
|
||||
ordersToday: string;
|
||||
paidCount: string;
|
||||
customersCount: string;
|
||||
@@ -1359,6 +1376,7 @@ export interface Translations {
|
||||
alertRefundRequested: string;
|
||||
};
|
||||
adminCustomers: {
|
||||
back: string;
|
||||
search: string;
|
||||
name: string;
|
||||
email: string;
|
||||
@@ -1757,11 +1775,34 @@ export interface Translations {
|
||||
expired: string;
|
||||
revoked: string;
|
||||
};
|
||||
roleValue: {
|
||||
owner: string;
|
||||
admin: string;
|
||||
editor: string;
|
||||
viewer: string;
|
||||
};
|
||||
permission: {
|
||||
all: string;
|
||||
productsManage: string;
|
||||
productsView: string;
|
||||
categoriesManage: string;
|
||||
ordersManage: string;
|
||||
ordersView: string;
|
||||
mediaManage: string;
|
||||
};
|
||||
actor: {
|
||||
admin: string;
|
||||
};
|
||||
audit: {
|
||||
roleChanged: string;
|
||||
statusChanged: string;
|
||||
};
|
||||
};
|
||||
adminTransactions: {
|
||||
search: string;
|
||||
type: string;
|
||||
method: string;
|
||||
itemsCount: string;
|
||||
fraud: string;
|
||||
flagged: string;
|
||||
flag: string;
|
||||
@@ -1783,6 +1824,11 @@ export interface Translations {
|
||||
refund: string;
|
||||
qr_payment: string;
|
||||
};
|
||||
methodValue: {
|
||||
card: string;
|
||||
qr: string;
|
||||
cash_on_delivery: string;
|
||||
};
|
||||
};
|
||||
adminMonitoring: {
|
||||
eventsEmptyTitle: string;
|
||||
|
||||
Reference in New Issue
Block a user