From 6a1fa4d32213391b5ff96474b38f0f00cfb37c56 Mon Sep 17 00:00:00 2001 From: Andrey Sembaev <100691581+sembaev-a-a@users.noreply.github.com> Date: Wed, 19 Nov 2025 17:56:00 +0300 Subject: [PATCH 1/3] Russian language support has been added to plugins (#7676) * Create ru-RU.JSON * Rename ru-RU.JSON to ru-RU.json * RU translation * Update ru-RU.json * Update ru-RU.json * Update ru-RU.json * Update ru-RU.json * Create ru-RU.json * Create ru-RU.json * Create ru-RU.json * Create ru-RU.json * Create ru-RU.json * Create ru-RU.json * Create ru-RU.json * Create ru-RU.json * Create ru-RU.json * Create ru-RU.json * Create ru-RU.json * Create ru-RU.json * Create ru-RU.json * Create ru-RU.json * Create ru-RU.json * Update plugin-workflow ru-RU.json * Update plugin-worklow ru-RU.json * Update ru-RU.json * Update ru-RU.json * Create ru-RU.json * Create ru-RU.json * Create ru-RU.json * Create ru-RU.json * Create ru-RU.json * Update ru-RU.json * Create ru-RU.json * Create ru-RU.json * Create ru-RU.json * Create ru-RU.json * Create ru-RU.json * Create ru-RU.json * Create ru-RU.json * Create ru-RU * Create ru-RU.json * Create ru-RU.json * Rename ru-RU to ru-RU.json * Create ru-RU.json * Create ru-RU.json * Create ru-RU.json * Create ru-RU.json * Create ru-RU.json * Create ru-RU.json * Create ru-RU.json * Create ru-RU.json * Create ru-RU.json * Create ru-RU.json * Create ru-RU.json * Create ru-RU.json * Create ru-RU.json * Create ru-RU.json * Create ru-RU.json * Create ru-RU.json * Create ru-RU.json * Create ru-RU.json * Update ru-RU.json * Create ru-RU.json * Create ru-RU.json * Create ru-RU.json * Create ru-RU.json * Create ru-RU.json * Create ru-RU.json * Create ru-RU.json * Create ru-RU.json * Create ru-RU.json * Create ru-RU.json * Create ru-RU.json * ru_localization_plugins * Update package.json * Update package.json * Update Calendar.tsx * Update ru-RU.json * Add Russian locale support for date formatting * Russian localization has been added --------- Co-authored-by: easampl Co-authored-by: 1esnevskaya <99816385+1esnevskaya@users.noreply.github.com> --- .../plugins/@nocobase/plugin-acl/package.json | 3 + .../plugin-acl/src/locale/ru-RU.json | 18 ++ .../plugin-action-bulk-edit/package.json | 3 + .../src/locale/ru-RU.json | 5 + .../plugin-action-bulk-update/package.json | 3 + .../src/locale/ru-RU.json | 6 + .../plugin-action-custom-request/package.json | 3 + .../src/locale/ru-RU.json | 26 +++ .../plugin-action-duplicate/package.json | 3 + .../plugin-action-export/package.json | 3 + .../src/locale/ru-RU.json | 7 + .../plugin-action-import/package.json | 3 + .../src/locale/ru-RU.json | 51 +++++ .../plugin-action-print/package.json | 3 + .../plugins/@nocobase/plugin-ai/package.json | 5 + .../@nocobase/plugin-ai/src/locale/ru-RU.json | 25 +++ .../@nocobase/plugin-api-doc/package.json | 3 + .../plugin-api-doc/src/locale/ru-RU.json | 5 + .../@nocobase/plugin-api-keys/package.json | 3 + .../plugin-api-keys/src/locale/ru-RU.json | 21 ++ .../plugin-async-task-manager/package.json | 2 + .../src/locale/ru-RU.json | 45 +++++ .../@nocobase/plugin-audit-logs/package.json | 3 + .../plugin-audit-logs/src/locale/ru-RU.json | 3 + .../@nocobase/plugin-auth-sms/package.json | 3 + .../plugin-auth-sms/src/locale/ru-RU.json | 7 + .../@nocobase/plugin-auth/package.json | 3 + .../plugin-auth/src/locale/ru-RU.json | 81 ++++++++ .../plugin-backup-restore/package.json | 3 + .../src/locale/ru-RU.json | 50 +++++ .../plugin-block-iframe/package.json | 3 + .../plugin-block-template/package.json | 3 + .../src/locale/ru-RU.json | 42 ++++ .../plugin-block-workbench/package.json | 2 + .../src/locale/ru-RU.json | 18 ++ .../@nocobase/plugin-calendar/package.json | 3 + .../src/client/calendar/Calendar.tsx | 14 +- .../plugin-calendar/src/locale/ru-RU.json | 78 +++++--- .../@nocobase/plugin-charts/package.json | 2 + .../plugin-charts/src/locale/ru-RU.json | 75 ++++++- .../@nocobase/plugin-client/package.json | 2 + .../plugin-collection-sql/package.json | 3 + .../plugin-collection-tree/package.json | 2 + .../plugin-data-source-main/package.json | 3 + .../src/locale/ru-RU.json | 4 + .../plugin-data-source-manager/package.json | 3 + .../src/locale/ru-RU.json | 40 ++++ .../plugin-data-visualization/package.json | 3 + .../src/locale/ru-RU.json | 103 ++++++++++ .../@nocobase/plugin-departments/package.json | 2 + .../plugin-departments/src/locale/ru-RU.json | 35 ++++ .../plugin-environment-variables/package.json | 3 + .../src/locale/ru-RU.json | 16 ++ .../plugin-error-handler/package.json | 5 + .../src/locale/ru-RU.json | 5 + .../plugin-field-attachment-url/package.json | 2 + .../src/locale/ru-RU.json | 4 + .../plugin-field-china-region/package.json | 3 + .../plugin-field-formula/package.json | 3 + .../src/locale/ru-RU.json | 8 + .../plugin-field-m2m-array/package.json | 2 + .../src/locale/ru-RU.json | 4 + .../plugin-field-markdown-vditor/package.json | 3 + .../src/locale/ru-RU.json | 38 ++++ .../plugin-field-sequence/package.json | 3 + .../src/locale/ru-RU.json | 24 +++ .../@nocobase/plugin-field-sort/package.json | 2 + .../plugin-file-manager/package.json | 3 + .../plugin-file-manager/src/locale/ru-RU.json | 37 +++- .../plugin-file-previewer-office/package.json | 2 + .../@nocobase/plugin-gantt/package.json | 3 + .../plugin-gantt/src/locale/ru-RU.json | 6 + .../package.json | 3 + .../src/locale/ru-RU.json | 15 ++ .../@nocobase/plugin-kanban/package.json | 2 + .../plugin-kanban/src/locale/ru-RU.json | 10 + .../@nocobase/plugin-license/package.json | 2 + .../plugin-license/src/locale/ru-RU.json | 13 ++ .../plugin-locale-tester/package.json | 1 + .../src/locale/ru-RU.json | 5 + .../plugin-localization/package.json | 3 + .../plugin-localization/src/locale/ru-RU.json | 24 +++ .../@nocobase/plugin-logger/package.json | 3 + .../plugin-logger/src/locale/ru-RU.json | 9 + .../plugins/@nocobase/plugin-map/package.json | 3 + .../plugin-map/src/locale/ru-RU.json | 51 +++++ .../plugin-mobile-client/package.json | 2 + .../src/locale/ru-RU.json | 32 +++ .../@nocobase/plugin-mobile/package.json | 2 + .../plugin-mobile/src/locale/ru-RU.json | 30 +++ .../plugin-multi-app-manager/package.json | 3 + .../src/locale/ru-RU.json | 11 ++ .../package.json | 2 + .../plugin-notification-email/package.json | 3 + .../src/locale/ru-RU.json | 22 +++ .../package.json | 3 + .../src/locale/ru-RU.json | 33 ++++ .../plugin-notification-manager/package.json | 3 + .../src/locale/ru-RU.json | 41 ++++ .../plugin-notifications/package.json | 2 + .../plugin-public-forms/package.json | 3 + .../plugin-public-forms/src/locale/ru-RU.json | 18 ++ .../plugin-snapshot-field/package.json | 3 + .../src/locale/ru-RU.json | 11 ++ .../plugin-system-settings/package.json | 3 + .../@nocobase/plugin-text-copy/package.json | 2 + .../plugin-text-copy/src/locale/ru-RU.json | 3 + .../plugin-theme-editor/package.json | 2 + .../plugin-theme-editor/src/locale/ru-RU.json | 22 +++ .../plugin-ui-schema-storage/package.json | 3 + .../plugin-user-data-sync/package.json | 2 + .../src/locale/ru-RU.json | 21 ++ .../@nocobase/plugin-users/package.json | 3 + .../plugin-users/src/locale/ru-RU.json | 9 + .../plugin-verification/package.json | 3 + .../plugin-verification/src/locale/ru-RU.json | 39 ++++ .../package.json | 3 + .../src/locale/ru-RU.json | 16 ++ .../plugin-workflow-aggregate/package.json | 3 + .../src/locale/ru-RU.json | 13 ++ .../@nocobase/plugin-workflow-cc/package.json | 3 + .../plugin-workflow-cc/src/locale/ru-RU.json | 15 ++ .../plugin-workflow-delay/package.json | 3 + .../src/locale/ru-RU.json | 10 + .../package.json | 3 + .../src/locale/ru-RU.json | 12 ++ .../plugin-workflow-loop/package.json | 3 + .../src/locale/ru-RU.json | 22 +++ .../plugin-workflow-mailer/package.json | 4 + .../src/locale/ru-RU.json | 20 ++ .../plugin-workflow-manual/package.json | 3 + .../src/locale/ru-RU.json | 35 ++++ .../plugin-workflow-notification/package.json | 3 + .../src/locale/ru-RU.json | 4 + .../plugin-workflow-parallel/package.json | 3 + .../src/locale/ru-RU.json | 7 +- .../plugin-workflow-request/package.json | 3 + .../src/locale/ru-RU.json | 24 +++ .../package.json | 3 + .../src/locale/ru-RU.json | 8 + .../plugin-workflow-sql/package.json | 3 + .../plugin-workflow-sql/src/locale/ru-RU.json | 7 + .../plugin-workflow-test/package.json | 1 + .../@nocobase/plugin-workflow/package.json | 3 + .../plugin-workflow/src/locale/ru-RU.json | 184 ++++++++++++++++-- 145 files changed, 1855 insertions(+), 61 deletions(-) create mode 100644 packages/plugins/@nocobase/plugin-acl/src/locale/ru-RU.json create mode 100644 packages/plugins/@nocobase/plugin-action-bulk-edit/src/locale/ru-RU.json create mode 100644 packages/plugins/@nocobase/plugin-action-bulk-update/src/locale/ru-RU.json create mode 100644 packages/plugins/@nocobase/plugin-action-custom-request/src/locale/ru-RU.json create mode 100644 packages/plugins/@nocobase/plugin-action-export/src/locale/ru-RU.json create mode 100644 packages/plugins/@nocobase/plugin-action-import/src/locale/ru-RU.json create mode 100644 packages/plugins/@nocobase/plugin-ai/src/locale/ru-RU.json create mode 100644 packages/plugins/@nocobase/plugin-api-doc/src/locale/ru-RU.json create mode 100644 packages/plugins/@nocobase/plugin-api-keys/src/locale/ru-RU.json create mode 100644 packages/plugins/@nocobase/plugin-async-task-manager/src/locale/ru-RU.json create mode 100644 packages/plugins/@nocobase/plugin-audit-logs/src/locale/ru-RU.json create mode 100644 packages/plugins/@nocobase/plugin-auth-sms/src/locale/ru-RU.json create mode 100644 packages/plugins/@nocobase/plugin-auth/src/locale/ru-RU.json create mode 100644 packages/plugins/@nocobase/plugin-backup-restore/src/locale/ru-RU.json create mode 100644 packages/plugins/@nocobase/plugin-block-template/src/locale/ru-RU.json create mode 100644 packages/plugins/@nocobase/plugin-block-workbench/src/locale/ru-RU.json create mode 100644 packages/plugins/@nocobase/plugin-data-source-main/src/locale/ru-RU.json create mode 100644 packages/plugins/@nocobase/plugin-data-source-manager/src/locale/ru-RU.json create mode 100644 packages/plugins/@nocobase/plugin-data-visualization/src/locale/ru-RU.json create mode 100644 packages/plugins/@nocobase/plugin-departments/src/locale/ru-RU.json create mode 100644 packages/plugins/@nocobase/plugin-environment-variables/src/locale/ru-RU.json create mode 100644 packages/plugins/@nocobase/plugin-error-handler/src/locale/ru-RU.json create mode 100644 packages/plugins/@nocobase/plugin-field-attachment-url/src/locale/ru-RU.json create mode 100644 packages/plugins/@nocobase/plugin-field-formula/src/locale/ru-RU.json create mode 100644 packages/plugins/@nocobase/plugin-field-m2m-array/src/locale/ru-RU.json create mode 100644 packages/plugins/@nocobase/plugin-field-markdown-vditor/src/locale/ru-RU.json create mode 100644 packages/plugins/@nocobase/plugin-field-sequence/src/locale/ru-RU.json create mode 100644 packages/plugins/@nocobase/plugin-gantt/src/locale/ru-RU.json create mode 100644 packages/plugins/@nocobase/plugin-graph-collection-manager/src/locale/ru-RU.json create mode 100644 packages/plugins/@nocobase/plugin-kanban/src/locale/ru-RU.json create mode 100644 packages/plugins/@nocobase/plugin-license/src/locale/ru-RU.json create mode 100644 packages/plugins/@nocobase/plugin-locale-tester/src/locale/ru-RU.json create mode 100644 packages/plugins/@nocobase/plugin-localization/src/locale/ru-RU.json create mode 100644 packages/plugins/@nocobase/plugin-logger/src/locale/ru-RU.json create mode 100644 packages/plugins/@nocobase/plugin-map/src/locale/ru-RU.json create mode 100644 packages/plugins/@nocobase/plugin-mobile-client/src/locale/ru-RU.json create mode 100644 packages/plugins/@nocobase/plugin-mobile/src/locale/ru-RU.json create mode 100644 packages/plugins/@nocobase/plugin-multi-app-manager/src/locale/ru-RU.json create mode 100644 packages/plugins/@nocobase/plugin-notification-email/src/locale/ru-RU.json create mode 100644 packages/plugins/@nocobase/plugin-notification-in-app-message/src/locale/ru-RU.json create mode 100644 packages/plugins/@nocobase/plugin-notification-manager/src/locale/ru-RU.json create mode 100644 packages/plugins/@nocobase/plugin-public-forms/src/locale/ru-RU.json create mode 100644 packages/plugins/@nocobase/plugin-snapshot-field/src/locale/ru-RU.json create mode 100644 packages/plugins/@nocobase/plugin-text-copy/src/locale/ru-RU.json create mode 100644 packages/plugins/@nocobase/plugin-theme-editor/src/locale/ru-RU.json create mode 100644 packages/plugins/@nocobase/plugin-user-data-sync/src/locale/ru-RU.json create mode 100644 packages/plugins/@nocobase/plugin-users/src/locale/ru-RU.json create mode 100644 packages/plugins/@nocobase/plugin-verification/src/locale/ru-RU.json create mode 100644 packages/plugins/@nocobase/plugin-workflow-action-trigger/src/locale/ru-RU.json create mode 100644 packages/plugins/@nocobase/plugin-workflow-aggregate/src/locale/ru-RU.json create mode 100644 packages/plugins/@nocobase/plugin-workflow-cc/src/locale/ru-RU.json create mode 100644 packages/plugins/@nocobase/plugin-workflow-delay/src/locale/ru-RU.json create mode 100644 packages/plugins/@nocobase/plugin-workflow-dynamic-calculation/src/locale/ru-RU.json create mode 100644 packages/plugins/@nocobase/plugin-workflow-loop/src/locale/ru-RU.json create mode 100644 packages/plugins/@nocobase/plugin-workflow-mailer/src/locale/ru-RU.json create mode 100644 packages/plugins/@nocobase/plugin-workflow-manual/src/locale/ru-RU.json create mode 100644 packages/plugins/@nocobase/plugin-workflow-notification/src/locale/ru-RU.json create mode 100644 packages/plugins/@nocobase/plugin-workflow-request/src/locale/ru-RU.json create mode 100644 packages/plugins/@nocobase/plugin-workflow-response-message/src/locale/ru-RU.json create mode 100644 packages/plugins/@nocobase/plugin-workflow-sql/src/locale/ru-RU.json diff --git a/packages/plugins/@nocobase/plugin-acl/package.json b/packages/plugins/@nocobase/plugin-acl/package.json index 16678adb972..c24eaf466b3 100644 --- a/packages/plugins/@nocobase/plugin-acl/package.json +++ b/packages/plugins/@nocobase/plugin-acl/package.json @@ -1,13 +1,16 @@ { "name": "@nocobase/plugin-acl", "displayName": "Access control", + "displayName.ru-RU": "Контроль доступа", "displayName.zh-CN": "权限控制", "description": "Based on roles, resources, and actions, access control can precisely manage interface configuration permissions, data operation permissions, menu access permissions, and plugin permissions.", + "description.ru-RU": "На основе ролей, ресурсов и действий система контроля доступа может точно управлять разрешениями на изменение интерфейса, работу с данными, доступ к меню и разрешениями для подключаемых модулей.", "description.zh-CN": "基于角色、资源和操作的权限控制,可以精确控制界面配置权限、数据操作权限、菜单访问权限、插件权限。", "version": "1.9.9", "license": "AGPL-3.0", "main": "./dist/server/index.js", "homepage": "https://docs.nocobase.com/handbook/acl", + "homepage.ru-RU": "https://docs-ru.nocobase.com/handbook/acl", "homepage.zh-CN": "https://docs-cn.nocobase.com/handbook/acl", "keywords": [ "Users & permissions" diff --git a/packages/plugins/@nocobase/plugin-acl/src/locale/ru-RU.json b/packages/plugins/@nocobase/plugin-acl/src/locale/ru-RU.json new file mode 100644 index 00000000000..a9dcfaaa421 --- /dev/null +++ b/packages/plugins/@nocobase/plugin-acl/src/locale/ru-RU.json @@ -0,0 +1,18 @@ +{ + "The current user has no roles. Please try another account.": "У текущего пользователя нет ролей. Попробуйте другой аккаунт.", + "The user role does not exist. Please try signing in again": "Роль пользователя не существует. Попробуйте войти снова.", + "New role": "Новая роль", + "Permissions": "Права доступа", + "Desktop menu": "Меню рабочего стола", + "Independent roles": "Независимые роли", + "Allow roles union": "Разрешить объединение ролей", + "Roles union only": "Только объединение ролей", + "Role mode": "Режим ролей", + "Saved successfully": "Успешно сохранено", + "Please select role mode": "Пожалуйста, выберите режим ролей", + "Full permissions": "Полные права", + "Role mode doc": "https://docs.nocobase.com/handbook/acl/manual", + "Do not use role union. Users need to switch between their roles individually.": "Не использовать объединение ролей. Пользователям нужно переключаться между ролями по отдельности.", + "Allow users to use role union, which means they can use permissions from all their roles simultaneously, or switch between individual roles.": "Разрешить пользователям использовать объединение ролей, то есть они могут одновременно использовать права всех своих ролей или переключаться между отдельными ролями.", + "Force users to use only role union. They cannot switch between individual roles.": "Принудительно использовать только объединение ролей. Переключение между отдельными ролями недоступно." +} diff --git a/packages/plugins/@nocobase/plugin-action-bulk-edit/package.json b/packages/plugins/@nocobase/plugin-action-bulk-edit/package.json index 0e1a98a044a..dd0e3a88133 100644 --- a/packages/plugins/@nocobase/plugin-action-bulk-edit/package.json +++ b/packages/plugins/@nocobase/plugin-action-bulk-edit/package.json @@ -3,10 +3,13 @@ "version": "1.9.9", "main": "dist/server/index.js", "homepage": "https://docs.nocobase.com/handbook/action-bulk-edit", + "homepage.ru-RU": "https://docs-ru.nocobase.com/handbook/action-bulk-edit", "homepage.zh-CN": "https://docs-cn.nocobase.com/handbook/action-bulk-edit", "displayName": "Action: Batch edit", + "displayName.ru-RU": "Действие: Массовое редактирование", "displayName.zh-CN": "操作:批量编辑", "description": "Batch edit all records or selected records.", + "description.ru-RU": "Массовое редактирование всех или только выбранных записей.", "description.zh-CN": "对全部数据或选中的数据进行批量编辑。", "license": "AGPL-3.0", "peerDependencies": { diff --git a/packages/plugins/@nocobase/plugin-action-bulk-edit/src/locale/ru-RU.json b/packages/plugins/@nocobase/plugin-action-bulk-edit/src/locale/ru-RU.json new file mode 100644 index 00000000000..d11fb477427 --- /dev/null +++ b/packages/plugins/@nocobase/plugin-action-bulk-edit/src/locale/ru-RU.json @@ -0,0 +1,5 @@ +{ + "Bulk edit": "Массовое редактирование", + "Data will be updated": "Данные будут обновлены", + "Entire collection": "Вся коллекция" +} diff --git a/packages/plugins/@nocobase/plugin-action-bulk-update/package.json b/packages/plugins/@nocobase/plugin-action-bulk-update/package.json index 62f6f90ec18..0affb3417a9 100644 --- a/packages/plugins/@nocobase/plugin-action-bulk-update/package.json +++ b/packages/plugins/@nocobase/plugin-action-bulk-update/package.json @@ -3,10 +3,13 @@ "version": "1.9.9", "main": "dist/server/index.js", "homepage": "https://docs.nocobase.com/handbook/action-bulk-update", + "homepage.ru-RU": "https://docs-ru.nocobase.com/handbook/action-bulk-update", "homepage.zh-CN": "https://docs-cn.nocobase.com/handbook/action-bulk-update", "displayName": "Action: Batch update", + "displayName.ru-RU": "Действие: Массовое обновление", "displayName.zh-CN": "操作:批量更新", "description": "Batch update all records or selected records.", + "description.ru-RU": "Массовое обновление всех или только выбранных записей.", "description.zh-CN": "对全部数据或选中的数据进行批量更新。", "license": "AGPL-3.0", "peerDependencies": { diff --git a/packages/plugins/@nocobase/plugin-action-bulk-update/src/locale/ru-RU.json b/packages/plugins/@nocobase/plugin-action-bulk-update/src/locale/ru-RU.json new file mode 100644 index 00000000000..496ec7a2b82 --- /dev/null +++ b/packages/plugins/@nocobase/plugin-action-bulk-update/src/locale/ru-RU.json @@ -0,0 +1,6 @@ +{ + "After successful bulk update": "После успешного массового обновления", + "Bulk update": "Массовое обновление", + "Entire collection": "Вся коллекция", + "Please select the records to be updated": "Пожалуйста, выберите записи для обновления" +} diff --git a/packages/plugins/@nocobase/plugin-action-custom-request/package.json b/packages/plugins/@nocobase/plugin-action-custom-request/package.json index 1ec90963f65..7ff544fae24 100644 --- a/packages/plugins/@nocobase/plugin-action-custom-request/package.json +++ b/packages/plugins/@nocobase/plugin-action-custom-request/package.json @@ -3,10 +3,13 @@ "version": "1.9.9", "main": "dist/server/index.js", "homepage": "https://docs.nocobase.com/handbook/action-custom-request", + "homepage.ru-RU": "https://docs-ru.nocobase.com/handbook/action-custom-request", "homepage.zh-CN": "https://docs-cn.nocobase.com/handbook/action-custom-request", "displayName": "Action: Custom request", + "displayName.ru-RU": "Действие: Пользовательский запрос", "displayName.zh-CN": "操作:自定义请求", "description": "Sending a request to any HTTP service supports sending context data to the target service.", + "description.ru-RU": "Отправка запроса к любому HTTP-сервису, поддерживается отправка контекстных данных в целевой сервис.", "description.zh-CN": "向任意 HTTP 服务发送请求,支持将上下文数据发送给目标服务。", "license": "AGPL-3.0", "devDependencies": { diff --git a/packages/plugins/@nocobase/plugin-action-custom-request/src/locale/ru-RU.json b/packages/plugins/@nocobase/plugin-action-custom-request/src/locale/ru-RU.json new file mode 100644 index 00000000000..74c7b908d16 --- /dev/null +++ b/packages/plugins/@nocobase/plugin-action-custom-request/src/locale/ru-RU.json @@ -0,0 +1,26 @@ +{ + "Access control": "Контроль доступа", + "Add parameter": "Добавить параметр", + "Add request header": "Добавить заголовок запроса", + "Body": "Тело", + "Custom Request": "Пользовательский запрос", + "Enter description info": "Введите описание", + "Format": "Формат", + "Headers": "Заголовки", + "HTTP method": "Метод HTTP", + "If not set, all roles can see this action": "Если не указано, все роли смогут видеть это действие", + "Input request data": "Ввести данные запроса", + "Insert": "Вставить", + "ms": "мс", + "Only support standard JSON data": "Поддерживаются только стандартные данные JSON", + "Parameters": "Параметры", + "Please configure the request settings first": "Пожалуйста, сначала настройте параметры запроса", + "Request settings": "Настройки запроса", + "Roles": "Роли", + "Timeout config": "Настройка тайм-аута", + "Title": "Заголовок", + "URL": "URL", + "Use variable": "Использовать переменную", + "When the HTTP method is Post, Put or Patch, and this custom request inside the form, the request body will be automatically filled in with the form data": "Когда метод HTTP — Post, Put или Patch, и этот пользовательский запрос находится внутри формы, тело запроса автоматически заполняется данными формы", + "\"Content-Type\" only support \"application/json\", and no need to specify": "\"Content-Type\" поддерживает только \"application/json\", указывать не требуется" +} diff --git a/packages/plugins/@nocobase/plugin-action-duplicate/package.json b/packages/plugins/@nocobase/plugin-action-duplicate/package.json index c4df9a68608..016da599860 100644 --- a/packages/plugins/@nocobase/plugin-action-duplicate/package.json +++ b/packages/plugins/@nocobase/plugin-action-duplicate/package.json @@ -3,11 +3,14 @@ "version": "1.9.9", "main": "dist/server/index.js", "homepage": "https://docs.nocobase.com/handbook/action-duplicate", + "homepage.ru-RU": "https://docs.nocobase.ru/handbook/action-duplicate", "homepage.zh-CN": "https://docs-cn.nocobase.com/handbook/action-duplicate", "displayName": "Action: Duplicate record", + "displayName.ru-RU": "Действие: Дублирование записи", "displayName.zh-CN": "操作:复制记录", "description": "Duplicate a record, you can either duplicate it into a form and edit it before saving it, or you can duplicate it directly to generate a new record.", "description.zh-CN": "复制一条记录,可以复制到表单中编辑后再提交,也可以直接复制并生成一条新记录。", + "description.ru-RU": "Дублирование записи: можно скопировать запись в форму для редактирования перед сохранением или сразу создать новую запись-дубликат.", "license": "AGPL-3.0", "peerDependencies": { "@nocobase/client": "1.x", diff --git a/packages/plugins/@nocobase/plugin-action-export/package.json b/packages/plugins/@nocobase/plugin-action-export/package.json index 0d596995805..cbc43107d76 100644 --- a/packages/plugins/@nocobase/plugin-action-export/package.json +++ b/packages/plugins/@nocobase/plugin-action-export/package.json @@ -2,13 +2,16 @@ "name": "@nocobase/plugin-action-export", "displayName": "Action: Export records", "displayName.zh-CN": "操作:导出记录", + "displayName.ru-RU": "Действие: Экспорт записей", "description": "Export filtered records to excel, you can configure which fields to export.", + "description.ru-RU": "Экспорт в Excel: можно настроить, какие поля будут экспортироваться.", "description.zh-CN": "导出筛选后的记录到 Excel 中,可以配置导出哪些字段。", "version": "1.9.9", "license": "AGPL-3.0", "main": "./dist/server/index.js", "homepage": "https://docs.nocobase.com/handbook/action-export", "homepage.zh-CN": "https://docs-cn.nocobase.com/handbook/action-export", + "homepage.ru-RU": "https://docs.nocobase.ru/handbook/action-export", "devDependencies": { "@formily/antd-v5": "1.x", "@formily/react": "2.x", diff --git a/packages/plugins/@nocobase/plugin-action-export/src/locale/ru-RU.json b/packages/plugins/@nocobase/plugin-action-export/src/locale/ru-RU.json new file mode 100644 index 00000000000..40229df781f --- /dev/null +++ b/packages/plugins/@nocobase/plugin-action-export/src/locale/ru-RU.json @@ -0,0 +1,7 @@ +{ + "Export warning": "Вы можете экспортировать до {{limit}} строк данных за раз, излишки будут проигнорированы.", + "Start export": "Начать экспорт", + "True": "True", + "False": "False", + "Another export action is running, please try again later.": "Действие экспорта уже выполняется, попробуйте позже." +} diff --git a/packages/plugins/@nocobase/plugin-action-import/package.json b/packages/plugins/@nocobase/plugin-action-import/package.json index 40a3f29d053..ae6bee7062b 100644 --- a/packages/plugins/@nocobase/plugin-action-import/package.json +++ b/packages/plugins/@nocobase/plugin-action-import/package.json @@ -2,12 +2,15 @@ "name": "@nocobase/plugin-action-import", "displayName": "Action: Import records", "displayName.zh-CN": "操作:导入记录", + "displayName.ru-RU": "Действие: Импорт записей", "description": "Import records using excel templates. You can configure which fields to import and templates will be generated automatically.", + "description.ru-RU": "Импорт записей с помощью шаблонов Excel: можно настроить, какие поля импортировать, шаблоны будут генерироваться автоматически.", "description.zh-CN": "使用 Excel 模板导入数据,可以配置导入哪些字段,自动生成模板。", "version": "1.9.9", "license": "AGPL-3.0", "main": "./dist/server/index.js", "homepage": "https://docs.nocobase.com/handbook/action-import", + "homepage.ru-RU": "https://docs.nocobase.ru/handbook/action-import", "homepage.zh-CN": "https://docs-cn.nocobase.com/handbook/action-import", "devDependencies": { "@ant-design/icons": "5.x", diff --git a/packages/plugins/@nocobase/plugin-action-import/src/locale/ru-RU.json b/packages/plugins/@nocobase/plugin-action-import/src/locale/ru-RU.json new file mode 100644 index 00000000000..3e1ffebfa65 --- /dev/null +++ b/packages/plugins/@nocobase/plugin-action-import/src/locale/ru-RU.json @@ -0,0 +1,51 @@ +{ + "Add importable field": "Добавить импортируемое поле", + "another import action is running, please try again later.": "Действие импорта уже выполняется, попробуйте позже.", + "can not find value": "Значение не найдено", + "Columns configuration is empty": "Конфигурация столбцов пуста", + "Custom column title": "Пользовательский заголовок столбца", + "Done": "Готово", + "Download template": "Скачать шаблон", + "Download tips": "- Скачайте шаблон и заполните данные в соответствии с форматом \r\n - Импортируется только первый лист \r\n - Не изменяйте заголовки шаблона, чтобы избежать ошибок импорта", + "Excel data importing": "Импорт данных Excel", + "Failed to import row {{row}}, {{message}}, row data: {{data}}": "Не удалось импортировать строку {{row}}, {{message}}, данные строки: {{data}}", + "Field description": "Описание поля", + "Field description placeholder": "Введите описание поля", + "Field not found: {{field}}": "Поле не найдено: {{field}}", + "Field {{fieldName}} does not exist": "Поле {{fieldName}} не существует", + "File size cannot exceed 10M": "Размер файла не должен превышать 10 МБ", + "Header mismatch at column {{column}}: expected \"{{expected}}\", but got \"{{actual}}\"": "Несоответствие заголовка в столбце {{column}}: ожидалось \"{{expected}}\", получено \"{{actual}}\"", + "Headers not found. Expected headers: {{headers}}": "Заголовки не найдены. Ожидаемые заголовки: {{headers}}", + "Illegal percentage format": "Недопустимый формат процента", + "Import": "Импорт", + "Import Data": "Импортировать данные", + "Import completed": "Импорт завершен", + "Import explain": "Руководство", + "Import warnings": "Вы можете импортировать до {{limit}} строк данных за раз, излишки будут проигнорированы.", + "ImportResult": "Результат импорта", + "Imported template does not match, please download again.": "Импортированный шаблон не соответствует, пожалуйста, скачайте снова.", + "import-error": "Не удалось импортировать строку {{rowIndex}}, данные строки: {{rowData}}, причина: {{causeMessage}}", + "Incorrect date format": "Неверный формат даты", + "Incorrect email format": "Неверный формат email", + "Incorrect time format": "Неверный формат времени", + "No": "Нет", + "No data to import": "Нет данных для импорта", + "Only one file is allowed to be uploaded": "Разрешена загрузка только одного файла", + "password is empty": "Пароль пуст", + "Please select": "Пожалуйста, выберите", + "Please upload the file of Excel": "Пожалуйста, загрузите файл Excel", + "Skipped records": "Пропущенные записи", + "Start import": "Начать импорт", + "Step 1: Download template": "Шаг 1: Скачать шаблон", + "Step 2: Upload Excel": "Шаг 2: Загрузить Excel", + "Step 3: Import options": "Шаг 3: Параметры импорта", + "Successfully imported": "Успешно импортировано", + "Task result": "Результат задачи", + "To download the failure data": "Скачать данные об ошибках", + "Total records": "Всего записей", + "Updated records": "Обновленные записи", + "Upload placeholder": "Перетащите файл сюда или нажмите для загрузки.", + "View result": "Просмотреть результат", + "Yes": "Да", + "{{successCount}} records have been successfully imported": "{{successCount}} записей успешно импортировано" + } diff --git a/packages/plugins/@nocobase/plugin-action-print/package.json b/packages/plugins/@nocobase/plugin-action-print/package.json index eb9a33f4730..25c7fcf3b6c 100644 --- a/packages/plugins/@nocobase/plugin-action-print/package.json +++ b/packages/plugins/@nocobase/plugin-action-print/package.json @@ -3,10 +3,13 @@ "version": "1.9.9", "main": "dist/server/index.js", "homepage": "https://docs.nocobase.com/handbook/action-print", + "homepage.ru-RU": "https://docs.nocobase.ru/handbook/action-print", "homepage.zh-CN": "https://docs-cn.nocobase.com/handbook/action-print", "displayName": "Action: Print", + "displayName.ru-RU": "Действие: Печать", "displayName.zh-CN": "操作:打印", "description": "Calls the browser's print function to print a record.", + "description.ru-RU": "Вызов функции для печати выбранной записи или для быстрого экспорта в формат .pdf.", "description.zh-CN": "调用浏览器的打印功能实现单条数据的打印。", "license": "AGPL-3.0", "peerDependencies": { diff --git a/packages/plugins/@nocobase/plugin-ai/package.json b/packages/plugins/@nocobase/plugin-ai/package.json index 8c7777c6e44..a84c89ec1bf 100644 --- a/packages/plugins/@nocobase/plugin-ai/package.json +++ b/packages/plugins/@nocobase/plugin-ai/package.json @@ -1,11 +1,16 @@ { "name": "@nocobase/plugin-ai", "displayName": "AI integration", + "displayName.ru-RU": "AI: Интеграция", "displayName.zh-CN": "AI 集成", "description": "Support integration with AI services, providing AI-related workflow nodes to enhance business processing capabilities.", + "description.ru-RU": "Поддержка интеграции с AI-сервисами: предоставляются AI-узлы для рабочих процессов, расширяя возможности бизнес-обработки.", "description.zh-CN": "支持接入 AI 服务,提供 AI 相关的工作流节点,增强业务处理能力。", "version": "1.9.9", "main": "dist/server/index.js", + "homepage": "https://docs.nocobase.com/handbook/action-ai", + "homepage.ru-RU": "https://docs-ru.nocobase.com/handbook/action-ai", + "homepage.zh-CN": "https://docs-cn.nocobase.com/handbook/action-ai", "peerDependencies": { "@nocobase/client": "1.x", "@nocobase/plugin-workflow": "1.x", diff --git a/packages/plugins/@nocobase/plugin-ai/src/locale/ru-RU.json b/packages/plugins/@nocobase/plugin-ai/src/locale/ru-RU.json new file mode 100644 index 00000000000..ad05b52d870 --- /dev/null +++ b/packages/plugins/@nocobase/plugin-ai/src/locale/ru-RU.json @@ -0,0 +1,25 @@ +{ + "Add content": "Добавить контент", + "Add prompt": "Добавить запрос", + "AI integration": "Интеграция с ИИ", + "Frequency penalty description": "Число от -2.0 до 2.0. Положительные значения штрафуют новые токены в зависимости от их частоты в тексте, уменьшая вероятность повторения модели.", + "Get models list failed, you can enter a model name manually.": "Не удалось получить список моделей, вы можете ввести имя модели вручную.", + "Image": "Изображение", + "LLM service": "Сервис LLM", + "LLM services": "Сервисы LLM", + "Max completion tokens description": "Верхняя граница количества токенов, которые могут быть сгенерированы для завершения, включая видимые выходные токены и токены рассуждений.", + "Max retries": "Максимум попыток", + "Message": "Сообщение", + "Messages": "Сообщения", + "Model": "Модель", + "Presence penalty description": "Число от -2.0 до 2.0. Положительные значения штрафуют новые токены в зависимости от их присутствия в тексте, увеличивая вероятность обсуждения новых тем.", + "Provider": "Провайдер", + "Response format description": "Важно: при использовании режима JSON необходимо также указать модели генерировать JSON через системное или пользовательское сообщение.", + "Role": "Роль", + "Structured output": "Структурированный вывод", + "Temperature description": "Температура выборки от 0 до 2. Высокие значения (например, 0.8) делают вывод более случайным, низкие (например, 0.2) — более сфокусированным и детерминированным.", + "Text": "Текст", + "Timout (ms)": "Тайм-аут (мс)", + "Top P description": "Альтернатива выборке с температурой — ядерная выборка, где модель учитывает токены с массой вероятности top_p. Например, 0.1 означает учет только 10% наиболее вероятных токенов.", + "UID": "UID" + } diff --git a/packages/plugins/@nocobase/plugin-api-doc/package.json b/packages/plugins/@nocobase/plugin-api-doc/package.json index c41c265be84..0297be21e01 100644 --- a/packages/plugins/@nocobase/plugin-api-doc/package.json +++ b/packages/plugins/@nocobase/plugin-api-doc/package.json @@ -2,12 +2,15 @@ "name": "@nocobase/plugin-api-doc", "version": "1.9.9", "displayName": "API documentation", + "displayName.ru-RU": "Документация API", "displayName.zh-CN": "API 文档", "description": "An OpenAPI documentation generator for NocoBase HTTP API.", + "description.ru-RU": "Генератор документации OpenAPI для HTTP API системы NocoBase.", "description.zh-CN": "NocoBase HTTP API 的 OpenAPI 文档生成器。", "license": "AGPL-3.0", "main": "./dist/server/index.js", "homepage": "https://docs.nocobase.com/handbook/api-doc", + "homepage.ru-RU": "https://docs-ru.nocobase.com/handbook/api-doc", "homepage.zh-CN": "https://docs-cn.nocobase.com/handbook/api-doc", "types": "./dist/server/index.d.ts", "devDependencies": { diff --git a/packages/plugins/@nocobase/plugin-api-doc/src/locale/ru-RU.json b/packages/plugins/@nocobase/plugin-api-doc/src/locale/ru-RU.json new file mode 100644 index 00000000000..dfbf590d864 --- /dev/null +++ b/packages/plugins/@nocobase/plugin-api-doc/src/locale/ru-RU.json @@ -0,0 +1,5 @@ +{ + "API documentation": "Документация API", + "Documentation": "Документация", + "Select a definition": "Выбрать определение" +} diff --git a/packages/plugins/@nocobase/plugin-api-keys/package.json b/packages/plugins/@nocobase/plugin-api-keys/package.json index b5f9c27006b..8547fd758e5 100644 --- a/packages/plugins/@nocobase/plugin-api-keys/package.json +++ b/packages/plugins/@nocobase/plugin-api-keys/package.json @@ -1,13 +1,16 @@ { "name": "@nocobase/plugin-api-keys", "displayName": "Auth: API keys", + "displayName.ru-RU": "Аутентификация: API ключи", "displayName.zh-CN": "认证:API 密钥", "description": "Allows users to use API key to access application's HTTP API", + "description.ru-RU": "Позволяет пользователям использовать API ключ для доступа к HTTP API приложения", "description.zh-CN": "允许用户使用 API 密钥访问应用的 HTTP API", "version": "1.9.9", "license": "AGPL-3.0", "main": "./dist/server/index.js", "homepage": "https://docs.nocobase.com/handbook/api-keys", + "homepage.ru-RU": "https://docs-ru.nocobase.com/handbook/api-keys", "homepage.zh-CN": "https://docs-cn.nocobase.com/handbook/api-keys", "keywords": [ "Authentication" diff --git a/packages/plugins/@nocobase/plugin-api-keys/src/locale/ru-RU.json b/packages/plugins/@nocobase/plugin-api-keys/src/locale/ru-RU.json new file mode 100644 index 00000000000..6a80311e4dd --- /dev/null +++ b/packages/plugins/@nocobase/plugin-api-keys/src/locale/ru-RU.json @@ -0,0 +1,21 @@ +{ + "1 Day": "1 день", + "30 Days": "30 дней", + "7 Days": "7 дней", + "90 Days": "90 дней", + "Add API key": "Добавить ключ API", + " Allow only your own roles to be selected": "Разрешить выбор только собственных ролей", + "API key created successfully": "Ключ API успешно создан", + "API keys": "Ключи API", + "Created at": "Создано", + "Custom": "Пользовательский", + "Delete API key": "Удалить ключ API", + "Expiration": "Срок действия", + "Key name": "Название ключа", + "Keys manager": "Менеджер ключей", + "Make sure to copy your personal access key now as you will not be able to see this again.": "Убедитесь, что вы скопировали свой личный ключ доступа сейчас, так как вы не сможете увидеть его снова.", + "Never": "Никогда", + "Never expires": "Без срока действия", + "Role": "Роль", + "Role not found": "Роль не найдена" + } diff --git a/packages/plugins/@nocobase/plugin-async-task-manager/package.json b/packages/plugins/@nocobase/plugin-async-task-manager/package.json index 147c7db2cbb..0a849a42619 100644 --- a/packages/plugins/@nocobase/plugin-async-task-manager/package.json +++ b/packages/plugins/@nocobase/plugin-async-task-manager/package.json @@ -1,8 +1,10 @@ { "name": "@nocobase/plugin-async-task-manager", "displayName": "Async task manager", + "displayName.ru-RU": "Менеджер асинхронных задач", "displayName.zh-CN": "异步任务管理器", "description": "Manage and monitor asynchronous tasks such as data import/export. Support task progress tracking and notification.", + "description.ru-RU": "Управление асинхронными задачами и мониторинг (например, импорт/экспорт данных). Поддержка отслеживания прогресса и уведомлений о задачах.", "description.zh-CN": "管理和监控数据导入导出等异步任务。支持任务进度跟踪和通知。", "version": "1.9.9", "main": "dist/server/index.js", diff --git a/packages/plugins/@nocobase/plugin-async-task-manager/src/locale/ru-RU.json b/packages/plugins/@nocobase/plugin-async-task-manager/src/locale/ru-RU.json new file mode 100644 index 00000000000..119434ff419 --- /dev/null +++ b/packages/plugins/@nocobase/plugin-async-task-manager/src/locale/ru-RU.json @@ -0,0 +1,45 @@ +{ + "Actions": "Действия", + "Cancel": "Отменить", + "Cancelled": "Отменено", + "Cancelling": "Отмена", + "Close": "Закрыть", + "Completed": "Завершено", + "Confirm": "Подтвердить", + "Confirm cancel": "Подтвердить отмену", + "Confirm cancel description": "Описание подтверждения отмены", + "Created at": "Создано", + "Data": "Данные", + "Download": "Скачать", + "Error Details": "Детали ошибки", + "Error code": "Код ошибки", + "Error details": "Детали ошибки", + "Export": "Экспорт", + "Export {collection} attachments": "Экспорт вложений {collection}", + "Export {collection} data": "Экспорт данных {collection}", + "Failed": "Не удалось", + "Import": "Импорт", + "Import completed": "Импорт завершен", + "Import details": "Детали импорта", + "Import result": "Результат импорта", + "Import summary": "Сводка импорта", + "Import {collection} data": "Импорт данных {collection}", + "ImportResult": "Результат импорта", + "Imported": "Импортировано", + "OK": "ОК", + "Processing": "Обработка", + "Skipped records": "Пропущенные записи", + "Status": "Статус", + "Successfully imported": "Успешно импортировано", + "Task": "Задача", + "Task cancelled": "Задача отменена", + "Task completed": "Задача завершена", + "Task failed": "Задача не выполнена", + "Task result": "Результат задачи", + "Total records": "Всего записей", + "Type": "Тип", + "Unknown error": "Неизвестная ошибка", + "Updated records": "Обновленные записи", + "View result": "Просмотреть результат", + "Waiting": "Ожидание" + } diff --git a/packages/plugins/@nocobase/plugin-audit-logs/package.json b/packages/plugins/@nocobase/plugin-audit-logs/package.json index 2e9350c2279..b2e00bcd4ef 100644 --- a/packages/plugins/@nocobase/plugin-audit-logs/package.json +++ b/packages/plugins/@nocobase/plugin-audit-logs/package.json @@ -2,11 +2,14 @@ "name": "@nocobase/plugin-audit-logs", "version": "1.9.9", "displayName": "Audit logs (deprecated)", + "displayName.ru-RU": "Журнал аудита (устарел)", "displayName.zh-CN": "审计日志(废弃)", "description": "This plugin is deprecated. There will be a new audit log plugin in the future.", + "description.ru-RU": "Этот плагин устарел. В будущем будет выпущен новый плагин для журнала аудита.", "description.zh-CN": "该插件已废弃,请勿使用,未来将有新的审计日志插件。", "main": "./dist/server/index.js", "homepage": "https://docs.nocobase.com/handbook/audit-logs", + "homepage.ru-RU": "https://docs-ru.nocobase.com/handbook/audit-logs", "homepage.zh-CN": "https://docs-cn.nocobase.com/handbook/audit-logs", "license": "AGPL-3.0", "devDependencies": { diff --git a/packages/plugins/@nocobase/plugin-audit-logs/src/locale/ru-RU.json b/packages/plugins/@nocobase/plugin-audit-logs/src/locale/ru-RU.json new file mode 100644 index 00000000000..403425a0ab3 --- /dev/null +++ b/packages/plugins/@nocobase/plugin-audit-logs/src/locale/ru-RU.json @@ -0,0 +1,3 @@ +{ + "Details of changes": "Детали изменений" +} diff --git a/packages/plugins/@nocobase/plugin-auth-sms/package.json b/packages/plugins/@nocobase/plugin-auth-sms/package.json index 5b14bb00095..8e8da7f022e 100644 --- a/packages/plugins/@nocobase/plugin-auth-sms/package.json +++ b/packages/plugins/@nocobase/plugin-auth-sms/package.json @@ -1,12 +1,15 @@ { "name": "@nocobase/plugin-auth-sms", "displayName": "Auth: SMS", + "displayName.ru-RU": "Аутентификация: SMS", "displayName.zh-CN": "认证:短信", "description": "SMS authentication.", + "description.ru-RU": "Аутентификация по SMS.", "description.zh-CN": "通过短信验证码认证身份。", "version": "1.9.9", "main": "./dist/server/index.js", "homepage": "https://docs.nocobase.com/handbook/auth-sms", + "homepage.ru-RU": "https://docs-ru.nocobase.com/handbook/auth-sms", "homepage.zh-CN": "https://docs-cn.nocobase.com/handbook/auth-sms", "license": "AGPL-3.0", "devDependencies": { diff --git a/packages/plugins/@nocobase/plugin-auth-sms/src/locale/ru-RU.json b/packages/plugins/@nocobase/plugin-auth-sms/src/locale/ru-RU.json new file mode 100644 index 00000000000..10f2d775f9f --- /dev/null +++ b/packages/plugins/@nocobase/plugin-auth-sms/src/locale/ru-RU.json @@ -0,0 +1,7 @@ +{ + "Sign in via SMS": "Вход через SMS", + "Sign up automatically when the user does not exist": "Автоматическая регистрация, если пользователь не существует", + "SMS": "SMS", + "User will be registered automatically if not exists.": "Пользователь будет автоматически зарегистрирован, если не существует.", + "Verifier": "Верификатор" + } diff --git a/packages/plugins/@nocobase/plugin-auth/package.json b/packages/plugins/@nocobase/plugin-auth/package.json index 807f6c62c7b..b3a720f8ae2 100644 --- a/packages/plugins/@nocobase/plugin-auth/package.json +++ b/packages/plugins/@nocobase/plugin-auth/package.json @@ -3,6 +3,7 @@ "version": "1.9.9", "main": "./dist/server/index.js", "homepage": "https://docs.nocobase.com/handbook/auth", + "homepage.ru-RU": "https://docs-ru.nocobase.com/handbook/auth", "homepage.zh-CN": "https://docs-cn.nocobase.com/handbook/auth", "devDependencies": { "@ant-design/icons": "5.x", @@ -24,8 +25,10 @@ "@nocobase/test": "1.x" }, "displayName": "Authentication", + "displayName.ru-RU": "Аутентификация пользователей", "displayName.zh-CN": "用户认证", "description": "User authentication management, including password, SMS, and support for Single Sign-On (SSO) protocols, with extensibility.", + "description.ru-RU": "Управление аутентификацией пользователей: пароли, SMS, поддержка протоколов единого входа (SSO) и возможность расширения.", "description.zh-CN": "用户认证管理,包括基础的密码认证、短信认证、SSO 协议的认证等,可扩展。", "gitHead": "d0b4efe4be55f8c79a98a331d99d9f8cf99021a1", "keywords": [ diff --git a/packages/plugins/@nocobase/plugin-auth/src/locale/ru-RU.json b/packages/plugins/@nocobase/plugin-auth/src/locale/ru-RU.json new file mode 100644 index 00000000000..9d576f51925 --- /dev/null +++ b/packages/plugins/@nocobase/plugin-auth/src/locale/ru-RU.json @@ -0,0 +1,81 @@ +{ + "1. Select notification channel": "1. Выберите канал уведомлений", + "2. Configure reset email": "2. Настройте email для сброса", + "add one first": "сначала добавьте", + "Allow to sign in with": "Разрешить вход с помощью", + "Allow to sign up": "Разрешить регистрацию", + "At least one of the username or email fields is required": "Требуется хотя бы одно из полей: имя пользователя или email", + "Auth Type": "Тип аутентификации", + "Auth UID": "UID аутентификации", + "Authentication": "Аутентификация", + "Authenticators": "Аутентификаторы", + "Back to login": "Вернуться к входу", + "Content type": "Тип контента", + "Days": "Дни", + "defaultResetPasswordEmailContentHTML": "

Привет {{$user.username}},

\n\n

Мы получили запрос на сброс пароля для вашей учетной записи {{$systemSettings.title}}.

\n\n

Пожалуйста, нажмите на ссылку ниже, чтобы установить новый пароль:

\n\n

\n Сбросить пароль\n

\n\n

\n Если вы не запрашивали сброс пароля, пожалуйста, проигнорируйте это письмо. Ваш пароль останется неизменным.\n

\n\n

\n Обратите внимание: Для вашей безопасности эта ссылка для сброса пароля истечет через {{$resetLinkExpiration}} минут.\n

\n\n

Если у вас возникли проблемы со сбросом пароля, пожалуйста, обратитесь в нашу службу поддержки.

\n\n

\n Спасибо,
\n Команда {{$systemSettings.title}}\n

", + "defaultResetPasswordEmailContentText": "Привет {{$user.username}},\n\nМы получили запрос на сброс пароля для вашей учетной записи {{$systemSettings.title}}.\n\nПожалуйста, нажмите на ссылку ниже, чтобы установить новый пароль:\n\n{{$resetLink}}\n\nЕсли вы не запрашивали сброс пароля, пожалуйста, проигнорируйте это письмо. Ваш пароль останется неизменным.\n\nОбратите внимание: Для вашей безопасности эта ссылка для сброса пароля истечет через {{$resetLinkExpiration}} минут.\n\nЕсли у вас возникли проблемы со сбросом пароля, пожалуйста, обратитесь в нашу службу поддержки.\n\nСпасибо, Команда {{$systemSettings.title}}", + "defaultResetPasswordEmailSubject": "Сброс пароля для {{$systemSettings.title}}", + "Email channel not found": "Email канал не найден", + "Enable forget password": "Включить забытый пароль", + "Expired token refresh limit": "Лимит обновления истекшего токена", + "Forgot password": "Забыли пароль", + "Go to login": "Перейти к входу", + "Hours": "Часы", + "In configuration mode, the entire column becomes transparent. In non-configuration mode, the entire column will be hidden. Even if the entire column is hidden, its configured default values and other settings will still take effect.": "В режиме конфигурации весь столбец становится прозрачным. В неконфигурационном режиме столбец будет скрыт. Даже если столбец скрыт, заданные значения по умолчанию и другие настройки останутся в силе.", + "Minutes": "Минуты", + "Missing X-Authenticator in request header": "Отсутствует X-Authenticator в заголовке запроса", + "No authentication methods available.": "Методы аутентификации недоступны.", + "No notification channels found. Please ": "Каналы уведомлений не найдены. Пожалуйста, ", + "Not a valid cellphone number, please re-enter": "Недопустимый номер телефона, пожалуйста, введите снова", + "Not allowed to reset password": "Сброс пароля не разрешен", + "Not allowed to sign up": "Регистрация не разрешена", + "Password": "Пароль", + "Password is not allowed to be changed": "Изменение пароля не разрешено", + "Plain text": "Обычный текст", + "Please enter a password": "Пожалуйста, введите пароль", + "Please enter a valid email": "Пожалуйста, введите действительный email", + "Please enter a valid username": "Пожалуйста, введите действительное имя пользователя", + "Please enter new password": "Пожалуйста, введите новый пароль", + "Please enter the same password again": "Пожалуйста, введите тот же пароль снова", + "Please enter your email": "Пожалуйста, введите ваш email", + "Please enter your username or email": "Пожалуйста, введите имя пользователя или email", + "Please keep and enable at least one authenticator": "Пожалуйста, сохраните и включите хотя бы один аутентификатор", + "Reset email sent successfully": "Email для сброса успешно отправлен", + "Reset link expiration (minutes)": "Срок действия ссылки сброса (минуты)", + "Reset link has expired": "Ссылка сброса истекла", + "Reset password": "Сбросить пароль", + "Reset password email": "Email для сброса пароля", + "Reset password link": "Ссылка сброса пароля", + "Saved successfully!": "Успешно сохранено!", + "Seconds": "Секунды", + "Send reset email": "Отправить email для сброса", + "Session validity period": "Срок действия сессии", + "Show": "Показать", + "Sign in via email": "Войти через email", + "Sign in via password": "Войти через пароль", + "Sign up form": "Форма регистрации", + "Sign up settings": "Настройки регистрации", + "Sign-in": "Вход", + "Subject": "Тема", + "The authentication allows users to sign in via username or email.": "Аутентификация позволяет пользователям входить через имя пользователя или email.", + "The maximum time limit allowed for refreshing a Token after it expires. After this time limit, the token cannot be automatically renewed, and the user needs to log in again.": "Максимальный срок, разрешенный для обновления токена после истечения. После этого срока токен не может быть автоматически обновлен, и пользователю нужно войти снова.", + "The maximum valid time for each user login. During the session validity, the Token will be automatically updated. After the timeout, the user is required to log in again.": "Максимальное время действия каждого входа пользователя. В течение срока действия сессии токен будет автоматически обновляться. После истечения времени пользователю потребуется войти снова.", + "The notification channel used to send the reset password email, only support email channel": "Канал уведомлений, используемый для отправки email сброса пароля, поддерживает только email канал", + "The password is inconsistent, please re-enter": "Пароли не совпадают, пожалуйста, введите снова", + "The password is incorrect, please re-enter": "Пароль неверный, пожалуйста, введите снова", + "The passwords entered twice are inconsistent": "Введенные пароли не совпадают", + "The phone number has been registered, please login directly": "Номер телефона зарегистрирован, пожалуйста, войдите напрямую", + "The phone number is not registered, please register first": "Номер телефона не зарегистрирован, пожалуйста, зарегистрируйтесь сначала", + "The username or email is incorrect, please re-enter": "Имя пользователя или email неверны, пожалуйста, введите снова", + "The username/email or password is incorrect, please re-enter": "Имя пользователя/email или пароль неверны, пожалуйста, введите снова", + "The validity period of each issued API Token. After the Token expires, if it is within the session validity period and has not exceeded the refresh limit, the server will automatically issue a new Token to maintain the user session, otherwise the user is required to log in again. (Each Token can only be refreshed once)": "Срок действия каждого выданного API-токена. После истечения срока токена, если он находится в пределах срока действия сессии и не превысил лимит обновления, сервер автоматически выдаст новый токен для поддержания сессии, иначе пользователю потребуется войти снова. (Каждый токен может быть обновлен только один раз)", + "Token expired": "Токен истек", + "Token policy": "Политика токенов", + "Token validity period": "Срок действия токена", + "Token validity period must be less than session validity period!": "Срок действия токена должен быть меньше срока действия сессии!", + "Unauthenticated. Please sign in to continue.": "Пожалуйста, войдите, чтобы продолжить.", + "User not found": "Пользователь не найден", + "User not found. Please sign in again to continue.": "Пользователь не найден. Пожалуйста, войдите снова, чтобы продолжить.", + "Username/Email": "Имя пользователя/Email", + "Your session has expired. Please sign in again.": "Ваша сессия истекла. Пожалуйста, войдите снова." + } diff --git a/packages/plugins/@nocobase/plugin-backup-restore/package.json b/packages/plugins/@nocobase/plugin-backup-restore/package.json index c3320b3055d..fbfd92c15b6 100644 --- a/packages/plugins/@nocobase/plugin-backup-restore/package.json +++ b/packages/plugins/@nocobase/plugin-backup-restore/package.json @@ -2,12 +2,15 @@ "name": "@nocobase/plugin-backup-restore", "displayName": "App backup & restore (deprecated)", "displayName.zh-CN": "应用的备份与还原(废弃)", + "displayName.ru-RU": "Резервное копирование и восстановление приложения (устаревшее)", "description": "Backup and restore applications for scenarios such as application replication, migration, and upgrades.", + "description.ru-RU": "Резервное копирование и восстановление приложений для задач репликации, миграции и обновления.", "description.zh-CN": "备份和还原应用,可用于应用的复制、迁移、升级等场景。", "version": "1.9.9", "license": "AGPL-3.0", "main": "./dist/server/index.js", "homepage": "https://docs.nocobase.com/handbook/backup-restore", + "homepage.ru-RU": "https://docs-ru.nocobase.com/handbook/backup-restore", "homepage.zh-CN": "https://docs-cn.nocobase.com/handbook/backup-restore", "repository": { "type": "git", diff --git a/packages/plugins/@nocobase/plugin-backup-restore/src/locale/ru-RU.json b/packages/plugins/@nocobase/plugin-backup-restore/src/locale/ru-RU.json new file mode 100644 index 00000000000..b1494e3f149 --- /dev/null +++ b/packages/plugins/@nocobase/plugin-backup-restore/src/locale/ru-RU.json @@ -0,0 +1,50 @@ +{ + "Backed up successfully": "Резервное копирование выполнено успешно", + "Backing up": "Создание резервной копии", + "Backup": "Резервное копирование", + "Backup & Restore": "Резервное копирование и восстановление", + "Backup file": "Файл резервной копии", + "Backup instructions": "Инструкции по резервному копированию", + "Basic Data": "Базовые данные", + "Business data": "Данные бизнеса", + "Click or drag file to this area to upload": "Нажмите или перетащите файл в эту область для загрузки", + "Configuration": "Конфигурация", + "custom.description": "Данные пользовательских коллекций", + "custom.title": "Данные пользовательских коллекций", + "Delete": "Удалить", + "Deleted successfully": "Успешно удалено", + "Download": "Скачать", + "file upload failed": "Загрузка файла не удалась", + "file uploaded successfully": "Файл успешно загружен", + "File size": "Размер файла", + "Learn more": "Узнать больше", + "log.description": "Данные логов", + "log.title": "Данные логов", + "New backup": "Новая резервная копия", + "Optional Data": "Дополнительные данные", + "Origin": "Источник", + "Plugin": "Плагин", + "Refresh": "Обновить", + "required.description": "Обязательные данные", + "required.title": "Обязательные данные", + "Restore": "Восстановить", + "Restore backup from local": "Восстановить резервную копию с локального устройства", + "Select Import Plugins": "Выбрать плагины для импорта", + "Select Import data": "Выбрать данные для импорта", + "Select the data to be backed up": "Выбрать данные для резервного копирования", + "Select the data to be restored": "Выбрать данные для восстановления", + "Select User Collections": "Выбрать пользовательские коллекции", + "skipped.description": "Пропущенные данные", + "skipped.title": "Пропущенные данные", + "Start backup": "Начать резервное копирование", + "Start restore": "Начать восстановление", + "System config": "Системная конфигурация", + "System metadata": "Системные метаданные", + "third-party.description": "Информация сторонних сервисов", + "third-party.title": "Информация сторонних сервисов", + "unknown.description": "Данные без настроенных правил дампа", + "unknown.title": "Неизвестно", + "User Data": "Данные пользователя", + "user.description": "Данные пользователя", + "user.title": "Данные пользователя" +} diff --git a/packages/plugins/@nocobase/plugin-block-iframe/package.json b/packages/plugins/@nocobase/plugin-block-iframe/package.json index 6c599c2606a..8984c206205 100644 --- a/packages/plugins/@nocobase/plugin-block-iframe/package.json +++ b/packages/plugins/@nocobase/plugin-block-iframe/package.json @@ -1,13 +1,16 @@ { "name": "@nocobase/plugin-block-iframe", "displayName": "Block: iframe", + "displayName.ru-RU": "Блок: iframe", "displayName.zh-CN": "区块:iframe", "description": "Create an iframe block on the page to embed and display external web pages or content.", + "description.ru-RU": "Создавайте iframe-блоки и управляйте ими на странице для встраивания и отображения внешних веб-страниц или контента.", "description.zh-CN": "在页面上创建和管理iframe,用于嵌入和展示外部网页或内容。", "version": "1.9.9", "license": "AGPL-3.0", "main": "./dist/server/index.js", "homepage": "https://docs.nocobase.com/handbook/block-iframe", + "homepage.ru-RU": "https://docs-ru.nocobase.com/handbook/block-iframe", "homepage.zh-CN": "https://docs-cn.nocobase.com/handbook/block-iframe", "devDependencies": { "@ant-design/icons": "5.x", diff --git a/packages/plugins/@nocobase/plugin-block-template/package.json b/packages/plugins/@nocobase/plugin-block-template/package.json index 4ce902c7de0..e50def3c0a7 100644 --- a/packages/plugins/@nocobase/plugin-block-template/package.json +++ b/packages/plugins/@nocobase/plugin-block-template/package.json @@ -1,13 +1,16 @@ { "name": "@nocobase/plugin-block-template", "displayName": "Block: template", + "displayName.ru-RU": "Блок: шаблон", "displayName.zh-CN": "区块:模板", "description": "Create and manage block templates for reuse on pages.", + "description.ru-RU": "Создавайте и управляйте шаблонами блоков для повторного использования на страницах.", "description.zh-CN": "创建和管理区块模板,用于在页面中重复使用。", "version": "1.9.9", "license": "AGPL-3.0", "main": "dist/server/index.js", "homepage": "https://docs.nocobase.com/handbook/block-template", + "homepage.ru-RU": "https://docs-ru.nocobase.com/handbook/block-template", "homepage.zh-CN": "https://docs-cn.nocobase.com/handbook/block-template", "peerDependencies": { "@nocobase/client": "1.x", diff --git a/packages/plugins/@nocobase/plugin-block-template/src/locale/ru-RU.json b/packages/plugins/@nocobase/plugin-block-template/src/locale/ru-RU.json new file mode 100644 index 00000000000..d41b66a9e1c --- /dev/null +++ b/packages/plugins/@nocobase/plugin-block-template/src/locale/ru-RU.json @@ -0,0 +1,42 @@ +{ + "Add new": "Добавить новый", + "Are you sure you want to convert this template block to a normal block?": "Вы уверены, что хотите преобразовать этот блок шаблона в обычный блок?", + "Are you sure you want to delete it?": "Вы уверены, что хотите удалить это?", + "Are you sure you want to revert all changes from the template?": "Вы уверены, что хотите отменить все изменения из шаблона?", + "Associate record": "Связать запись", + "Block template": "Шаблон блока", + "Block templates": "Шаблоны блоков", + "Cancel": "Отменить", + "Configure": "Настроить", + "Convert to normal block": "Преобразовать в обычный блок", + "Converted successfully": "Успешно преобразовано", + "Current": "Текущая запись", + "Delete": "Удалить", + "Delete record": "Удалить запись", + "Delete successfully": "Успешно удалено", + "Deleted successfully": "Успешно удалено", + "Description": "Описание", + "Desktop": "Рабочий стол", + "Duplicate": "Дублировать", + "Duplicate to new template": "Дублировать в новый шаблон", + "Edit": "Редактировать", + "Filter": "Фильтр", + "Form type": "Тип формы", + "Keep the created blocks?": "Сохранить созданные блоки?", + "Mobile": "Мобильный", + "None": "Нет", + "Please select the records you want to delete": "Пожалуйста, выберите записи, которые хотите удалить", + "Refresh": "Обновить", + "Reset successfully": "Успешно сброшено", + "Revert to template": "Вернуться к шаблону", + "Save as template successfully": "Успешно сохранено как шаблон", + "Saved successfully": "Успешно сохранено", + "Search and select template": "Найти и выбрать шаблон", + "Submit": "Отправить", + "Template block settings": "Настройки блока шаблона", + "Templates": "Шаблоны", + "This block is using some reference templates, please convert to duplicate template first.": "Этот блок использует некоторые ссылочные шаблоны, пожалуйста, сначала преобразуйте в дублированный шаблон.", + "This is part of a template, deletion is not allowed": "Это часть шаблона, удаление не разрешено", + "Title": "Заголовок", + "Type": "Тип" +} diff --git a/packages/plugins/@nocobase/plugin-block-workbench/package.json b/packages/plugins/@nocobase/plugin-block-workbench/package.json index 1536494a346..52a4841f6d6 100644 --- a/packages/plugins/@nocobase/plugin-block-workbench/package.json +++ b/packages/plugins/@nocobase/plugin-block-workbench/package.json @@ -2,8 +2,10 @@ "name": "@nocobase/plugin-block-workbench", "version": "1.9.9", "displayName": "Block: Action panel", + "displayName.ru-RU": "Блок: Панель действий", "displayName.zh-CN": "区块:操作面板", "description": "Centrally manages and displays various actions, allowing users to efficiently perform tasks. It supports extensibility, with current action types including pop-ups, links, scanning, and custom requests.", + "description.ru-RU": "Централизованное управление и отображение различных действий для эффективного выполнения задач. Поддерживает расширяемость, текущие типы действий — всплывающие окна, ссылки, сканирование и произвольные запросы.", "description.zh-CN": "集中管理和展示各种操作,方便用户快速执行任务。支持扩展,目前支持的操作类型有弹窗、链接、扫描、自定义请求。", "main": "dist/server/index.js", "peerDependencies": { diff --git a/packages/plugins/@nocobase/plugin-block-workbench/src/locale/ru-RU.json b/packages/plugins/@nocobase/plugin-block-workbench/src/locale/ru-RU.json new file mode 100644 index 00000000000..e472cf36857 --- /dev/null +++ b/packages/plugins/@nocobase/plugin-block-workbench/src/locale/ru-RU.json @@ -0,0 +1,18 @@ +{ + "Action panel": "Панель действий", + "Add custom request": "Добавить пользовательский запрос", + "Add popup": "Добавить всплывающее окно", + "Album": "Альбом", + "At least 1, up to 6": "От 1 до 6", + "Grid": "Сетка", + "Items per row": "Элементов в строке", + "Layout": "Макет", + "List": "Список", + "No camera device detected": "Устройство камеры не обнаружено", + "QR code recognition failed, please scan again": "Распознавание QR-кода не удалось, пожалуйста, отсканируйте снова", + "Scan QR code": "Сканировать QR-код", + "The image size is too large. Please compress it to below 1MB before uploading": "Размер изображения слишком большой. Сожмите его до менее 1 МБ перед загрузкой", + "Unknown error": "Неизвестная ошибка", + "Workbench": "Рабочее пространство", + "You have not granted permission to use the camera": "Вы не предоставили разрешение на использование камеры" +} diff --git a/packages/plugins/@nocobase/plugin-calendar/package.json b/packages/plugins/@nocobase/plugin-calendar/package.json index 9dea9b5c4df..f905be6cbd1 100644 --- a/packages/plugins/@nocobase/plugin-calendar/package.json +++ b/packages/plugins/@nocobase/plugin-calendar/package.json @@ -2,12 +2,15 @@ "name": "@nocobase/plugin-calendar", "version": "1.9.9", "displayName": "Calendar", + "displayName.ru-RU": "Календарь", "displayName.zh-CN": "日历", "description": "Provides callendar collection template and block for managing date data, typically for date/time related information such as events, appointments, tasks, and so on.", + "description.ru-RU": "Предоставляет шаблон коллекции календаря и блок для управления данными дат — такими как события, встречи, задачи и другие связанные с датой/временем данные.", "description.zh-CN": "提供日历数据表模板和区块,用于管理日期数据,通常用于事件、约会、任务等与日期/时间相关的信息。", "license": "AGPL-3.0", "main": "./dist/server/index.js", "homepage": "https://docs.nocobase.com/handbook/calendar", + "homepage.ru-RU": "https://docs-ru.nocobase.com/handbook/calendar", "homepage.zh-CN": "https://docs-cn.nocobase.com/handbook/calendar", "types": "./dist/server/index.d.ts", "devDependencies": { diff --git a/packages/plugins/@nocobase/plugin-calendar/src/client/calendar/Calendar.tsx b/packages/plugins/@nocobase/plugin-calendar/src/client/calendar/Calendar.tsx index 8f06ee707a2..08c3d379e00 100644 --- a/packages/plugins/@nocobase/plugin-calendar/src/client/calendar/Calendar.tsx +++ b/packages/plugins/@nocobase/plugin-calendar/src/client/calendar/Calendar.tsx @@ -52,6 +52,7 @@ import { dateFnsLocalizer } from 'react-big-calendar'; import { format, parse, startOfWeek, getDay } from 'date-fns'; import enUS from 'date-fns/locale/en-US'; import zhCN from 'date-fns/locale/zh-CN'; +import ru from 'date-fns/locale/ru'; interface Event { id: string; @@ -295,26 +296,27 @@ export const Calendar: any = withDynamicSchemaProps( const locales = { 'zh-CN': zhCN, 'en-US': enUS, + 'ru': ru, }; const locale = apiClient.auth.locale || 'en-US'; const formats = useMemo(() => { return { monthHeaderFormat: (date, culture, local) => - local.format(date, locale === 'zh-CN' ? 'yyyy年M月' : 'MMM yyyy', locales[locale]), + local.format(date, locale === 'zh-CN' ? 'yyyy年M月' : locale === 'ru' ? 'LLLL yyyy' : 'MMM yyyy', locales[locale]), dayHeaderFormat: (date, culture, local) => { - return local.format(date, props.locale === 'zh-CN' ? 'eee, M/d' : 'EEE, MMM d', locales[locale]); + return local.format(date, props.locale === 'zh-CN' ? 'eee, M/d' : props.locale === 'ru' ? 'EEE, d MMM' : 'EEE, MMM d', locales[locale]); }, agendaDateFormat: (date, culture, local) => { - return local.format(date, props.locale === 'zh-CN' ? 'M月d日' : 'M-dd', locales[locale]); + return local.format(date, props.locale === 'zh-CN' ? 'M月d日' : props.locale === 'ru' ? 'd MMM' : 'M-dd', locales[locale]); }, dayRangeHeaderFormat: ({ start, end }, culture, local) => { if (start.getMonth() === end.getMonth()) { - return local.format(start, locale === 'zh-CN' ? 'yyyy年M月' : 'MMM yyyy', locale); + return local.format(start, locale === 'zh-CN' ? 'yyyy年M月' : locale === 'ru' ? 'LLLL yyyy' : 'MMM yyyy', locale); } - return `${local.format(start, locale === 'zh-CN' ? 'yyyy年M月' : 'MMM yyyy', locale)} - ${local.format( + return `${local.format(start, locale === 'zh-CN' ? 'yyyy年M月' : locale === 'ru' ? 'LLLL yyyy' : 'MMM yyyy', locale)} - ${local.format( end, - locale === 'zh-CN' ? 'yyyy年M月' : 'MMM yyyy', + locale === 'zh-CN' ? 'yyyy年M月' : locale === 'ru' ? 'LLLL yyyy' : 'MMM yyyy', locale, )}`; }, diff --git a/packages/plugins/@nocobase/plugin-calendar/src/locale/ru-RU.json b/packages/plugins/@nocobase/plugin-calendar/src/locale/ru-RU.json index 390ed5405c7..193e794b3a2 100644 --- a/packages/plugins/@nocobase/plugin-calendar/src/locale/ru-RU.json +++ b/packages/plugins/@nocobase/plugin-calendar/src/locale/ru-RU.json @@ -1,31 +1,55 @@ { - "Configure calendar": "Настроить календарь", - "Title field": "Поле заголовка", - "Start date field": "Поле даты начала", - "End date field": "Поле даты окончания", - "Work week": "Рабочая неделя", - "Today": "Сегодня", - "Day": "День", - "Agenda": "Расписание", - "Date": "Дата", - "Time": "Время", - "Event": "Событие", - "None": "Ничего", - "Calendar": "Календарь", - "Create calendar block": "Создать блок календаря", - "Filter": "Фильтр", - "Configure actions": "Настройка действий", - "Enable actions": "Разрешить действия", - "Turn pages": "Перелистывать страницы", - "Select view": "Выбрать вид", "Add new": "Добавить новый", - "View record": "Показать запись", - "Details": "Подробности", - "Customize": "Настроить", - "Popup": "Всплывающий", - "Updated successfully": "Успешно обновлено", + "Agenda": "Расписание", + "All events": "Все события", + "Calendar": "Календарь", + "Calendar collection": "Коллекция календаря", + "Color field": "Поле цвета", + "Configure actions": "Настроить действия", + "Configure calendar": "Настроить календарь", + "Create calendar block": "Создать блок календаря", "Custom request": "Пользовательский запрос", - "Edit": "Изменить", + "Custom title": "Пользовательский заголовок", + "Customize": "Настроить", + "Daily": "Ежедневно", + "Date": "Дата", + "Day": "День", + "Default view": "Вид по умолчанию", "Delete": "Удалить", - "Print": "Печать" -} \ No newline at end of file + "Delete Event": "Удалить событие", + "Delete events": "Удалить события", + "Delete this event?": "Удалить это событие?", + "Details": "Подробности", + "Edit": "Редактировать", + "Enable actions": "Включить действия", + "End date field": "Поле даты окончания", + "Event": "Событие", + "Event open mode": "Режим открытия события", + "Filter": "Фильтр", + "Month": "Месяц", + "Monthly": "Ежемесячно", + "None": "Ничего", + "Not selected": "Не выбрано", + "Popup": "Всплывающее окно", + "Print": "Печать", + "Quick create event": "Быстро создать событие", + "Repeats": "Повторы", + "Select view": "Выбрать вид", + "Show lunar": "Показать лунный календарь", + "Start date field": "Поле даты начала", + "This and following events": "Это и последующие события", + "This event": "Это событие", + "Time": "Время", + "Title": "Заголовок", + "Title field": "Поле заголовка", + "Today": "Сегодня", + "Turn pages": "Перелистывать страницы", + "Update record": "Обновить запись", + "Updated successfully": "Успешно обновлено", + "View record": "Просмотреть запись", + "Week": "Неделя", + "Weekly": "Еженедельно", + "Work week": "Рабочая неделя", + "Yearly": "Ежегодно", + "{{count}} more items": "Еще {{count}} элементов" +} diff --git a/packages/plugins/@nocobase/plugin-charts/package.json b/packages/plugins/@nocobase/plugin-charts/package.json index a5e4310ddb2..6be9611e738 100644 --- a/packages/plugins/@nocobase/plugin-charts/package.json +++ b/packages/plugins/@nocobase/plugin-charts/package.json @@ -1,8 +1,10 @@ { "name": "@nocobase/plugin-charts", "displayName": "Charts (deprecated)", + "displayName.ru-RU": "Графики (устаревший)", "displayName.zh-CN": "图表(废弃)", "description": "The plugin has been deprecated, please use the data visualization plugin instead.", + "description.ru-RU": "Данный плагин устарел, используйте вместо него плагин для визуализации данных.", "description.zh-CN": "已废弃插件,请使用数据可视化插件代替。", "version": "1.9.9", "main": "./dist/server/index.js", diff --git a/packages/plugins/@nocobase/plugin-charts/src/locale/ru-RU.json b/packages/plugins/@nocobase/plugin-charts/src/locale/ru-RU.json index 9e26dfeeb6e..f0c61aada23 100644 --- a/packages/plugins/@nocobase/plugin-charts/src/locale/ru-RU.json +++ b/packages/plugins/@nocobase/plugin-charts/src/locale/ru-RU.json @@ -1 +1,74 @@ -{} \ No newline at end of file +{ + "1 「Numeric」 field, 0~ 1 「Unordered Noun」 field": "1 поле 「Числовое」, 0–1 поле 「Неупорядоченное существительное」", + "1 「Time」 or 「Order Noun」 field, 1 「Value」 field": "1 поле 「Время」 или 「Упорядоченное существительное」, 1 поле 「Значение」", + "1 「Unordered Noun」 field, 1 「Numeric」 field": "1 поле 「Неупорядоченное существительное」, 1 поле 「Числовое」", + "1 「time」 or 「ordered noun」 field, 1 「value」 field, 0 to 1 「unordered noun」": "1 поле 「Время」 или 「Упорядоченное существительное」, 1 поле 「Значение」, 0–1 поле 「Неупорядоченное существительное」", + "1 「time」 or 「ordered noun」 field, 1 「value」 field, 0~ 1 「unordered noun」": "1 поле 「Время」 или 「Упорядоченное существительное」, 1 поле 「Значение」, 0–1 поле 「Неупорядоченное существительное」", + "1 「time」or 「Ordered Noun」 field,1 「Numerical」 field,1 「Unordered Noun」 field (optional)": "1 поле 「Время」 или 「Упорядоченное существительное」, 1 поле 「Числовое」, 1 поле 「Неупорядоченное существительное」 (опционально)", + "1~ 2 「Unordered Noun」 fields, 1 「Numeric」 field": "1–2 поля 「Неупорядоченное существительное」, 1 поле 「Числовое」", + "Actions": "Действия", + "Add JSON query": "Добавить запрос JSON", + "Add SQL query": "Добавить запрос SQL", + "Add chart query": "Добавить запрос для диаграммы", + "Add provider": "Добавить провайдера", + "Add query": "Добавить запрос", + "Are you sure you want to delete it?": "Вы уверены, что хотите удалить?", + "Area": "Область", + "Bar": "Столбец", + "Basic charts": "Базовые диаграммы", + "Branch Length/Metrics": "Длина ветви/Метрики", + "Branch Tags/Dimensions": "Теги ветви/Измерения", + "Cancel": "Отменить", + "Category axis / Dimension": "Ось категорий / Измерение", + "Chart": "Диаграмма", + "Chart (Old)": "Диаграмма (старая)", + "Chart config": "Конфигурация диаграммы", + "Chart preview": "Предпросмотр диаграммы", + "Chart title": "Заголовок диаграммы", + "Chart type": "Тип диаграммы", + "Charts": "Диаграммы", + "Client id": "ID клиента", + "Color legend / Dimensional": "Легенда цвета / Измерение", + "Column": "Колонка", + "Create chart block": "Создать блок диаграммы", + "Data preview": "Предпросмотр данных", + "Delete": "Удалить", + "Delete provider": "Удалить провайдера", + "Delete queries": "Удалить запросы", + "Delete query": "Удалить запрос", + "Edit": "Редактировать", + "Edit chart block": "Редактировать блок диаграммы", + "Edit provider": "Редактировать провайдера", + "Edit query": "Редактировать запрос", + "Enable": "Включить", + "Entity id or issuer": "ID сущности или эмитент", + "Funnel": "Воронка", + "Funnel Layer Width/Metrics": "Ширина слоя воронки/Метрики", + "Invalid JSON format": "Неверный формат JSON", + "Invalid JSON format,must be an object array.": "Неверный формат JSON, должен быть массив объектов.", + "JSON config": "Конфигурация JSON", + "Json config references": "Ссылки на конфигурацию JSON", + "Json config references: ": "Ссылки на конфигурацию JSON: ", + "Line": "Линия", + "Login Url": "URL входа", + "More charts": "Дополнительные диаграммы", + "Pie": "Круговая", + "Please check the chart config": "Пожалуйста, проверьте конфигурацию диаграммы", + "Public cert": "Публичный сертификат", + "Queries": "Запросы", + "Radar": "Радар", + "Redirect url": "URL перенаправления", + "SAML Providers": "Провайдеры SAML", + "SAML manager": "Менеджер SAML", + "SP entity id": "ID сущности SP", + "Scatter": "Точечная", + "Sector Angle / Metric": "Угол сектора / Метрика", + "Sector label / Dimensional": "Метка сектора / Измерение", + "Select chart query": "Выбрать запрос для диаграммы", + "Select query data": "Выбрать данные запроса", + "Sign in button name, which will be displayed on the sign in page": "Название кнопки входа, отображаемое на странице входа", + "Submit": "Отправить", + "Title": "Заголовок", + "Type": "Тип", + "Value axis / Metrics": "Ось значений / Метрики" +} diff --git a/packages/plugins/@nocobase/plugin-client/package.json b/packages/plugins/@nocobase/plugin-client/package.json index a3ad66473d0..669d4a8803b 100644 --- a/packages/plugins/@nocobase/plugin-client/package.json +++ b/packages/plugins/@nocobase/plugin-client/package.json @@ -1,8 +1,10 @@ { "name": "@nocobase/plugin-client", "displayName": "WEB client", + "displayName.ru-RU": "WEB-клиент", "displayName.zh-CN": "WEB 客户端", "description": "Provides a client interface for the NocoBase server", + "description.ru-RU": "Предоставляет клиентский интерфейс для сервера NocoBase", "description.zh-CN": "为 NocoBase 服务端提供客户端界面", "version": "1.9.9", "main": "./dist/server/index.js", diff --git a/packages/plugins/@nocobase/plugin-collection-sql/package.json b/packages/plugins/@nocobase/plugin-collection-sql/package.json index 3f2280e7873..102c8853d85 100644 --- a/packages/plugins/@nocobase/plugin-collection-sql/package.json +++ b/packages/plugins/@nocobase/plugin-collection-sql/package.json @@ -1,11 +1,14 @@ { "name": "@nocobase/plugin-collection-sql", "displayName": "Collection: SQL", + "displayName.ru-RU": "Коллекция: SQL", "displayName.zh-CN": "数据表: SQL", "description": "Provides SQL collection template", + "description.ru-RU": "Предоставляет шаблон коллекции на основе SQL", "description.zh-CN": "提供 SQL 数据表模板", "version": "1.9.9", "homepage": "https://docs-cn.nocobase.com/handbook/collection-sql", + "homepage.ru-RU": "https://docs-ru.nocobase.com/handbook/collection-sql", "homepage.zh-CN": "https://docs-cn.nocobase.com/handbook/collection-sql", "main": "dist/server/index.js", "license": "AGPL-3.0", diff --git a/packages/plugins/@nocobase/plugin-collection-tree/package.json b/packages/plugins/@nocobase/plugin-collection-tree/package.json index 588c7ea5918..57e99ae5b12 100644 --- a/packages/plugins/@nocobase/plugin-collection-tree/package.json +++ b/packages/plugins/@nocobase/plugin-collection-tree/package.json @@ -2,8 +2,10 @@ "name": "@nocobase/plugin-collection-tree", "version": "1.9.9", "displayName": "Collection: Tree", + "displayName.ru-RU": "Древовидная Коллекция", "displayName.zh-CN": "数据表:树", "description": "Provides tree collection template", + "description.ru-RU": "Предоставляет шаблон коллекции в виде дерева. Широко используется для организации документов, каталожных разделов, управляемых задач, меню, комментариев и других сценариев, где важна вложенность и классификация.", "description.zh-CN": "提供树数据表模板", "keywords": [ "Collections" diff --git a/packages/plugins/@nocobase/plugin-data-source-main/package.json b/packages/plugins/@nocobase/plugin-data-source-main/package.json index 08bd4f6aa88..60fd2794edc 100644 --- a/packages/plugins/@nocobase/plugin-data-source-main/package.json +++ b/packages/plugins/@nocobase/plugin-data-source-main/package.json @@ -1,12 +1,15 @@ { "name": "@nocobase/plugin-data-source-main", "displayName": "Data source: Main", + "displayName.ru-RU": "Основной Источник данных", "displayName.zh-CN": "数据源:主数据库", "description": "NocoBase main database, supports relational databases such as PostgreSQL, MySQL, MariaDB and so on.", + "description.ru-RU": "Основная база данных NocoBase: поддерживает реляционные СУБД, включая PostgreSQL, MySQL, MariaDB и другие.", "description.zh-CN": "NocoBase 主数据库,支持 PostgreSQL、MySQL、MariaDB 等关系型数据库。", "version": "1.9.9", "main": "./dist/server/index.js", "homepage": "https://docs.nocobase.com/handbook/data-source-main", + "homepage.ru-RU": "https://docs-ru.nocobase.com/handbook/data-source-main", "homepage.zh-CN": "https://docs-cn.nocobase.com/handbook/data-source-main", "license": "AGPL-3.0", "devDependencies": { diff --git a/packages/plugins/@nocobase/plugin-data-source-main/src/locale/ru-RU.json b/packages/plugins/@nocobase/plugin-data-source-main/src/locale/ru-RU.json new file mode 100644 index 00000000000..a225acaa5a4 --- /dev/null +++ b/packages/plugins/@nocobase/plugin-data-source-main/src/locale/ru-RU.json @@ -0,0 +1,4 @@ +{ + "field-name-exists": "Имя поля \"{{name}}\" уже существует в коллекции \"{{collectionName}}\"", + "field-is-depended-on-by-other": "Нельзя удалить поле \"{{fieldName}}\" в \"{{fieldCollectionName}}\", оно используется полем \"{{dependedFieldName}}\" в \"{{dependedFieldCollectionName}}\" как \"{{dependedFieldAs}}\"" +} diff --git a/packages/plugins/@nocobase/plugin-data-source-manager/package.json b/packages/plugins/@nocobase/plugin-data-source-manager/package.json index 011f0415a22..a0d09176c09 100644 --- a/packages/plugins/@nocobase/plugin-data-source-manager/package.json +++ b/packages/plugins/@nocobase/plugin-data-source-manager/package.json @@ -3,10 +3,13 @@ "version": "1.9.9", "main": "dist/server/index.js", "displayName": "Data source manager", + "displayName.ru-RU": "Менеджер управления источниками данных", "displayName.zh-CN": "数据源管理", "description": "Manage data sources, including the built-in Master database, external databases, APIs, etc.", + "description.ru-RU": "Управление источниками данных: встроенная основная база данных, внешние базы данных, API и другие источники.", "description.zh-CN": "管理数据源,包括内置的 Master 数据库,外部的数据库、API。", "homepage": "https://docs.nocobase.com/handbook/data-source-manager", + "homepage.ru-RU": "https://docs-ru.nocobase.com/handbook/data-source-manager", "homepage.zh-CN": "https://docs-cn.nocobase.com/handbook/data-source-manager", "peerDependencies": { "@nocobase/client": "1.x", diff --git a/packages/plugins/@nocobase/plugin-data-source-manager/src/locale/ru-RU.json b/packages/plugins/@nocobase/plugin-data-source-manager/src/locale/ru-RU.json new file mode 100644 index 00000000000..a489cfebdc7 --- /dev/null +++ b/packages/plugins/@nocobase/plugin-data-source-manager/src/locale/ru-RU.json @@ -0,0 +1,40 @@ +{ + "Data source name": "Имя источника данных", + "Data source display name": "Отображаемое имя источника данных", + "Host": "Хост", + "Port": "Порт", + "Database": "База данных", + "Data source manager": "Менеджер источников данных", + "Data sources": "Источники данных", + "No external data source plugin installed": "Внешний плагин источника данных не установлен", + "View documentation": "Просмотр документации", + "Test Connection": "Тест соединения", + "Connection successful": "Соединение успешно", + "Display name": "Отображаемое имя", + "Username": "Имя пользователя", + "Password": "Пароль", + "Type": "Тип", + "Description": "Описание", + "Storage": "Хранилище", + "Collections": "Коллекции", + "Permissions": "Разрешения", + "Allow adding and modifying collection": "Разрешить добавление и изменение коллекции", + "Unknown field type": "Неизвестный тип поля", + "The following field types are not compatible and do not support output and display": "Следующие типы полей несовместимы и не поддерживают вывод и отображение", + "Field database type": "Тип поля базы данных", + "Field interface": "Интерфейс поля", + "Status": "Статус", + "Loading": "Загрузка", + "Failed": "Ошибка", + "Loaded": "Загружено", + "Reloading": "Перезагрузка", + "Data source synchronization in progress": "Синхронизация источника данных в процессе", + "Data source synchronization successful": "Синхронизация источника данных успешна", + "Filter target key": "Ключ фильтра цели", + "Select field": "Выбрать поле", + "OK": "ОК", + "Please select a field.": "Пожалуйста, выберите поле.", + "Are you sure you want to set the \"{{title}}\" field as a record unique key? This setting cannot be changed after it's been set.": "Вы уверены, что хотите установить поле \"{{title}}\" как уникальный ключ записи? Этот параметр нельзя изменить после установки.", + "If a collection lacks a primary key, you must configure a unique record key to locate row records within a block, failure to configure this will prevent the creation of data blocks for the collection.": "Если в коллекции отсутствует первичный ключ, необходимо настроить уникальный ключ записи, чтобы можно было находить строки (записи) внутри блока. Если уникальный ключ не будет настроен, создание блоков данных для этой коллекции будет невозможно.", + "Filter data based on the specific field, with the requirement that the field value must be unique.": "Отфильтровать данные по определённому полю с требованием, чтобы значение этого поля было уникальным." +} diff --git a/packages/plugins/@nocobase/plugin-data-visualization/package.json b/packages/plugins/@nocobase/plugin-data-visualization/package.json index 6fbaf7c0d52..c66d857aabb 100644 --- a/packages/plugins/@nocobase/plugin-data-visualization/package.json +++ b/packages/plugins/@nocobase/plugin-data-visualization/package.json @@ -2,11 +2,14 @@ "name": "@nocobase/plugin-data-visualization", "version": "1.9.9", "displayName": "Data visualization", + "displayName.ru-RU": "Визуализация данных", "displayName.zh-CN": "数据可视化", "description": "Provides data visualization feature, including chart block and chart filter block, support line charts, area charts, bar charts and more than a dozen kinds of charts, you can also extend more chart types.", + "description.ru-RU": "Предоставляет функции визуализации данных: включает блоки графиков и фильтрации графиков, поддерживает линейные, областные, столбчатые и более десятка других типов графиков, а также возможность расширения дополнительными типами.", "description.zh-CN": "提供数据可视化功能,包含图表区块和图表筛选区块,支持折线图、面积图、柱状图等十几种图表,你也可以扩展更多图表类型。", "main": "dist/server/index.js", "homepage": "https://docs.nocobase.com/handbook/data-visualization", + "homepage.ru-RU": "https://docs-ru.nocobase.com/handbook/data-visualization", "homepage.zh-CN": "https://docs-cn.nocobase.com/handbook/data-visualization", "devDependencies": { "@ant-design/icons": "5.x", diff --git a/packages/plugins/@nocobase/plugin-data-visualization/src/locale/ru-RU.json b/packages/plugins/@nocobase/plugin-data-visualization/src/locale/ru-RU.json new file mode 100644 index 00000000000..114992e1d59 --- /dev/null +++ b/packages/plugins/@nocobase/plugin-data-visualization/src/locale/ru-RU.json @@ -0,0 +1,103 @@ +{ + "Edit": "Редактировать", + "Delete": "Удалить", + "Cancel": "Отмена", + "Submit": "Отправить", + "Actions": "Действия", + "Title": "Заголовок", + "Enable": "Включить", + "Chart": "Диаграмма", + "ChartV2": "ДиаграммаV2", + "Charts": "Диаграммы", + "Configure": "Настроить", + "Duplicate": "Дублировать", + "Configure chart": "Настроить диаграмму", + "Transform": "Преобразовать", + "Chart type": "Тип диаграммы", + "JSON config": "JSON конфигурация", + "Query": "Запрос", + "Data": "Данные", + "Run query": "Выполнить запрос", + "Measures": "Единицы измерения", + "Dimensions": "Размеры", + "Filter": "Фильтр", + "Sort": "Сортировка", + "Limit": "Лимит", + "Offset": "Смещение", + "Enable cache": "Включить кэш", + "TTL (second)": "TTL- время жизни (секунд)", + "Field": "Поле", + "Aggregation": "Агрегация", + "Alias": "Псевдоним", + "Format": "Формат", + "The first 10 records of the query result:": "Первые 10 записей результата запроса:", + "Please run query to retrive data.": "Пожалуйста, выполните запрос для получения данных.", + "Type": "Тип", + "Add field": "Добавить поле", + "Add chart": "Добавить диаграмму", + "xField": "X поле", + "yField": "Y поле", + "seriesField": "Поле серии", + "angleField": "Поле угла", + "colorField": "Поле цвета", + "Line": "Линия", + "Area": "Область", + "Column": "Столбец", + "Bar": "Полоса", + "Pie": "Круговая", + "Dual axes": "Двойные оси", + "Scatter": "Точечная", + "Gauge": "Индикатор", + "Statistic": "Статистика", + "Currency": "Валюта", + "Percent": "Процент", + "Exponential": "Экспоненциальный", + "Abbreviation": "Сокращение", + "Please configure and run query": "Пожалуйста, настройте и выполните запрос", + "Please configure chart": "Пожалуйста, настройте диаграмму", + "Are you sure to cancel?": "Вы уверены, что хотите отменить?", + "You changes are not saved. If you click OK, your changes will be lost.": "Ваши изменения не сохранены. Если вы нажмете OK, ваши изменения будут потеряны.", + "Same properties set in the form above will be overwritten by this JSON config.": "Те же свойства, установленные в форме выше, будут перезаписаны этой JSON конфигурацией.", + "Built-in": "Встроенный", + "Config reference: ": "Ссылка на конфигурацию: ", + "Table": "Таблица", + "Sum": "Сумма", + "Avg": "Среднее", + "Count": "Количество", + "Min": "Минимум", + "Max": "Максимум", + "Please select a chart type.": "Пожалуйста, выберите тип диаграммы.", + "Collection": "Коллекция", + "isStack": "Стек", + "isPercent": "В процентах", + "isGroup": "Группировать", + "smooth": "Сглаживание", + "Expand": "Развернуть", + "Current filter": "Текущий фильтр", + "Add custom field": "Добавить пользовательское поле", + "To filter with custom fields, use \"Current filter\" variables in the chart configuration.": "Для фильтрации с пользовательскими полями используйте переменные \"Текущий фильтр\" в конфигурации диаграммы.", + "Input": "Ввод", + "Date range": "Диапазон дат", + "Time range": "Временной диапазон", + "Edit field properties": "Редактировать свойства поля", + "Select a source field to use metadata of the field": "Выберите исходное поле для использования метаданных поля", + "Original field": "Исходное поле", + "Transformation": "Преобразование", + "Add transformation": "Добавить преобразование", + "Container": "Контейнер", + "Show border": "Показать границу", + "Transformation tip": "Поля позволяют множественные преобразования, применяемые последовательно. Обратите внимание на изменения типа данных после каждого преобразования. Перетаскивание позволяет настраивать порядок преобразований.", + "Type conversion": "Преобразование типа", + "Transformer": "Преобразователь", + "Size": "Размер", + "Width": "Ширина", + "Height": "Высота", + "Aspect ratio": "Соотношение сторон", + "Fixed height": "Фиксированная высота", + "Show background": "Показать фон", + "Show padding": "Показать отступы", + "Distinct": "Уникальные", + "Auto refresh": "Автообновление", + "Divide": "Разделить", + "Multiply": "Умножить" +} diff --git a/packages/plugins/@nocobase/plugin-departments/package.json b/packages/plugins/@nocobase/plugin-departments/package.json index ae154301f81..99424d514a5 100644 --- a/packages/plugins/@nocobase/plugin-departments/package.json +++ b/packages/plugins/@nocobase/plugin-departments/package.json @@ -1,8 +1,10 @@ { "name": "@nocobase/plugin-departments", "displayName": "Departments", + "displayName.ru-RU": "Подразделения", "displayName.zh-CN": "部门", "description": "Organize users by departments, set hierarchical relationships, link roles to control permissions, and use departments as variables in workflows and expressions.", + "description.ru-RU": "Организация пользователей по подразделениям, установление иерархических связей, привязка ролей для управления правами и использование подразделений в качестве переменных в рабочих процессах и выражениях.", "description.zh-CN": "以部门来组织用户,设定上下级关系,绑定角色控制权限,并支持作为变量用于工作流和表达式。", "version": "1.9.9", "main": "dist/server/index.js", diff --git a/packages/plugins/@nocobase/plugin-departments/src/locale/ru-RU.json b/packages/plugins/@nocobase/plugin-departments/src/locale/ru-RU.json new file mode 100644 index 00000000000..fc45ac7760d --- /dev/null +++ b/packages/plugins/@nocobase/plugin-departments/src/locale/ru-RU.json @@ -0,0 +1,35 @@ +{ + "Department": "Отдел", + "All users": "Все пользователи", + "New department": "Новый отдел", + "Add department": "Добавить отдел", + "Add departments": "Добавить отделы", + "New sub department": "Новый подотдел", + "Edit department": "Редактировать отдел", + "Delete department": "Удалить отдел", + "Departments": "Отделы", + "Main department": "Главный отдел", + "Owner": "Владелец", + "Department name": "Название отдела", + "Superior department": "Вышестоящий отдел", + "Owners": "Владельцы", + "Add members": "Добавить участников", + "Search for departments, users": "Поиск отделов, пользователей", + "Search results": "Результаты поиска", + "Departments management": "Управление отделами", + "Roles management": "Управление ролями", + "Remove members": "Удалить участников", + "Remove member": "Удалить участника", + "Remove departments": "Удалить отделы", + "Remove department": "Удалить отдел", + "Are you sure you want to remove it?": "Вы уверены, что хотите удалить это?", + "Are you sure you want to remove these members?": "Вы уверены, что хотите удалить этих участников?", + "Are you sure you want to remove these departments?": "Вы уверены, что хотите удалить эти отделы?", + "Please select members": "Пожалуйста, выберите участников", + "Please select departments": "Пожалуйста, выберите отделы", + "The department has sub-departments, please delete them first": "У отдела есть подотделы, пожалуйста, удалите их сначала", + "The department has members, please remove them first": "У отдела есть участники, пожалуйста, удалите их сначала", + "Main": "Главный", + "Set as main department": "Установить как главный отдел", + "This field is currently not supported for use in form blocks.": "Это поле в настоящее время не поддерживается для использования в блоках форм." +} diff --git a/packages/plugins/@nocobase/plugin-environment-variables/package.json b/packages/plugins/@nocobase/plugin-environment-variables/package.json index 9448ba01225..552e1472855 100644 --- a/packages/plugins/@nocobase/plugin-environment-variables/package.json +++ b/packages/plugins/@nocobase/plugin-environment-variables/package.json @@ -9,8 +9,11 @@ }, "displayName": "Variables and secrets", "displayName.zh-CN": "变量和密钥", + "displayName.ru-RU": "Переменные и секреты", + "description.ru-RU": "Централизованное управление переменными окружения и секретами для хранения конфиденциальных данных, повторного использования конфигураций, изоляции окружений и прочих задач.", "description": "Centralized management of environment variables and secrets, used for sensitive data storage, configuration data reuse, multi-environment isolation, and more.", "description.zh-CN": "集中管理环境变量和密钥,用于敏感数据存储、配置数据重用、多环境隔离等。", + "homepage.ru-RU": "https://docs-ru.nocobase.com/handbook/environment-variables", "homepage": "https://docs.nocobase.com/handbook/environment-variables", "homepage.zh-CN": "https://docs-cn.nocobase.com/handbook/environment-variables", "keywords": [ diff --git a/packages/plugins/@nocobase/plugin-environment-variables/src/locale/ru-RU.json b/packages/plugins/@nocobase/plugin-environment-variables/src/locale/ru-RU.json new file mode 100644 index 00000000000..1a2a37e4782 --- /dev/null +++ b/packages/plugins/@nocobase/plugin-environment-variables/src/locale/ru-RU.json @@ -0,0 +1,16 @@ +{ + "Environment": "Окружение", + "Variables and secrets": "Переменные и секреты", + "Variables": "Переменные", + "Secrets": "Секреты", + "Add variable": "Добавить переменную", + "Bulk import": "Массовый импорт", + "Name": "Имя", + "Value": "Значение", + "Type": "Тип", + "Plain text": "Обычный текст", + "Encrypted": "Зашифровано", + "Delete variable": "Удалить переменную", + "Restart now": "Перезапустить сейчас", + "Variables and secrets have been updated. A restart is required for the changes to take effect.": "Переменные и секреты были обновлены. Требуется перезапуск для применения изменений." +} diff --git a/packages/plugins/@nocobase/plugin-error-handler/package.json b/packages/plugins/@nocobase/plugin-error-handler/package.json index 14fd702c364..83af72425a1 100644 --- a/packages/plugins/@nocobase/plugin-error-handler/package.json +++ b/packages/plugins/@nocobase/plugin-error-handler/package.json @@ -1,12 +1,17 @@ { "name": "@nocobase/plugin-error-handler", "displayName": "Error handler", + "displayName.ru-RU": "Обработчик ошибок", "displayName.zh-CN": "错误处理器", + "description.ru-RU": "Обработка ошибок и исключений приложения.", "description": "Handling application errors and exceptions.", "description.zh-CN": "处理应用程序中的错误和异常。", "version": "1.9.9", "license": "AGPL-3.0", "main": "./dist/server/index.js", + "homepage": "https://docs.nocobase.com/handbook/error-handler", + "homepage.ru-RU": "https://docs-ru.nocobase.com/handbook/error-handler", + "homepage.zh-CN": "https://docs-cn.nocobase.com/handbook/error-handler", "devDependencies": { "@formily/json-schema": "2.x", "supertest": "^6.1.6" diff --git a/packages/plugins/@nocobase/plugin-error-handler/src/locale/ru-RU.json b/packages/plugins/@nocobase/plugin-error-handler/src/locale/ru-RU.json new file mode 100644 index 00000000000..8dec78348e4 --- /dev/null +++ b/packages/plugins/@nocobase/plugin-error-handler/src/locale/ru-RU.json @@ -0,0 +1,5 @@ +{ + "unique violation": "{{field}} уже существует", + "notNull violation": "{{field}} не может быть пустым", + "Validation error": "{{field}} ошибка валидации" +} diff --git a/packages/plugins/@nocobase/plugin-field-attachment-url/package.json b/packages/plugins/@nocobase/plugin-field-attachment-url/package.json index 0d5db4e4aed..1279e04cfdb 100644 --- a/packages/plugins/@nocobase/plugin-field-attachment-url/package.json +++ b/packages/plugins/@nocobase/plugin-field-attachment-url/package.json @@ -3,8 +3,10 @@ "version": "1.9.9", "main": "dist/server/index.js", "displayName": "Collection field: Attachment(URL)", + "displayName.ru-RU": "Поле коллекции: Вложение (URL)", "displayName.zh-CN": "数据表字段:附件(URL)", "description": "Supports attachments in URL format.", + "description.ru-RU": "Поддержка вложений в формате URL.", "description.zh-CN": "支持 URL 格式的附件。", "peerDependencies": { "@nocobase/client": "1.x", diff --git a/packages/plugins/@nocobase/plugin-field-attachment-url/src/locale/ru-RU.json b/packages/plugins/@nocobase/plugin-field-attachment-url/src/locale/ru-RU.json new file mode 100644 index 00000000000..de9c103fc80 --- /dev/null +++ b/packages/plugins/@nocobase/plugin-field-attachment-url/src/locale/ru-RU.json @@ -0,0 +1,4 @@ +{ + "Which file collection should it be uploaded to":"В какую коллекцию файлов загрузить", + "Attachment (URL)":"Вложение (URL)" +} diff --git a/packages/plugins/@nocobase/plugin-field-china-region/package.json b/packages/plugins/@nocobase/plugin-field-china-region/package.json index 7310203832e..25dfd50a839 100644 --- a/packages/plugins/@nocobase/plugin-field-china-region/package.json +++ b/packages/plugins/@nocobase/plugin-field-china-region/package.json @@ -3,11 +3,14 @@ "version": "1.9.9", "displayName": "Collection field: administrative divisions of China", "displayName.zh-CN": "数据表字段:中国行政区划", + "displayName.ru-RU": "Поле коллекции: административное деление Китая", "description": "Provides data and field type for administrative divisions of China.", "description.zh-CN": "提供中国行政区划数据和字段类型。", + "description.ru-RU": "Предоставляет данные и тип поля для административного деления Китая.", "main": "./dist/server/index.js", "homepage": "https://docs.nocobase.com/handbook/china-region", "homepage.zh-CN": "https://docs-cn.nocobase.com/handbook/china-region", + "homepage.ru-RU": "https://docs-ru.nocobase.com/handbook/china-region", "license": "AGPL-3.0", "devDependencies": { "@formily/core": "2.x", diff --git a/packages/plugins/@nocobase/plugin-field-formula/package.json b/packages/plugins/@nocobase/plugin-field-formula/package.json index 7a041bf5ea1..20ef9ca7d9c 100644 --- a/packages/plugins/@nocobase/plugin-field-formula/package.json +++ b/packages/plugins/@nocobase/plugin-field-formula/package.json @@ -2,13 +2,16 @@ "name": "@nocobase/plugin-field-formula", "displayName": "Collection field: Formula", "displayName.zh-CN": "数据表字段:公式", + "displayName.ru-RU": "Поле коллекции: Формула", "description": "Configure and store the results of calculations between multiple field values in the same record, supporting both Math.js and Excel formula functions.", "description.zh-CN": "可以配置并存储同一条记录的多字段值之间的计算结果,支持 Math.js 和 Excel formula functions 两种引擎", + "description.ru-RU": "Настройка и сохранение результатов вычислений между значениями нескольких полей в одной записи с поддержкой движков Math.js и Excel formula functions.", "version": "1.9.9", "license": "AGPL-3.0", "main": "./dist/server/index.js", "homepage": "https://docs.nocobase.com/handbook/field-formula", "homepage.zh-CN": "https://docs-cn.nocobase.com/handbook/field-formula", + "homepage.ru-RU": "https://docs-ru.nocobase.com/handbook/field-formula", "devDependencies": { "@formily/antd-v5": "1.x", "@formily/core": "2.x", diff --git a/packages/plugins/@nocobase/plugin-field-formula/src/locale/ru-RU.json b/packages/plugins/@nocobase/plugin-field-formula/src/locale/ru-RU.json new file mode 100644 index 00000000000..413cfc9e31c --- /dev/null +++ b/packages/plugins/@nocobase/plugin-field-formula/src/locale/ru-RU.json @@ -0,0 +1,8 @@ +{ + "Formula": "Формула", + "Calculation engine": "Вычислительный механизм", + "Expression": "Выражение", + "Expression syntax error": "Ошибка синтаксиса выражения", + "Syntax references": "Справочник синтаксиса", + "Compute a value based on the other fields": "Вычислить значение на основе других полей" +} diff --git a/packages/plugins/@nocobase/plugin-field-m2m-array/package.json b/packages/plugins/@nocobase/plugin-field-m2m-array/package.json index 5b4bbb3f39b..3ac4a385d85 100644 --- a/packages/plugins/@nocobase/plugin-field-m2m-array/package.json +++ b/packages/plugins/@nocobase/plugin-field-m2m-array/package.json @@ -1,8 +1,10 @@ { "name": "@nocobase/plugin-field-m2m-array", "displayName": "Collection field: Many to many (array)", + "displayName.ru-RU": "Связь коллекций: «многие ко многим» (массив)", "displayName.zh-CN": "数据表字段:多对多 (数组)", "description": "Allows to create many to many relationships between two models by storing an array of unique keys of the target model.", + "description.ru-RU": "Позволяет создавать отношения «многие ко многим» между двумя моделями, сохраняя массив уникальных ключей целевой модели.", "description.zh-CN": "支持通过在数组中存储目标表唯一键的方式建立多对多关系。", "version": "1.9.9", "main": "dist/server/index.js", diff --git a/packages/plugins/@nocobase/plugin-field-m2m-array/src/locale/ru-RU.json b/packages/plugins/@nocobase/plugin-field-m2m-array/src/locale/ru-RU.json new file mode 100644 index 00000000000..55bebcadf0f --- /dev/null +++ b/packages/plugins/@nocobase/plugin-field-m2m-array/src/locale/ru-RU.json @@ -0,0 +1,4 @@ +{ + "Many to many (array)": "Многие ко многим (массив)", + "Many to many (array) description": "Позволяет создавать связи многие ко многим между двумя моделями, сохраняя массив уникальных ключей целевой модели." +} diff --git a/packages/plugins/@nocobase/plugin-field-markdown-vditor/package.json b/packages/plugins/@nocobase/plugin-field-markdown-vditor/package.json index 819e10988d1..b2905191677 100644 --- a/packages/plugins/@nocobase/plugin-field-markdown-vditor/package.json +++ b/packages/plugins/@nocobase/plugin-field-markdown-vditor/package.json @@ -2,12 +2,15 @@ "name": "@nocobase/plugin-field-markdown-vditor", "displayName": "Collection field: Markdown(Vditor)", "displayName.zh-CN": "数据表字段:Markdown(Vditor)", + "displayName.ru-RU": "Поле коллекции: Markdown(Vditor)", "description": "Used to store Markdown and render it using Vditor editor, supports common Markdown syntax such as list, code, quote, etc., and supports uploading images, recordings, etc.It also allows for instant rendering, where what you see is what you get.", + "description.ru-RU": "Используется для хранения Markdown и его отображения с помощью редактора Vditor, поддерживает общие синтаксисы Markdown: списки, код, цитаты и т.д., а также загрузку изображений и аудиозаписей. Обеспечивает мгновенный рендеринг «что видишь — то получаешь».", "description.zh-CN": "用于存储 Markdown,并使用 Vditor 编辑器渲染,支持常见 Markdown 语法,如列表,代码,引用等,并支持上传图片,录音等。同时可以做到即时渲染,所见即所得。", "version": "1.9.9", "license": "AGPL-3.0", "main": "dist/server/index.js", "homepage": "https://docs.nocobase.com/handbook/field-markdown-vditor", + "homepage.ru-RU": "https://docs-ru.nocobase.com/handbook/field-markdown-vditor", "homepage.zh-CN": "https://docs-cn.nocobase.com/handbook/field-markdown-vditor", "peerDependencies": { "@nocobase/client": "1.x", diff --git a/packages/plugins/@nocobase/plugin-field-markdown-vditor/src/locale/ru-RU.json b/packages/plugins/@nocobase/plugin-field-markdown-vditor/src/locale/ru-RU.json new file mode 100644 index 00000000000..7616baa192a --- /dev/null +++ b/packages/plugins/@nocobase/plugin-field-markdown-vditor/src/locale/ru-RU.json @@ -0,0 +1,38 @@ +{ + "Vditor": "Markdown(Vditor)", + "File collection": "Коллекция файлов", + "Used to store files uploaded in the Markdown editor (default: attachments)": "Используется для хранения файлов, загруженных в редакторе Markdown (по умолчанию: вложения)", + "Toolbar": "Конфигурация панели инструментов редактора", + "Emoji": "Эмодзи", + "Headings": "Заголовки", + "Bold": "Жирный", + "Italic": "Курсив", + "Strike": "Зачеркнутый", + "Record": "Начать запись/Завершить запись", + "Line": "Линия", + "Quote": "Цитата", + "List": "Список", + "OrderedList": "Нумерованный список", + "Check": "Список задач", + "Outdent": "Уменьшить отступ", + "Indent": "Увеличить отступ", + "Code": "Блок кода", + "InlineCode": "Встроенный код", + "InsertAfter": "Вставить строку после", + "InsertBefore": "Вставить строку перед", + "Undo": "Отменить", + "Redo": "Повторить", + "Upload": "Загрузить изображение или файл", + "Link": "Ссылка", + "Table": "Таблица", + "EditMode": "Режим редактирования", + "Both": "Редактор и предпросмотр", + "Preview": "Предпросмотр", + "Fullscreen": "Полноэкранный режим", + "Outline": "Структура", + "uploading": "Загрузка...", + "upload failed": "Ошибка загрузки", + "vditor.uploadError.message": "Невозможно загрузить файлы в текущее хранилище. Вы пытаетесь загрузить файлы в редактор Markdown, но текущая конфигурация хранилища не поддерживает эту операцию. Чтобы включить функциональность загрузки, выполните следующие настройки: 1. Перейдите в \"Диспетчер файлов\". 2. Выберите хранилище, которое сейчас используется ({{storageTitle}}). 3. Установите \"Базовый URL\" и включите опцию \"Публичный доступ\".", + "Storage configuration not found. Please configure a storage provider first.": "Конфигурация хранилища не найдена. Сначала настройте поставщика хранилища.", + "Response data is empty": "Данные ответа пусты" +} diff --git a/packages/plugins/@nocobase/plugin-field-sequence/package.json b/packages/plugins/@nocobase/plugin-field-sequence/package.json index 9fe523eaca0..cdef93d45c3 100644 --- a/packages/plugins/@nocobase/plugin-field-sequence/package.json +++ b/packages/plugins/@nocobase/plugin-field-sequence/package.json @@ -1,13 +1,16 @@ { "name": "@nocobase/plugin-field-sequence", "displayName": "Collection field: Sequence", + "displayName.ru-RU": "Поле коллекции: Последовательность", "displayName.zh-CN": "数据表字段:自动编码", "description": "Automatically generate codes based on configured rules, supporting combinations of dates, numbers, and text.", + "description.ru-RU": "Автоматически генерирует коды по заданным правилам с поддержкой комбинаций дат, чисел и текста.", "description.zh-CN": "根据配置的规则自动生成编码,支持日期、数字、文本的组合。", "version": "1.9.9", "license": "AGPL-3.0", "main": "./dist/server/index.js", "homepage": "https://docs.nocobase.com/handbook/field-sequence", + "homepage.ru-RU": "https://docs-ru.nocobase.com/handbook/field-sequence", "homepage.zh-CN": "https://docs-cn.nocobase.com/handbook/field-sequence", "devDependencies": { "@formily/antd-v5": "1.x", diff --git a/packages/plugins/@nocobase/plugin-field-sequence/src/locale/ru-RU.json b/packages/plugins/@nocobase/plugin-field-sequence/src/locale/ru-RU.json new file mode 100644 index 00000000000..553417f900e --- /dev/null +++ b/packages/plugins/@nocobase/plugin-field-sequence/src/locale/ru-RU.json @@ -0,0 +1,24 @@ +{ + "Sequence": "Последовательность", + "Sequence rules": "Правила последовательности", + "Add rule": "Добавить правило", + "Inputable": "Вводимый", + "Match rules": "Правила соответствия", + "Type": "Тип", + "Autoincrement": "Автоинкремент", + "Fixed text": "Фиксированный текст", + "Text content": "Содержимое текста", + "Rule content": "Содержимое правила", + "{{value}} Digits": "{{value}} цифр", + "Digits": "Цифры", + "Start from": "Начать с", + "Starts from {{value}}": "Начинается с {{value}}", + "Reset cycle": "Цикл сброса", + "No reset": "Без сброса", + "Daily": "Ежедневно", + "Every Monday": "Каждый понедельник", + "Monthly": "Ежемесячно", + "Yearly": "Ежегодно", + "Operations": "Операции", + "Customize": "Настроить" +} diff --git a/packages/plugins/@nocobase/plugin-field-sort/package.json b/packages/plugins/@nocobase/plugin-field-sort/package.json index 99ea55b3348..047a91a859e 100644 --- a/packages/plugins/@nocobase/plugin-field-sort/package.json +++ b/packages/plugins/@nocobase/plugin-field-sort/package.json @@ -3,8 +3,10 @@ "version": "1.9.9", "license": "AGPL-3.0", "displayName": "Collection field: Sort", + "displayName.ru-RU": "Поле коллекции: Сортировка", "displayName.zh-CN": "数据表字段:排序", "description": "Used to sort the data in a collection.", + "description.ru-RU": "Используется для сортировки данных в коллекции.", "description.zh-CN": "用于对数据表的数据进行排序。", "main": "dist/server/index.js", "peerDependencies": { diff --git a/packages/plugins/@nocobase/plugin-file-manager/package.json b/packages/plugins/@nocobase/plugin-file-manager/package.json index ab0eea58dc3..d96eee6ad00 100644 --- a/packages/plugins/@nocobase/plugin-file-manager/package.json +++ b/packages/plugins/@nocobase/plugin-file-manager/package.json @@ -2,12 +2,15 @@ "name": "@nocobase/plugin-file-manager", "version": "1.9.9", "displayName": "File manager", + "displayName.ru-RU": "Менеджер файлов", "displayName.zh-CN": "文件管理器", "description": "Provides files storage services with files collection template and attachment field.", + "description.ru-RU": "Предоставляет сервисы хранения файлов, шаблон коллекции файлов и поле вложений.", "description.zh-CN": "提供文件存储服务,并提供了文件表模板和附件字段。", "license": "AGPL-3.0", "main": "./dist/server/index.js", "homepage": "https://docs.nocobase.com/handbook/file-manager", + "homepage.ru-RU": "https://docs-ru.nocobase.com/handbook/file-manager", "homepage.zh-CN": "https://docs-cn.nocobase.com/handbook/file-manager", "devDependencies": { "@aws-sdk/client-s3": "3.750.0", diff --git a/packages/plugins/@nocobase/plugin-file-manager/src/locale/ru-RU.json b/packages/plugins/@nocobase/plugin-file-manager/src/locale/ru-RU.json index fcf27be020f..e8f0e4321ef 100644 --- a/packages/plugins/@nocobase/plugin-file-manager/src/locale/ru-RU.json +++ b/packages/plugins/@nocobase/plugin-file-manager/src/locale/ru-RU.json @@ -1,18 +1,43 @@ { - "File manager": "Файловые хранилища", + "File collection": "Коллекция файлов", + "File name": "Имя файла", + "Extension name": "Имя расширения", + "Size": "Размер", + "File size limit": "Ограничение размера файла", + "Minimum from 1 byte, maximum up to 1GB.": "Минимум от 1 байта, максимум до 1 ГБ.", + "MIME type": "MIME тип", + "File type (in MIME type format)": "Тип файла (в формате MIME типа)", + "Multi-types seperated with comma, for example: \"image/*\", \"image/png\", \"image/*, application/pdf\" etc.": "Множественные типы, разделенные запятой, например: \"image/*\", \"image/png\", \"image/*, application/pdf\" и т.д.", + "URL": "URL", + "File storage": "Файловое хранилище", + "File manager": "Управление файлами", "Attachment": "Вложение", - "MIME type": "Подтвердить", "Allow uploading multiple files": "Позволить загружать много файлов", - "Storage display name": "Имя храшилища на экране", + "Storage": "Хранилище", + "Storages": "Хранилища", "Storage name": "Имя хранилища", - "Storage type": "Тип Хранилища", + "Storage type": "Тип хранилища", "Default storage": "Хранилище по умолчанию", - "Storage base URL": "Базовый URL хранилища", + "Access base URL": "Базовый URL доступа", + "Base URL for file access, could be your CDN base URL. For example: \"https://cdn.nocobase.com\".": "Базовый URL для доступа к файлам, может быть базовым URL вашего CDN. Например: \"https://cdn.nocobase.com\".", "Destination": "Назначение", "Use the built-in static file server": "Использовать встроенный статический файл-сервер", "Local storage": "Локальное хранилище", "Aliyun OSS": "Aliyun OSS", "Amazon S3": "Amazon S3", "Tencent COS": "Tencent COS", - "Filename": "Имя файла" + "Region": "Регион", + "Bucket": "Корзина", + "Path": "Путь", + "Relative path the file will be saved to. Left blank as root path. The leading and trailing slashes \"/\" will be ignored. For example: \"user/avatar\".": "Относительный путь, по которому будет сохранен файл. Оставьте пустым для корневого пути. Начальные и конечные слеши \"/\" будут проигнорированы. Например: \"user/avatar\".", + "Filename": "Имя файла", + "Will be used for API": "Будет использоваться для API", + "Default storage will be used when not selected": "Хранилище по умолчанию будет использоваться, если не выбрано", + "Keep file in storage when destroy record": "Сохранить файл в хранилище при удалении записи", + "See more": "Подробнее", + "Aliyun OSS region part of the bucket. For example: \"oss-cn-beijing\".": "Часть региона Aliyun OSS корзины. Например: \"oss-cn-beijing\".", + "Timeout": "Таймаут", + "Upload timeout for a single file in milliseconds. Default is 600000.": "Таймаут загрузки для одного файла в миллисекундах. По умолчанию 600000.", + "Storage display name": "Отображаемое имя хранилища", + "Storage base URL": "Базовый URL хранилища" } diff --git a/packages/plugins/@nocobase/plugin-file-previewer-office/package.json b/packages/plugins/@nocobase/plugin-file-previewer-office/package.json index 5c20b522cf3..34a582e73ef 100644 --- a/packages/plugins/@nocobase/plugin-file-previewer-office/package.json +++ b/packages/plugins/@nocobase/plugin-file-previewer-office/package.json @@ -1,8 +1,10 @@ { "name": "@nocobase/plugin-file-previewer-office", "displayName": "Office File Previewer", + "displayName.ru-RU": "Просмотр MS Office-файлов", "displayName.zh-CN": "Office 文件预览", "description": "A plugin for previewing office files via Microsoft live preview service.", + "description.ru-RU": "Плагин для просмотра Office-файлов через Microsoft live preview service.", "description.zh-CN": "基于微软在线服务预览 Office 文件的插件。", "version": "1.9.9", "main": "dist/server/index.js", diff --git a/packages/plugins/@nocobase/plugin-gantt/package.json b/packages/plugins/@nocobase/plugin-gantt/package.json index 9c7edb14e20..7e5fb29cdd6 100644 --- a/packages/plugins/@nocobase/plugin-gantt/package.json +++ b/packages/plugins/@nocobase/plugin-gantt/package.json @@ -2,12 +2,15 @@ "name": "@nocobase/plugin-gantt", "version": "1.9.9", "displayName": "Block: Gantt", + "displayName.ru-RU": "Блок: Диаграмма Ганта", "displayName.zh-CN": "区块:甘特图", "description": "Provides Gantt block.", + "description.ru-RU": "Предоставляет блок диаграммы Ганта.", "description.zh-CN": "提供甘特图区块。", "license": "AGPL-3.0", "main": "dist/server/index.js", "homepage": "https://docs.nocobase.com/handbook/block-gantt", + "homepage.ru-RU": "https://docs-ru.nocobase.com/handbook/block-gantt", "homepage.zh-CN": "https://docs-cn.nocobase.com/handbook/block-gantt", "devDependencies": { "antd-style": "3.7.1" diff --git a/packages/plugins/@nocobase/plugin-gantt/src/locale/ru-RU.json b/packages/plugins/@nocobase/plugin-gantt/src/locale/ru-RU.json new file mode 100644 index 00000000000..8ce35753beb --- /dev/null +++ b/packages/plugins/@nocobase/plugin-gantt/src/locale/ru-RU.json @@ -0,0 +1,6 @@ +{ + "Title field": "Поле заголовка", + "Time scale": "Временная шкала", + "Start date field": "Поле даты начала", + "Progress field": "Поле прогресса" +} diff --git a/packages/plugins/@nocobase/plugin-graph-collection-manager/package.json b/packages/plugins/@nocobase/plugin-graph-collection-manager/package.json index 442aebe5d38..fa6d6b606e2 100644 --- a/packages/plugins/@nocobase/plugin-graph-collection-manager/package.json +++ b/packages/plugins/@nocobase/plugin-graph-collection-manager/package.json @@ -1,13 +1,16 @@ { "name": "@nocobase/plugin-graph-collection-manager", "displayName": "Graph collection manager", + "displayName.ru-RU": "Менеджер графовых коллекций", "displayName.zh-CN": "可视化数据表管理", "description": "An ER diagram-like tool. Currently only the Master database is supported.", + "description.ru-RU": "Инструмент в стиле ER-диаграммы. В настоящий момент поддерживается только основная база данных.", "description.zh-CN": "类似 ER 图的工具,目前只支持主数据库。", "version": "1.9.9", "license": "AGPL-3.0", "main": "./dist/server/index.js", "homepage": "https://docs.nocobase.com/handbook/graph-collection-manager", + "homepage.ru-RU": "https://docs-ru.nocobase.com/handbook/graph-collection-manager", "homepage.zh-CN": "https://docs-cn.nocobase.com/handbook/graph-collection-manager", "devDependencies": { "@ant-design/icons": "5.x", diff --git a/packages/plugins/@nocobase/plugin-graph-collection-manager/src/locale/ru-RU.json b/packages/plugins/@nocobase/plugin-graph-collection-manager/src/locale/ru-RU.json new file mode 100644 index 00000000000..bec6b22b5da --- /dev/null +++ b/packages/plugins/@nocobase/plugin-graph-collection-manager/src/locale/ru-RU.json @@ -0,0 +1,15 @@ +{ + "Graph Collection": "Граф коллекций", + "Collection List": "Список коллекций", + "Full Screen": "Полный экран", + "Collection Search": "Поиск коллекций", + "Create Collection": "Создать коллекцию", + "All Fields": "Все поля", + "Association Fields": "Поля ассоциации", + "Choices fields": "Поля выбора", + "All relationships": "Все связи", + "Entity relationship only": "Только связи сущностей", + "Inheritance relationship only": "Только связи наследования", + "Graphical interface": "Графический интерфейс", + "Selection": "Выбор" +} diff --git a/packages/plugins/@nocobase/plugin-kanban/package.json b/packages/plugins/@nocobase/plugin-kanban/package.json index 46e262b6b7f..4e1652147a3 100644 --- a/packages/plugins/@nocobase/plugin-kanban/package.json +++ b/packages/plugins/@nocobase/plugin-kanban/package.json @@ -6,8 +6,10 @@ "homepage.zh-CN": "https://docs-cn.nocobase.com/handbook/block-kanban", "license": "AGPL-3.0", "displayName": "Block: Kanban", + "displayName.ru-RU": "Блок: Канбан", "displayName.zh-CN": "区块:看板", "description": "Provides kanban block.", + "description.ru-RU": "Предоставляет блок канбан.", "description.zh-CN": "提供看板区块。", "peerDependencies": { "@nocobase/client": "1.x", diff --git a/packages/plugins/@nocobase/plugin-kanban/src/locale/ru-RU.json b/packages/plugins/@nocobase/plugin-kanban/src/locale/ru-RU.json new file mode 100644 index 00000000000..e19389456ff --- /dev/null +++ b/packages/plugins/@nocobase/plugin-kanban/src/locale/ru-RU.json @@ -0,0 +1,10 @@ +{ + "Used for sorting kanban cards, only sorting fields corresponding to grouping fields can be selected": "Используется для сортировки карточек канбан, можно выбрать только поля сортировки, соответствующие полям группировки", + "Global sorting": "Глобальная сортировка", + "Create sort field": "Создать поле сортировки", + "Convert the following integer fields to sorting fields": "Преобразовать следующие целочисленные поля в поля сортировки", + "Sorting field": "Поле сортировки", + "Grouped sorting based on": "Групповая сортировка на основе", + "Enable drag and drop sorting": "Включить сортировку перетаскиванием", + "Set column width": "Установить ширину столбца" +} diff --git a/packages/plugins/@nocobase/plugin-license/package.json b/packages/plugins/@nocobase/plugin-license/package.json index 5e19221eba0..66ff997f9c2 100644 --- a/packages/plugins/@nocobase/plugin-license/package.json +++ b/packages/plugins/@nocobase/plugin-license/package.json @@ -3,8 +3,10 @@ "version": "1.9.9", "main": "dist/server/index.js", "displayName": "License settings", + "displayName.ru-RU": "Настройки лицензии", "displayName.zh-CN": "授权设置", "description": "Instance ID and license key settings", + "description.ru-RU": "Настройка идентификатора экземпляра и ключа лицензии", "description.zh-CN": "实例 ID 和授权密钥设置", "devDependencies": { "@nocobase/license-kit": "^0.2.17" diff --git a/packages/plugins/@nocobase/plugin-license/src/locale/ru-RU.json b/packages/plugins/@nocobase/plugin-license/src/locale/ru-RU.json new file mode 100644 index 00000000000..97660ad11bb --- /dev/null +++ b/packages/plugins/@nocobase/plugin-license/src/locale/ru-RU.json @@ -0,0 +1,13 @@ +{ + "License key saved successfully, please re-run the plugin installation.": "Лицензионный ключ успешно сохранен, пожалуйста, перезапустите установку плагина.", + "License settings": "Настройки лицензии", + "Instance ID": "ID экземпляра", + "License key": "Лицензионный ключ", + "Enter license key": "Введите лицензионный ключ", + "Invalid license key": "Неверный лицензионный ключ", + "Change key": "Изменить ключ", + "License key has been set": "Лицензионный ключ был установлен", + "Copied": "Скопировано", + "Copy": "Копировать", + "Failed to copy, please open ./storage/.license/instance-id and copy it": "Не удалось скопировать, пожалуйста, откройте ./storage/.license/instance-id и скопируйте его" +} diff --git a/packages/plugins/@nocobase/plugin-locale-tester/package.json b/packages/plugins/@nocobase/plugin-locale-tester/package.json index f9571d0989a..19031636bb1 100644 --- a/packages/plugins/@nocobase/plugin-locale-tester/package.json +++ b/packages/plugins/@nocobase/plugin-locale-tester/package.json @@ -1,6 +1,7 @@ { "name": "@nocobase/plugin-locale-tester", "displayName": "Locale tester", + "displayName.ru-RU": "Тестер локализации", "displayName.zh-CN": "翻译测试工具", "version": "1.9.9", "homepage": "https://github.com/nocobase/locales", diff --git a/packages/plugins/@nocobase/plugin-locale-tester/src/locale/ru-RU.json b/packages/plugins/@nocobase/plugin-locale-tester/src/locale/ru-RU.json new file mode 100644 index 00000000000..bdf6b572a0b --- /dev/null +++ b/packages/plugins/@nocobase/plugin-locale-tester/src/locale/ru-RU.json @@ -0,0 +1,5 @@ +{ + "Locale": "Локализация", + "Locale tester": "Тестер локализации", + "Please go to nocobase/locales to get the language file that needs translation, then paste it below and provide the translation.": "Пожалуйста, перейдите на nocobase/locales чтобы получить языковой файл, который нужно перевести, затем вставьте его ниже и предоставьте перевод." +} diff --git a/packages/plugins/@nocobase/plugin-localization/package.json b/packages/plugins/@nocobase/plugin-localization/package.json index 6f6f3bbb75b..5612b39e421 100644 --- a/packages/plugins/@nocobase/plugin-localization/package.json +++ b/packages/plugins/@nocobase/plugin-localization/package.json @@ -3,6 +3,7 @@ "version": "1.9.9", "main": "dist/server/index.js", "homepage": "https://docs.nocobase.com/handbook/localization-management", + "homepage.ru-RU": "https://docs-ru.nocobase.com/handbook/localization-management", "homepage.zh-CN": "https://docs-cn.nocobase.com/handbook/localization-management", "license": "AGPL-3.0", "devDependencies": { @@ -20,7 +21,9 @@ ], "displayName": "Localization", "displayName.zh-CN": "本地化", + "displayName.ru-RU": "Локализация", "description": "Allows to manage localization resources of the application.", + "description.ru-RU": "Позволяет управлять ресурсами локализации приложения.", "description.zh-CN": "支持管理应用程序的本地化资源。", "gitHead": "d0b4efe4be55f8c79a98a331d99d9f8cf99021a1" } diff --git a/packages/plugins/@nocobase/plugin-localization/src/locale/ru-RU.json b/packages/plugins/@nocobase/plugin-localization/src/locale/ru-RU.json new file mode 100644 index 00000000000..c71e4cf738c --- /dev/null +++ b/packages/plugins/@nocobase/plugin-localization/src/locale/ru-RU.json @@ -0,0 +1,24 @@ +{ + "Edit": "Редактировать", + "Add new": "Добавить новый", + "Localization management": "Управление локализацией", + "No data": "Нет данных", + "Delete text": "Удалить текст", + "Delete translation": "Удалить перевод", + "Module": "Модуль", + "Text": "Текст", + "Translation": "Перевод", + "Sync": "Синхронизировать", + "Current language": "Текущий язык", + "Keyword": "Ключевое слово", + "All": "Все", + "No translation": "Нет перевода", + "System & Plugins": "Система и плагины", + "User interfaces": "Пользовательские интерфейсы", + "Collections & Fields": "Коллекции и поля", + "Please select the resources you want to synchronize": "Пожалуйста, выберите ресурсы, которые хотите синхронизировать", + "Menu": "Меню", + "Publish": "Опубликовать", + "Translations": "Переводы", + "Localization": "Локализация" +} diff --git a/packages/plugins/@nocobase/plugin-logger/package.json b/packages/plugins/@nocobase/plugin-logger/package.json index 752cae766a5..71814e78ba5 100644 --- a/packages/plugins/@nocobase/plugin-logger/package.json +++ b/packages/plugins/@nocobase/plugin-logger/package.json @@ -1,13 +1,16 @@ { "name": "@nocobase/plugin-logger", "displayName": "Logger", + "displayName.ru-RU": "Логгер", "displayName.zh-CN": "日志", "description": "Server-side logs, mainly including API request logs and system runtime logs, and allows to package and download log files.", + "description.ru-RU": "Серверные логи, включают журналы запросов API и системные журналы, с возможностью архивации и скачивания лог-файлов.", "description.zh-CN": "服务端日志,主要包括接口请求日志和系统运行日志,并支持打包和下载日志文件。", "version": "1.9.9", "license": "AGPL-3.0", "main": "dist/server/index.js", "homepage": "https://docs.nocobase.com/handbook/logger", + "homepage.ru-RU": "https://docs-ru.nocobase.com/handbook/logger", "homepage.zh-CN": "https://docs-cn.nocobase.com/handbook/logger", "devDependencies": { "@types/tar-fs": "^2.0.2", diff --git a/packages/plugins/@nocobase/plugin-logger/src/locale/ru-RU.json b/packages/plugins/@nocobase/plugin-logger/src/locale/ru-RU.json new file mode 100644 index 00000000000..6930f8dbdee --- /dev/null +++ b/packages/plugins/@nocobase/plugin-logger/src/locale/ru-RU.json @@ -0,0 +1,9 @@ +{ + "Logger": "Логгер", + "Search": "Поиск", + "Download": "Скачать", + "Download logs": "Скачать логи", + "API request and response logs": "Логи запросов и ответов API", + "Application, database, plugins and other system logs, the error level logs will be sent to": "Логи приложения, базы данных, плагинов и других систем, логи уровня ошибок будут отправлены в", + "SQL execution logs, printed by Sequelize when the db logging is enabled": "Логи выполнения SQL, выводимые Sequelize при включенном логировании базы данных" +} diff --git a/packages/plugins/@nocobase/plugin-map/package.json b/packages/plugins/@nocobase/plugin-map/package.json index ed516ddfd5d..df9a7b91b37 100644 --- a/packages/plugins/@nocobase/plugin-map/package.json +++ b/packages/plugins/@nocobase/plugin-map/package.json @@ -1,13 +1,16 @@ { "name": "@nocobase/plugin-map", "displayName": "Block: Map", + "displayName.ru-RU": "Блок: Карта", "displayName.zh-CN": "区块:地图", "version": "1.9.9", "description": "Map block, support Gaode map and Google map, you can also extend more map types.", + "description.ru-RU": "Блок карты, поддерживает карты Gaode и Google, можно расширить поддержку других типов карт.", "description.zh-CN": "地图区块,支持高德地图和 Google 地图,你也可以扩展更多地图类型。", "license": "AGPL-3.0", "main": "./dist/server/index.js", "homepage": "https://docs.nocobase.com/handbook/block-map", + "homepage.ru-RU": "https://docs-ru.nocobase.com/handbook/block-map", "homepage.zh-CN": "https://docs-cn.nocobase.com/handbook/block-map", "devDependencies": { "@amap/amap-jsapi-loader": "^1.0.1", diff --git a/packages/plugins/@nocobase/plugin-map/src/locale/ru-RU.json b/packages/plugins/@nocobase/plugin-map/src/locale/ru-RU.json new file mode 100644 index 00000000000..18ed7b9c6ab --- /dev/null +++ b/packages/plugins/@nocobase/plugin-map/src/locale/ru-RU.json @@ -0,0 +1,51 @@ +{ + "Map": "Карта", + "Map-based geometry": "Геометрия на основе карты", + "Map type": "Тип карты", + "Point": "Точка", + "Line": "Линия", + "Circle": "Круг", + "Polygon": "Многоугольник", + "Access key": "Ключ доступа", + "securityJsCode or serviceHost": "securityJsCode или serviceHost", + "AMap": "AMap", + "Google Maps": "Google Карты", + "Clear": "Очистить", + "Click to select the starting point and double-click to end the drawing": "Нажмите, чтобы выбрать начальную точку, и дважды нажмите, чтобы закончить рисование", + "Clear the canvas": "Очистить холст", + "Are you sure to clear the canvas?": "Вы уверены, что хотите очистить холст?", + "Confirm": "Подтвердить", + "Cancel": "Отмена", + "Enter keywords to search": "Введите ключевые слова для поиска", + "The AccessKey is incorrect, please check it": "Ключ доступа неверный, пожалуйста, проверьте его", + "Please configure the AMap securityCode or serviceHost correctly": "Пожалуйста, правильно настройте securityCode или serviceHost для AMap", + "Map manager": "Менеджер карт", + "Configuration": "Конфигурация", + "Saved successfully": "Сохранено успешно", + "Saved failed": "Сохранение не удалось", + "Edit": "Редактировать", + "Save": "Сохранить", + "Please configure the AccessKey and SecurityJsCode first": "Пожалуйста, сначала настройте AccessKey и SecurityJsCode", + "Go to the configuration page": "Перейти на страницу конфигурации", + "Zoom": "Масштаб", + "Set default zoom level": "Установить уровень масштаба по умолчанию", + "The default zoom level of the map": "Уровень масштаба карты по умолчанию", + "Edit field title": "Редактировать заголовок поля", + "Field title": "Заголовок поля", + "Edit tooltip": "Редактировать подсказку", + "Delete field": "Удалить поле", + "Required": "Обязательное", + "Pattern": "Шаблон", + "Operator": "Оператор", + "Editable": "Редактируемое", + "Readonly": "Только для чтения", + "Easy-reading": "Легкое чтение", + "Edit description": "Редактировать описание", + "Map field": "Поле карты", + "Marker field": "Поле маркера", + "Load google maps failed, Please check the Api key and refresh the page": "Загрузка Google карт не удалась, пожалуйста, проверьте API ключ и обновите страницу", + "Create map block": "Создать блок карты", + "Start point": "Начальная точка", + "End point": "Конечная точка", + "Concatenation order field": "Поле порядка конкатенации" +} diff --git a/packages/plugins/@nocobase/plugin-mobile-client/package.json b/packages/plugins/@nocobase/plugin-mobile-client/package.json index a9c9c0b767f..a75c60da6fd 100644 --- a/packages/plugins/@nocobase/plugin-mobile-client/package.json +++ b/packages/plugins/@nocobase/plugin-mobile-client/package.json @@ -6,8 +6,10 @@ "homepage.zh-CN": "https://docs-cn.nocobase.com/handbook/mobile-client", "license": "AGPL-3.0", "displayName": "Mobile client(Deprecated)", + "displayName.ru-RU": "Мобильный клиент (устарел)", "displayName.zh-CN": "移动端(已废弃)", "description": "Provides the ability to configure mobile pages.", + "description.ru-RU": "Предоставляет возможность настройки мобильных страниц.", "description.zh-CN": "提供移动端页面配置的能力。", "devDependencies": { "@ant-design/icons": "5.x", diff --git a/packages/plugins/@nocobase/plugin-mobile-client/src/locale/ru-RU.json b/packages/plugins/@nocobase/plugin-mobile-client/src/locale/ru-RU.json new file mode 100644 index 00000000000..37f2a25f756 --- /dev/null +++ b/packages/plugins/@nocobase/plugin-mobile-client/src/locale/ru-RU.json @@ -0,0 +1,32 @@ +{ + "Mobile Client-side(Deprecated)": "Мобильная клиентская часть (устарело)", + "Interface Configuration": "Конфигурация интерфейса", + "App Configuration": "Конфигурация приложения", + "Enable TabBar": "Включить панель вкладок", + "Untitled": "Без названия", + "Edit info": "Редактировать информацию", + "Title": "Заголовок", + "Display back button": "Показывать кнопку назад", + "Delete menu": "Удалить меню", + "Edit menu info": "Редактировать информацию меню", + "Menu": "Меню", + "Menu name": "Название меню", + "Icon": "Иконка", + "Delete menu item?": "Удалить элемент меню?", + "Add menu item": "Добавить элемент меню", + "Page template": "Шаблон страницы", + "Template mode": "Режим шаблона", + "Enable Header": "Включить заголовок", + "Enable Tabs": "Включить вкладки", + "Delete tab item?": "Удалить элемент вкладки?", + "Add tab": "Добавить вкладку", + "App level Configuration": "Конфигурация уровня приложения", + "Menu configuration": "Конфигурация меню", + "Page configuration": "Конфигурация страницы", + "Settings": "Настройки", + "Delete settings block": "Удалить блок настроек", + "Delete menu block": "Удалить блок меню", + "Mobile client access address": "Адрес доступа мобильного клиента", + "The full address is": "Полный адрес:", + "Preview": "Предварительный просмотр" +} diff --git a/packages/plugins/@nocobase/plugin-mobile/package.json b/packages/plugins/@nocobase/plugin-mobile/package.json index 2b710d7c54e..a0e314b1ee7 100644 --- a/packages/plugins/@nocobase/plugin-mobile/package.json +++ b/packages/plugins/@nocobase/plugin-mobile/package.json @@ -7,7 +7,9 @@ "license": "AGPL-3.0", "displayName": "Mobile (deprecated)", "displayName.zh-CN": "移动端(已废弃)", + "displayName.ru-RU": "Мобильная версия (устарело)", "description": "Provides the ability to configure mobile pages.", + "description.ru-RU": "Предоставляет возможность настройки мобильных страниц.", "description.zh-CN": "提供移动端页面配置的能力。", "peerDependencies": { "@nocobase/client": "1.x", diff --git a/packages/plugins/@nocobase/plugin-mobile/src/locale/ru-RU.json b/packages/plugins/@nocobase/plugin-mobile/src/locale/ru-RU.json new file mode 100644 index 00000000000..bbea8dd3201 --- /dev/null +++ b/packages/plugins/@nocobase/plugin-mobile/src/locale/ru-RU.json @@ -0,0 +1,30 @@ +{ + "App settings": "Настройки приложения", + "Page settings": "Настройки страницы", + "Info": "Информация", + "Back": "Назад", + "Link": "Ссылка", + "Remove": "Удалить", + "Add page": "Добавить страницу", + "Title": "Заголовок", + "Icon": "Иконка", + "Selected icon": "Выбранная иконка", + "Add link": "Добавить ссылку", + "Display tab bar": "Показывать панель вкладок", + "Display page header": "Показывать заголовок страницы", + "Display navigation bar": "Показывать панель навигации", + "Display page title": "Показывать название страницы", + "Display tabs": "Показывать вкладки", + "Add tab": "Добавить вкладку", + "Mobile": "Мобильный", + "Title field is required": "Поле названия обязательно", + "Icon field is required": "Поле иконки обязательно", + "Desktop data blocks": "Блоки данных рабочего стола", + "Other desktop blocks": "Другие блоки рабочего стола", + "Settings": "Настройки", + "Mobile menu": "Мобильное меню", + "Mobile routes": "Мобильные маршруты", + "No accessible pages found": "Доступные страницы не найдены", + "This might be due to permission configuration issues": "Это может быть связано с проблемами конфигурации разрешений", + "Select time": "Выбрать время" +} diff --git a/packages/plugins/@nocobase/plugin-multi-app-manager/package.json b/packages/plugins/@nocobase/plugin-multi-app-manager/package.json index 048ad2884c6..32be7e0fdaf 100644 --- a/packages/plugins/@nocobase/plugin-multi-app-manager/package.json +++ b/packages/plugins/@nocobase/plugin-multi-app-manager/package.json @@ -1,13 +1,16 @@ { "name": "@nocobase/plugin-multi-app-manager", "displayName": "Multi-app manager", + "displayName.ru-RU": "Менеджер мульти-приложений", "displayName.zh-CN": "多应用管理器", "description": "Dynamically create multiple apps without separate deployments.", + "description.ru-RU": "Позволяет динамически создавать несколько приложений без отдельных развертываний.", "description.zh-CN": "无需单独部署即可动态创建多个应用。", "version": "1.9.9", "license": "AGPL-3.0", "main": "./dist/server/index.js", "homepage": "https://docs.nocobase.com/handbook/multi-app-manager", + "homepage.ru-RU": "https://docs-ru.nocobase.com/handbook/multi-app-manager", "homepage.zh-CN": "https://docs-cn.nocobase.com/handbook/multi-app-manager", "devDependencies": { "@formily/react": "2.x", diff --git a/packages/plugins/@nocobase/plugin-multi-app-manager/src/locale/ru-RU.json b/packages/plugins/@nocobase/plugin-multi-app-manager/src/locale/ru-RU.json new file mode 100644 index 00000000000..991bb13d0a0 --- /dev/null +++ b/packages/plugins/@nocobase/plugin-multi-app-manager/src/locale/ru-RU.json @@ -0,0 +1,11 @@ +{ + "Multi-app manager": "Менеджер мультиприложений", + "Applications": "Приложения", + "App display name": "Отображаемое имя приложения", + "App ID": "ID приложения", + "Pin to menu": "Закрепить в меню", + "Custom domain": "Пользовательский домен", + "Manage applications": "Управление приложениями", + "Standalone deployment": "Автономное развертывание", + "Auto start": "Автозапуск" +} diff --git a/packages/plugins/@nocobase/plugin-multi-app-share-collection/package.json b/packages/plugins/@nocobase/plugin-multi-app-share-collection/package.json index c2211839780..7d37078885b 100644 --- a/packages/plugins/@nocobase/plugin-multi-app-share-collection/package.json +++ b/packages/plugins/@nocobase/plugin-multi-app-share-collection/package.json @@ -1,8 +1,10 @@ { "name": "@nocobase/plugin-multi-app-share-collection", "displayName": "Multi-app share collection", + "displayName.ru-RU": "Совместное использование коллекций приложениями", "displayName.zh-CN": "多应用数据表共享", "description": "", + "description.ru-RU": "Обеспечивает совместное использование коллекций между несколькими приложениями.", "description.zh-CN": "", "version": "1.9.9", "main": "./dist/server/index.js", diff --git a/packages/plugins/@nocobase/plugin-notification-email/package.json b/packages/plugins/@nocobase/plugin-notification-email/package.json index b1b3014c4e1..5c30fbea4a6 100644 --- a/packages/plugins/@nocobase/plugin-notification-email/package.json +++ b/packages/plugins/@nocobase/plugin-notification-email/package.json @@ -2,10 +2,13 @@ "name": "@nocobase/plugin-notification-email", "version": "1.9.9", "displayName": "Notification: Email", + "displayName.ru-RU": "Уведомления: Электронная почта (Email)", "displayName.zh-CN": "通知:电子邮件", "description": "Used for sending email notifications with built-in SMTP transport.", + "description.ru-RU": "Используется для отправки уведомлений по электронной почте с помощью встроенного SMTP транспорта.", "description.zh-CN": "通过电子邮件渠道发送通知,目前只支持 SMTP 传输方式。", "homepage": "https://docs.nocobase.com/handbook/notification-email", + "homepage.ru-RU": "https://docs-ru.nocobase.com/handbook/notification-email", "homepage.zh-CN": "https://docs-cn.nocobase.com/handbook/notification-email", "main": "dist/server/index.js", "devDependencies": { diff --git a/packages/plugins/@nocobase/plugin-notification-email/src/locale/ru-RU.json b/packages/plugins/@nocobase/plugin-notification-email/src/locale/ru-RU.json new file mode 100644 index 00000000000..b2fdea3733a --- /dev/null +++ b/packages/plugins/@nocobase/plugin-notification-email/src/locale/ru-RU.json @@ -0,0 +1,22 @@ +{ + "Email": "Электронная почта", + "From": "От", + "To": "Кому", + "CC": "Копия", + "BCC": "Скрытая копия", + "Add email address": "Добавить адрес электронной почты", + "Subject": "Тема", + "Content": "Содержание", + "Host": "Хост", + "Port": "Порт", + "Secure": "Безопасный", + "Account": "Аккаунт", + "Password": "Пароль", + "Configure": "Настроить", + "The email address that will be used as the sender": "Адрес электронной почты, который будет использоваться как отправитель", + "SMTP mail": "SMTP почта", + "SMTP server host": "Хост SMTP сервера", + "Content type": "Тип содержимого", + "Plain text": "Обычный текст", + "Transport": "Транспорт" +} diff --git a/packages/plugins/@nocobase/plugin-notification-in-app-message/package.json b/packages/plugins/@nocobase/plugin-notification-in-app-message/package.json index 5cadb7a7f1d..0990423d0b3 100644 --- a/packages/plugins/@nocobase/plugin-notification-in-app-message/package.json +++ b/packages/plugins/@nocobase/plugin-notification-in-app-message/package.json @@ -2,10 +2,13 @@ "name": "@nocobase/plugin-notification-in-app-message", "version": "1.9.9", "displayName": "Notification: In-app message", + "displayName.ru-RU": "Уведомления: Всплывающие сообщения внутри приложения", "displayName.zh-CN": "通知:站内信", "description": "It supports users in receiving real-time message notifications within the NocoBase application.", + "description.ru-RU": "Поддерживает получение пользователями уведомлений в реальном времени внутри приложения NocoBase.", "description.zh-CN": "支持用户在 NocoBase 应用内实时接收消息通知。", "homepage": "https://docs.nocobase.com/handbook/notification-in-app-message", + "homepage.ru-RU": "https://docs-ru.nocobase.com/handbook/notification-in-app-message", "homepage.zh-CN": "https://docs-cn.nocobase.com/handbook/notification-in-app-message", "keywords": [ "Notification" diff --git a/packages/plugins/@nocobase/plugin-notification-in-app-message/src/locale/ru-RU.json b/packages/plugins/@nocobase/plugin-notification-in-app-message/src/locale/ru-RU.json new file mode 100644 index 00000000000..fca778cbc42 --- /dev/null +++ b/packages/plugins/@nocobase/plugin-notification-in-app-message/src/locale/ru-RU.json @@ -0,0 +1,33 @@ +{ + "Inbox": "Входящие", + "Message": "Сообщение", + "Loading": "Загрузка", + "Loading more": "Загрузить еще", + "No more": "Больше нет", + "Loading failed,": "Загрузка не удалась,", + "please reload": "пожалуйста, перезагрузите", + "Detail": "Детали", + "Content": "Содержание", + "Datetime": "Дата и время", + "Status": "Статус", + "All": "Все", + "Read": "Прочитано", + "Unread": "Непрочитано", + "In-app message": "Cообщение в приложении", + "Receivers": "Получатели", + "Channel name": "Имя канала", + "Message group name": "Имя группы сообщений", + "Message title": "Заголовок сообщения", + "Content type": "Тип содержимого", + "Plain text": "Обычный текст", + "Message content": "Содержимое сообщения", + "Details page for desktop": "Страница деталей для рабочего стола", + "Support two types of links: internal links and external links. If using an internal link, the link starts with\"/\", for example, \"/admin\". If using an external link, the link starts with \"http\", for example, \"https://example.com\".": "Поддерживает два типа ссылок: внутренние ссылки и внешние ссылки. Если используется внутренняя ссылка, ссылка начинается с \"/\", например, \"/admin\". Если используется внешняя ссылка, ссылка начинается с \"http\", например, \"https://example.com\".", + "Mark as read": "Отметить как прочитанное", + "Mark as unread": "Отметить как непрочитанное", + "Mark all as read": "Отметить все как прочитанные", + "Support two types of links: internal links and external links. If using an internal link, the link starts with\"/\", for example, \"/m\". If using an external link, the link starts with \"http\", for example, \"https://example.com\".": "Поддерживает два типа ссылок: внутренние ссылки и внешние ссылки. Если используется внутренняя ссылка, ссылка начинается с \"/\", например, \"/m\". Если используется внешняя ссылка, ссылка начинается с \"http\", например, \"https://example.com\".", + "Details page for mobile": "Страница деталей для мобильного", + "The message page has already been created.": "Страница сообщений уже создана.", + "When select receivers from node result, only support ID of user (or IDs array of users). Others will not match any user.": "При выборе получателей из результата узла поддерживаются только ID пользователя (или массив ID пользователей). Остальные не будут соответствовать ни одному пользователю." +} diff --git a/packages/plugins/@nocobase/plugin-notification-manager/package.json b/packages/plugins/@nocobase/plugin-notification-manager/package.json index 7b869c0767d..7036331f31c 100644 --- a/packages/plugins/@nocobase/plugin-notification-manager/package.json +++ b/packages/plugins/@nocobase/plugin-notification-manager/package.json @@ -1,11 +1,14 @@ { "name": "@nocobase/plugin-notification-manager", "displayName": "Notification manager", + "displayName.ru-RU": "Менеджер уведомлений", "description": "Provides a unified management service that includes channel configuration, logging, and other features, supporting the configuration of various notification channels, including in-app message and email.", + "description.ru-RU": "Предоставляет единый сервис управления, включающий конфигурирование каналов, логирование и другие функции, поддерживает настройку различных каналов уведомлений, включая внутренние сообщения и электронную почту.", "displayName.zh-CN": "通知管理", "description.zh-CN": "提供统一的管理服务,涵盖渠道配置、日志记录等功能,支持多种通知渠道的配置,包括站内信和电子邮件等。", "version": "1.9.9", "homepage": "https://docs.nocobase.com/handbook/notification-manager", + "homepage.ru-RU": "https://docs-ru.nocobase.com/handbook/notification-manager", "homepage.zh-CN": "https://docs-cn.nocobase.com/handbook/notification-manager", "main": "dist/server/index.js", "devDependencies": { diff --git a/packages/plugins/@nocobase/plugin-notification-manager/src/locale/ru-RU.json b/packages/plugins/@nocobase/plugin-notification-manager/src/locale/ru-RU.json new file mode 100644 index 00000000000..6ec7ad9a76b --- /dev/null +++ b/packages/plugins/@nocobase/plugin-notification-manager/src/locale/ru-RU.json @@ -0,0 +1,41 @@ +{ + "Notification Management": "Управление уведомлениями", + "Notification": "Уведомление", + "Channels": "Каналы", + "Channel": "Канал", + "Channel title": "Заголовок канала", + "Channel name": "Имя канала", + "Channel display name": "Отображаемое имя канала", + "Content": "Содержимое", + "Receivers": "Получатели", + "Receiver": "Получатель", + "Add new receiver": "Добавить нового получателя", + "Templates": "Шаблоны", + "Logs": "Логи", + "Title": "Заголовок", + "Description": "Описание", + "Notification type": "Тип уведомления", + "Actions": "Действия", + "Configure": "Настроить", + "Add new": "Добавить новое", + "Trigger From": "Запуск от", + "Status": "Статус", + "Edit": "Редактировать", + "Created At": "Создано", + "Delete record": "Удалить запись", + "Are you sure you want to delete it?": "Вы уверены, что хотите удалить это?", + "Deleted successfully!": "Успешно удалено!", + "Add user": "Добавить пользователя", + "Select users": "Выбрать пользователей", + "Query users": "Поиск пользователей", + "Receiver type": "Тип получателя", + "No channel enabled yet": "Пока не включен ни один канал", + "Success": "Успех", + "Fail": "Неудача", + "Reason": "Причина", + "Failed reason": "Причина неудачи", + "Log detail": "Детали лога", + "Message": "Сообщение", + "Notification manager": "Менеджер уведомлений", + "Randomly generated and can not be modified. Support letters, numbers and underscores, must start with an letter.": "Случайно сгенерировано и не может быть изменено. Поддерживает буквы, цифры и подчеркивания, должно начинаться с буквы." +} diff --git a/packages/plugins/@nocobase/plugin-notifications/package.json b/packages/plugins/@nocobase/plugin-notifications/package.json index ddc9bd87676..3a0ba1714ba 100644 --- a/packages/plugins/@nocobase/plugin-notifications/package.json +++ b/packages/plugins/@nocobase/plugin-notifications/package.json @@ -2,6 +2,8 @@ "name": "@nocobase/plugin-notifications", "version": "1.9.9", "description": "", + "displayName.ru-RU": "Уведомления", + "description.ru-RU": "Пакет плагинов для отправки и тестирования уведомлений.", "license": "AGPL-3.0", "main": "./dist/server/index.js", "devDependencies": { diff --git a/packages/plugins/@nocobase/plugin-public-forms/package.json b/packages/plugins/@nocobase/plugin-public-forms/package.json index 6d3d24375bc..ac1300445bc 100644 --- a/packages/plugins/@nocobase/plugin-public-forms/package.json +++ b/packages/plugins/@nocobase/plugin-public-forms/package.json @@ -3,11 +3,14 @@ "version": "1.9.9", "main": "dist/server/index.js", "displayName": "Public forms", + "displayName.ru-RU": "Публичные формы", "displayName.zh-CN": "公开表单", "description": "Share public forms externally to collect information from anonymous users", + "description.ru-RU": "Позволяет распространять публичные формы для сбора информации от анонимных пользователей.", "description.zh-CN": "对外分享公开表单,向匿名用户收集信息。", "license": "AGPL-3.0", "homepage": "https://docs.nocobase.com/handbook/public-form", + "homepage.ru-RU": "https://docs-ru.nocobase.com/handbook/public-form", "homepage.zh-CN": "https://docs-cn.nocobase.com/public-form", "peerDependencies": { "@nocobase/client": "1.x", diff --git a/packages/plugins/@nocobase/plugin-public-forms/src/locale/ru-RU.json b/packages/plugins/@nocobase/plugin-public-forms/src/locale/ru-RU.json new file mode 100644 index 00000000000..0e07025ccfc --- /dev/null +++ b/packages/plugins/@nocobase/plugin-public-forms/src/locale/ru-RU.json @@ -0,0 +1,18 @@ +{ + "Enable form": "Включить форму", + "Public forms": "Публичные формы", + "Add New": "Добавить новое", + "Type": "Тип", + "Open form": "Открыть форму", + "Set password": "Установить пароль", + "Copy link": "Копировать ссылку", + "QR code": "QR код", + "The form is not enabled and cannot be accessed": "Форма не включена и недоступна", + "Link copied successfully": "Ссылка успешно скопирована", + "After successful submission": "После успешной отправки", + "Enable password": "Включить пароль", + "Prompt after successful submission": "Сообщение после успешной отправки", + "Form": "Форма", + "# Submitted successfully!\nThis is a demo text, **supports Markdown syntax**.": "# Отправлено успешно!\nЭто демонстрационный текст, **поддерживает синтаксис Markdown**.", + "The form is not found": "Форма не найдена" +} diff --git a/packages/plugins/@nocobase/plugin-snapshot-field/package.json b/packages/plugins/@nocobase/plugin-snapshot-field/package.json index d4b8f6c35c0..bbc89179135 100644 --- a/packages/plugins/@nocobase/plugin-snapshot-field/package.json +++ b/packages/plugins/@nocobase/plugin-snapshot-field/package.json @@ -1,13 +1,16 @@ { "name": "@nocobase/plugin-snapshot-field", "displayName": "Collection field: Snapshot", + "displayName.ru-RU": "Поле коллекции: Снимок", "displayName.zh-CN": "数据表字段:关系快照", "description": "When adding a new record, create a snapshot for its relational record and save in the new record. The snapshot will not be updated when the relational record is updated.", + "description.ru-RU": "При добавлении новой записи создаёт снимок связанной записи и сохраняет его в текущей записи. Снимок не обновляется при изменении связанной записи.", "description.zh-CN": "在添加数据时,为它的关系数据创建快照,并保存在当前的数据中。关系数据更新时,快照不会更新。", "version": "1.9.9", "license": "AGPL-3.0", "main": "./dist/server/index.js", "homepage": "https://docs.nocobase.com/handbook/field-snapshot", + "homepage.ru-RU": "https://docs-ru.nocobase.com/handbook/field-snapshot", "homepage.zh-CN": "https://docs-cn.nocobase.com/handbook/field-snapshot", "devDependencies": { "@ant-design/icons": "5.x", diff --git a/packages/plugins/@nocobase/plugin-snapshot-field/src/locale/ru-RU.json b/packages/plugins/@nocobase/plugin-snapshot-field/src/locale/ru-RU.json new file mode 100644 index 00000000000..ffc19c64cf3 --- /dev/null +++ b/packages/plugins/@nocobase/plugin-snapshot-field/src/locale/ru-RU.json @@ -0,0 +1,11 @@ +{ + "Detail": "Детали", + "Snapshot": "Снимок", + "View record": "Просмотр записи", + "Add block": "Добавить блок", + "Allow linking to multiple records": "Разрешить связывание с несколькими записями", + "When adding a new record, create a snapshot for its relational record and save in the current record. The snapshot is not updated when the record is subsequently updated.": "При добавлении новой записи создавать снимок для связанной записи и сохранять в текущей записи. Снимок не обновляется при последующем изменении записи.", + "The association field to snapshot": "Поле связи для снимка", + "Snapshot the snapshot's association fields": "Создавать снимки полей связи снимка", + "Please select": "Пожалуйста, выберите" +} diff --git a/packages/plugins/@nocobase/plugin-system-settings/package.json b/packages/plugins/@nocobase/plugin-system-settings/package.json index 48f116cca1e..cb9aee01fce 100644 --- a/packages/plugins/@nocobase/plugin-system-settings/package.json +++ b/packages/plugins/@nocobase/plugin-system-settings/package.json @@ -2,13 +2,16 @@ "name": "@nocobase/plugin-system-settings", "displayName": "System settings", "displayName.zh-CN": "系统设置", + "displayName.ru-RU": "Системные настройки", "description": "Used to adjust the system title, logo, language, etc.", "description.zh-CN": "用于调整系统的标题、LOGO、语言等。", + "description.ru-RU": "Используется для настройки заголовка системы, логотипа, языка и т.д.", "version": "1.9.9", "license": "AGPL-3.0", "main": "./dist/server/index.js", "homepage": "https://docs.nocobase.com/handbook/system-settings", "homepage.zh-CN": "https://docs-cn.nocobase.com/handbook/system-settings", + "homepage.ru-RU": "https://docs-ru.nocobase.com/handbook/system-settings", "peerDependencies": { "@nocobase/client": "1.x", "@nocobase/database": "1.x", diff --git a/packages/plugins/@nocobase/plugin-text-copy/package.json b/packages/plugins/@nocobase/plugin-text-copy/package.json index 8e31cab6ac5..d34de1227bc 100644 --- a/packages/plugins/@nocobase/plugin-text-copy/package.json +++ b/packages/plugins/@nocobase/plugin-text-copy/package.json @@ -3,8 +3,10 @@ "version": "1.9.9", "main": "./dist/server/index.js", "displayName": "Text copy", + "displayName.ru-RU": "Копирование текста", "displayName.zh-CN": "文本复制", "description": "Add copy button to text fields", + "description.ru-RU": "Добавляет кнопку копирования к текстовым полям", "description.zh-CN": "为文本字段添加复制按钮", "license": "AGPL-3.0", "homepage": "https://www.nocobase.com", diff --git a/packages/plugins/@nocobase/plugin-text-copy/src/locale/ru-RU.json b/packages/plugins/@nocobase/plugin-text-copy/src/locale/ru-RU.json new file mode 100644 index 00000000000..a577d7c87a8 --- /dev/null +++ b/packages/plugins/@nocobase/plugin-text-copy/src/locale/ru-RU.json @@ -0,0 +1,3 @@ +{ + "Display copy button": "Отображать кнопку копирования" +} diff --git a/packages/plugins/@nocobase/plugin-theme-editor/package.json b/packages/plugins/@nocobase/plugin-theme-editor/package.json index f1b41bac545..13d88a579bc 100644 --- a/packages/plugins/@nocobase/plugin-theme-editor/package.json +++ b/packages/plugins/@nocobase/plugin-theme-editor/package.json @@ -5,9 +5,11 @@ "homepage": "https://docs.nocobase.com/handbook/theme-editor", "homepage.zh-CN": "https://docs-cn.nocobase.com/handbook/theme-editor", "displayName": "Theme editor", + "displayName.ru-RU": "Редактор тем", "displayName.zh-CN": "主题编辑器", "description": "Customize UI colors, sizes, etc. and save the result as a theme to switch between multiple themes.", "description.zh-CN": "自定义 UI 的颜色、尺寸等,并将结果保存为主题,可在多个主题间切换。", + "description.ru-RU": "Позволяет настраивать цвета и размеры элементов UI, есть возможность сохранять результат как тему для переключения между несколькими темами.", "devDependencies": { "@ant-design/cssinjs": "^1.11.1", "@ant-design/icons": "5.x", diff --git a/packages/plugins/@nocobase/plugin-theme-editor/src/locale/ru-RU.json b/packages/plugins/@nocobase/plugin-theme-editor/src/locale/ru-RU.json new file mode 100644 index 00000000000..44e3b1cb148 --- /dev/null +++ b/packages/plugins/@nocobase/plugin-theme-editor/src/locale/ru-RU.json @@ -0,0 +1,22 @@ +{ + "Theme": "Тема", + "Local": "Локальная", + "Dark theme": "Тёмная тема", + "Optional": "Необязательная", + "Non-optional": "Обязательная", + "Current": "Текущая", + "Default": "По умолчанию", + "Theme Editor": "Редактор тем", + "Save": "Сохранить", + "Close": "Закрыть", + "Edit": "Редактировать", + "Export": "Экспорт", + "edit Theme Config": "редактировать конфигурацию темы", + "The theme of the JSON format is incorrect": "Формат JSON темы неверный", + "Edited successfully": "Успешно отредактировано", + "Saved successfully": "Успешно сохранено", + "Initializing Editor...": "Инициализация редактора...", + "Save theme": "Сохранить тему", + "Please set a name for this theme": "Пожалуйста, задайте имя для этой темы", + "Please input the theme name": "Пожалуйста, введите имя темы" +} diff --git a/packages/plugins/@nocobase/plugin-ui-schema-storage/package.json b/packages/plugins/@nocobase/plugin-ui-schema-storage/package.json index e506f33d873..634cbc537cd 100644 --- a/packages/plugins/@nocobase/plugin-ui-schema-storage/package.json +++ b/packages/plugins/@nocobase/plugin-ui-schema-storage/package.json @@ -2,12 +2,15 @@ "name": "@nocobase/plugin-ui-schema-storage", "displayName": "UI schema storage", "displayName.zh-CN": "UI schema 存储服务", + "displayName.ru-RU": "Хранилище UI схем", "description": "Provides centralized UI schema storage service.", "description.zh-CN": "提供中心化的 UI schema 存储服务。", + "description.ru-RU": "Предоставляет централизованный сервис хранения UI схем.", "version": "1.9.9", "license": "AGPL-3.0", "main": "./dist/server/index.js", "homepage": "https://docs.nocobase.com/handbook/ui-schema-storage", + "homepage.ru-RU": "https://docs-ru.nocobase.com/handbook/ui-schema-storage", "homepage.zh-CN": "https://docs-cn.nocobase.com/handbook/ui-schema-storage", "devDependencies": { "@formily/json-schema": "2.x" diff --git a/packages/plugins/@nocobase/plugin-user-data-sync/package.json b/packages/plugins/@nocobase/plugin-user-data-sync/package.json index 751f803fa6e..35013448ca0 100644 --- a/packages/plugins/@nocobase/plugin-user-data-sync/package.json +++ b/packages/plugins/@nocobase/plugin-user-data-sync/package.json @@ -1,8 +1,10 @@ { "name": "@nocobase/plugin-user-data-sync", "displayName": "User data synchronization", + "displayName.ru-RU": "Синхронизация данных пользователей", "displayName.zh-CN": "用户数据同步", "description": "Reigster and manage extensible user data synchronization sources, with HTTP API provided by default. Support for synchronizing data to resources such as users and departments.", + "description.ru-RU": "Регистрация и управление расширяемыми источниками синхронизации данных пользователей, по умолчанию предоставляется HTTP API. Поддержка синхронизации данных для таких ресурсов, как пользователи и департаменты.", "description.zh-CN": "注册和管理可扩展的用户数据同步来源,默认提供 HTTP API。支持向用户和部门等资源同步数据。", "version": "1.9.9", "main": "dist/server/index.js", diff --git a/packages/plugins/@nocobase/plugin-user-data-sync/src/locale/ru-RU.json b/packages/plugins/@nocobase/plugin-user-data-sync/src/locale/ru-RU.json new file mode 100644 index 00000000000..9656b18dd58 --- /dev/null +++ b/packages/plugins/@nocobase/plugin-user-data-sync/src/locale/ru-RU.json @@ -0,0 +1,21 @@ +{ + "Synchronize": "Синхронизировать", + "Source name": "Имя источника", + "Source display name": "Отображаемое имя источника", + "Type": "Тип", + "Sync": "Синхронизация", + "Tasks": "Задачи", + "Batch": "Пакет", + "Status": "Статус", + "Message": "Сообщение", + "Init": "Инициализация", + "Processing": "Обработка", + "Success": "Успешно", + "Failed": "Ошибка", + "Authenticator": "Аутентификатор", + "Retry": "Повторить", + "No user data source plugin installed": "Плагин источника данных пользователя не установлен", + "View documentation": "Просмотреть документацию", + "The synchronization has started. You can click on 'Tasks' to view the synchronization status.": "Синхронизация началась. Вы можете нажать на 'Задачи' для просмотра статуса синхронизации.", + "The sync source API call failed. Please check the logs to troubleshoot the issue.": "Вызов API источника синхронизации не удался. Пожалуйста, проверьте логи для устранения проблемы." +} diff --git a/packages/plugins/@nocobase/plugin-users/package.json b/packages/plugins/@nocobase/plugin-users/package.json index c35d996d8f4..7cda6ab2ac2 100644 --- a/packages/plugins/@nocobase/plugin-users/package.json +++ b/packages/plugins/@nocobase/plugin-users/package.json @@ -1,13 +1,16 @@ { "name": "@nocobase/plugin-users", "displayName": "Users", + "displayName.ru-RU": "Пользователи", "displayName.zh-CN": "用户", "description": "Provides basic user model, as well as created by and updated by fields.", + "description.ru-RU": "Предоставляет базовую модель пользователя, а также поля кем, когда «создано» и «обновлено».", "description.zh-CN": "提供了基础的用户模型,以及创建人和最后更新人字段。", "version": "1.9.9", "license": "AGPL-3.0", "main": "./dist/server/index.js", "homepage": "https://docs.nocobase.com/handbook/users", + "homepage.ru-RU": "https://docs-ru.nocobase.com/handbook/users", "homepage.zh-CN": "https://docs-cn.nocobase.com/handbook/users", "devDependencies": { "@types/jsonwebtoken": "^9.0.9", diff --git a/packages/plugins/@nocobase/plugin-users/src/locale/ru-RU.json b/packages/plugins/@nocobase/plugin-users/src/locale/ru-RU.json new file mode 100644 index 00000000000..e4d9cde33d2 --- /dev/null +++ b/packages/plugins/@nocobase/plugin-users/src/locale/ru-RU.json @@ -0,0 +1,9 @@ +{ + "Users & Permissions": "Пользователи и разрешения", + "Add users": "Добавить пользователей", + "Add user": "Добавить пользователя", + "Remove user": "Удалить пользователя", + "Are you sure you want to remove it?": "Вы уверены, что хотите удалить это?", + "Random password": "Случайный пароль", + "User profile is not allowed to be edited": "Профиль пользователя нельзя редактировать" +} diff --git a/packages/plugins/@nocobase/plugin-verification/package.json b/packages/plugins/@nocobase/plugin-verification/package.json index 3dc69dee360..11c632f785e 100644 --- a/packages/plugins/@nocobase/plugin-verification/package.json +++ b/packages/plugins/@nocobase/plugin-verification/package.json @@ -1,14 +1,17 @@ { "name": "@nocobase/plugin-verification", "displayName": "Verification", + "displayName.ru-RU": "Верификация", "displayName.zh-CN": "验证", "description": "User identity verification management, including SMS, TOTP authenticator, with extensibility.", + "description.ru-RU": "Управление проверкой личности пользователя, включая SMS, TOTP-авторизацию, с возможностью расширения.", "description.zh-CN": "用户身份验证管理,包含短信、TOTP 认证器等,可扩展。", "version": "1.9.9", "license": "AGPL-3.0", "main": "./dist/server/index.js", "homepage": "https://docs.nocobase.com/handbook/verification", "homepage.zh-CN": "https://docs-cn.nocobase.com/handbook/verification", + "homepage.ru-RU": "https://docs-ru.nocobase.com/handbook/verification", "devDependencies": { "@alicloud/dysmsapi20170525": "2.0.17", "@alicloud/openapi-client": "0.4.12", diff --git a/packages/plugins/@nocobase/plugin-verification/src/locale/ru-RU.json b/packages/plugins/@nocobase/plugin-verification/src/locale/ru-RU.json new file mode 100644 index 00000000000..ea6851290b7 --- /dev/null +++ b/packages/plugins/@nocobase/plugin-verification/src/locale/ru-RU.json @@ -0,0 +1,39 @@ +{ + "Verification": "Верификация", + "Verification providers": "Провайдеры верификации", + "Provider type": "Тип провайдера", + "Aliyun SMS": "Aliyun SMS", + "Access Key ID": "ID ключа доступа", + "Access Key Secret": "Секретный ключ доступа", + "Endpoint": "Точка подключения", + "Sign": "Подпись", + "Template code": "Код шаблона", + "Secret Id": "ID секрета", + "Secret Key": "Секретный ключ", + "Region": "Регион", + "Sign name": "Имя подписи", + "Sms sdk app id": "ID приложения SMS SDK", + "Template Id": "ID шаблона", + "Verification send failed, please try later or contact to administrator": "Отправка верификации не удалась, попробуйте позже или обратитесь к администратору", + "Not a valid cellphone number, please re-enter": "Неверный номер мобильного телефона, введите заново", + "Please don't retry in {{time}} seconds": "Пожалуйста, не повторяйте попытку в течение {{time}} секунд", + "You are trying so frequently, please slow down": "Слишком много попыток, пожалуйста, попробуйте позже", + "Verification code is invalid": "Код верификации недействителен", + "SMS OTP": "Одноразовый код в SMS", + "Get one-time codes sent to your phone via SMS to complete authentication requests.": "Получайте одноразовые коды, отправляемые на ваш телефон через SMS для завершения запросов аутентификации.", + "Unbind": "Отвязать", + "Bind": "Привязать", + "Configured": "Настроено", + "Unbind verifier": "Отвязать верификатор", + "Not configured": "Не настроено", + "Unbound successfully": "Успешно отвязано", + "Bound successfully": "Успешно привязано", + "Verification type": "Тип верификации", + "Provider": "Провайдер", + "Verifier": "Верификатор", + "Verifiers": "Верификаторы", + "The following types of verifiers are available:": "Доступны следующие типы верификаторов:", + "Go to": "Перейти к", + "create verifiers": "создать верификаторы", + "Too many failed attempts. Please request a new verification code.": "Слишком много неудачных попыток. Пожалуйста, запросите новый код верификации." +} diff --git a/packages/plugins/@nocobase/plugin-workflow-action-trigger/package.json b/packages/plugins/@nocobase/plugin-workflow-action-trigger/package.json index c0374fdc261..ec31f8b24a2 100644 --- a/packages/plugins/@nocobase/plugin-workflow-action-trigger/package.json +++ b/packages/plugins/@nocobase/plugin-workflow-action-trigger/package.json @@ -1,13 +1,16 @@ { "name": "@nocobase/plugin-workflow-action-trigger", "displayName": "Workflow: Post-action event", + "displayName.ru-RU": "Рабочий процесс: Событие после действия", "displayName.zh-CN": "工作流:操作后事件", "description": "Triggered after the completion of a request initiated through an action button or API, such as after adding, updating, deleting data, or \"submit to workflow\". Suitable for data processing, sending notifications, etc., after actions are completed.", + "description.ru-RU": "Срабатывает после завершения запроса, инициированного кнопкой действия или API, например после добавления, обновления, удаления данных или «отправки в рабочий процесс». Подходит для обработки данных, отправки уведомлений и т.д. после выполнения действий.", "description.zh-CN": "通过操作按钮或 API 发起请求并在执行完成后触发,比如新增、更新、删除数据或者“提交至工作流”之后。适用于在操作完成后进行数据处理、发送通知等。", "version": "1.9.9", "license": "AGPL-3.0", "main": "./dist/server/index.js", "homepage": "https://docs.nocobase.com/plugins/workflow-action-trigger", + "homepage.ru-RU": "https://docs-ru.nocobase.com/plugins/workflow-action-trigger", "homepage.zh-CN": "https://docs-cn.nocobase.com/plugins/workflow-action-trigger", "devDependencies": { "antd": "5.x", diff --git a/packages/plugins/@nocobase/plugin-workflow-action-trigger/src/locale/ru-RU.json b/packages/plugins/@nocobase/plugin-workflow-action-trigger/src/locale/ru-RU.json new file mode 100644 index 00000000000..2a36e92add5 --- /dev/null +++ b/packages/plugins/@nocobase/plugin-workflow-action-trigger/src/locale/ru-RU.json @@ -0,0 +1,16 @@ +{ + "Post-action event": "Событие \"После события\"", + "Triggered after the completion of a request initiated through an action button or API, such as after adding or updating data. Suitable for data processing, sending notifications, etc., after actions are completed.": "Запускается после завершения запроса, инициированного через кнопку действия или API, например, после добавления или обновления данных. Подходит для обработки данных, отправки уведомлений и т.д. после завершения действий.", + "Collection": "Коллекция", + "The collection to which the triggered data belongs.": "Коллекция, к которой принадлежат запущенные данные.", + "Trigger mode": "Режим запуска", + "Local mode, triggered after the completion of actions bound to this workflow": "Локальный режим, запускается после завершения действий, привязанных к этому рабочему процессу", + "Global mode, triggered after the completion of the following actions": "Глобальный режим, запускается после завершения следующих действий", + "Select actions": "Выбрать действия", + "Create record action": "Действие создания записи", + "Update record action": "Действие обновления записи", + "Associations to use": "Связи для использования", + "Trigger data": "Данные запуска", + "User acted": "Пользователь действовал", + "Role of user acted": "Роль пользователя, который действовал" +} diff --git a/packages/plugins/@nocobase/plugin-workflow-aggregate/package.json b/packages/plugins/@nocobase/plugin-workflow-aggregate/package.json index 7de08a9cbc2..5118f5c3f3c 100644 --- a/packages/plugins/@nocobase/plugin-workflow-aggregate/package.json +++ b/packages/plugins/@nocobase/plugin-workflow-aggregate/package.json @@ -2,13 +2,16 @@ "name": "@nocobase/plugin-workflow-aggregate", "displayName": "Workflow: Aggregate node", "displayName.zh-CN": "工作流:聚合查询节点", + "displayName.ru-RU": "Рабочий процесс: Узел агрегации", "description": "Used to aggregate data against the database in workflow, such as: statistics, sum, average, etc.", "description.zh-CN": "可用于在工作流中对数据库进行聚合查询,如:统计数量、求和、平均值等。", + "description.ru-RU": "Используется для агрегирования данных из базы данных в рабочем процессе, например: статистика, сумма, среднее и т.д.", "version": "1.9.9", "license": "AGPL-3.0", "main": "./dist/server/index.js", "homepage": "https://docs.nocobase.com/handbook/workflow-aggregate", "homepage.zh-CN": "https://docs-cn.nocobase.com/handbook/workflow-aggregate", + "homepage.ru-RU": "https://docs-ru.nocobase.com/handbook/workflow-aggregate", "devDependencies": { "antd": "5.x", "mathjs": "^10.6.0", diff --git a/packages/plugins/@nocobase/plugin-workflow-aggregate/src/locale/ru-RU.json b/packages/plugins/@nocobase/plugin-workflow-aggregate/src/locale/ru-RU.json new file mode 100644 index 00000000000..ad94769d940 --- /dev/null +++ b/packages/plugins/@nocobase/plugin-workflow-aggregate/src/locale/ru-RU.json @@ -0,0 +1,13 @@ +{ + "Aggregate": "Агрегация", + "Counting, summing, finding maximum, minimum, and average values for multiple records of a collection or associated data of a record.": "Подсчет, суммирование, поиск максимальных, минимальных и средних значений для множественных записей коллекции или связанных данных записи.", + "Aggregator function": "Функция агрегации", + "Target type": "Тип цели", + "Data of collection": "Данные коллекции", + "Data of associated collection": "Данные связанной коллекции", + "Field to aggregate": "Поле для агрегации", + "Distinct": "Уникальные", + "Query result": "Результат запроса", + "Result precision": "Точность результата", + "Number of decimal places for query result.": "Количество десятичных знаков для результата запроса." +} diff --git a/packages/plugins/@nocobase/plugin-workflow-cc/package.json b/packages/plugins/@nocobase/plugin-workflow-cc/package.json index 33198e23992..fc884cc669e 100644 --- a/packages/plugins/@nocobase/plugin-workflow-cc/package.json +++ b/packages/plugins/@nocobase/plugin-workflow-cc/package.json @@ -1,10 +1,13 @@ { "name": "@nocobase/plugin-workflow-cc", "displayName": "Workflow: CC", + "displayName.ru-RU": "Рабочий процесс: Копия (CC)", "displayName.zh-CN": "工作流:抄送", "description": "Provide a CC (carbon copy) feature in workflows to send approvals, or any other type of information to specified users.", "description.zh-CN": "在工作流中提供抄送功能,将审批或其他任意信息抄送给特定的用户。", + "description.ru-RU": "Предоставляет функцию CC (копия) в рабочих процессах для отправки утверждений или любого другого типа информации указанным пользователям.", "homepage": "https://docs.nocobase.com/handbook/workflow-cc", + "homepage.ru-RU": "https://docs-ru.nocobase.com/handbook/workflow-cc", "homepage.zh-CN": "https://docs-cn.nocobase.com/handbook/workflow-cc", "license": "AGPL-3.0", "version": "1.9.9", diff --git a/packages/plugins/@nocobase/plugin-workflow-cc/src/locale/ru-RU.json b/packages/plugins/@nocobase/plugin-workflow-cc/src/locale/ru-RU.json new file mode 100644 index 00000000000..df8b4d28382 --- /dev/null +++ b/packages/plugins/@nocobase/plugin-workflow-cc/src/locale/ru-RU.json @@ -0,0 +1,15 @@ +{ + "CC": "Копия", + "Provide a CC (carbon copy) feature in workflows to send approvals, or any other type of information to specified users.": "Предоставить функцию \"Копия\" в рабочих процессах для отправки подтверждений или любой другой информации указанным пользователям.", + "Recipients": "Получатели", + "User interface": "Пользовательский интерфейс", + "View user interface": "Просмотр пользовательского интерфейса", + "Configure user interface": "Настроить пользовательский интерфейс", + "Title of each CC item in tasks center. Could use variables in string template. Default to node title.": "Заголовок каждого элемента копии в Центре задач. Можно использовать переменные в шаблоне строки. По умолчанию - заголовок узла.", + "Read": "Прочитано", + "Unread": "Не прочитано", + "Mark as read": "Отметить как прочитанное", + "Mark as unread": "Отметить как непрочитанное", + "Mark all as read": "Отметить все как прочитанные", + "CC to me": "Копия мне" +} diff --git a/packages/plugins/@nocobase/plugin-workflow-delay/package.json b/packages/plugins/@nocobase/plugin-workflow-delay/package.json index 45b4aadb55a..7d6984e4b4a 100644 --- a/packages/plugins/@nocobase/plugin-workflow-delay/package.json +++ b/packages/plugins/@nocobase/plugin-workflow-delay/package.json @@ -1,13 +1,16 @@ { "name": "@nocobase/plugin-workflow-delay", "displayName": "Workflow: Delay node", + "displayName.ru-RU": "Рабочий процесс: Узел задержки", "displayName.zh-CN": "工作流:延时节点", "description": "Could be used in workflow parallel branch for waiting other branches.", + "description.ru-RU": "Может использоваться в параллельных ветках рабочего процесса для ожидания завершения других веток.", "description.zh-CN": "可用于工作流并行分支中等待其他分支执行完成。", "version": "1.9.9", "license": "AGPL-3.0", "main": "./dist/server/index.js", "homepage": "https://docs.nocobase.com/handbook/workflow-delay", + "homepage.ru-RU": "https://docs-ru.nocobase.com/handbook/workflow-delay", "homepage.zh-CN": "https://docs-cn.nocobase.com/handbook/workflow-delay", "devDependencies": { "antd": "5.x", diff --git a/packages/plugins/@nocobase/plugin-workflow-delay/src/locale/ru-RU.json b/packages/plugins/@nocobase/plugin-workflow-delay/src/locale/ru-RU.json new file mode 100644 index 00000000000..38fb8cb7846 --- /dev/null +++ b/packages/plugins/@nocobase/plugin-workflow-delay/src/locale/ru-RU.json @@ -0,0 +1,10 @@ +{ + "Delay": "Задержка", + "Delay a period of time and then continue or exit the process. Can be used to set wait or timeout times in parallel branches.": "Задержать на определенный период времени, а затем продолжить или выйти из процесса. Может использоваться для установки времени ожидания или таймаута в параллельных ветвях.", + "Duration": "Продолжительность", + "Unit": "Единица", + "End status": "Конечный статус", + "Select status": "Выбрать статус", + "Succeed and continue": "Успешно и продолжить", + "Fail and exit": "Провал и выход" +} diff --git a/packages/plugins/@nocobase/plugin-workflow-dynamic-calculation/package.json b/packages/plugins/@nocobase/plugin-workflow-dynamic-calculation/package.json index 591556f85f7..1a209cbe615 100644 --- a/packages/plugins/@nocobase/plugin-workflow-dynamic-calculation/package.json +++ b/packages/plugins/@nocobase/plugin-workflow-dynamic-calculation/package.json @@ -2,12 +2,15 @@ "name": "@nocobase/plugin-workflow-dynamic-calculation", "displayName": "Workflow: Dynamic calculation node", "displayName.zh-CN": "工作流:动态表达式计算节点", + "displayName.ru-RU": "Рабочий процесс: Узел динамических вычислений", "description": "Useful plugin for doing dynamic calculation based on expression collection records in workflow.", "description.zh-CN": "用于在工作流中进行基于数据行的动态表达式计算。", + "description.ru-RU": "Плагин для выполнения динамических вычислений на основе записей коллекции выражений в рабочем процессе.", "version": "1.9.9", "license": "AGPL-3.0", "main": "./dist/server/index.js", "homepage": "https://docs.nocobase.com/handbook/workflow-dynamic-calculation", + "homepage.ru-RU": "https://docs-ru.nocobase.com/handbook/workflow-dynamic-calculation", "homepage.zh-CN": "https://docs-cn.nocobase.com/handbook/workflow-dynamic-calculation", "devDependencies": { "@ant-design/icons": "5.x", diff --git a/packages/plugins/@nocobase/plugin-workflow-dynamic-calculation/src/locale/ru-RU.json b/packages/plugins/@nocobase/plugin-workflow-dynamic-calculation/src/locale/ru-RU.json new file mode 100644 index 00000000000..251e8704f7b --- /dev/null +++ b/packages/plugins/@nocobase/plugin-workflow-dynamic-calculation/src/locale/ru-RU.json @@ -0,0 +1,12 @@ +{ + "Expression": "Выражение", + "Dynamic expression calculation": "Динамический расчет выражений", + "Calculate an expression based on a calculation engine and obtain a value as the result. Variables in the upstream nodes can be used in the expression. The expression is dynamic one from an expression collections.": "Вычислить выражение на основе вычислительного механизма и получить значение как результат. Переменные в вышестоящих узлах могут использоваться в выражении. Выражение является динамическим из коллекции выражений.", + "Select dynamic expression": "Выбрать динамическое выражение", + "Select the dynamic expression queried from the upstream node. You need to query it from an expression collection.": "Выберите динамическое выражение, запрошенное из вышестоящего узла. Вам нужно запросить его из коллекции выражений.", + "Variable datasource": "Источник данных переменных", + "Dynamic expression": "Динамическое выражение", + "Used to store expressions for use in workflows so that different expressions can be called for different data.": "Используется для хранения выражений для использования в рабочих процессах, чтобы различные выражения могли вызываться для различных данных.", + "Unconfigured": "Не настроено", + "Calculation result": "Результат вычисления" +} diff --git a/packages/plugins/@nocobase/plugin-workflow-loop/package.json b/packages/plugins/@nocobase/plugin-workflow-loop/package.json index 2a82bc8dd46..521a8ae5d42 100644 --- a/packages/plugins/@nocobase/plugin-workflow-loop/package.json +++ b/packages/plugins/@nocobase/plugin-workflow-loop/package.json @@ -2,12 +2,15 @@ "name": "@nocobase/plugin-workflow-loop", "displayName": "Workflow: Loop node", "displayName.zh-CN": "工作流:循环节点", + "displayName.ru-RU": "Рабочий процесс: Узел циклов", "description": "Used to repeat the sub-process processing of each value in an array, and can also be used for fixed times of sub-process processing.", "description.zh-CN": "用于对一个数组中的每个值进行重复的子流程处理,也可用于固定次数的重复子流程处理。", + "description.ru-RU": "Используется для повторения обработки каждого значения в массиве, а также может использоваться для фиксированного количества повторений подпроцесса.", "version": "1.9.9", "license": "AGPL-3.0", "main": "./dist/server/index.js", "homepage": "https://docs.nocobase.com/handbook/workflow-loop", + "homepage.ru-RU": "https://docs-ru.nocobase.com/handbook/workflow-loop", "homepage.zh-CN": "https://docs-cn.nocobase.com/handbook/workflow-loop", "devDependencies": { "@ant-design/icons": "5.x", diff --git a/packages/plugins/@nocobase/plugin-workflow-loop/src/locale/ru-RU.json b/packages/plugins/@nocobase/plugin-workflow-loop/src/locale/ru-RU.json new file mode 100644 index 00000000000..d1f4476c125 --- /dev/null +++ b/packages/plugins/@nocobase/plugin-workflow-loop/src/locale/ru-RU.json @@ -0,0 +1,22 @@ +{ + "Loop": "Цикл", + "Loop target": "Цель цикла", + "Loop index (starts from 0)": "Индекс цикла (начинается с 0)", + "Loop sequence (starts from 1)": "Последовательность цикла (начинается с 1)", + "Loop length": "Длина цикла", + "By using a loop node, you can perform the same operation on multiple sets of data. The source of these sets can be either multiple records from a query node or multiple associated records of a single record. Loop node can also be used for iterating a certain number of times or for looping through each character in a string. However, excessive looping may cause performance issues, so use with caution.": "Используя узел цикла, вы можете выполнять одну и ту же операцию с несколькими наборами данных. Источником этих наборов могут быть либо несколько записей из узла запроса, либо несколько связанных записей одной записи. Узел цикла также может использоваться для итерации определенное количество раз или для перебора каждого символа в строке. Однако чрезмерное использование циклов может вызвать проблемы с производительностью, поэтому используйте с осторожностью.", + "A single number will be treated as a loop count, a single string will be treated as an array of characters, and other non-array values will be converted to arrays. The loop node ends when the loop count is reached, or when the array loop is completed. You can also add condition nodes to the loop to terminate it.": "Одно число будет рассматриваться как счетчик цикла, одна строка будет рассматриваться как массив символов, а другие не-массивы будут преобразованы в массивы. Узел цикла завершается, когда достигнут счетчик цикла или когда завершен перебор массива. Вы также можете добавить узлы условий в цикл для его завершения.", + "Enable loop condition": "Включить условие цикла", + "Loop condition on each item": "Условие цикла для каждого элемента", + "When to check": "Когда проверять", + "Before each starts": "Перед началом каждого", + "After each ends": "После завершения каждого", + "When condition is not met on item": "Когда условие не выполнено для элемента", + "Exit loop": "Выйти из цикла", + "Continue on next item": "Продолжить со следующим элементом", + "Condition": "Условие", + "When node inside loop failed": "Когда узел внутри цикла не выполнился", + "Continue loop on next item": "Продолжить цикл со следующим элементом", + "Exit loop and continue workflow": "Выйти из цикла и продолжить рабочий процесс", + "Exit workflow": "Выйти из рабочего процесса" +} diff --git a/packages/plugins/@nocobase/plugin-workflow-mailer/package.json b/packages/plugins/@nocobase/plugin-workflow-mailer/package.json index 2945487545e..f343ba3939e 100644 --- a/packages/plugins/@nocobase/plugin-workflow-mailer/package.json +++ b/packages/plugins/@nocobase/plugin-workflow-mailer/package.json @@ -1,14 +1,18 @@ { "name": "@nocobase/plugin-workflow-mailer", "displayName": "Workflow: mailer node", + "displayName.ru-RU": "Рабочий процесс: Узел отправки почты", "displayName.zh-CN": "工作流:邮件发送节点", "description": "Send email in workflow.", + "description.ru-RU": "Отправляет электронное письмо в рамках рабочего процесса.", "description.zh-CN": "可用于在工作流中发送电子邮件。", "version": "1.9.9", "license": "AGPL-3.0", "main": "./dist/server/index.js", "homepage": "https://docs.nocobase.com/handbook/workflow-smtp-mailer", "homepage.zh-CN": "https://docs-cn.nocobase.com/handbook/workflow-smtp-mailer", + "homepage.ru-RU": "https://docs-ru.nocobase.com/handbook/workflow-smtp-mailer", + "devDependencies": { "antd": "5.x", "nodemailer": "6.9.13", diff --git a/packages/plugins/@nocobase/plugin-workflow-mailer/src/locale/ru-RU.json b/packages/plugins/@nocobase/plugin-workflow-mailer/src/locale/ru-RU.json new file mode 100644 index 00000000000..9b0431aab5d --- /dev/null +++ b/packages/plugins/@nocobase/plugin-workflow-mailer/src/locale/ru-RU.json @@ -0,0 +1,20 @@ +{ + "Mailer": "Почтовый сервер", + "Send email. You can use the variables in the upstream nodes as receivers, subject and content of the email.": "Отправить email. Вы можете использовать переменные из вышестоящих узлов как получателей, тему и содержимое письма.", + "SMTP host": "Хост SMTP сервиса", + "Port": "Порт", + "Secure": "Безопасный", + "User": "Пользователь", + "Password": "Пароль", + "From": "От", + "To": "Кому", + "CC": "Копия", + "BCC": "Скрытая копия", + "Add email address": "Добавить email адрес", + "Subject": "Тема", + "Content": "Содержимое", + "Content type": "Тип содержимого", + "Plain text": "Обычный текст", + "Ignore failed sending and continue workflow": "Игнорировать неудачную отправку и продолжить рабочий процесс", + "In most cases, if using port 465, set it to true; otherwise, set it to false.": "В большинстве случаев, если используется порт 465, установите true; иначе установите false." +} diff --git a/packages/plugins/@nocobase/plugin-workflow-manual/package.json b/packages/plugins/@nocobase/plugin-workflow-manual/package.json index 01ebd462d85..4c8a117596e 100644 --- a/packages/plugins/@nocobase/plugin-workflow-manual/package.json +++ b/packages/plugins/@nocobase/plugin-workflow-manual/package.json @@ -1,13 +1,16 @@ { "name": "@nocobase/plugin-workflow-manual", "displayName": "Workflow: Manual node", + "displayName.ru-RU": "Рабочий процесс: Узел ручной обработки", "displayName.zh-CN": "工作流:人工处理节点", "description": "Could be used for workflows which some of decisions are made by users.", + "description.ru-RU": "Может использоваться в рабочих процессах, где какие-то решения принимаются пользователями.", "description.zh-CN": "用于人工控制部分决策的流程。", "version": "1.9.9", "license": "AGPL-3.0", "main": "./dist/server/index.js", "homepage": "https://docs.nocobase.com/handbook/workflow-manual", + "homepage.ru-RU": "https://docs-ru.nocobase.com/handbook/workflow-manual", "homepage.zh-CN": "https://docs-cn.nocobase.com/handbook/workflow-manual", "devDependencies": { "@ant-design/icons": "5.x", diff --git a/packages/plugins/@nocobase/plugin-workflow-manual/src/locale/ru-RU.json b/packages/plugins/@nocobase/plugin-workflow-manual/src/locale/ru-RU.json new file mode 100644 index 00000000000..978aa3871d1 --- /dev/null +++ b/packages/plugins/@nocobase/plugin-workflow-manual/src/locale/ru-RU.json @@ -0,0 +1,35 @@ +{ + "Manual": "Ручной", + "Could be used for manually submitting data, and determine whether to continue or exit. Workflow will generate a todo item for assigned user when it reaches a manual node, and continue processing after user submits the form.": "Может использоваться для ручной отправки данных и определения, продолжать или завершить процесс. Рабочий процесс создаст задачу для назначенного пользователя при достижении ручного узла и продолжит обработку после отправки формы пользователем.", + "Values preset in this form will override user submitted ones when continue or reject.": "Предустановленные значения в этой форме переопределят отправленные пользователем при продолжении или отклонении.", + "Assignee": "Исполнитель", + "Assignees": "Исполнители", + "User interface": "Пользовательский интерфейс", + "Configure user interface": "Настроить пользовательский интерфейс", + "View user interface": "Просмотр пользовательского интерфейса", + "Separately": "Отдельно", + "Each user has own task": "У каждого пользователя своя задача", + "Collaboratively": "Совместно", + "Everyone shares one task": "Все делят одну задачу", + "Negotiation": "Согласование", + "All pass": "Все одобрены", + "Everyone should pass": "каждый должен быть одобрен", + "Any pass": "Любой одобрен", + "Anyone pass": "Кто-либо одобрен", + "Field name existed in form": "Имя поля существует в форме", + "Continue the process": "Продолжить процесс", + "Terminate the process": "Завершить процесс", + "Save temporarily": "Сохранить временно", + "Custom form": "Пользовательская форма", + "Data record": "Запись данных", + "Create record form": "Форма создания записи", + "Update record form": "Форма обновления записи", + "Filter settings": "Настройки фильтра", + "Workflow todos": "Задачи рабочего процесса", + "Task node": "Узел задачи", + "Unprocessed": "Необработанные", + "Please check one of your update record form, and add at least one filter condition in form settings.": "Пожалуйста, проверьте одну из ваших форм обновления записи и добавьте хотя бы одно условие фильтра в настройках формы.", + "My manual tasks": "Мои ручные задачи", + "Task title": "Название задачи", + "Title of each task item. Default to node title.": "Название каждого элемента задачи. По умолчанию - название узла." +} diff --git a/packages/plugins/@nocobase/plugin-workflow-notification/package.json b/packages/plugins/@nocobase/plugin-workflow-notification/package.json index 2b8181e994e..05c2abf005a 100644 --- a/packages/plugins/@nocobase/plugin-workflow-notification/package.json +++ b/packages/plugins/@nocobase/plugin-workflow-notification/package.json @@ -1,13 +1,16 @@ { "name": "@nocobase/plugin-workflow-notification", "displayName": "Workflow: notification node", + "displayName.ru-RU": "Рабочий процесс: Узел уведомлений", "displayName.zh-CN": "工作流:通知节点", "description": "Send notification in workflow.", + "description.ru-RU": "Отправляет уведомления в рамках рабочего процесса.", "description.zh-CN": "可用于在工作流中发送各类通知。", "version": "1.9.9", "license": "AGPL-3.0", "main": "./dist/server/index.js", "homepage": "https://docs.nocobase.com/handbook/workflow-smtp-mailer", + "homepage.ru-RU": "https://docs-ru.nocobase.com/handbook/workflow-smtp-mailer", "homepage.zh-CN": "https://docs-cn.nocobase.com/handbook/workflow-smtp-mailer", "devDependencies": { "antd": "5.x", diff --git a/packages/plugins/@nocobase/plugin-workflow-notification/src/locale/ru-RU.json b/packages/plugins/@nocobase/plugin-workflow-notification/src/locale/ru-RU.json new file mode 100644 index 00000000000..78ee2bcfa8c --- /dev/null +++ b/packages/plugins/@nocobase/plugin-workflow-notification/src/locale/ru-RU.json @@ -0,0 +1,4 @@ +{ + "Notification": "Уведомление", + "Send notification. You can use the variables in the upstream nodes as content and ohter config.": "Отправить уведомление. Вы можете использовать переменные из вышестоящих узлов в качестве содержимого и других настроек." +} diff --git a/packages/plugins/@nocobase/plugin-workflow-parallel/package.json b/packages/plugins/@nocobase/plugin-workflow-parallel/package.json index e48a284f1c1..35b0400e806 100644 --- a/packages/plugins/@nocobase/plugin-workflow-parallel/package.json +++ b/packages/plugins/@nocobase/plugin-workflow-parallel/package.json @@ -1,13 +1,16 @@ { "name": "@nocobase/plugin-workflow-parallel", "displayName": "Workflow: Parallel node", + "displayName.ru-RU": "Рабочий процесс: Параллельный узел", "displayName.zh-CN": "工作流:并行分支节点", "description": "Could be used for parallel execution of branch processes in the workflow.", + "description.ru-RU": "Может использоваться для параллельного выполнения ветвящихся процессов в рабочем процессе.", "description.zh-CN": "用于在工作流中需要并行执行的分支流程。", "version": "1.9.9", "license": "AGPL-3.0", "main": "./dist/server/index.js", "homepage": "https://docs.nocobase.com/handbook/workflow-parallel", + "homepage.ru-RU": "https://docs-ru.nocobase.com/handbook/workflow-parallel", "homepage.zh-CN": "https://docs-cn.nocobase.com/handbook/workflow-parallel", "devDependencies": { "@ant-design/icons": "5.x", diff --git a/packages/plugins/@nocobase/plugin-workflow-parallel/src/locale/ru-RU.json b/packages/plugins/@nocobase/plugin-workflow-parallel/src/locale/ru-RU.json index 61faedcaa4b..940af1a9149 100644 --- a/packages/plugins/@nocobase/plugin-workflow-parallel/src/locale/ru-RU.json +++ b/packages/plugins/@nocobase/plugin-workflow-parallel/src/locale/ru-RU.json @@ -1,7 +1,12 @@ { "Parallel branch": "Параллельная ветвь", + "Run multiple branch processes in parallel.": "Запускать несколько ветвей параллельно.", + "Add branch": "Добавить ветвь", + "Mode": "Режим", "All succeeded": "Всё успешно", "Any succeeded": "Что-то успешно", + "Any succeeded or failed": "Что-то успешно или провалилось", "Continue after all branches succeeded": "Продолжать после успеха на всех ветвях", - "Continue after any branch succeeded": "Продолжать после успеха на любой из ветвей" + "Continue after any branch succeeded": "Продолжать после успеха на любой из ветвей", + "Continue after any branch succeeded, or exit after any branch failed.": "Продолжать после успеха на любой из ветвей, или выйти после провала любой из ветвей." } diff --git a/packages/plugins/@nocobase/plugin-workflow-request/package.json b/packages/plugins/@nocobase/plugin-workflow-request/package.json index d0b824c4ac8..dedac4ccc4e 100644 --- a/packages/plugins/@nocobase/plugin-workflow-request/package.json +++ b/packages/plugins/@nocobase/plugin-workflow-request/package.json @@ -1,13 +1,16 @@ { "name": "@nocobase/plugin-workflow-request", "displayName": "Workflow: HTTP request node", + "displayName.ru-RU": "Рабочий процесс: Узел HTTP-запроса", "displayName.zh-CN": "工作流:HTTP 请求节点", "description": "Send HTTP requests to any HTTP service for data interaction in workflow.", + "description.ru-RU": "Отправляет HTTP-запросы к любому HTTP-сервису для взаимодействия с данными в рабочем процессе.", "description.zh-CN": "可用于在工作流中向任意 HTTP 服务发送请求,进行数据交互。", "version": "1.9.9", "license": "AGPL-3.0", "main": "./dist/server/index.js", "homepage": "https://docs.nocobase.com/handbook/workflow-request", + "homepage.ru-RU": "https://docs-ru.nocobase.com/handbook/workflow-request", "homepage.zh-CN": "https://docs-cn.nocobase.com/handbook/workflow-request", "devDependencies": { "antd": "5.x", diff --git a/packages/plugins/@nocobase/plugin-workflow-request/src/locale/ru-RU.json b/packages/plugins/@nocobase/plugin-workflow-request/src/locale/ru-RU.json new file mode 100644 index 00000000000..28a1a81c023 --- /dev/null +++ b/packages/plugins/@nocobase/plugin-workflow-request/src/locale/ru-RU.json @@ -0,0 +1,24 @@ +{ + "HTTP request": "HTTP запрос", + "Send HTTP request to a URL. You can use the variables in the upstream nodes as request headers, parameters and request body.": "Отправить HTTP запрос на URL. Вы можете использовать переменные из вышестоящих узлов в качестве заголовков запроса, параметров и тела запроса.", + "HTTP method": "Метод HTTP запроса", + "URL": "URL", + "Headers": "Заголовки", + "Add request header": "Добавить заголовок запроса", + "Parameters": "Параметры", + "Add parameter": "Добавить параметр", + "Body": "Тело", + "Use variable": "Использовать переменную", + "Add key-value pairs": "Добавить пары ключ-значение", + "Format": "Формат", + "Insert": "Вставить", + "Timeout": "Таймаут", + "Milliseconds": "Миллисекунды", + "Input request data": "Входные данные запроса", + "Only support standard JSON data": "Поддерживаются только стандартные JSON данные", + "\"Content-Type\" will be ignored from headers.": "\"Тип контента\" будет проигнорирован в заголовках.", + "Ignore failed request and continue workflow": "Игнорировать неудачный запрос и продолжить рабочий процесс", + "Status code": "Код состояния", + "Data": "Данные", + "Response headers": "Заголовки ответа" +} diff --git a/packages/plugins/@nocobase/plugin-workflow-response-message/package.json b/packages/plugins/@nocobase/plugin-workflow-response-message/package.json index 82483b48d68..0ae89862225 100644 --- a/packages/plugins/@nocobase/plugin-workflow-response-message/package.json +++ b/packages/plugins/@nocobase/plugin-workflow-response-message/package.json @@ -2,11 +2,14 @@ "name": "@nocobase/plugin-workflow-response-message", "version": "1.9.9", "displayName": "Workflow: Response message", + "displayName.ru-RU": "Рабочий процесс: Сообщение ответа", "displayName.zh-CN": "工作流:响应消息", "description": "Used for assemble response message and showing to client in form event and request interception workflows.", "description.zh-CN": "用于在表单事件和请求拦截工作流中组装并向客户端显示响应消息。", + "description.ru-RU": "Используется для формирования сообщения ответа и отображения его клиенту в рабочих процессах обработки событий формы и перехвата запросов.", "main": "dist/server/index.js", "homepage": "https://docs.nocobase.com/handbook/workflow-response-message", + "homepage.ru-RU": "https://docs-ru.nocobase.com/handbook/workflow-response-message", "homepage.zh-CN": "https://docs-cn.nocobase.com/handbook/workflow-response-message", "peerDependencies": { "@nocobase/client": "1.x", diff --git a/packages/plugins/@nocobase/plugin-workflow-response-message/src/locale/ru-RU.json b/packages/plugins/@nocobase/plugin-workflow-response-message/src/locale/ru-RU.json new file mode 100644 index 00000000000..2240bb4ed82 --- /dev/null +++ b/packages/plugins/@nocobase/plugin-workflow-response-message/src/locale/ru-RU.json @@ -0,0 +1,8 @@ +{ + "Response message": "Ответное сообщение" + "Add response message, will be send to client when process of request ends.": "Добавьте ответное сообщение, оно будет отправлено клиенту по завершении обработки запроса." + "Message content": "Содержимое сообщения" + "Supports variables in template.": "Поддерживает переменные в шаблоне." + "If the workflow ends normally, the response message will return a success status by default.": "Если рабочий процесс завершается нормально, ответное сообщение по умолчанию вернет статус \"успех\"." + "If you want to return a failure status, please add an \"End Process\" node downstream to terminate the workflow.": "Если вы хотите вернуть статус \"Ошибка\", добавьте далее узел \"Завершить процесс\", чтобы прервать рабочий процесс." +} diff --git a/packages/plugins/@nocobase/plugin-workflow-sql/package.json b/packages/plugins/@nocobase/plugin-workflow-sql/package.json index 064e2edca37..cff199c3405 100644 --- a/packages/plugins/@nocobase/plugin-workflow-sql/package.json +++ b/packages/plugins/@nocobase/plugin-workflow-sql/package.json @@ -1,13 +1,16 @@ { "name": "@nocobase/plugin-workflow-sql", "displayName": "Workflow: SQL node", + "displayName.ru-RU": "Рабочий процесс: Узел SQL", "displayName.zh-CN": "工作流:SQL 节点", "description": "Execute SQL statements in workflow.", + "description.ru-RU": "Выполняет SQL-запросы в рамках рабочего процесса.", "description.zh-CN": "可用于在工作流中对数据库执行任意 SQL 语句。", "version": "1.9.9", "license": "AGPL-3.0", "main": "./dist/server/index.js", "homepage": "https://docs.nocobase.com/handbook/workflow-sql", + "homepage.ru-RU": "https://docs-ru.nocobase.com/handbook/workflow-sql", "homepage.zh-CN": "https://docs-cn.nocobase.com/handbook/workflow-sql", "devDependencies": { "antd": "5.x", diff --git a/packages/plugins/@nocobase/plugin-workflow-sql/src/locale/ru-RU.json b/packages/plugins/@nocobase/plugin-workflow-sql/src/locale/ru-RU.json new file mode 100644 index 00000000000..207f3eca821 --- /dev/null +++ b/packages/plugins/@nocobase/plugin-workflow-sql/src/locale/ru-RU.json @@ -0,0 +1,7 @@ +{ + "SQL action": "SQL действие", + "Execute a SQL statement in database.": "Выполнить SQL-запрос в базе данных.", + "Select a data source to execute SQL.": "Выберите источник данных для выполнения SQL.", + "SQL query result could be used through <1>JSON query node (Commercial plugin).": "Результат SQL-запроса может быть использован через <1>узел JSON-запроса (коммерческий плагин).", + "Include meta information of this query in result": "Включить метаинформацию этого запроса в результат" +} diff --git a/packages/plugins/@nocobase/plugin-workflow-test/package.json b/packages/plugins/@nocobase/plugin-workflow-test/package.json index a5eb8879ddd..381162b63ab 100644 --- a/packages/plugins/@nocobase/plugin-workflow-test/package.json +++ b/packages/plugins/@nocobase/plugin-workflow-test/package.json @@ -1,6 +1,7 @@ { "name": "@nocobase/plugin-workflow-test", "displayName": "Workflow: test kit", + "displayName.ru-RU": "Рабочий процесс: Набор тестов", "displayName.zh-CN": "工作流:测试工具包", "version": "1.9.9", "license": "AGPL-3.0", diff --git a/packages/plugins/@nocobase/plugin-workflow/package.json b/packages/plugins/@nocobase/plugin-workflow/package.json index 0bfa3166479..5f673494257 100644 --- a/packages/plugins/@nocobase/plugin-workflow/package.json +++ b/packages/plugins/@nocobase/plugin-workflow/package.json @@ -2,13 +2,16 @@ "name": "@nocobase/plugin-workflow", "displayName": "Workflow", "displayName.zh-CN": "工作流", + "displayName.ru-RU": "Рабочий процесс", "description": "A powerful BPM tool that provides foundational support for business automation, with the capability to extend unlimited triggers and nodes.", "description.zh-CN": "一个强大的 BPM 工具,为业务自动化提供基础支持,并且可任意扩展更多的触发器和节点。", + "description.ru-RU": "Мощный инструмент BPM, обеспечивающий базовую поддержку автоматизации бизнес-процессов с возможностью неограниченного расширения триггеров и узлов.", "version": "1.9.9", "license": "AGPL-3.0", "main": "./dist/server/index.js", "homepage": "https://docs.nocobase.com/handbook/workflow", "homepage.zh-CN": "https://docs-cn.nocobase.com/handbook/workflow", + "homepage.ru-RU": "https://docs-ru.nocobase.com/handbook/workflow", "devDependencies": { "@ant-design/icons": "5.x", "@formily/antd-v5": "1.x", diff --git a/packages/plugins/@nocobase/plugin-workflow/src/locale/ru-RU.json b/packages/plugins/@nocobase/plugin-workflow/src/locale/ru-RU.json index 8b7293354a7..357db70f9c3 100644 --- a/packages/plugins/@nocobase/plugin-workflow/src/locale/ru-RU.json +++ b/packages/plugins/@nocobase/plugin-workflow/src/locale/ru-RU.json @@ -1,15 +1,68 @@ { "Workflow": "Рабочий процесс", "Execution history": "История запусков", + "Clear all executions": "Очистить историю запусков", + "Clear executions will not reset executed count, and started executions will not be deleted, are you sure you want to delete them all?": "Очистка истории запусков не сбросит счётчик запусков, а начатые выполнения не будут удалены. Вы уверены, что хотите очистить историю выполнений?", + "Executed": "Выполнено", + "Sync": "Синхронизировать", + "Sync enabled status of all workflows from database": "Синхронизировать состояние всех рабочих процессов из базы данных", "Trigger type": "Тип триггера", "Status": "Статус", "On": "Вкл.", "Off": "Выкл.", + "Category": "Категория", + "Add category": "Добавить категорию", + "Edit category": "Редактировать категорию", + "Delete category": "Удалить категорию", "Version": "Версия", "Copy to new version": "Скопировать в новую версию", - "Load failed": "Загрузка не удалась", + "Duplicate": "Дублировать", + "Duplicate to new workflow": "Дублировать в новый рабочий процесс", + "This is a main version, delete it will cause the whole workflow to be deleted (including all other revisions).": "Это основная версия. Её удаление приведёт к удалению всего рабочего процесса (включая все другие ревизии).", + "Current version will be deleted (without affecting other versions).": "Текущая версия будет удалена (без влияния на другие версии).", + "Execute manually": "Выполнить вручную", + "The trigger is not configured correctly, please check the trigger configuration.": "Триггер настроен неправильно. Пожалуйста, проверьте его конфигурацию.", + "This type of trigger has not been supported to be executed manually.": "Этот тип триггера не поддерживает ручное выполнение.", + "Trigger variables need to be filled for executing.": "Для выполнения необходимо заполнить переменные триггера.", + "A new version will be created automatically after execution if current version is not executed.": "Если текущая версия ещё не выполнялась, после выполнения будет автоматически создана новая версия.", + "This will perform all the actions configured in the workflow. Are you sure you want to continue?": "Будут выполнены все действия, настроенные в рабочем процессе. Вы уверены, что хотите продолжить?", + "Automatically create a new version after execution": "Автоматически создавать новую версию после выполнения", + "Workflow executed, the result status is <1>{{statusText}}<2>View the execution": "Рабочий процесс выполнен, результат: <1>{{statusText}}<2>Просмотреть выполнение", + "Loading": "Загрузка", + "Load failed": "Ошибка загрузки", + "Use transaction": "Использовать транзакцию", + "Data operation nodes in workflow will run in a same transaction until any interruption. Any failure will cause data rollback, and will also rollback the history of the execution.": "Узлы, выполняющие операции с данными, будут работать в одной транзакции до её прерывания. Любая ошибка приведёт к откату данных и истории выполнения.", + "Auto delete history when execution is on end status": "Автоматически удалять историю при завершении выполнения", + "Maximum number of cycling triggers": "Максимальное количество циклических триггеров", + "The triggers of same workflow by some node (create, update and sub-flow etc.) more than this number will be ignored. Large number may cause performance issues. Please use with caution.": "Если количество триггеров одного рабочего процесса (создание, обновление, подпроцесс и т. д.) превысит это значение, они будут игнорироваться. Большое число может привести к проблемам с производительностью. Используйте с осторожностью.", + "Continue when disabled or upgraded": "Продолжать при отключении или обновлении", + "If checked, all nodes in-progress could continue to be processed in execution of disabled workflow. Otherwise, all nodes in-progress will be aborted automatically.": "Если включено, все выполняющиеся узлы продолжат работу даже после отключения рабочего процесса. В противном случае все выполняющиеся узлы будут автоматически прерваны.", "Trigger": "Триггер", + "Unknown trigger": "Неизвестный триггер", + "Workflow with unknown type will cause error. Please delete it or check plugin which provide this type.": "Рабочий процесс с неизвестным типом вызовет ошибку. Удалите его или проверьте плагин, предоставляющий этот тип рабочего процесса.", + "Trigger data": "Данные триггера", + "Trigger time": "Время триггера", + "Triggered at": "Триггер активирован в", + "Execute mode": "Режим выполнения", + "Execute workflow asynchronously or synchronously based on trigger type, and could not be changed after created.": "Выполнение рабочего процесса асинхронно или синхронно в зависимости от типа триггера. После создания изменить нельзя.", + "Asynchronously": "Асинхронно", + "Synchronously": "Синхронно", + "Will be executed in the background as a queued task.": "Будет выполнено в фоне как задача в очереди.", + "For user actions that require immediate feedback. Can not use asynchronous nodes in such mode, and it is not recommended to perform time-consuming operations under synchronous mode.": "Используется для пользовательских действий, требующих немедленной реакции. В этом режиме нельзя использовать асинхронные узлы, и не рекомендуется выполнять длительные операции.", + "Go back": "Назад", + "Bind workflows": "Привязать рабочие процессы", + "Support pre-action event (local mode), post-action event (local mode), and approval event here.": "Поддерживаются события \"До события\" (локальный режим), события \"После события\" (локальный режим) и \"Событие утверждения\".", + "Workflow will be triggered directly once the button clicked, without data saving. Only supports to be bound with \"Custom action event\".": "Рабочий процесс будет запущен сразу после нажатия кнопки, без сохранения данных. Поддерживается только привязка к \"Пользовательскому событию\".", + "\"Submit to workflow\" to \"Post-action event\" is deprecated, please use \"Custom action event\" instead.": "Использование \"Отправить в рабочий процесс\" для события \"После события\" устарело. Пожалуйста, используйте \"Пользовательское событие\".", + "Workflow will be triggered before deleting succeeded (only supports pre-action event in local mode).": "Рабочий процесс будет запущен перед успешным удалением (поддерживается только событие \"До события\" в локальном режиме).", + "Submit to workflow": "Отправить в рабочий процесс", + "Add workflow": "Добавить рабочий процесс", + "Select workflow": "Выбрать рабочий процесс", + "Trigger data context": "Контекст данных триггера", + "Full form data": "Все данные формы", + "Select context": "Выбрать контекст", "Collection event": "Событие коллекции", + "Triggered when data changes in the collection, such as after adding, updating, or deleting a record. Unlike \"Post-action event\", Collection event listens for data changes rather than HTTP requests. Unless you understand the exact meaning, it is recommended to use \"Post-action event\".": "Активируется при изменении данных в коллекции — например, после добавления, обновления или удаления записи. В отличие от события \"После события\", реагирует на изменение данных, а не на HTTP-запросы. Если вы не уверены, рекомендуется использовать событие \"После события\".", "Trigger on": "Триггер на", "After record added": "После добавления записи", "After record updated": "После обновления записи", @@ -18,15 +71,20 @@ "Changed fields": "Измененные поля", "Triggered only if one of the selected fields changes. If unselected, it means that it will be triggered when any field changes. When record is added or deleted, any field is considered to have been changed.": "Запускается только при изменении одного из выбранных полей. Если флажок не установлен, это означает, что он будет срабатывать при изменении любого поля. При добавлении или удалении записи любое поле считается измененным.", "Only triggers when match conditions": "Срабатывает только при совпадении условий", + "Preload associations": "Предварительная загрузка связей", + "Please select the associated fields that need to be accessed in subsequent nodes. With more than two levels of to-many associations may cause performance issue, please use with caution.": "Выберите связанные поля, к которым потребуется доступ в следующих узлах. Более двух уровней связей типа «многие ко многим» могут вызвать проблемы с производительностью — используйте с осторожностью.", + "Choose a record or primary key of a record in the collection to trigger.": "Выберите запись или её первичный ключ в коллекции для запуска триггера.", "Schedule event": "Событие по расписанию", + "Triggered according to preset time conditions. Suitable for one-time or periodic tasks, such as sending notifications and cleaning data on a schedule.": "Срабатывает по заданным временным условиям. Подходит для одноразовых или периодических задач, например, рассылки уведомлений или очистки данных по расписанию.", "Trigger mode": "Режим триггера", "Based on certain date": "На основе определенной даты", - "Based on date field of collection": "На базе поля с датой в коллекции", + "Based on date field of collection": "На основе поля с датой в коллекции", "Starts on": "Стартует с", "Ends on": "Оканчивается в", + "No end": "Без окончания", "Exactly at": "Ровно в", "Repeat mode": "Режим повтора", - "Repeat limit": "Ограничение на повторы", + "Repeat limit": "Ограничение повторов", "No limit": "Нет ограничений", "Seconds": "Секунды", "Minutes": "Минуты", @@ -43,39 +101,125 @@ "By month": "По месяцам", "By field": "По полю", "By custom date": "По пользовательской дате", - "Advanced": "Продвинутый", + "Advanced": "Расширенные настройки", + "Execute on": "Выполнять в", + "Current time": "Текущее время", "End": "Окончание", "Trigger variables": "Контекст триггера", "Node result": "Результат Узла", + "Variable key of node": "Ключ переменной узла", + "Scope variables": "Переменные области видимости", + "Operator": "Оператор", + "Calculate an expression based on a calculation engine and obtain a value as the result. Variables in the upstream nodes can be used in the expression.": "Вычислить выражение на основе вычислительного механизма и получить значение в качестве результата. В выражении можно использовать переменные из предыдущих узлов.", + "System variables": "Системные переменные", + "System time": "Системное время", + "Date variables": "Переменные даты", + "Date range": "Диапазон дат", + "Executed at": "Выполнено в", + "Queueing": "В очереди", + "On going": "В процессе", + "Resolved": "Решено", + "Pending": "Ожидание", + "Failed": "Неудачно", + "Error": "Ошибка", + "Aborted": "Прервано", + "Canceled": "Отменено", + "Rejected": "Отклонено", + "Retry needed": "Требуется повтор", + "Completed": "Завершено", + "All": "Все", + "View result": "Просмотреть результат", + "Triggered but still waiting in queue to execute.": "Активирован, но ожидает выполнения в очереди.", + "Started and executing, maybe waiting for an async callback (manual, delay etc.).": "Начат и выполняется, возможно ожидает асинхронного отклика (вручную, с задержкой и т. д.).", + "Successfully finished.": "Успешно завершено.", + "Failed to satisfy node configurations.": "Не удалось выполнить из-за настроек узла.", + "Some node meets error.": "Ошибка в одном из узлов.", + "Running of some node was aborted by program flow.": "Выполнение одного из узлов было прервано логикой программы.", + "Manually canceled whole execution when waiting.": "Выполнение было вручную отменено во время ожидания.", + "Rejected from a manual node.": "Отклонено вручную на узле.", + "General failed but should do another try.": "Общая ошибка, но следует попробовать снова.", + "Cancel the execution": "Отменить выполнение", + "Are you sure you want to cancel the execution?": "Вы уверены, что хотите отменить выполнение?", + "Operations": "Операции", + "This node contains branches, deleting will also be preformed to them, are you sure?": "Этот узел содержит ветви, при удалении они также будут удалены. Вы уверены?", + "Control": "Управление", + "Collection operations": "Операции с коллекцией", + "Manual": "Вручную", + "Extended types": "Расширенные типы", + "Node type": "Тип Узла", + "Unknown node": "Неизвестный узел", + "Node with unknown type will cause error. Please delete it or check plugin which provide this type.": "Узел с неизвестным типом вызовет ошибку. Удалите его или проверьте плагин, предоставляющий этот тип.", + "Calculation": "Вычисление", + "Calculation engine": "Вычислительный механизм", + "Basic": "Базовый", + "Calculation expression": "Выражение для вычисления", + "Expression syntax error": "Ошибка синтаксиса выражения", + "Syntax references: ": "Справка по синтаксису: ", + "Calculation result": "Результат вычисления", + "True": "Истина", + "False": "Ложь", + "concat": "объединить", + "Condition": "Условие", "Constant": "Константа", "Boolean": "Логический", "String": "Строка", "Arithmetic calculation": "Арифметическое вычисление", "String operation": "Операция со строкой", - "On going": "Непрерывный", "Succeeded": "Успешный", - "Failed": "Неудачный", - "Canceled": "Прерванный", - "This node contains branches, deleting will also be preformed to them, are you sure?": "Этот узел содержит ветки, к ним тоже будет произведено удаление, вы уверены?", - "Control": "Управление", - "Collection operations": "Операции с Коллекцией", - "Node type": "Тип Узла", - "Calculation": "Вычисление", - "Configure calculation": "Настроить вычисление", - "Calculation result": "Результат вычисления", - "True": "Истина", - "False": "Ложь", - "Condition": "Условие", + "Based on boolean result of the calculation to determine whether to \"continue\" or \"exit\" the process, or continue on different branches of \"yes\" and \"no\".": "На основании булевого результата вычисления определяется, следует ли «продолжить» или «завершить» процесс, либо перейти по ветвям «да» и «нет».", "Mode": "Режим", "Continue when \"Yes\"": "Продолжить когда \"Да\"", - "Branch into \"Yes\" and \"No\"": "Разветвление на \"Да\" and \"Нет\"", - "Conditions": "Условия", + "Branch into \"Yes\" and \"No\"": "Разветвление на \"Да\" и \"Нет\"", + "Condition expression": "Условное выражение", + "Inside of \"Yes\" branch": "Внутри ветви \"Да\"", + "Inside of \"No\" branch": "Внутри ветви \"Нет\"", "Create record": "Создать запись", + "Add new record to a collection. You can use variables from upstream nodes to assign values to fields.": "Добавить новую запись в коллекцию. Можно использовать переменные из предыдущих узлов для заполнения полей.", "Update record": "Обновить запись", + "Update records of a collection. You can use variables from upstream nodes as query conditions and field values.": "Обновить записи в коллекции. Можно использовать переменные из предыдущих узлов как условия запроса и значения полей.", + "Update mode": "Режим обновления", + "Update in a batch": "Пакетное обновление", + "Update one by one": "Обновлять по одной", + "Update all eligible data at one time, which has better performance when the amount of data is large. But association fields are not supported (unless foreign key in current collection), and the updated data will not trigger other workflows.": "Обновляет все подходящие данные за один раз — это быстрее при больших объёмах. Однако поля связей не поддерживаются (кроме внешнего ключа в текущей коллекции), и обновление не запускает другие рабочие процессы.", + "The updated data can trigger other workflows, and the audit log will also be recorded. But it is usually only applicable to several or dozens of pieces of data, otherwise there will be performance problems.": "Обновлённые данные могут запускать другие рабочие процессы, также ведётся журнал аудита. Однако этот режим подходит только для нескольких или десятков записей — иначе возможны проблемы с производительностью.", "Query record": "Запрос записи", + "Query records from a collection. You can use variables from upstream nodes as query conditions.": "Запрашивает записи из коллекции. Можно использовать переменные из предыдущих узлов как условия запроса.", + "Allow multiple records as result": "Разрешить несколько записей в результате", + "If checked, when there are multiple records in the query result, an array will be returned as the result, which can be operated on one by one using a loop node. Otherwise, only one record will be returned.": "Если включено, при получении нескольких записей результатом будет массив, который можно обработать с помощью узла цикла. Иначе вернётся только одна запись.", + "Result type": "Тип результата", + "Single record": "Одна запись", "Multiple records": "Множество записей", - "Please select collection first": "Выберите сначала Коллекцию, пожалуйста", + "The result will be an object of the first matching record only, or null if no matched record.": "Результатом будет объект первой найденной записи или null, если ничего не найдено.", + "The result will be an array containing matched records, or an empty one if no matching records. This can be used to be processed in a loop node.": "Результатом будет массив найденных записей или пустой массив, если совпадений нет. Можно использовать в узле цикла.", + "Exit when query result is null": "Завершить, если результат запроса пуст", + "Please select collection first": "Выберите сначала коллекцию, пожалуйста", "Only update records matching conditions": "Обновлять только записи, соответствующие условиям", + "Please add at least one condition": "Добавьте хотя бы одно условие", + "Unassigned fields will be set to default values, and those without default values will be set to null.": "Неуказанные поля будут установлены в значения по умолчанию, а при их отсутствии — null.", + "Delete record": "Удалить запись", + "Delete records of a collection. Could use variables in workflow context as filter. All records match the filter will be deleted.": "Удаляет записи коллекции. Можно использовать переменные контекста рабочего процесса как фильтр. Все записи, соответствующие фильтру, будут удалены.", + "Executed workflow cannot be modified. Could be copied to a new version to modify.": "Выполненный рабочий процесс нельзя изменить. Его можно скопировать в новую версию для редактирования.", + "Can not delete": "Невозможно удалить", + "The result of this node has been referenced by other nodes ({{nodes}}), please remove the usage before deleting.": "Результат этого узла используется в других узлах ({{nodes}}). Удалите использование перед удалением узла.", + "End process": "Завершить процесс", + "End the process immediately, with set status.": "Немедленно завершает процесс с заданным статусом.", + "End status": "Статус завершения", + "Succeeded": "Успешно", + "Test run": "Тестовый запуск", + "Test run will do the actual data manipulating or API calling, please use with caution.": "Тестовый запуск выполняет реальные операции с данными или вызовы API — используйте с осторожностью.", + "No variable": "Нет переменных", + "Add node": "Добавить узел", + "Move all downstream nodes to": "Переместить все последующие узлы в", + "After end of branches": "После завершения ветвей", + "Inside of branch": "Внутри ветви", + "Workflow todos": "Задачи рабочего процесса", + "New version enabled": "Новая версия активирована", + "Workflow is not exists": "Рабочий процесс не существует", + "Select users": "Выбрать пользователей", + "Query users": "Запросить пользователей", + "Add": "Добавить" + "Configure calculation": "Настроить вычисление", + "Conditions": "Условия", "Fields that are not assigned a value will be set to the default value, and those that do not have a default value are set to null.": "Поля, которым не присвоено значение, будут установлены на значение по умолчанию, а поля, не имеющие значения по умолчанию, будут установлены на null.", "Trigger in executed workflow cannot be modified": "Триггер в выполняемом рабочем процессе не может быть изменен", "Node in executed workflow cannot be modified": "Узел в выполняемом рабочем процессе не может быть изменен" From eb7cb7506e83b0e63675619c798231bef9528b20 Mon Sep 17 00:00:00 2001 From: YANG QIA <2013xile@gmail.com> Date: Thu, 20 Nov 2025 09:41:17 +0800 Subject: [PATCH 2/3] fix(acl): support data-scope restrictions for association operations (#7919) * fix(acl): support data-scope restrictions for association operations * fix: permission error --- .../__tests__/association-operate.test.ts | 162 ++++++++++++++++++ .../middlewares/check-association-operate.ts | 23 ++- 2 files changed, 183 insertions(+), 2 deletions(-) diff --git a/packages/plugins/@nocobase/plugin-acl/src/server/__tests__/association-operate.test.ts b/packages/plugins/@nocobase/plugin-acl/src/server/__tests__/association-operate.test.ts index 587da2fb99e..6b17eee8ea5 100644 --- a/packages/plugins/@nocobase/plugin-acl/src/server/__tests__/association-operate.test.ts +++ b/packages/plugins/@nocobase/plugin-acl/src/server/__tests__/association-operate.test.ts @@ -322,4 +322,166 @@ describe('association operate', async () => { expect(res.status).toBe(200); }); + + it('should not allow to change associations when outside scope', async () => { + await db.getCollection('collections').repository.create({ + values: { + name: 'comments', + fields: [ + { + name: 'content', + type: 'string', + }, + ], + }, + context: {}, + }); + + await db.getCollection('collections').repository.create({ + values: { + name: 'posts', + fields: [ + { + name: 'title', + type: 'string', + }, + { + name: 'comments', + type: 'hasMany', + target: 'comments', + interface: 'linkTo', + }, + ], + }, + context: {}, + }); + + await db.getRepository('posts').create({ + values: { + title: 'test-post', + }, + }); + + await db.getRepository('roles').create({ + values: { + name: 'test-role', + }, + }); + + const scope = await adminAgent.resource('dataSourcesRolesResourcesScopes').create({ + values: { + name: 'posts', + resourceName: 'posts', + scope: { $and: [{ id: { $eq: 2 } }] }, + }, + }); + await adminAgent.resource('roles.resources', 'test-role').create({ + values: { + usingActionsConfig: true, + name: 'posts', + actions: [ + { + name: 'update', + fields: ['comments'], + scopeId: scope.body.data.id, + }, + ], + }, + }); + + const user = await db.getRepository('users').create({ + values: { + roles: ['test-role'], + }, + }); + + const agent = await app.agent().login(user); + + const res = await agent.resource('posts.comments', 1).add({ + values: [], + }); + + expect(res.status).toBe(403); + }); + + it('should allow to change associations when under scope', async () => { + await db.getCollection('collections').repository.create({ + values: { + name: 'comments', + fields: [ + { + name: 'content', + type: 'string', + }, + ], + }, + context: {}, + }); + + await db.getCollection('collections').repository.create({ + values: { + name: 'posts', + fields: [ + { + name: 'title', + type: 'string', + }, + { + name: 'comments', + type: 'hasMany', + target: 'comments', + interface: 'linkTo', + }, + ], + }, + context: {}, + }); + + const post = await db.getRepository('posts').create({ + values: { + title: 'test-post', + }, + }); + + await db.getRepository('roles').create({ + values: { + name: 'test-role', + }, + }); + + const scope = await adminAgent.resource('dataSourcesRolesResourcesScopes').create({ + values: { + name: 'posts', + resourceName: 'posts', + scope: { $and: [{ id: { $eq: post.id } }] }, + }, + }); + await adminAgent.resource('roles.resources', 'test-role').create({ + values: { + usingActionsConfig: true, + name: 'posts', + actions: [ + { + name: 'update', + fields: ['comments'], + scopeId: scope.body.data.id, + }, + ], + }, + }); + + const user = await db.getRepository('users').create({ + values: { + roles: ['test-role'], + }, + }); + + const agent = await app.agent().login(user); + + const res = await agent.resource('posts.comments', 1).add({ + values: [], + }); + + expect(res.status).toBe(200); + }); }); diff --git a/packages/plugins/@nocobase/plugin-acl/src/server/middlewares/check-association-operate.ts b/packages/plugins/@nocobase/plugin-acl/src/server/middlewares/check-association-operate.ts index f3fd4ee11c1..4eea30a9ffa 100644 --- a/packages/plugins/@nocobase/plugin-acl/src/server/middlewares/check-association-operate.ts +++ b/packages/plugins/@nocobase/plugin-acl/src/server/middlewares/check-association-operate.ts @@ -7,11 +7,11 @@ * For more information, please refer to: https://www.nocobase.com/agreement. */ -import { ACL } from '@nocobase/acl'; +import { ACL, NoPermissionError } from '@nocobase/acl'; import { Context, Next } from '@nocobase/actions'; export async function checkAssociationOperate(ctx: Context, next: Next) { - const { actionName, resourceName } = ctx.action; + const { actionName, resourceName, sourceId } = ctx.action; if (!(resourceName.includes('.') && ['add', 'set', 'remove', 'toggle'].includes(actionName))) { return next(); } @@ -36,6 +36,25 @@ export async function checkAssociationOperate(ctx: Context, next: Next) { if (params.whitelist && !params.whitelist?.includes(association)) { ctx.throw(403, 'No permissions'); } + if (params.filter) { + try { + const filteredParams = ctx.acl.filterParams(ctx, resource, params); + const parsedParams = await ctx.acl.parseJsonTemplate(filteredParams, ctx); + const repo = ctx.db.getRepository(resource); + const record = await repo.findOne({ + filterByTk: sourceId, + filter: parsedParams.filter, + }); + if (!record) { + ctx.throw(403, 'No permissions'); + } + } catch (e) { + if (e instanceof NoPermissionError) { + ctx.throw(403, 'No permissions'); + } + throw e; + } + } ctx.permission = { ...ctx.permission, skip: true, From b2f128040826fb06cae07e0c91fd6e00e26ffa71 Mon Sep 17 00:00:00 2001 From: Drol Date: Thu, 20 Nov 2025 10:16:01 +0800 Subject: [PATCH 3/3] reload target collection fields after add o2m field (#7907) * fix(plugin-data-source-main): fix collection fields not reload after o2m`s foreignKey added * chore(plugin-data-source-main): replace type assertions with type conversions * chore(plugin-data-source-main): fix variable typo --- .../src/server/__tests__/fields/hasMany.test.ts | 14 ++++++++++++++ .../server/hooks/afterCreateForForeignKeyField.ts | 11 +++++++---- 2 files changed, 21 insertions(+), 4 deletions(-) diff --git a/packages/plugins/@nocobase/plugin-data-source-main/src/server/__tests__/fields/hasMany.test.ts b/packages/plugins/@nocobase/plugin-data-source-main/src/server/__tests__/fields/hasMany.test.ts index ee6fe06c398..9687091e240 100644 --- a/packages/plugins/@nocobase/plugin-data-source-main/src/server/__tests__/fields/hasMany.test.ts +++ b/packages/plugins/@nocobase/plugin-data-source-main/src/server/__tests__/fields/hasMany.test.ts @@ -135,4 +135,18 @@ describe('hasMany field options', () => { targetKey: 'ghi', }); }); + + it('should reload collection`s fields after foreignKey added', async () => { + await Field.repository.create({ + values: { + type: 'hasMany', + collectionName: 'tests', + target: 'foos', + foreignKey: 'test_id', + interface: 'o2m', + }, + context: {}, + }); + expect(db.getCollection('foos').getField('test_id')).toBeDefined(); + }); }); diff --git a/packages/plugins/@nocobase/plugin-data-source-main/src/server/hooks/afterCreateForForeignKeyField.ts b/packages/plugins/@nocobase/plugin-data-source-main/src/server/hooks/afterCreateForForeignKeyField.ts index 7ac6089e98b..2cd44424e95 100644 --- a/packages/plugins/@nocobase/plugin-data-source-main/src/server/hooks/afterCreateForForeignKeyField.ts +++ b/packages/plugins/@nocobase/plugin-data-source-main/src/server/hooks/afterCreateForForeignKeyField.ts @@ -8,6 +8,7 @@ */ import Database from '@nocobase/database'; +import { FieldModel } from '../models'; export function afterCreateForForeignKeyField(db: Database) { function generateFkOptions(collectionName: string, foreignKey: string) { @@ -83,7 +84,7 @@ export function afterCreateForForeignKeyField(db: Database) { throw new Error(`field options invalid`); } const r = db.getRepository('fields'); - const instance = await r.findOne({ + const instance: FieldModel = await r.findOne({ filter: { collectionName, name, @@ -98,6 +99,7 @@ export function afterCreateForForeignKeyField(db: Database) { instance.set('sort', 1); instance.set('isForeignKey', true); await instance.save({ transaction }); + await instance.load({ transaction }); } else { const createOptions = { values: { @@ -111,10 +113,11 @@ export function afterCreateForForeignKeyField(db: Database) { createOptions['context'] = {}; } - const creatInstance = await r.create(createOptions); + const createdInstance: FieldModel = await r.create(createOptions); // SortField#setSortValue instance._previousDataValues[scopeKey] judgment cause create set sort:1 invalid, need update - creatInstance.set('sort', 1); - await creatInstance.save({ transaction }); + createdInstance.set('sort', 1); + await createdInstance.save({ transaction }); + await createdInstance.load({ transaction }); } // update ID sort:0 await r.update({