export const DEFAULT_ACTIONS = { ROW_CREATE: 'Создание строки', ROW_DELETE: 'Удаление строки', ACCESS_EXTEND: 'Продление этапа', ACCESS_WINDOW_CHANGE: 'Изменение этапа', USER_ROLE_CHANGE: 'Изменение роли пользователя', CREATE_TASK: 'Создание задачи', FORM_MARKED_FOR_DELETION: 'Задача отмечена на удаление', FORM_RESTORED: 'Задача возвращена', FORM_HARD_DELETED: 'Задача полностью удалена', USER_CREATE: 'Создание пользователя', USER_ACCESS_GRANTED: 'Предоставление доступа к ССП/РФ', USER_ACCESS_REVOKED: 'Отмена доступа к ССП/РФ', VSP_CREATE: 'Создание ВСП', VSP_UPDATE: 'Обновление ВСП', DELETE_VSP: 'Удаление ВСП', PROJECT_CREATE: 'Создание проекта', PROJECT_UPDATE: 'Обновление проекта', PROJECT_DELETE: 'Удаление проекта', PROJECT_YEAR_ADD: 'Добавление года для проекта', SMETA_UPDATE: 'Обновление сметы проекта', }; const ACTION_NAME_ALIASES = { UPDATE_SMETA: 'Обновление сметы проекта', }; export const ENTITY_RUSSIAN_NAMES = { ROW: ['строки', 'строка'], PROJECT: ['проекта', 'проект'], TABLE: ['таблицы', 'таблица'], STAGE: ['этапа', 'этап'], SSP: ['ССП/РФ', 'ССП/РФ'], TASKS: ['задач', 'задачи'], TASK: ['задачи', 'задача'], USER_ACCESS: ['доступа к ССП/РФ', 'доступ к ССП/РФ'], USER: ['пользователя', 'пользователь'], ACCESS_WINDOW: ['этапа', 'этап'], ACCESS: ['этапа', 'этап'], USER_ROLE: ['роли пользователя', 'роль пользователя'], VSP: ['ВСП', 'ВСП'], }; export const ACTION_RUSSIAN_NAMES = { CREATE: 'Создание', UPDATE: 'Обновление', DELETE: 'Удаление', CHANGE: 'Изменение', GET: 'Получение', GRANTED: 'Предоставление', REVOKED: 'Отмена', EXTEND: 'Продление', }; export const getRussianNamesForType = (name) => { if (!name) return name; if (DEFAULT_ACTIONS[name] || ACTION_NAME_ALIASES[name]) return DEFAULT_ACTIONS[name] || ACTION_NAME_ALIASES[name]; let entityTranslation = ''; const sortedEntities = Object.keys(ENTITY_RUSSIAN_NAMES).sort((a, b) => b[0].length - a[0].length); for (const entity of sortedEntities) { if (name.includes(entity)) { entityTranslation = ENTITY_RUSSIAN_NAMES[entity][0]; break; } } let actionTranslation = ''; for (const action of Object.keys(ACTION_RUSSIAN_NAMES)) { if (name.includes(action)) { actionTranslation = ACTION_RUSSIAN_NAMES[action]; break; } } if (!actionTranslation && !entityTranslation) { return name; } return `${actionTranslation} ${entityTranslation}`.trim(); };