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:
sdarbinyan
2026-07-25 21:20:37 +04:00
parent 72846b44b1
commit b909a195f7
28 changed files with 311 additions and 42 deletions

View File

@@ -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',

View File

@@ -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: 'Իրադարձություններ չեն գտնվել',

View File

@@ -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: 'События не найдены',

View File

@@ -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;