From f00fbfd5cf77d5cb1d4d62d590e22925ba047b73 Mon Sep 17 00:00:00 2001 From: Sviatoslav Bar Date: Sun, 15 Sep 2024 23:29:28 +0300 Subject: [PATCH] Feat/ lookups - locale [WTEL-4740] --- src/app/locale/en/en.js | 436 +++++++++++++++++++++++++++++++++++++++ src/app/locale/i18n.js | 2 +- src/app/locale/ru/ru.js | 441 ++++++++++++++++++++++++++++++++++++++++ src/app/locale/ua/ua.js | 436 +++++++++++++++++++++++++++++++++++++++ 4 files changed, 1314 insertions(+), 1 deletion(-) diff --git a/src/app/locale/en/en.js b/src/app/locale/en/en.js index 3f688e82..c3d828bd 100644 --- a/src/app/locale/en/en.js +++ b/src/app/locale/en/en.js @@ -6,6 +6,9 @@ import AccessMode import TimelineTaskStatusEnum from '../../../modules/contacts/modules/timeline/enums/TimelineTaskStatus.enum.js'; +import CrmSections from '@webitel/ui-sdk/src/enums/WebitelApplications/CrmSections.enum'; +import CrmConfigurationSections from '@webitel/ui-sdk/src/enums/WebitelApplications/CrmConfigurationSections.enum'; + export default { crm: 'CRM', contacts: { @@ -85,4 +88,437 @@ export default { [AccessMode.MANAGE]: 'Allow with delegation', }, }, + startPage: { + [CrmSections.CONTACTS]: { + name: 'Contacts', + text: 'In this section, you can work with your contacts: clients, customers etc.', + }, + [CrmSections.CONFIGURATION]: { + name: 'Configuration', + text: 'In this section, you will set up the Case management process.', + }, + }, + configuration: { + [CrmConfigurationSections.LOOKUPS]: 'Lookups', + [CrmConfigurationSections.CONTACT_GROUPS]: 'Contact groups', + }, + + validation: { + email: 'Should look email-like', + required: 'This field is required', + sameAs: 'Incorrect password', + gatewayHostValidator: 'Should look like IPv4 or FQDN', + ipValidator: 'Should look like IPv4', + macValidator: 'Should look like MAC', + minValue: 'Value should be at least', + maxValue: 'Value should be not much', + numeric: 'Should be numeric', + requiredArrayValue: 'Array should not be empty', + isPositiveValue: 'Value should be positive number', + cron: 'Invalid cron expression', + }, + + objects: { + all: 'All {entity}', + administration: 'Administration', + general: 'General', + new: 'New', + add: 'Add', + create: 'Create', + read: 'Read', + edit: 'Edit', + delete: 'Delete', + save: 'Save', + saved: 'Saved', + saveAs: 'Save as', + close: 'Close', + next: 'Next', + back: 'Back', + change: 'Change', + name: 'Name', + title: 'Title', + description: 'Description', + user: 'User', + users: 'Users', + action: 'Action', + allow: 'Allow', + password: 'Password', + history: 'History', + copy: 'Copy', + copied: 'Copied to clipboard!', + createdAt: 'Created', + createdBy: 'Created by', + importCSV: 'Import CSV', + online: 'Online', + offline: 'Offline', + on: 'On', + off: 'Off', + ok: 'Ok', + enabled: 'Enabled', + status: 'Status', + from: 'From', + to: 'To', + importJSON: 'Import JSON', + addNew: 'Add new', + provider: 'Provider', + default: 'Default', + service: 'Service', + tts: 'Text-to-Speech', + stt: 'Speech-to-Text', + key: 'Key', + ID: 'ID', + email: 'Email address', + updatedAt: 'Modified', + emptyWorkspace: 'There are no records yet', + emptyResultSearch: 'Your search yielded no results', + deleteConfirmation: { + title: 'Confirm deletion', + askingAlert: + 'Are you sure you want to delete {count} item? | Are you sure you want to delete {count} items?', + undoneActionAlert: 'This action cannot be undone.', + deleteAll: 'ALL', + }, + generalInfo: 'General info', + objectHeader: {}, + permissions: { + permissions: 'Permissions', + permissionsRole: 'Role | Roles', + allRoles: 'All roles', + searchPlaceholder: 'role ..', + roles: { + permissions: { + permissions: 'Role permission | Role permissions', + add: 'Add', + delete: 'Delete', + read: 'Select', + write: 'Update', + eavesdropCall: 'Eavesdrop call', + playbackRecordFile: 'Playback record file', + exportDataGrid: 'Export data grid', + viewCdrPhoneNumbers: 'View CDR phone numbers', + manageUserRoles: 'Manage user roles', + manageUserLicense: 'Manage user license', + changeUserPassword: 'Change user password', + systemSetting: 'Manage system configurations', + addDescription: 'Grants permission to create any objects', + deleteDescription: 'Grants permission to remove any objects', + readDescription: 'Grants permission to select any objects', + writeDescription: 'Grants permission to modify any objects', + eavesdropCallDescription: 'Grants permission to eavesdrop on an active conversation', + playbackRecordFileDescription: 'Grants permission to playback call-record files', + exportDataGridDescription: 'Grants permission to export data grid to a file', + viewCdrPhoneNumbersDescription: 'View CDR phone numbers', + manageUserRolesDescription: 'Grants permission to manage a set of user roles', + manageUserLicenseDescription: 'Grants permission to manage a set of user license', + changeUserPasswordDescription: 'Grants permission to change the users password', + systemSettingDescription: + 'Grants permission to access and manage the Configuration section', + schemeVariables: 'Manage global variables', + schemeVariablesDescription: + 'Grants permission to access and manage the Global variables section', + }, + addPermission: 'Add role permission', + usage: 'Usage', + applicationsAccess: { + applicationsAccess: 'Application access | Applications access', + access: 'Access', + }, + }, + object: { + object: 'Objects', + allObjects: 'All objects', + ObAC: 'Managed by operations', + RbAC: 'Managed by records', + operations: 'Operations', + searchPlaceholder: 'object ..', + newPermissionRole: 'New grantee', + rbacDefault: 'Default Record based Access', + grantor: 'Grantor', + grantee: 'Grantee', + create: 'Create', + delete: 'Delete', + accessMode: { + 1: 'Forbidden', + 2: 'Allow', + 3: 'Allow with delegation', + }, + }, + }, + routing: { + routing: 'Routing', + ip: 'IP', + protocol: 'Protocol', + port: 'Port', + configuration: 'Configuration', + schema: 'Flow schema', + json: 'JSON', + + flow: { + flow: 'Flow schema | Flow schemas', + allFlowSchemas: 'All flow schemas', + createFlowSelectionPopup: 'Create new flow', + createNew: 'Create new?', + editor: 'Editor', + diagram: { + diagram: 'Diagram', + description: 'Create new flow using Webitel Flow Diagram tool', + }, + code: { + code: 'Code', + description: 'Create new flow using JSON-schema in code editor', + }, + askingAlert: 'Do you want to save the changes you made to "{name}" ?', + }, + + dialplan: { + dialplan: 'Dialplans', + dialplanRules: 'Dialplan rules', + pattern: 'Destination number', + dialplanRule: 'Dialplan rule', + position: 'Position', + }, + + chatplan: { + chatplan: 'Chatplan | Chatplans', + allChatplans: 'All chatplans', + }, + + gateways: { + gateways: 'Gateway | Gateways', + allGateways: 'All gateways', + trunkingGateway: 'Trunking gateway', + registerGateway: 'Register gateway', + stateSuccess: 'Success', + stateFailed: 'Failed', + stateProgress: 'In progress', + stateNonreg: 'Not registered', + proxy: 'Proxy', + searchPlaceholder: 'gateway search...', + host: 'Host', + trunkingACLTitle: 'Access Control', + trunkingACL: 'Trunking access control list', + hostnameTrunking: 'Server/Gateway Hostname or IP', + hostnameRegister: 'Registrar/Server/Gateway Hostname or IP', + expire: 'Expire', + authID: 'Username', + account: 'Account', + outboundProxy: 'Outbound Proxy Hostname or IP', + newGateway: 'New gateway', + newGatewayDescription: 'New gateway description', + SIPregistrations: 'SIP Registration', + SIPregistrationsDescription: 'SIP registration description', + SIPtrunking: 'SIP Trunking', + SIPtrunkingDescription: 'SIP trunking description', + }, + chatGateways: { + templates: { + templates: 'Templates', + title: "Workspace member's name", + close: 'Chat complete message', + join: 'Agent joining message', + left: 'Agent disconnection message', + }, + chatGateways: 'Chat gateway | Chat gateways', + allChatGateways: 'All chat gateways', + telegramBot: { + telegramBot: 'Telegram Bot', + }, + telegramApp: { + telegramApp: 'Telegram App', + signedAs: "You're signed as", + joinTelegram: 'Sign in to Telegram', + metadata: { + apiId: 'API id', + apiHash: 'API hash', + }, + }, + infobip: { + infobip: 'Infobip', + }, + messenger: { + meta: 'Meta', + addOrRemovePages: 'Add or remove pages', + accounts: 'Accounts', + metadata: { + clientId: 'App ID', + clientSecret: 'App Secret', + }, + facebook: { + pages: 'Facebook pages', + subscription: 'Webhook subscription', + }, + instagram: { + instagram: 'Instagram', + comments: 'Track comments', + mentions: 'Track mentions', + }, + whatsapp: { + whatsapp: 'Whatsapp', + token: 'Token', + status: 'Status', + number: 'Phone number', + review: 'Review', + }, + }, + viber: { + viber: 'Viber', + style: { + style: 'Style', + btnBackColor: 'Button background color', + btnFontColor: 'Button font color', + }, + }, + webchat: { + webchat: 'Web chat', + copyCode: 'Copy code for site', + copyCodeHint: + 'You must regenerate and reinsert Widget code to website each time after Widget settings modification', + metadata: { + mediaMaxSize: 'Max media size (Mb)', + }, + view: { + view: 'View', + borderRadius: 'Button Shape', + language: 'Language', + position: 'Position', + btnColor: 'Button Color', + logoUrl: 'Logo URL', + logoHint: "Supported logo format is 'JPEG' or 'PNG', 24x24px", + rounded: 'Rounded', + square: 'Square', + right: 'Right', + left: 'Left', + static: 'Static', + }, + recaptcha: { + recaptcha: 'reCAPTCHA', + sitekey: 'Site key', + secret: 'Secret key', + threshold: 'Threshold', + showFlag: 'Show reCAPTCHA badge', + }, + chat: { + chat: 'Chat', + openTimeout: 'Open Timeout', + openTimeoutSec: 'Open Timeout Sec', + }, + appointment: { + appointment: 'Appointment', + days: 'Days', + availableAgents: 'Available agents', + showEmailField: 'Show email field', + showMessageField: 'Show message field', + resultPageText: 'Result page text', + headingText: 'Heading text', + subheadingText: 'Subheading text', + showDefaultHeading: 'Show default heading and subheading on result page', + }, + alternativeChannels: { + alternativeChannels: 'Alternative Channels', + title: 'Messaging channels', + email: 'Email', + whatsapp: 'WhatsApp', + telegram: 'Telegram', + messenger: 'Messenger', + }, + call: { + title: 'Online call', + url: 'WebSocket Endpoint', + }, + }, + customChat: { + customChat: 'Custom Chat', + customChatGateway: 'Custom Chat Gateway', + appSecretHint: 'Altering this field will interrupt the integration', + metadata: { + appSecret: 'App Secret', + callback: 'Callback', + }, + }, + uri: 'URI', + newChatGateway: 'New chat gateway', + metadata: { + apiKey: 'Api Key', + number: 'Number', + baseUrl: 'Base URL', + sendApi: 'Send API', + allowOrigin: 'Allow Origin', + readTimeout: 'Read Timeout (sec)', + writeTimeout: 'Write Timeout (sec)', + handshakeTimeout: 'Handshake Timeout (sec)', + messageSize: 'Message Size max (bytes)', + botName: 'Bot Name', + eventTypes: 'Event Types', + telegramToken: 'Telegram BOT API Token', + messengerApiUrl: 'Messenger API URL', + }, + }, + + callflow: { + callflow: 'Callflow', + }, + }, + pagination: { + rowsPerPage: 'Rows per page', + }, + }, + + lookups: { + lookups: 'Lookups', + contactGroups: { + contactGroups: 'Contact groups', + groups: 'Groups', + crm: 'CRM', + configurations: 'Configurations', + } + }, + + errorPages: { + goToHome: 'Go to Home page', + page403: { + title: 'Access denied', + text: 'Sorry, you have not enough privileges to see this page.', + }, + page404: { + title: "Looks like you're lost", + text: "Sorry, we can't find the page you want.", + }, + }, + + iconHints: { + upload: 'Upload', + reload: 'Refresh table', + edit: 'Edit', + delete: 'Delete', + deleteAll: 'Delete all items', + deleteSelected: 'Delete {count} selected items', + deleteFiltered: 'Delete all filtered items', + generate: 'Generate', + add: 'Add', + history: 'History', + download: 'Download', + downloadAll: 'Download all', + draggable: 'Draggable', + play: 'Play', + pause: 'Pause', + resume: 'Resume', + close: 'Close', + change: 'Change', + volume: 'Volume', + stop: 'Stop', + members: 'Members', + moveUp: 'Move up', + moveDown: 'Move down', + nextPage: 'Next page', + prevPage: 'Previous page', + expand: 'Expand', + collapse: 'Collapse', + }, + + errors: { + invalidJson: 'JSON is invalid', + }, + + reusable: { + }, }; diff --git a/src/app/locale/i18n.js b/src/app/locale/i18n.js index 7a99ca30..b0b835ce 100644 --- a/src/app/locale/i18n.js +++ b/src/app/locale/i18n.js @@ -13,9 +13,9 @@ const messages = { }; export default createI18n({ - legacy: false, locale: 'en', fallbackLocale: 'en', + allowComposition: true, messages, datetimeFormats, }); diff --git a/src/app/locale/ru/ru.js b/src/app/locale/ru/ru.js index 9f99eebd..c26b6fb4 100644 --- a/src/app/locale/ru/ru.js +++ b/src/app/locale/ru/ru.js @@ -6,6 +6,9 @@ import AccessMode import TimelineTaskStatusEnum from '../../../modules/contacts/modules/timeline/enums/TimelineTaskStatus.enum.js'; +import CrmSections from '@webitel/ui-sdk/src/enums/WebitelApplications/CrmSections.enum'; +import CrmConfigurationSections from '@webitel/ui-sdk/src/enums/WebitelApplications/CrmConfigurationSections.enum'; + export default { crm: 'CRM', contacts: { @@ -85,4 +88,442 @@ export default { [AccessMode.MANAGE]: 'Управление', }, }, + startPage: { + [CrmSections.CONTACTS]: { + name: 'Контакты', + text: 'В этом разделе вы можете работать с Контактами: клиентами, партнерами и т.д.', + }, + [CrmSections.CONFIGURATION]: { + name: 'Конфигурация', + text: 'Здесь вы можете просматривать Обращения, зарегистрированные в системе.', + }, + }, + configuration: { + [CrmConfigurationSections.CONTACT_GROUPS]: 'Группы контактов', + }, + + validation: { + email: 'Введите адрес электронной почты', + required: 'Обязательное поле для заполнения', + sameAs: 'Неверный пароль', + gatewayHostValidator: 'Should look like IPv4 or FQDN', + ipValidator: 'Should look like IPv4', + macValidator: 'Should look like MAC', + minValue: 'Значение должно быть не менее', + maxValue: 'Значение должно быть не слишком большим', + numeric: 'Должны быть цифры', + requiredArrayValue: 'Поле не должно быть пустым', + isPositiveValue: 'Значение должно быть больше нуля', + cron: 'Некорректное cron-выражение', + }, + + objects: { + all: 'Все {entity}', + administration: 'Управление', + general: 'Общее', + new: 'Новый объект', + add: 'Добавить', + create: 'Создать', + read: 'Читать', + edit: 'Редактировать', + delete: 'Удалить', + save: 'Сохранить', + saved: 'Сохранено', + saveAs: 'Сохранить как нового', + close: 'Закрыть', + next: 'Далее', + back: 'Назад', + change: 'Заменить', + name: 'Имя', + title: 'Название', + description: 'Описание', + user: 'Пользователь', + users: 'Пользователи', + action: 'Action', + allow: 'Allow', + password: 'Пароль', + history: 'История', + copy: 'Копировать', + copied: 'Скопировано!', + createdAt: 'Создано', + createdBy: 'Кем создан', + importCSV: 'Импортировать CSV', + online: 'Онлайн', + offline: 'Оффлайн', + on: 'On', + off: 'Off', + ok: 'Ok', + enabled: 'Включено', + status: 'Статус', + from: 'От', + to: 'До', + importJSON: 'Импортировать JSON', + addNew: 'Добавить', + provider: 'Провайдер', + default: 'По умолчанию', + service: 'Сервис', + tts: 'Text-to-Speech', + stt: 'Speech-to-Text', + key: 'Ключ', + ID: 'ID', + email: 'Адрес электронной почты', + updatedAt: 'Изменено', + emptyWorkspace: 'Записи в разделе еще не созданы', + emptyResultSearch: 'Поиск не дал результатов', + + deleteConfirmation: { + title: 'Подтвердите удаление', + askingAlert: + 'Вы уверенны, что хотите удалить {count} запись? | Вы уверенны, что хотите удалить {count} записей?', + undoneActionAlert: 'Это действие не может быть отменено.', + deleteAll: 'ВСЕ', + }, + generalInfo: 'Общая информация', + objectHeader: {}, + permissions: { + permissions: 'Дозволи', + permissionsRole: 'Роль | Ролі', + allRoles: 'Всі ролі', + searchPlaceholder: 'роль ..', + roles: { + permissions: { + permissions: 'Право доступа роли | Права доступа ролей', + add: 'Создавать', + delete: 'Удалять', + read: 'Выбирать', + write: 'Редактировать', + eavesdropCall: 'Прослушивать активный звонок', + playbackRecordFile: 'Воспроизводить записи разговоров', + exportDataGrid: 'Экспортировать данные', + viewCdrPhoneNumbers: 'Просмотр незашифрованных номеров телефонов', + manageUserRoles: 'Управление ролями пользователей', + manageUserLicense: 'Управление лицензиями пользователей', + changeUserPassword: 'Изменять пароли пользователей', + systemSetting: 'Управление системными конфигурациями', + addDescription: 'Предоставляет разрешение на создание объектов', + deleteDescription: 'Предоставляет разрешение на удаление объектов', + readDescription: 'Предоставляет разрешение на выбор объектов', + writeDescription: 'Предоставляет разрешение на изменение объектов', + eavesdropCallDescription: 'Предоставляет разрешение на прослушивание активного разговора', + playbackRecordFileDescription: + 'Предоставляет разрешение на воспроизведение файлов с записями разговоров', + exportDataGridDescription: 'Предоставляет разрешение на экспорт данных', + viewCdrPhoneNumbersDescription: + 'Предоставляет разрешение на отображение незашифрованных телефонных номеров', + manageUserRolesDescription: + 'Предоставляет разрешение на управление набором ролей пользователей', + manageUserLicenseDescription: + 'Предоставляет разрешение на управление набором пользовательских лицензий', + changeUserPasswordDescription: + 'Предоставляет разрешение на изменение пароля пользователя', + systemSettingDescription: 'Предоставляет разрешение на управление разделом Конфигурация', + schemeVariables: 'Управление глобальными переменными', + schemeVariablesDescription: + 'Предоставляет разрешение на управление разделом Глобальные переменные', + }, + addPermission: 'Добавить право доступа для роли', + usage: 'Использование', + applicationsAccess: { + applicationsAccess: 'Приложение | Приложения', + access: 'Доступ', + }, + }, + object: { + object: 'Разделы', + allObjects: 'Все разделы', + ObAC: 'Управление действиями', + RbAC: 'Управление записями', + operations: 'Действия', + searchPlaceholder: 'раздел ..', + newPermissionRole: 'Новый владелец прав', + rbacDefault: 'Права доступа по записям по умолчанию', + grantor: 'Праводатель', + grantee: 'Получатель', + create: 'Создавать', + delete: 'Удалять', + accessMode: { + 1: 'Запрещено', + 2: 'Разрешено', + 3: 'Управление', + }, + }, + }, + routing: { + routing: 'Маршрутизация', + ip: 'IP', + protocol: 'Протокол', + port: 'Порт', + configuration: 'Конфигурация', + schema: 'Схема звонка', + json: 'JSON', + + flow: { + flow: 'Схема | Схемы', + allFlowSchemas: 'Все схемы', + createFlowSelectionPopup: 'Создать новую схему', + createNew: 'Создать новую схему?', + editor: 'Редактор', + diagram: { + diagram: 'Диаграмма', + description: 'Создать новую схему используя Webitel Flow Diagram', + }, + code: { + code: 'Код', + description: 'Создать новую схему используя JSON-схему в редакторе кода', + }, + askingAlert: 'Вы хотите сохранить изменения, внесенные в "{name}" ?', + }, + + dialplan: { + dialplan: 'Исходящая маршрутизация', + dialplanRules: 'Правила исходящей маршрутизации', + pattern: 'Номер назначения', + dialplanRule: 'Правило исходящей маршрутизации', + position: 'Позиция', + }, + + chatplan: { + chatplan: + 'Правило маршрутизации текстовых сообщений | Правила маршрутизации текстовых сообщений', + allChatplans: 'Все правила маршрутизации текстовых сообщений', + }, + + gateways: { + gateways: 'Шлюз | Шлюзы', + allGateways: 'Все шлюзы', + trunkingGateway: 'Многоканальный шлюз', + registerGateway: 'Зарегистрировать шлюз', + stateSuccess: 'Успешно', + stateFailed: 'Неудачно', + stateProgress: 'В процессе', + stateNonreg: 'Не зарегистрирован', + proxy: 'Прокси', + searchPlaceholder: 'поиск шлюза...', + host: 'Хост', + trunkingACLTitle: 'Контроль доступа', + trunkingACL: 'Многоканальный список доступа', + hostnameTrunking: 'Сервер/Хост шлюза или IP', + hostnameRegister: 'Регистратор/Сервер/Хост шлюза или IP', + expire: 'Срок действия', + authID: 'Имя пользователя', + account: 'Аккаунт', + outboundProxy: 'Адрес исходящего SIP-прокси', + newGateway: 'Новый шлюз', + newGatewayDescription: 'Описание нового шлюза', + SIPregistrations: 'SIP-регистрация', + SIPregistrationsDescription: 'Описание SIP-регистрации', + SIPtrunking: 'SIP-транки', + SIPtrunkingDescription: 'Описание SIP-транков', + }, + + chatGateways: { + templates: { + templates: 'Шаблоны', + title: 'Анонимное имя абонента в Workspace', + close: 'Сообщение завершения чата', + join: 'Сообщение присоединения оператора', + left: 'Сообщение отключения оператора', + }, + chatGateways: 'Текстовый шлюз | Текстовые шлюзы', + allChatGateways: 'Все текстовые шлюзы', + telegramBot: { + telegramBot: 'Telegram Бот', + }, + telegramApp: { + telegramApp: 'Telegram Приложение', + signedAs: 'Вы авторизированы как', + joinTelegram: 'Sign in to Telegram', + metadata: { + apiId: 'API идентификатор', + apiHash: 'API хэш', + }, + }, + infobip: { + infobip: 'Infobip', + }, + messenger: { + meta: 'Meta', + addOrRemovePages: 'Добавить или удалить страницы', + accounts: 'Аккаунты', + metadata: { + clientId: 'App ID', + clientSecret: 'App Secret', + }, + facebook: { + pages: 'Facebook страницы', + subscription: 'Webhook подписки', + }, + instagram: { + instagram: 'Instagram', + comments: 'Отслеживать комментарии', + mentions: 'Отслеживать упоминания', + }, + whatsapp: { + whatsapp: 'Whatsapp', + token: 'Токен', + status: 'Статус', + number: 'Номер телефона', + review: 'Рассмотрение', + }, + }, + viber: { + viber: 'Viber', + style: { + style: 'Стиль', + btnBackColor: 'Цвет фона кнопки', + btnFontColor: 'Цвет текста кнопки', + }, + }, + webchat: { + webchat: 'Web chat', + copyCode: 'Скопировать код', + copyCodeHint: + 'Необходимо перегенерировать и вставить код Виджета на сайт после каждой модификации настроек', + metadata: { + mediaMaxSize: 'Максимальный размер файла (Мб)', + }, + view: { + borderRadius: 'Вид кнопки', + language: 'Язык', + view: 'Вид', + position: 'Размещение', + btnColor: 'Цвет кнопки', + logoUrl: 'URL логотипа', + logoHint: "Поддерживаемый формат логотипа - 'JPEG' or 'PNG', 24x24px", + rounded: 'Круглая', + square: 'Квадратная', + right: 'Справа', + left: 'Слева', + static: 'Статическая', + }, + recaptcha: { + recaptcha: 'reCAPTCHA', + sitekey: 'Site key', + secret: 'Secret key', + threshold: 'Порог', + showFlag: 'Показывать значок reCAPTCHA', + }, + chat: { + chat: 'Чат', + openTimeout: 'Включить задержку открытия', + openTimeoutSec: 'Время задержки открытия', + }, + appointment: { + appointment: 'Заказ звонка', + days: 'Количество дней', + availableAgents: 'Свободные агенты', + showEmailField: 'Показать поле ввода почты', + showMessageField: 'Показать поле ввода сообщения', + resultPageText: 'Текст та странице результата', + headingText: 'Заголовок', + subheadingText: 'Подзаголовок', + showDefaultHeading: + 'Показать стандартный заголовок и подзаголовок на странице результата', + }, + call: { + title: 'Онлайн-звонок', + url: 'WebSocket Endpoint', + }, + alternativeChannels: { + alternativeChannels: 'Альтернативные каналы', + title: 'Текстовые каналы', + email: 'Электронная почта', + whatsapp: 'WhatsApp', + telegram: 'Telegram', + messenger: 'Messenger', + }, + }, + customChat: { + customChat: 'Custom Chat', + customChatGateway: 'Custom Chat Gateway', + appSecretHint: 'Изменение этого поля прервет интеграцию', + metadata: { + appSecret: 'App Secret', + callback: 'Callback', + }, + }, + uri: 'URI', + newChatGateway: 'Новый текстовый шлюз', + metadata: { + apiKey: 'Api Key', + number: 'Number', + baseUrl: 'Base URL', + sendApi: 'Send API', + allowOrigin: 'Allow Origin', + readTimeout: 'Read Timeout (sec)', + writeTimeout: 'Write Timeout (sec)', + handshakeTimeout: 'Handshake Timeout (sec)', + messageSize: 'Message Size max (bytes)', + botName: 'Bot Name', + eventTypes: 'Event Types', + telegramToken: 'Telegram BOT API Token', + messengerApiUrl: 'Messenger API URL', + }, + }, + + callflow: { + callflow: 'Конструктор звонка', + }, + }, + pagination: { + rowsPerPage: 'Количество строк на странице', + }, + }, + + lookups: { + lookups: 'Справочники', + contactGroups: { + contactGroups: 'Группы контактов', + groups: 'Группы', + crm: 'CRM', + configurations: 'Конфигурация', + } + }, + + errorPages: { + goToHome: 'Вернуться Домой', + page403: { + title: 'Нет доступа', + text: 'Извините, у вас недостаточно прав доступа для просмотра этой страницы.', + }, + page404: { + title: 'Похоже, вы потерялись', + text: 'Извините, мы не можем найти то, что вы ищете', + }, + }, + + iconHints: { + upload: 'Загрузить', + reload: 'Обновить', + edit: 'Редактировать', + delete: 'Удалить', + deleteAll: 'Удалить все объекты', + deleteSelected: 'Удалить {count} выбранных объектов', + deleteFiltered: 'Удалить все отфильтрованные объекты', + generate: 'Создать', + add: 'Добавить', + history: 'История', + download: 'Скачать', + downloadAll: 'Скачать все', + draggable: 'Перетащить', + play: 'Играть', + pause: 'Пауза', + resume: 'Возобновить', + close: 'Закрыть', + volume: 'Громкость', + stop: 'Остановить', + members: 'Абоненты', + moveUp: 'Передвинуть вверх', + moveDown: 'Передвинуть вниз', + nextPage: 'Следующая страница', + prevPage: 'Предыдущая страница', + expand: 'Развернуть', + collapse: 'Свернуть', + }, + + errors: { + invalidJson: 'Некорректный JSON', + }, + reusable: { + }, }; diff --git a/src/app/locale/ua/ua.js b/src/app/locale/ua/ua.js index 5218ac51..5a4fe61c 100644 --- a/src/app/locale/ua/ua.js +++ b/src/app/locale/ua/ua.js @@ -6,6 +6,9 @@ import AccessMode import TimelineTaskStatusEnum from '../../../modules/contacts/modules/timeline/enums/TimelineTaskStatus.enum.js'; +import CrmSections from '@webitel/ui-sdk/src/enums/WebitelApplications/CrmSections.enum'; +import CrmConfigurationSections from '@webitel/ui-sdk/src/enums/WebitelApplications/CrmConfigurationSections.enum'; + export default { crm: 'CRM', contacts: { @@ -85,4 +88,437 @@ export default { [AccessMode.MANAGE]: 'Управління', }, }, + startPage: { + [CrmSections.CONTACTS]: { + name: 'Контакти', + text: 'У цьому розділі ви можете працювати з Контактами: клієнтами, партнерами тощо.', + }, + [CrmSections.CONFIGURATION]: { + name: 'Конфігурація', + text: 'Тут ви можете переглядати Звернення, зареєстровані у системі.', + }, + }, + configuration: { + [CrmConfigurationSections.LOOKUPS]: 'Довідники', + [CrmConfigurationSections.CONTACT_GROUPS]: 'Групи контактів', + }, + + validation: { + email: 'Введіть адресу електронної пошти', + required: "Поле обов'язкове для заповнення", + sameAs: 'Невірний пароль', + gatewayHostValidator: 'Має виглядати як IPv4 або FQDN', + ipValidator: 'Має виглядати як IPv4', + macValidator: 'Має виглядати як MAC', + minValue: 'Значення має бути не менше', + maxValue: 'Значення має бути не надто велкиим', + numeric: 'Мають бути цифри', + requiredArrayValue: 'Поле не може бути пустим', + isPositiveValue: 'Значення має бути додатнім числом', + cron: 'Некорректний cron-вираз', + }, + + objects: { + all: 'Всі {entity}', + administration: 'Управління', + general: 'Загальне', + new: 'Новий', + add: 'Додати', + create: 'Створити', + read: 'Читати', + edit: 'Редагувати', + delete: 'Видалити', + save: 'Зберегти', + saved: 'Збережено', + saveAs: 'Зберігти як нового', + close: 'Закрити', + next: 'Далі', + back: 'Назад', + change: 'Замінити', + name: "Ім'я", + title: 'Назва', + description: 'Опис', + user: 'Користувач', + users: 'Користувачі', + action: 'Дія', + allow: 'Дозволити', + password: 'Пароль', + history: 'Історія', + copy: 'Копіювати', + copied: 'Скопійовано!', + createdAt: 'Створено', + createdBy: 'Ким створено', + importCSV: 'Імпортувати CSV', + online: 'Онлайн', + offline: 'Офлайн', + on: 'On', + off: 'Off', + ok: 'Ok', + enabled: 'Ввімкнено', + status: 'Статус', + from: 'Від', + to: 'До', + importJSON: 'Імпортувати JSON', + addNew: 'Додати', + provider: 'Провайдер', + default: 'За замовчуванням', + service: 'Сервіс', + tts: 'Text-to-Speech', + stt: 'Speech-to-Text', + key: 'Ключ', + ID: 'ID', + email: 'Адреса електронної пошти', + updatedAt: 'Змінено', + emptyWorkspace: 'Записи у розділі ще не створені', + emptyResultSearch: 'Пошук не дав результатів', + + deleteConfirmation: { + title: 'Підтвердіть видалення', + askingAlert: + 'Ви впевнені, що хочете видалити {count} запис? | Ви впевнені, що хочете видалити {count} записів?', + undoneActionAlert: 'Дана дія не може бути скасована.', + deleteAll: 'ВСІ', + }, + generalInfo: 'Загальна інформація', + objectHeader: {}, + permissions: { + permissions: 'Дозволи', + permissionsRole: 'Роль | Ролі', + allRoles: 'Всі ролі', + searchPlaceholder: 'роль ..', + roles: { + permissions: { + permissions: 'Дозвіл ролі | Дозволи ролей', + add: 'Створювати', + delete: 'Видаляти', + read: 'Вибирати', + write: 'Редагувати', + eavesdropCall: 'Прослуховувати активний дзвінок', + playbackRecordFile: 'Відтворювати записи розмов', + exportDataGrid: 'Експортувати дані', + viewCdrPhoneNumbers: 'Перегляд незашифрованих номерів телефонів', + manageUserRoles: 'Управління ролями користувачів', + manageUserLicense: 'Управління ліцензіями користувачів', + changeUserPassword: 'Змінювати паролі користувачів', + systemSetting: 'Управління системними конфігураціями', + addDescription: 'Надає дозвіл на створення об’єктів', + deleteDescription: 'Надає дозвіл на видалення об’єктів', + readDescription: 'Надає дозвіл на вибір об’єктів', + writeDescription: 'Надає дозвіл змінювати об’єкти', + eavesdropCallDescription: 'Надає дозвіл прослуховувати активну розмову', + playbackRecordFileDescription: 'Надає дозвіл на відтворення файлів записів дзвінків', + exportDataGridDescription: 'Надає дозвіл на експорт даних', + viewCdrPhoneNumbersDescription: + 'Надає дозвіл на відображення незашифрованих телефонних номерів', + manageUserRolesDescription: 'Надає дозвіл на керування набором ролей користувачів', + manageUserLicenseDescription: 'Надає дозвіл на керування набором ліцензій користувача', + changeUserPasswordDescription: 'Надає дозвіл на зміну пароля користувача', + systemSettingDescription: 'Надає дозвіл на керування розділом Конфігурація', + schemeVariables: 'Управління глобальними змінними', + schemeVariablesDescription: 'Надає дозвіл на керування розділом Глобальні змінні', + }, + addPermission: 'Надати дозвіл', + usage: 'Використання', + applicationsAccess: { + applicationsAccess: 'Застосунок | Застосунки', + access: 'Доступ', + }, + }, + object: { + object: 'Розділи', + allObjects: 'Всі розділи', + ObAC: 'Управління діями', + RbAC: 'Управління записами', + operations: 'Дії', + searchPlaceholder: 'розділ ..', + newPermissionRole: 'Новий власник прав', + rbacDefault: 'Права доступу на записи за замовчуванням', + grantor: 'Праводатель', + grantee: 'Отримувач', + create: 'Створювати', + delete: 'Видаляти', + accessMode: { + 1: 'Заборонено', + 2: 'Дозволено', + 3: 'Управління', + }, + }, + }, + routing: { + routing: 'Routing', + ip: 'IP', + protocol: 'Protocol', + port: 'Port', + configuration: 'Configuration', + schema: 'Flow schema', + json: 'JSON', + + flow: { + flow: 'Flow schema | Flow schemas', + allFlowSchemas: 'All flow schemas', + createFlowSelectionPopup: 'Create new flow', + createNew: 'Create new?', + editor: 'Editor', + diagram: { + diagram: 'Diagram', + description: 'Create new flow using Webitel Flow Diagram tool', + }, + code: { + code: 'Code', + description: 'Create new flow using JSON-schema in code editor', + }, + askingAlert: 'Do you want to save the changes you made to "{name}" ?', + }, + + dialplan: { + dialplan: 'Dialplans', + dialplanRules: 'Dialplan rules', + pattern: 'Destination number', + dialplanRule: 'Dialplan rule', + position: 'Position', + }, + + chatplan: { + chatplan: 'Chatplan | Chatplans', + allChatplans: 'All chatplans', + }, + + gateways: { + gateways: 'Gateway | Gateways', + allGateways: 'All gateways', + trunkingGateway: 'Trunking gateway', + registerGateway: 'Register gateway', + stateSuccess: 'Success', + stateFailed: 'Failed', + stateProgress: 'In progress', + stateNonreg: 'Not registered', + proxy: 'Proxy', + searchPlaceholder: 'gateway search...', + host: 'Host', + trunkingACLTitle: 'Access Control', + trunkingACL: 'Trunking access control list', + hostnameTrunking: 'Server/Gateway Hostname or IP', + hostnameRegister: 'Registrar/Server/Gateway Hostname or IP', + expire: 'Expire', + authID: 'Username', + account: 'Account', + outboundProxy: 'Outbound Proxy Hostname or IP', + newGateway: 'New gateway', + newGatewayDescription: 'New gateway description', + SIPregistrations: 'SIP Registration', + SIPregistrationsDescription: 'SIP registration description', + SIPtrunking: 'SIP Trunking', + SIPtrunkingDescription: 'SIP trunking description', + }, + chatGateways: { + templates: { + templates: 'Templates', + title: "Workspace member's name", + close: 'Chat complete message', + join: 'Agent joining message', + left: 'Agent disconnection message', + }, + chatGateways: 'Chat gateway | Chat gateways', + allChatGateways: 'All chat gateways', + telegramBot: { + telegramBot: 'Telegram Bot', + }, + telegramApp: { + telegramApp: 'Telegram App', + signedAs: "You're signed as", + joinTelegram: 'Sign in to Telegram', + metadata: { + apiId: 'API id', + apiHash: 'API hash', + }, + }, + infobip: { + infobip: 'Infobip', + }, + messenger: { + meta: 'Meta', + addOrRemovePages: 'Add or remove pages', + accounts: 'Accounts', + metadata: { + clientId: 'App ID', + clientSecret: 'App Secret', + }, + facebook: { + pages: 'Facebook pages', + subscription: 'Webhook subscription', + }, + instagram: { + instagram: 'Instagram', + comments: 'Track comments', + mentions: 'Track mentions', + }, + whatsapp: { + whatsapp: 'Whatsapp', + token: 'Token', + status: 'Status', + number: 'Phone number', + review: 'Review', + }, + }, + viber: { + viber: 'Viber', + style: { + style: 'Style', + btnBackColor: 'Button background color', + btnFontColor: 'Button font color', + }, + }, + webchat: { + webchat: 'Web chat', + copyCode: 'Copy code for site', + copyCodeHint: + 'You must regenerate and reinsert Widget code to website each time after Widget settings modification', + metadata: { + mediaMaxSize: 'Max media size (Mb)', + }, + view: { + view: 'View', + borderRadius: 'Button Shape', + language: 'Language', + position: 'Position', + btnColor: 'Button Color', + logoUrl: 'Logo URL', + logoHint: "Supported logo format is 'JPEG' or 'PNG', 24x24px", + rounded: 'Rounded', + square: 'Square', + right: 'Right', + left: 'Left', + static: 'Static', + }, + recaptcha: { + recaptcha: 'reCAPTCHA', + sitekey: 'Site key', + secret: 'Secret key', + threshold: 'Threshold', + showFlag: 'Show reCAPTCHA badge', + }, + chat: { + chat: 'Chat', + openTimeout: 'Open Timeout', + openTimeoutSec: 'Open Timeout Sec', + }, + appointment: { + appointment: 'Appointment', + days: 'Days', + availableAgents: 'Available agents', + showEmailField: 'Show email field', + showMessageField: 'Show message field', + resultPageText: 'Result page text', + headingText: 'Heading text', + subheadingText: 'Subheading text', + showDefaultHeading: 'Show default heading and subheading on result page', + }, + alternativeChannels: { + alternativeChannels: 'Alternative Channels', + title: 'Messaging channels', + email: 'Email', + whatsapp: 'WhatsApp', + telegram: 'Telegram', + messenger: 'Messenger', + }, + call: { + title: 'Online call', + url: 'WebSocket Endpoint', + }, + }, + customChat: { + customChat: 'Custom Chat', + customChatGateway: 'Custom Chat Gateway', + appSecretHint: 'Altering this field will interrupt the integration', + metadata: { + appSecret: 'App Secret', + callback: 'Callback', + }, + }, + uri: 'URI', + newChatGateway: 'New chat gateway', + metadata: { + apiKey: 'Api Key', + number: 'Number', + baseUrl: 'Base URL', + sendApi: 'Send API', + allowOrigin: 'Allow Origin', + readTimeout: 'Read Timeout (sec)', + writeTimeout: 'Write Timeout (sec)', + handshakeTimeout: 'Handshake Timeout (sec)', + messageSize: 'Message Size max (bytes)', + botName: 'Bot Name', + eventTypes: 'Event Types', + telegramToken: 'Telegram BOT API Token', + messengerApiUrl: 'Messenger API URL', + }, + }, + + callflow: { + callflow: 'Callflow', + }, + }, + pagination: { + rowsPerPage: 'Rows per page', + }, + }, + + lookups: { + lookups: 'Довідники', + contactGroups: { + contactGroups: 'Групи контактів', + groups: 'Групи', + crm: 'CRM', + configurations: 'Конфігурація', + } + }, + + errorPages: { + goToHome: 'Повернутись додому', + page403: { + title: 'Немає доступу', + text: 'Вибачте, у Вас недостатньо прав доступу для перегляду цієї сторінки', + }, + page404: { + title: 'Здається, Ви загубились', + text: 'Вибачте, ми не можемо знайти те, що Ви шукаєте', + }, + }, + + iconHints: { + upload: 'Завантажити', + reload: 'Оновити', + edit: 'Редагувати', + delete: 'Видалити', + deleteAll: "Видалити всі об'єкти", + deleteSelected: "Видалити {count} обраних об'єктів", + deleteFiltered: "Видалити всі відфільтровані об'єкти", + generate: 'Створити', + add: 'Додати', + history: 'Історія', + download: 'Скачати', + downloadAll: 'Скачати все', + draggable: 'Перетягнути', + play: 'Програти', + pause: 'Пауза', + resume: 'Продовжити', + close: 'Зкрити', + change: 'Замінити', + volume: 'Гучність', + stop: 'Зупинити', + members: 'Абоненти', + moveUp: 'Пересунути вгору', + moveDown: 'Пересунути вниз', + nextPage: 'Наступна сторінка', + prevPage: 'Попередня сторінка', + expand: 'Розгорнути', + collapse: 'Згорнути', + }, + + errors: { + invalidJson: 'Некоректний JSON', + }, + + reusable: { + }, };