From fde8630c5ba685b2dddfb80a43a2e6dab3131141 Mon Sep 17 00:00:00 2001 From: Anmol Singh Bhatia <121005188+anmolsinghbhatia@users.noreply.github.com> Date: Tue, 25 Feb 2025 12:54:51 +0530 Subject: [PATCH 1/3] fix: work item attachment count mutation (#6670) --- .../issue-detail-widget-collapsibles.tsx | 6 +++--- .../store/issue/issue-details/attachment.store.ts | 13 ++++++++++--- 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/web/core/components/issues/issue-detail-widgets/issue-detail-widget-collapsibles.tsx b/web/core/components/issues/issue-detail-widgets/issue-detail-widget-collapsibles.tsx index 9162e63161..26ec7b6bfa 100644 --- a/web/core/components/issues/issue-detail-widgets/issue-detail-widget-collapsibles.tsx +++ b/web/core/components/issues/issue-detail-widgets/issue-detail-widget-collapsibles.tsx @@ -26,7 +26,7 @@ export const IssueDetailWidgetCollapsibles: FC = observer((props) => { const { issue: { getIssueById }, subIssues: { subIssuesByIssueId }, - attachment: { getAttachmentsUploadStatusByIssueId }, + attachment: { getAttachmentsCountByIssueId, getAttachmentsUploadStatusByIssueId }, relation: { getRelationCountByIssueId }, } = useIssueDetail(); @@ -41,8 +41,8 @@ export const IssueDetailWidgetCollapsibles: FC = observer((props) => { const shouldRenderRelations = issueRelationsCount > 0; const shouldRenderLinks = !!issue?.link_count && issue?.link_count > 0; const attachmentUploads = getAttachmentsUploadStatusByIssueId(issueId); - const shouldRenderAttachments = - (!!issue?.attachment_count && issue?.attachment_count > 0) || (!!attachmentUploads && attachmentUploads.length > 0); + const attachmentsCount = getAttachmentsCountByIssueId(issueId); + const shouldRenderAttachments = attachmentsCount > 0 || (!!attachmentUploads && attachmentUploads.length > 0); return (
diff --git a/web/core/store/issue/issue-details/attachment.store.ts b/web/core/store/issue/issue-details/attachment.store.ts index 73474a3e83..90c28840a2 100644 --- a/web/core/store/issue/issue-details/attachment.store.ts +++ b/web/core/store/issue/issue-details/attachment.store.ts @@ -51,6 +51,7 @@ export interface IIssueAttachmentStore extends IIssueAttachmentStoreActions { getAttachmentsUploadStatusByIssueId: (issueId: string) => TAttachmentUploadStatus[] | undefined; getAttachmentsByIssueId: (issueId: string) => string[] | undefined; getAttachmentById: (attachmentId: string) => TIssueAttachment | undefined; + getAttachmentsCountByIssueId: (issueId: string) => number; } export class IssueAttachmentStore implements IIssueAttachmentStore { @@ -109,6 +110,11 @@ export class IssueAttachmentStore implements IIssueAttachmentStore { return this.attachmentMap[attachmentId] ?? undefined; }; + getAttachmentsCountByIssueId = (issueId: string) => { + const attachments = this.getAttachmentsByIssueId(issueId); + return attachments?.length ?? 0; + }; + // actions addAttachments = (issueId: string, attachments: TIssueAttachment[]) => { if (attachments && attachments.length > 0) { @@ -155,12 +161,14 @@ export class IssueAttachmentStore implements IIssueAttachmentStore { this.debouncedUpdateProgress(issueId, tempId, progressPercentage); } ); - const issueAttachmentsCount = this.getAttachmentsByIssueId(issueId)?.length ?? 0; if (response && response.id) { runInAction(() => { update(this.attachments, [issueId], (attachmentIds = []) => uniq(concat(attachmentIds, [response.id]))); set(this.attachmentMap, response.id, response); + this.rootIssueStore.issues.updateIssue(issueId, { + attachment_count: this.getAttachmentsCountByIssueId(issueId), + }); }); } @@ -182,7 +190,6 @@ export class IssueAttachmentStore implements IIssueAttachmentStore { issueId, attachmentId ); - const issueAttachmentsCount = this.getAttachmentsByIssueId(issueId)?.length ?? 1; runInAction(() => { update(this.attachments, [issueId], (attachmentIds = []) => { @@ -191,7 +198,7 @@ export class IssueAttachmentStore implements IIssueAttachmentStore { }); delete this.attachmentMap[attachmentId]; this.rootIssueStore.issues.updateIssue(issueId, { - attachment_count: issueAttachmentsCount - 1, // decrement attachment count + attachment_count: this.getAttachmentsCountByIssueId(issueId), }); }); From 062fc9dbc0aa80dd783ecd1d4183ad7999106027 Mon Sep 17 00:00:00 2001 From: Manish Gupta <59428681+mguptahub@users.noreply.github.com> Date: Tue, 25 Feb 2025 12:59:27 +0530 Subject: [PATCH 2/3] updated the action to modify the release build assets (#6669) --- .github/workflows/build-branch.yml | 29 ++--------------------------- 1 file changed, 2 insertions(+), 27 deletions(-) diff --git a/.github/workflows/build-branch.yml b/.github/workflows/build-branch.yml index 3599fc71e2..d9ba3afee2 100644 --- a/.github/workflows/build-branch.yml +++ b/.github/workflows/build-branch.yml @@ -299,32 +299,6 @@ jobs: buildx-platforms: ${{ needs.branch_build_setup.outputs.gh_buildx_platforms }} buildx-endpoint: ${{ needs.branch_build_setup.outputs.gh_buildx_endpoint }} - attach_assets_to_build: - if: ${{ needs.branch_build_setup.outputs.build_type == 'Release' }} - name: Attach Assets to Release - runs-on: ubuntu-22.04 - needs: [branch_build_setup] - steps: - - name: Checkout - uses: actions/checkout@v4 - - - name: Update Assets - run: | - cp ./deploy/selfhost/install.sh deploy/selfhost/setup.sh - - - name: Attach Assets - id: attach_assets - uses: actions/upload-artifact@v4 - with: - name: selfhost-assets - retention-days: 2 - path: | - ${{ github.workspace }}/deploy/selfhost/setup.sh - ${{ github.workspace }}/deploy/selfhost/swarm.sh - ${{ github.workspace }}/deploy/selfhost/restore.sh - ${{ github.workspace }}/deploy/selfhost/docker-compose.yml - ${{ github.workspace }}/deploy/selfhost/variables.env - publish_release: if: ${{ needs.branch_build_setup.outputs.build_type == 'Release' }} name: Build Release @@ -338,7 +312,6 @@ jobs: branch_build_push_live, branch_build_push_apiserver, branch_build_push_proxy, - attach_assets_to_build, ] env: REL_VERSION: ${{ needs.branch_build_setup.outputs.release_version }} @@ -349,6 +322,8 @@ jobs: - name: Update Assets run: | cp ./deploy/selfhost/install.sh deploy/selfhost/setup.sh + sed -i 's/${APP_RELEASE:-stable}/${APP_RELEASE:-'${REL_VERSION}'}/g' deploy/selfhost/docker-compose.yml + sed -i 's/APP_RELEASE=stable/APP_RELEASE='${REL_VERSION}'/g' deploy/selfhost/variables.env - name: Create Release id: create_release From 5329326602669ddd0cdce63750ff5aa3b8e3a394 Mon Sep 17 00:00:00 2001 From: Nikita Mitasov <32384814+ch4og@users.noreply.github.com> Date: Tue, 25 Feb 2025 10:32:05 +0300 Subject: [PATCH 3/3] feat: russian translation (#6666) --- packages/i18n/src/constants/language.ts | 1 + .../i18n/src/locales/ru/translations.json | 2194 +++++++++++++++++ packages/i18n/src/store/index.ts | 2 + packages/i18n/src/types/language.ts | 2 +- 4 files changed, 2198 insertions(+), 1 deletion(-) create mode 100644 packages/i18n/src/locales/ru/translations.json diff --git a/packages/i18n/src/constants/language.ts b/packages/i18n/src/constants/language.ts index 67b8e9d3f6..89433125f9 100644 --- a/packages/i18n/src/constants/language.ts +++ b/packages/i18n/src/constants/language.ts @@ -8,6 +8,7 @@ export const SUPPORTED_LANGUAGES: ILanguageOption[] = [ { label: "Español", value: "es" }, { label: "日本語", value: "ja" }, { label: "中文", value: "zh-CN" }, + { label: "Русский", value: "ru" }, ]; export const STORAGE_KEY = "userLanguage"; diff --git a/packages/i18n/src/locales/ru/translations.json b/packages/i18n/src/locales/ru/translations.json new file mode 100644 index 0000000000..f7efd6a321 --- /dev/null +++ b/packages/i18n/src/locales/ru/translations.json @@ -0,0 +1,2194 @@ +{ + "submit": "Отправить", + "cancel": "Отменить", + "loading": "Загрузка", + "error": "Ошибка", + "success": "Успешно", + "warning": "Предупреждение", + "info": "Информация", + "close": "Закрыть", + "yes": "Да", + "no": "Нет", + "ok": "OK", + "name": "Имя", + "description": "Описание", + "search": "Поиск", + "add_member": "Добавить участника", + "adding_members": "Добавление участников", + "remove_member": "Удалить участника", + "add_members": "Добавить участников", + "adding_member": "Добавление участников", + "remove_members": "Удалить участников", + "add": "Добавить", + "adding": "Добавление", + "remove": "Удалить", + "add_new": "Добавить новый", + "remove_selected": "Удалить выбранное", + "first_name": "Имя", + "last_name": "Фамилия", + "email": "Email", + "display_name": "Отображаемое имя", + "role": "Роль", + "timezone": "Часовой пояс", + "avatar": "Аватар", + "cover_image": "Обложка", + "password": "Пароль", + "change_cover": "Изменить обложку", + "language": "Язык", + "saving": "Сохранение", + "save_changes": "Сохранить изменения", + "deactivate_account": "Деактивировать аккаунт", + "deactivate_account_description": "При деактивации аккаунта все данные и ресурсы будут безвозвратно удалены и не могут быть восстановлены.", + "profile_settings": "Настройки профиля", + "your_account": "Ваш аккаунт", + "security": "Безопасность", + "activity": "Активность", + "appearance": "Внешний вид", + "notifications": "Уведомления", + "workspaces": "Рабочие пространства", + "create_workspace": "Создать рабочее пространство", + "invitations": "Приглашения", + "summary": "Сводка", + "assigned": "Назначено", + "created": "Создано", + "subscribed": "Подписались", + "you_do_not_have_the_permission_to_access_this_page": "У вас нет прав для доступа к этой странице.", + "something_went_wrong_please_try_again": "Что-то пошло не так. Пожалуйста, попробуйте еще раз.", + "load_more": "Загрузить еще", + "select_or_customize_your_interface_color_scheme": "Выберите или настройте цветовую схему интерфейса.", + "theme": "Тема", + "system_preference": "Системные настройки", + "light": "Светлая", + "dark": "Темная", + "light_contrast": "Светлая высококонтрастная", + "dark_contrast": "Темная высококонтрастностная", + "custom": "Пользовательская тема", + "select_your_theme": "Выберите тему", + "customize_your_theme": "Настройте свою тему", + "background_color": "Цвет фона", + "text_color": "Цвет текста", + "primary_color": "Основной цвет (темы)", + "sidebar_background_color": "Цвет фона боковой панели", + "sidebar_text_color": "Цвет текста боковой панели", + "set_theme": "Установить тему", + "enter_a_valid_hex_code_of_6_characters": "Введите корректный HEX-код из 6 символов", + "background_color_is_required": "Требуется цвет фона", + "text_color_is_required": "Требуется цвет текста", + "primary_color_is_required": "Требуется основной цвет", + "sidebar_background_color_is_required": "Требуется цвет фона боковой панели", + "sidebar_text_color_is_required": "Требуется цвет текста боковой панели", + "updating_theme": "Обновление темы", + "theme_updated_successfully": "Тема успешно обновлена", + "failed_to_update_the_theme": "Не удалось обновить тему", + "email_notifications": "Email-уведомления", + "stay_in_the_loop_on_issues_you_are_subscribed_to_enable_this_to_get_notified": "Будьте в курсе рабочих задач, на которые вы подписаны. Включите уведомления.", + "email_notification_setting_updated_successfully": "Настройки email-уведомлений успешно обновлены", + "failed_to_update_email_notification_setting": "Не удалось обновить настройки email-уведомлений", + "notify_me_when": "Уведомлять меня, когда", + "property_changes": "Изменения свойств", + "property_changes_description": "Уведомлять при изменении свойств задач: назначенные, приоритет, оценки и прочее", + "state_change": "Изменение статуса", + "state_change_description": "Уведомлять при изменении статуса задачи", + "issue_completed": "Задача выполнена", + "issue_completed_description": "Уведомлять только при выполнении задачи", + "comments": "Комментарии", + "comments_description": "Уведомлять при добавлении комментариев к задаче", + "mentions": "Упоминания", + "mentions_description": "Уведомлять только при упоминании меня в комментариях или описании", + "old_password": "Старый пароль", + "general_settings": "Общие настройки", + "sign_out": "Выйти", + "signing_out": "Выход...", + "active_cycles": "Активные циклы", + "active_cycles_description": "Мониторинг циклов по проектам, отслеживание приоритетных задач и фокусировка на проблемных циклах.", + "on_demand_snapshots_of_all_your_cycles": "Моментальные снимки всех ваших циклов", + "upgrade": "Обновить", + "10000_feet_view": "Обзор всех активных циклов с высоты", + "10000_feet_view_description": "Общий обзор выполняющихся циклов во всех проектах вместо переключения между циклами в каждом проекте.", + "get_snapshot_of_each_active_cycle": "Получить снимок каждого активного цикла", + "get_snapshot_of_each_active_cycle_description": "Отслеживайте ключевые метрики активных циклов, их прогресс и соответствие срокам.", + "compare_burndowns": "Сравнение графиков выгорания", + "compare_burndowns_description": "Мониторинг производительности команд через анализ графиков выполнения циклов.", + "quickly_see_make_or_break_issues": "Быстрый просмотр критических задач", + "quickly_see_make_or_break_issues_description": "Просмотр высокоприоритетных задач с указанием сроков для каждого цикла в один клик.", + "zoom_into_cycles_that_need_attention": "Фокусировка на проблемных циклах", + "zoom_into_cycles_that_need_attention_description": "Исследование состояния циклов, не соответствующих ожиданиям, в один клик.", + "stay_ahead_of_blockers": "Предупреждение блокирующих задач", + "stay_ahead_of_blockers_description": "Выявление проблем между проектами и скрытых зависимостей между циклами.", + "analytics": "Аналитика", + "workspace_invites": "Приглашения в рабочее пространство", + "enter_god_mode": "Режим администратора", + "workspace_logo": "Логотип рабочего пространства", + "new_issue": "Новая задача", + "your_work": "Ваша работа", + "drafts": "Черновики", + "projects": "Проекты", + "views": "Представления", + "workspace": "Рабочее пространство", + "archives": "Архивы", + "settings": "Настройки", + "failed_to_move_favorite": "Ошибка перемещения избранного", + "favorites": "Избранное", + "no_favorites_yet": "Нет избранного", + "create_folder": "Создать папку", + "new_folder": "Новая папка", + "favorite_updated_successfully": "Избранное успешно обновлено", + "favorite_created_successfully": "Избранное успешно создано", + "folder_already_exists": "Папка уже существует", + "folder_name_cannot_be_empty": "Имя папки не может быть пустым", + "something_went_wrong": "Что-то пошло не так", + "failed_to_reorder_favorite": "Ошибка изменения порядка избранного", + "favorite_removed_successfully": "Избранное успешно удалено", + "failed_to_create_favorite": "Ошибка создания избранного", + "failed_to_rename_favorite": "Ошибка переименования избранного", + "project_link_copied_to_clipboard": "Ссылка на проект скопирована в буфер обмена", + "link_copied": "Ссылка скопирована", + "add_project": "Добавить проект", + "create_project": "Создать проект", + "failed_to_remove_project_from_favorites": "Не удалось удалить проект из избранного. Попробуйте снова.", + "project_created_successfully": "Проект успешно создан", + "project_created_successfully_description": "Проект успешно создан. Теперь вы можете добавлять задачи.", + "project_cover_image_alt": "Обложка проекта", + "name_is_required": "Требуется имя", + "title_should_be_less_than_255_characters": "Заголовок должен быть короче 255 символов", + "project_name": "Название проекта", + "project_id_must_be_at_least_1_character": "ID проекта должен содержать минимум 1 символ", + "project_id_must_be_at_most_5_characters": "ID проекта должен содержать максимум 5 символов", + "project_id": "ID проекта", + "project_id_tooltip_content": "Помогает идентифицировать задачи в проекте. Макс. 5 символов.", + "description_placeholder": "Описание", + "only_alphanumeric_non_latin_characters_allowed": "Допускаются только буквенно-цифровые и нелатинские символы.", + "project_id_is_required": "Требуется ID проекта", + "project_id_allowed_char": "Допускаются только буквенно-цифровые и нелатинские символы.", + "project_id_min_char": "ID проекта должен содержать минимум 1 символ", + "project_id_max_char": "ID проекта должен содержать максимум 5 символов", + "project_description_placeholder": "Введите описание проекта", + "select_network": "Выбрать сеть", + "lead": "Руководитель", + "date_range": "Диапазон дат", + "private": "Приватный", + "public": "Публичный", + "accessible_only_by_invite": "Доступ только по приглашению", + "anyone_in_the_workspace_except_guests_can_join": "Все участники рабочего пространства (кроме гостей) могут присоединиться", + "creating": "Создание", + "creating_project": "Создание проекта", + "adding_project_to_favorites": "Добавление проекта в избранное", + "project_added_to_favorites": "Проект добавлен в избранное", + "couldnt_add_the_project_to_favorites": "Не удалось добавить проект в избранное. Попробуйте снова.", + "removing_project_from_favorites": "Удаление проекта из избранного", + "project_removed_from_favorites": "Проект удален из избранного", + "couldnt_remove_the_project_from_favorites": "Не удалось удалить проект из избранного. Попробуйте снова.", + "add_to_favorites": "Добавить в избранное", + "remove_from_favorites": "Удалить из избранного", + "publish_settings": "Настройки публикации", + "publish": "Опубликовать", + "copy_link": "Копировать ссылку", + "leave_project": "Покинуть проект", + "join_the_project_to_rearrange": "Присоединитесь к проекту для изменения порядка", + "drag_to_rearrange": "Перетащите для изменения порядка", + "congrats": "Поздравляем!", + "open_project": "Открыть проект", + "issues": "Задачи", + "cycles": "Циклы", + "modules": "Модули", + "pages": "Страницы", + "intake": "Входящие", + "time_tracking": "Учет времени", + "work_management": "Управление задачами", + "projects_and_issues": "Проекты и задачи", + "projects_and_issues_description": "Включить/отключить для этого проекта", + "cycles_description": "Группировка задач по временным интервалам с возможностью изменения периодичности.", + "modules_description": "Группировка задач в подпроекты с собственными руководителями и назначенными.", + "views_description": "Сохранение сортировок, фильтров и отображений для повторного использования или совместного доступа.", + "pages_description": "Создание любых текстовых материалов", + "intake_description": "Отслеживание задач, на которые вы подписаны. Включите для получения уведомлений.", + "time_tracking_description": "Учет времени, затраченного на задачи и проекты.", + "work_management_description": "Управление задачами и проектами", + "documentation": "Документация", + "message_support": "Написать в поддержку", + "contact_sales": "Связаться с отделом продаж", + "hyper_mode": "Гиперрежим", + "keyboard_shortcuts": "Горячие клавиши", + "whats_new": "Что нового?", + "version": "Версия", + "we_are_having_trouble_fetching_the_updates": "Возникли проблемы с получением обновлений.", + "our_changelogs": "наши журналы изменений", + "for_the_latest_updates": "для последних обновлений.", + "please_visit": "Пожалуйста, посетите", + "docs": "Документация", + "full_changelog": "Полный журнал изменений", + "support": "Поддержка", + "discord": "Discord", + "powered_by_plane_pages": "Работает на Plane Pages", + "please_select_at_least_one_invitation": "Пожалуйста, выберите хотя бы одно приглашение.", + "please_select_at_least_one_invitation_description": "Для присоединения к рабочему пространству выберите хотя бы одно приглашение.", + "we_see_that_someone_has_invited_you_to_join_a_workspace": "Вы получили приглашение присоединиться к рабочему пространству", + "join_a_workspace": "Присоединиться к рабочему пространству", + "we_see_that_someone_has_invited_you_to_join_a_workspace_description": "Вы получили приглашение присоединиться к рабочему пространству", + "join_a_workspace_description": "Присоединиться к рабочему пространству", + "accept_and_join": "Принять и присоединиться", + "go_home": "На главную", + "no_pending_invites": "Нет ожидающих приглашений", + "you_can_see_here_if_someone_invites_you_to_a_workspace": "Здесь отображаются приглашения в рабочие пространства", + "back_to_home": "Вернуться на главную", + "workspace_name": "название-рабочего-пространства", + "deactivate_your_account": "Деактивировать ваш аккаунт", + "deactivate_your_account_description": "После деактивации вы не сможете получать задачи и оплачивать рабочее пространство. Для реактивации потребуется новое приглашение.", + "deactivating": "Деактивация...", + "confirm": "Подтвердить", + "confirming": "Подтверждение...", + "draft_created": "Черновик создан", + "issue_created_successfully": "Задача успешно создана", + "draft_creation_failed": "Ошибка создания черновика", + "issue_creation_failed": "Ошибка создания задачи", + "draft_issue": "Черновик задачи", + "issue_updated_successfully": "Задача успешно обновлена", + "issue_could_not_be_updated": "Не удалось обновить задачу", + "create_a_draft": "Создать черновик", + "save_to_drafts": "Сохранить в черновики", + "save": "Сохранить", + "update": "Обновить", + "updating": "Обновление...", + "create_new_issue": "Создать новую задачу", + "editor_is_not_ready_to_discard_changes": "Редактор не готов отменить изменения", + "failed_to_move_issue_to_project": "Ошибка перемещения задачи в проект", + "create_more": "Создать еще", + "add_to_project": "Добавить в проект", + "discard": "Отменить", + "duplicate_issue_found": "Найдена дублирующаяся задача", + "duplicate_issues_found": "Найдены дублирующиеся задачи", + "no_matching_results": "Нет совпадений", + "title_is_required": "Требуется заголовок", + "title": "Заголовок", + "state": "Статус", + "priority": "Приоритет", + "none": "Нет", + "urgent": "Срочный", + "high": "Высокий", + "medium": "Средний", + "low": "Низкий", + "members": "Участники", + "assignee": "Назначенный", + "assignees": "Назначенные", + "you": "Вы", + "labels": "Метки", + "create_new_label": "Создать новую метку", + "start_date": "Дата начала", + "end_date": "Дата окончания", + "due_date": "Срок выполнения", + "estimate": "Оценка", + "change_parent_issue": "Изменить родительскую задачу", + "remove_parent_issue": "Удалить родительскую задачу", + "add_parent": "Добавить родительскую", + "loading_members": "Загрузка участников", + "view_link_copied_to_clipboard": "Ссылка на представление скопирована в буфер", + "required": "Обязательно", + "optional": "Опционально", + "Cancel": "Отмена", + "edit": "Редактировать", + "archive": "Архивировать", + "restore": "Восстановить", + "open_in_new_tab": "Открыть в новой вкладке", + "delete": "Удалить", + "deleting": "Удаление...", + "make_a_copy": "Создать копию", + "move_to_project": "Переместить в проект", + "good": "Доброго", + "morning": "утра", + "afternoon": "дня", + "evening": "вечера", + "show_all": "Показать все", + "show_less": "Свернуть", + "no_data_yet": "Нет данных", + "syncing": "Синхронизация", + "add_work_item": "Добавить задачу", + "advanced_description_placeholder": "Нажмите '/' для команд", + "create_work_item": "Создать задачу", + "attachments": "Вложения", + "declining": "Отмена...", + "declined": "Отменено", + "decline": "Отменить", + "unassigned": "Не назначено", + "work_items": "Задачи", + "add_link": "Добавить ссылку", + "points": "Очки", + "no_assignee": "Нет назначенного", + "no_assignees_yet": "Нет назначенных", + "no_labels_yet": "Нет меток", + "ideal": "Идеально", + "current": "Текущее", + "no_matching_members": "Нет совпадений", + "leaving": "Выход...", + "removing": "Удаление...", + "leave": "Покинуть", + "refresh": "Обновить", + "refreshing": "Обновление...", + "refresh_status": "Обновить статус", + "prev": "Назад", + "next": "Вперед", + "re_generating": "Повторная генерация...", + "re_generate": "Сгенерировать заново", + "re_generate_key": "Перегенерировать ключ", + "export": "Экспорт", + "member": "{count, plural, one{# участник} few{# участника} other{# участников}}", + + "project_view": { + "sort_by": { + "created_at": "Дата создания", + "updated_at": "Дата обновления", + "name": "Имя" + } + }, + + "toast": { + "success": "Успех!", + "error": "Ошибка!" + }, + + "links": { + "toasts": { + "created": { + "title": "Ссылка создана", + "message": "Ссылка успешно создана" + }, + "not_created": { + "title": "Ошибка создания ссылки", + "message": "Не удалось создать ссылку" + }, + "updated": { + "title": "Ссылка обновлена", + "message": "Ссылка успешно обновлена" + }, + "not_updated": { + "title": "Ошибка обновления ссылки", + "message": "Не удалось обновить ссылку" + }, + "removed": { + "title": "Ссылка удалена", + "message": "Ссылка успешно удалена" + }, + "not_removed": { + "title": "Ошибка удаления ссылки", + "message": "Не удалось удалить ссылку" + } + } + }, + + "home": { + "empty": { + "quickstart_guide": "Руководство по началу работы", + "not_right_now": "Не сейчас", + "create_project": { + "title": "Создать проект", + "description": "Большинство вещей начинаются с проекта в Plane.", + "cta": "Начать" + }, + "invite_team": { + "title": "Пригласить команду", + "description": "Создавайте, развивайте и управляйте вместе с коллегами.", + "cta": "Пригласить" + }, + "configure_workspace": { + "title": "Настройте рабочее пространство", + "description": "Включайте/отключайте функции или делайте больше.", + "cta": "Настроить" + }, + "personalize_account": { + "title": "Персонализируйте Plane", + "description": "Выберите изображение, цвета и другие параметры.", + "cta": "Настроить сейчас" + }, + "widgets": { + "title": "Включите виджеты для лучшего опыта", + "description": "Все ваши виджеты выключены. Включите их\nдля улучшения взаимодействия!", + "primary_button": { + "text": "Управление виджетами" + } + } + }, + "quick_links": { + "empty": "Сохраняйте ссылки на важные задачи.", + "add": "Добавить быструю ссылку", + "title": "Быстрая ссылка", + "title_plural": "Быстрые ссылки" + }, + "recents": { + "title": "Недавние", + "empty": { + "project": "Недавние проекты появятся здесь после посещения.", + "page": "Недавние страницы появятся здесь после посещения.", + "issue": "Недавние задачи появятся здесь после посещения.", + "default": "Пока нет недавних элементов" + }, + "filters": { + "all": "Все элементы", + "projects": "Проекты", + "pages": "Страницы", + "issues": "Задачи" + } + }, + "new_at_plane": { + "title": "Новое в Plane" + }, + "quick_tutorial": { + "title": "Быстрое обучение" + }, + "widget": { + "reordered_successfully": "Виджет успешно перемещен.", + "reordering_failed": "Ошибка при изменении порядка виджетов." + }, + "manage_widgets": "Управление виджетами", + "title": "Главная", + "star_us_on_github": "Оцените нас на GitHub" + }, + + "link": { + "modal": { + "url": { + "text": "URL", + "required": "Некорректный URL", + "placeholder": "Введите или вставьте URL" + }, + "title": { + "text": "Отображаемый заголовок", + "placeholder": "Как вы хотите видеть эту ссылку" + } + } + }, + + "common": { + "all": "Все", + "states": "Статусы", + "state": "Статус", + "state_groups": "Группы статусов", + "priority": "Приоритет", + "team_project": "Командный проект", + "project": "Проект", + "cycle": "Цикл", + "cycles": "Циклы", + "module": "Модуль", + "modules": "Модули", + "labels": "Метки", + "assignees": "Назначенные", + "assignee": "Назначенный", + "created_by": "Создано", + "none": "Нет", + "link": "Ссылка", + "estimate": "Оценка", + "layout": "Макет", + "filters": "Фильтры", + "display": "Отображение", + "load_more": "Загрузить еще", + "activity": "Активность", + "analytics": "Аналитика", + "dates": "Даты", + "success": "Успешно!", + "something_went_wrong": "Что-то пошло не так", + "error": { + "label": "Ошибка!", + "message": "Произошла ошибка. Пожалуйста, попробуйте снова." + }, + "group_by": "Группировать по", + "epic": "Эпик", + "epics": "Эпики", + "work_item": "Задача", + "work_items": "Задачи", + "sub_work_item": "Подзадача", + "add": "Добавить", + "warning": "Предупреждение", + "updating": "Обновление", + "adding": "Добавление", + "update": "Обновить", + "creating": "Создание", + "create": "Создать", + "cancel": "Отмена", + "description": "Описание", + "title": "Заголовок", + "attachment": "Вложение", + "general": "Общее", + "features": "Функции", + "automation": "Автоматизация", + "project_name": "Название проекта", + "project_id": "ID проекта", + "project_timezone": "Часовой пояс проекта", + "created_on": "Создано", + "update_project": "Обновить проект", + "identifier_already_exists": "Идентификатор уже существует", + "add_more": "Добавить еще", + "defaults": "По умолчанию", + "add_label": "Добавить метку", + "estimates": "Оценки", + "customize_time_range": "Настроить период", + "loading": "Загрузка", + "attachments": "Вложения", + "property": "Свойство", + "properties": "Свойства", + "parent": "Родительский", + "remove": "Удалить", + "archiving": "Архивация", + "archive": "Архивировать", + "access": { + "public": "Публичный", + "private": "Приватный" + }, + "done": "Готово", + "sub_work_items": "Подзадачи", + "comment": "Комментарий", + "workspace_level": "Уровень рабочего пространства", + "order_by": { + "label": "Сортировать по", + "manual": "Вручную", + "last_created": "Последние созданные", + "last_updated": "Последние обновленные", + "start_date": "Дата начала", + "due_date": "Срок выполнения", + "asc": "По возрастанию", + "desc": "По убыванию", + "updated_on": "Дата обновления" + }, + "sort": { + "asc": "По возрастанию", + "desc": "По убыванию", + "created_on": "Дата создания", + "updated_on": "Дата обновления" + }, + "comments": "Комментарии", + "updates": "Обновления", + "clear_all": "Очистить все", + "copied": "Скопировано!", + "link_copied": "Ссылка скопирована!", + "link_copied_to_clipboard": "Ссылка скопирована в буфер обмена", + "copied_to_clipboard": "Ссылка на задачу скопирована", + "is_copied_to_clipboard": "Задача скопирована в буфер обмена", + "no_links_added_yet": "Нет добавленных ссылок", + "add_link": "Добавить ссылку", + "links": "Ссылки", + "go_to_workspace": "Перейти в рабочее пространство", + "progress": "Прогресс", + "optional": "Опционально", + "join": "Присоединиться", + "go_back": "Назад", + "continue": "Продолжить", + "resend": "Отправить повторно", + "relations": "Связи", + "errors": { + "default": { + "title": "Ошибка!", + "message": "Что-то пошло не так. Попробуйте позже." + }, + "required": "Это поле обязательно", + "entity_required": "{entity} обязательно" + }, + "update_link": "обновить ссылку", + "attach": "Прикрепить", + "create_new": "Создать новый", + "add_existing": "Добавить существующий", + "type_or_paste_a_url": "Введите или вставьте URL", + "url_is_invalid": "Некорректный URL", + "display_title": "Отображаемое название", + "link_title_placeholder": "Как вы хотите видеть эту ссылку", + "url": "URL", + "side_peek": "Боковой просмотр", + "modal": "Модальное окно", + "full_screen": "Полный экран", + "close_peek_view": "Закрыть просмотр", + "toggle_peek_view_layout": "Переключить макет просмотра", + "options": "Опции", + "duration": "Продолжительность", + "today": "Сегодня", + "week": "Неделя", + "month": "Месяц", + "quarter": "Квартал", + "press_for_commands": "Нажмите '/' для команд", + "click_to_add_description": "Нажмите, чтобы добавить описание", + "search": { + "label": "Поиск", + "placeholder": "Введите для поиска", + "no_matches_found": "Совпадений не найдено", + "no_matching_results": "Нет подходящих результатов" + }, + "actions": { + "edit": "Редактировать", + "make_a_copy": "Сделать копию", + "open_in_new_tab": "Открыть в новой вкладке", + "copy_link": "Копировать ссылку", + "archive": "Архивировать", + "restore": "Восстановить", + "delete": "Удалить", + "remove_relation": "Удалить связь", + "subscribe": "Подписаться", + "unsubscribe": "Отписаться", + "clear_sorting": "Сбросить сортировку", + "show_weekends": "Показывать выходные", + "enable": "Включить", + "disable": "Отключить" + }, + "name": "Название", + "discard": "Отменить", + "confirm": "Подтвердить", + "confirming": "Подтверждение", + "read_the_docs": "Документация", + "default": "По умолчанию", + "active": "Активный", + "enabled": "Включён", + "disabled": "Отключён", + "mandate": "Мандат", + "mandatory": "Обязательный", + "yes": "Да", + "no": "Нет", + "please_wait": "Пожалуйста, подождите", + "enabling": "Включение", + "disabling": "Отключение", + "beta": "Бета", + "or": "или", + "next": "Далее", + "back": "Назад", + "cancelling": "Отмена", + "configuring": "Настройка", + "clear": "Очистить", + "import": "Импорт", + "connect": "Подключить", + "authorizing": "Авторизация", + "processing": "Обработка", + "no_data_available": "Нет доступных данных", + "from": "от {name}", + "authenticated": "Авторизован", + "select": "Выбрать", + "upgrade": "Обновить", + "add_seats": "Добавить места", + "label": "Метка", + "priorities": "Приоритеты", + "projects": "Проекты", + "workspace": "Рабочее пространство", + "workspaces": "Рабочие пространства", + "team": "Команда", + "teams": "Команды", + "entity": "Сущность", + "entities": "Сущности", + "task": "Задача", + "tasks": "Задачи", + "section": "Секция", + "sections": "Секции", + "edit": "Редактировать", + "connecting": "Подключение", + "connected": "Подключён", + "disconnect": "Отключить", + "disconnecting": "Отключение", + "installing": "Установка", + "install": "Установить", + "reset": "Сбросить", + "live": "В прямом эфире", + "change_history": "История изменений", + "coming_soon": "Скоро", + "members": "Участники", + "you": "Вы", + "upgrade_cta": { + "higher_subscription": "Перейти на подписку выше", + "talk_to_sales": "Связаться с отделом продаж" + }, + "category": "Категория", + "categories": "Категории", + "saving": "Сохранение", + "save_changes": "Сохранить изменения", + "delete": "Удалить", + "deleting": "Удаление", + "pending": "Ожидание", + "invite": "Пригласить" + }, + + "chart": { + "x_axis": "Ось X", + "y_axis": "Ось Y", + "metric": "Метрика" + }, + + "form": { + "title": { + "required": "Название обязательно", + "max_length": "Название должно быть короче {length} символов" + } + }, + + "entity": { + "grouping_title": "Группировка {entity}", + "priority": "Приоритет {entity}", + "all": "Все {entity}", + "drop_here_to_move": "Переместите {entity} сюда", + "delete": { + "label": "Удалить {entity}", + "success": "{entity} успешно удалён", + "failed": "Ошибка удаления {entity}" + }, + "update": { + "failed": "Ошибка обновления {entity}", + "success": "{entity} успешно обновлён" + }, + "link_copied_to_clipboard": "Ссылка на {entity} скопирована", + "fetch": { + "failed": "Ошибка получения {entity}" + }, + "add": { + "success": "{entity} успешно добавлен", + "failed": "Ошибка добавления {entity}" + } + }, + + "epic": { + "all": "Все эпики", + "label": "{count, plural, one {Эпик} other {Эпики}}", + "new": "Новый эпик", + "adding": "Добавление эпика", + "create": { + "success": "Эпик успешно создан" + }, + "add": { + "press_enter": "Нажмите 'Enter' чтобы добавить ещё эпик", + "label": "Добавить эпик" + }, + "title": { + "label": "Название эпика", + "required": "Название эпика обязательно" + } + }, + + "issue": { + "label": "{count, plural, one {Задача} other {Задачи}}", + "all": "Все задачи", + "edit": "Редактировать задачу", + "title": { + "label": "Название задачи", + "required": "Название задачи обязательно." + }, + "add": { + "press_enter": "Нажмите 'Enter' чтобы добавить ещё задачу", + "label": "Добавить задачу", + "cycle": { + "failed": "Не удалось добавить задачу в цикл. Попробуйте снова.", + "success": "{count, plural, one {Задача} other {Задачи}} успешно {count, plural, one {добавлена} other {добавлены}} в цикл.", + "loading": "Добавление {count, plural, one {задачи} other {задач}} в цикл" + }, + "assignee": "Добавить ответственных", + "start_date": "Добавить дату начала", + "due_date": "Добавить срок выполнения", + "parent": "Добавить родительскую задачу", + "sub_issue": "Добавить подзадачу", + "relation": "Добавить связь", + "link": "Добавить ссылку", + "existing": "Добавить существующую задачу" + }, + "remove": { + "label": "Удалить задачу", + "cycle": { + "loading": "Удаление задачи из цикла", + "success": "Задача успешно удалена из цикла", + "failed": "Не удалось удалить задачу из цикла. Попробуйте снова." + }, + "module": { + "loading": "Удаление задачи из модуля", + "success": "Задача успешно удалена из модуля.", + "failed": "Не удалось удалить задачу из модуля. Попробуйте снова." + }, + "parent": { + "label": "Удалить родительскую задачу" + } + }, + "new": "Новая задча", + "adding": "Добавление задачи", + "create": { + "success": "Задача успешно создана" + }, + "priority": { + "urgent": "Срочный", + "high": "Высокий", + "medium": "Средний", + "low": "Низкий" + }, + "display": { + "properties": { + "label": "Отображаемые свойства", + "id": "ID", + "issue_type": "Тип задачи", + "sub_issue_count": "Количество подзадач", + "attachment_count": "Количество вложений", + "created_on": "Дата создания", + "sub_issue": "Подзадача" + }, + "extra": { + "show_sub_issues": "Показывать подзадачи", + "show_empty_groups": "Показывать пустые группы" + } + }, + "layouts": { + "ordered_by_label": "Сортировка по", + "list": "Список", + "kanban": "Доска", + "calendar": "Календарь", + "spreadsheet": "Таблица", + "gantt": "График", + "title": { + "list": "Список", + "kanban": "Доска", + "calendar": "Календарь", + "spreadsheet": "Таблица", + "gantt": "График" + } + }, + "states": { + "active": "Активно", + "backlog": "Бэклог" + }, + "comments": { + "placeholder": "Добавить комментарий", + "switch": { + "private": "Изменить на приватный комментарий", + "public": "Изменить на публичный комментарий" + }, + "create": { + "success": "Комментарий успешно добавлен", + "error": "Ошибка создания комментария. Попробуйте позже." + }, + "update": { + "success": "Комментарий успешно обновлён", + "error": "Ошибка обновления комментария. Попробуйте позже." + }, + "remove": { + "success": "Комментарий успешно удалён", + "error": "Ошибка удаления комментария. Попробуйте позже." + }, + "upload": { + "error": "Ошибка загрузки файла. Попробуйте позже." + } + }, + "empty_state": { + "issue_detail": { + "title": "Задача не существует", + "description": "Данная задача была удалена, архивирована или не существует.", + "primary_button": { + "text": "Посмотреть другие задачи" + } + } + }, + "sibling": { + "label": "Связанные задачи" + }, + "archive": { + "description": "Только завершённые или отменённые\nзадачи можно архивировать", + "label": "Архивировать задачу", + "confirm_message": "Вы уверены что хотите архивировать задачу? Архивы можно восстановить позже.", + "success": { + "label": "Архивация успешна", + "message": "Архивы доступны в разделе архивов проекта" + }, + "failed": { + "message": "Ошибка архивации задачи. Попробуйте позже." + } + }, + "restore": { + "success": { + "title": "Восстановление успешно", + "message": "Задача доступна в разделе задач проекта" + }, + "failed": { + "message": "Ошибка восстановления задачи. Попробуйте позже." + } + }, + "relation": { + "relates_to": "Связан с", + "duplicate": "Дубликат", + "blocked_by": "Блокируется", + "blocking": "Блокирует" + }, + "copy_link": "Копировать ссылку на задачу", + "delete": { + "label": "Удалить задачу", + "error": "Ошибка удаления задачи" + }, + "subscription": { + "actions": { + "subscribed": "Подписка на задачу оформлена", + "unsubscribed": "Подписка на задачу отменена" + } + }, + "select": { + "error": "Выберите хотя бы одну задачу", + "empty": "Задачи не выбраны", + "add_selected": "Добавить выбранные задачи" + }, + "open_in_full_screen": "Открыть задачу в полном экране" + }, + + "attachment": { + "error": "Ошибка прикрепления файла", + "only_one_file_allowed": "Можно загрузить только один файл", + "file_size_limit": "Максимальный размер файла - {size} МБ", + "drag_and_drop": "Перетащите файл для загрузки", + "delete": "Удалить вложение" + }, + + "label": { + "select": "Выбрать метку", + "create": { + "success": "Метка создана", + "failed": "Ошибка создания метки", + "already_exists": "Метка уже существует", + "type": "Введите новую метку" + } + }, + + "sub_work_item": { + "update": { + "success": "Подзадача успешно обновлена", + "error": "Ошибка обновления подзадачи" + }, + "remove": { + "success": "Подзадача успешно удалена", + "error": "Ошибка удаления подзадачи" + } + }, + + "view": { + "label": "{count, plural, one {Представление} other {Представления}}", + "create": { + "label": "Создать представление" + }, + "update": { + "label": "Обновить представление" + } + }, + + "inbox_issue": { + "status": { + "pending": { + "title": "Ожидание", + "description": "Ожидание" + }, + "declined": { + "title": "Отклонено", + "description": "Отклонено" + }, + "snoozed": { + "title": "Отложено", + "description": "{days, plural, one{# день} other{# дней}} осталось" + }, + "accepted": { + "title": "Принято", + "description": "Принято" + }, + "duplicate": { + "title": "Дубликат", + "description": "Дубликат" + } + }, + "modals": { + "decline": { + "title": "Отклонить задачу", + "content": "Вы уверены, что хотите отклонить задачу {value}?" + }, + "delete": { + "title": "Удалить задачу", + "content": "Вы уверены, что хотите удалить задачу {value}?", + "success": "Задача успешно удалена" + } + }, + "errors": { + "snooze_permission": "Только администраторы проекта могут откладывать/возобновлять задачи", + "accept_permission": "Только администраторы проекта могут принимать задачи", + "decline_permission": "Только администраторы проекта могут отклонять задачи" + }, + "actions": { + "accept": "Принять", + "decline": "Отклонить", + "snooze": "Отложить", + "unsnooze": "Возобновить", + "copy": "Копировать ссылку на задачу", + "delete": "Удалить", + "open": "Открыть задачу", + "mark_as_duplicate": "Пометить как дубликат", + "move": "Перенести {value} в задачи проекта" + }, + "source": { + "in-app": "в приложении" + }, + "order_by": { + "created_at": "Дата создания", + "updated_at": "Дата обновления", + "id": "ID" + }, + "label": "Входящие", + "page_label": "{workspace} - Входящие", + "modal": { + "title": "Создать входящую задачу" + }, + "tabs": { + "open": "Открытые", + "closed": "Закрытые" + }, + "empty_state": { + "sidebar_open_tab": { + "title": "Нет открытых задач", + "description": "Здесь отображаются открытые задачи. Создайте новую задачу." + }, + "sidebar_closed_tab": { + "title": "Нет закрытых задач", + "description": "Все задачи, принятые или отклоненные, можно найти здесь." + }, + "sidebar_filter": { + "title": "Нет подходящих задач", + "description": "Не найдено задач по примененным фильтрам. Создайте новую задачу." + }, + "detail": { + "title": "Выберите задачу для просмотра деталей." + } + } + }, + + "workspace_creation": { + "heading": "Создайте рабочее пространство", + "subheading": "Чтобы начать использовать Plane, создайте или присоединитесь к рабочему пространству.", + "form": { + "name": { + "label": "Название рабочего пространства", + "placeholder": "Лучше использовать знакомое и узнаваемое название" + }, + "url": { + "label": "Установите URL рабочего пространства", + "placeholder": "Введите или вставьте URL", + "edit_slug": "Можно редактировать только часть URL (slug)" + }, + "organization_size": { + "label": "Сколько человек будут использовать это пространство?", + "placeholder": "Выберите диапазон" + } + }, + "errors": { + "creation_disabled": { + "title": "Только администратор экземпляра может создавать рабочие пространства", + "description": "Если вы знаете email администратора, нажмите кнопку ниже для связи.", + "request_button": "Запросить администратора" + }, + "validation": { + "name_alphanumeric": "Название может содержать только пробелы, дефисы, подчёркивания и буквенно-цифровые символы", + "name_length": "Максимальная длина названия - 80 символов", + "url_alphanumeric": "URL может содержать только дефисы и буквенно-цифровые символы", + "url_length": "Максимальная длина URL - 48 символов", + "url_already_taken": "Этот URL уже занят!" + } + }, + "request_email": { + "subject": "Запрос нового рабочего пространства", + "body": "Здравствуйте, администратор!\n\nПожалуйста, создайте новое рабочее пространство с URL [/workspace-name] для [цель создания].\n\nСпасибо,\n{firstName} {lastName}\n{email}" + }, + "button": { + "default": "Создать пространство", + "loading": "Создание пространства" + }, + "toast": { + "success": { + "title": "Успех", + "message": "Рабочее пространство успешно создано" + }, + "error": { + "title": "Ошибка", + "message": "Не удалось создать пространство. Попробуйте снова." + } + } + }, + + "workspace_dashboard": { + "empty_state": { + "general": { + "title": "Обзор проектов, активности и метрик", + "description": "Добро пожаловать в Plane! Создайте первый проект и отслеживайте задачи - эта страница станет вашим рабочим пространством. Администраторы также увидят элементы для управления командой.", + "primary_button": { + "text": "Создать первый проект", + "comic": { + "title": "Всё начинается с проекта в Plane", + "description": "Проектом может быть роадмап продукта, маркетинговая кампания или запуск нового автомобиля." + } + } + } + } + }, + + "workspace_analytics": { + "label": "Аналитика", + "page_label": "{workspace} - Аналитика", + "open_tasks": "Всего открытых задач", + "error": "Ошибка при получении данных", + "work_items_closed_in": "Задачи закрыты в", + "selected_projects": "Выбранные проекты", + "total_members": "Всего участников", + "total_cycles": "Всего циклов", + "total_modules": "Всего модулей", + "pending_work_items": { + "title": "Ожидающие задачи", + "empty_state": "Здесь отображается анализ ожидающих задач по сотрудникам." + }, + "work_items_closed_in_a_year": { + "title": "Задачи закрытые за год", + "empty_state": "Закрывайте задачи для просмотра анализа в виде графика." + }, + "most_work_items_created": { + "title": "Наибольшее количество созданных задач", + "empty_state": "Здесь отображаются сотрудники и количество созданных ими задач." + }, + "most_work_items_closed": { + "title": "Наибольшее количество закрытых задач", + "empty_state": "Здесь отображаются сотрудники и количество закрытых ими задач." + }, + "tabs": { + "scope_and_demand": "Объём и спрос", + "custom": "Пользовательская аналитика" + }, + "empty_state": { + "general": { + "title": "Отслеживайте прогресс, загрузку и распределение ресурсов", + "description": "Анализируйте объёмы работ, оценивайте сроки и контролируйте выполнение проектов. Отслеживайте производительность команды и соблюдайте сроки.", + "primary_button": { + "text": "Начать первый проект", + "comic": { + "title": "Аналитика лучше всего работает с Циклами + Модулями", + "description": "Сначала группируйте задачи в Циклы, а при возможности - объединяйте задачи в Модули. Найдите оба раздела в левом меню." + } + } + } + } + }, + + "workspace_projects": { + "label": "{count, plural, one {Проект} other {Проекты}}", + "create": { + "label": "Добавить проект" + }, + "network": { + "label": "Сеть", + "private": { + "title": "Приватный", + "description": "Доступ только по приглашению" + }, + "public": { + "title": "Публичный", + "description": "Доступен всем в рабочем пространстве кроме гостей" + } + }, + "error": { + "permission": "Недостаточно прав для выполнения действия", + "cycle_delete": "Ошибка удаления цикла", + "module_delete": "Ошибка удаления модуля", + "issue_delete": "Не удалось удалить задачу" + }, + "state": { + "backlog": "Бэклог", + "unstarted": "Не начато", + "started": "В процессе", + "completed": "Завершено", + "cancelled": "Отменено" + }, + "sort": { + "manual": "Вручную", + "name": "По имени", + "created_at": "По дате создания", + "members_length": "По количеству участников" + }, + "scope": { + "my_projects": "Мои проекты", + "archived_projects": "Архивные" + }, + "common": { + "months_count": "{months, plural, one{# месяц} other{# месяцев}}" + }, + "empty_state": { + "general": { + "title": "Нет активных проектов", + "description": "Проекты помогают организовать работу. Создавайте проекты для управления задачами, циклами и модулями. Фильтруйте архивные проекты при необходимости.", + "primary_button": { + "text": "Создать первый проект", + "comic": { + "title": "Всё начинается с проекта в Plane", + "description": "Проектом может быть дорожная карта продукта, маркетинговая кампания или запуск нового автомобиля." + } + } + }, + "no_projects": { + "title": "Нет проектов", + "description": "Для управления задачами необходимо создать проект или быть его участником.", + "primary_button": { + "text": "Создать первый проект", + "comic": { + "title": "Всё начинается с проекта в Plane", + "description": "Проектом может быть дорожная карта продукта, маркетинговая кампания или запуск нового автомобиля." + } + } + }, + "filter": { + "title": "Нет подходящих проектов", + "description": "Не найдено проектов по заданным критериям.\nСоздайте новый проект." + }, + "search": { + "description": "Не найдено проектов по заданным критериям.\nСоздайте новый проект" + } + } + }, + + "workspace_views": { + "add_view": "Добавить представление", + "empty_state": { + "all-issues": { + "title": "Нет задач в проекте", + "description": "Первый проект создан! Теперь разделите работу на отслеживаемые задачи.", + "primary_button": { + "text": "Создать задачу" + } + }, + "assigned": { + "title": "Нет назначенных задач", + "description": "Здесь отображаются задачи, назначенные вам.", + "primary_button": { + "text": "Создать задачу" + } + }, + "created": { + "title": "Нет созданных задач", + "description": "Все созданные вами задачи отображаются здесь.", + "primary_button": { + "text": "Создать задачу" + } + }, + "subscribed": { + "title": "Нет отслеживаемых задач", + "description": "Подпишитесь на интересующие задачи для отслеживания." + }, + "custom-view": { + "title": "Нет задач", + "description": "Здесь отображаются задачи, соответствующие фильтрам." + } + } + }, + + "workspace_settings": { + "label": "Настройки пространства", + "page_label": "{workspace} - Основные настройки", + "key_created": "Ключ создан", + "copy_key": "Скопируйте и сохраните секретный ключ в Plane Pages. После закрытия ключ будет недоступен. CSV-файл с ключом был скачан.", + "token_copied": "Токен скопирован в буфер", + "settings": { + "general": { + "title": "Основные", + "upload_logo": "Загрузить логотип", + "edit_logo": "Изменить логотип", + "name": "Название пространства", + "company_size": "Размер компании", + "url": "URL пространства", + "update_workspace": "Обновить пространство", + "delete_workspace": "Удалить пространство", + "delete_workspace_description": "Все данные будут безвозвратно удалены.", + "delete_btn": "Удалить пространство", + "delete_modal": { + "title": "Подтвердите удаление пространства", + "description": "У вас есть активная пробная подписка. Сначала отмените её.", + "dismiss": "Отмена", + "cancel": "Отменить подписку", + "success_title": "Пространство удалено", + "success_message": "Вы будете перенаправлены в профиль", + "error_title": "Ошибка", + "error_message": "Попробуйте снова" + }, + "errors": { + "name": { + "required": "Обязательное поле", + "max_length": "Максимум 80 символов" + }, + "company_size": { + "required": "Размер компании обязателен" + } + } + }, + "members": { + "title": "Участники", + "add_member": "Добавить участника", + "pending_invites": "Ожидающие приглашения", + "invitations_sent_successfully": "Приглашения отправлены", + "leave_confirmation": "Подтвердите выход из пространства. Доступ будет утрачен. Это действие нельзя отменить.", + "details": { + "full_name": "Полное имя", + "display_name": "Отображаемое имя", + "email_address": "Email", + "account_type": "Тип аккаунта", + "authentication": "Аутентификация", + "joining_date": "Дата присоединения" + }, + "modal": { + "title": "Пригласить участников", + "description": "Пригласите коллег в рабочее пространство.", + "button": "Отправить приглашения", + "button_loading": "Отправка...", + "placeholder": "name@company.com", + "errors": { + "required": "Введите email адрес, чтобы пригласить участников", + "invalid": "Неверный email" + } + } + }, + "billing_and_plans": { + "title": "Оплата и тарифы", + "current_plan": "Текущий тариф", + "free_plan": "Используется бесплатный тариф", + "view_plans": "Посмотреть тарифы" + }, + "exports": { + "title": "Экспорт", + "exporting": "Экспортируется", + "previous_exports": "Предыдущие экспорты", + "export_separate_files": "Экспорт в отдельные файлы", + "modal": { + "title": "Экспорт в", + "toasts": { + "success": { + "title": "Успешный экспорт", + "message": "Экспортированные {entity} доступны для скачивания." + }, + "error": { + "title": "Ошибка экспорта", + "message": "Эскпорт не удался. Попробуйте снова" + } + } + } + }, + "webhooks": { + "title": "Вебхуки", + "add_webhook": "Добавить вебхук", + "modal": { + "title": "Создать вебхук", + "details": "Детали вебхука", + "payload": "URL для уведомлений", + "question": "Какие события будут активировать вебхук?", + "error": "Требуется URL" + }, + "secret_key": { + "title": "Секретный ключ", + "message": "Сгенерируйте токен для подписи уведомлений" + }, + "options": { + "all": "Все события", + "individual": "Выбрать события" + }, + "toasts": { + "created": { + "title": "Вебхук создан", + "message": "Вебхук успешно создан" + }, + "not_created": { + "title": "Ошибка создания", + "message": "Не удалось создать вебхук" + }, + "updated": { + "title": "Обновлено", + "message": "Вебхук успешно обновлён" + }, + "not_updated": { + "title": "Ошибка обновления", + "message": "Не удалось обновить вебхук" + }, + "removed": { + "title": "Вебхук удалён", + "message": "Вебхук успешно удалён" + }, + "not_removed": { + "title": "Ошибка удаления вебхука", + "message": "Не удалось удалить вебхук" + }, + "secret_key_copied": { + "message": "Секретный ключ скопирован" + }, + "secret_key_not_copied": { + "message": "Ошибка копирования ключа" + } + } + }, + "api_tokens": { + "title": "API-токены", + "add_token": "Добавить токен", + "create_token": "Создать токен", + "never_expires": "Бессрочный", + "generate_token": "Сгенерировать токен", + "generating": "Генерация", + "delete": { + "title": "Удалить токен", + "description": "Приложения, использующие этот токен, потеряют доступ. Действие необратимо.", + "success": { + "title": "Успех!", + "message": "Токен удалён" + }, + "error": { + "title": "Ошибка!", + "message": "Не удалось удалить токен" + } + } + } + }, + "empty_state": { + "api_tokens": { + "title": "Нет API-токенов", + "description": "Используйте API Plane для интеграции с внешними системами. Создайте тоекен чтобы начать." + }, + "webhooks": { + "title": "Нет вебхуков", + "description": "Создавайте вебхуки для автоматизации и получения уведомлений." + }, + "exports": { + "title": "Нет экспортов", + "description": "Здесь будут сохранённые копии ваших экспортов." + }, + "imports": { + "title": "Нет импортов", + "description": "Здесь отображаются все предыдущие импорты." + } + } + }, + + "profile": { + "label": "Профиль", + "page_label": "Ваша работа", + "work": "Работа", + "details": { + "joined_on": "Присоединился", + "time_zone": "Часовой пояс" + }, + "stats": { + "workload": "Нагрузка", + "overview": "Обзор", + "created": "Созданные задачи", + "assigned": "Назначенные задачи", + "subscribed": "Отслеживаемые задачи", + "state_distribution": { + "title": "Задачи по статусам", + "empty": "Создавайте задачи для анализа по статусам" + }, + "priority_distribution": { + "title": "Задачи по приоритетам", + "empty": "Создавайте задачи для анализа по приоритетам" + }, + "recent_activity": { + "title": "Недавняя активность", + "empty": "Данные не найдены", + "button": "Скачать активность", + "button_loading": "Скачивание" + } + }, + "actions": { + "profile": "Профиль", + "security": "Безопасность", + "activity": "Активность", + "appearance": "Внешний вид", + "notifications": "Уведомления" + }, + "tabs": { + "summary": "Сводка", + "assigned": "Назначенные", + "created": "Созданные", + "subscribed": "Отслеживаемые", + "activity": "Активность" + }, + "empty_state": { + "activity": { + "title": "Нет активности", + "description": "Создайте первую задачу для начала работы! Добавьте детали и свойства задачи. Исследуйте больше в Plane, чтобы увидеть вашу активность." + }, + "assigned": { + "title": "Нет назначенных задач", + "description": "Здесь отображаются задачи, назначенные вам." + }, + "created": { + "title": "Нет созданных задач", + "description": "Все созданные вами задачи отображаются здесь." + }, + "subscribed": { + "title": "Нет отслеживаемых задач", + "description": "Подпишитесь на интересующие задачи." + } + } + }, + + "project_settings": { + "general": { + "enter_project_id": "Введите ID проекта", + "please_select_a_timezone": "Выберите часовой пояс", + "archive_project": { + "title": "Архивировать проект", + "description": "Проект исчезнет из бокового меню, но останется доступным на странице проектов. Можно восстановить или удалить позже.", + "button": "Архивировать" + }, + "delete_project": { + "title": "Удалить проект", + "description": "Все данные проекта будут безвозвратно удалены без возможности восстановления.", + "button": "Удалить проект" + }, + "toast": { + "success": "Проект обновлён", + "error": "Ошибка обновления. Попробуйте снова." + } + }, + "members": { + "label": "Участники", + "project_lead": "Руководитель проекта", + "default_assignee": "Ответственный по умолчанию", + "guest_super_permissions": { + "title": "Дать гостям доступ на просмотр всех задач:", + "sub_heading": "Гости смогут просматривать все задачи проекта" + }, + "invite_members": { + "title": "Пригласить участников", + "sub_heading": "Пригласите коллег для работы над проектом.", + "select_co_worker": "Выберите сотрудника" + } + }, + "states": { + "describe_this_state_for_your_members": "Опишите этот статус для участников", + "empty_state": { + "title": "Нет статусов для группы {groupKey}", + "description": "Создайте новый статус" + } + }, + "labels": { + "label_title": "Название метки", + "label_title_is_required": "Название обязательно", + "label_max_char": "Максимальная длина названия - 255 символов", + "toast": { + "error": "Ошибка обновления метки" + } + }, + "estimates": { + "title": "Включить оценку для проекта", + "description": "Помогают оценивать сложность и загрузку команды." + }, + "automations": { + "label": "Автоматизация", + "auto-archive": { + "title": "Автоархивация закрытых задач", + "description": "Plane будет автоматически архивировать завершённые или отменённые задачи.", + "duration": "Архивировать задачи закрытые более" + }, + "auto-close": { + "title": "Автозакрытие задач", + "description": "Plane будет автоматически закрывать неактивные задачи.", + "duration": "Закрывать задачи неактивные более", + "auto_close_status": "Статус автозакрытия" + } + }, + + "empty_state": { + "labels": { + "title": "Нет меток", + "description": "Создавайте метки для организации и фильтрации задач." + }, + "estimates": { + "title": "Нет систем оценки", + "description": "Создайте систему оценок для планирования работ.", + "primary_button": "Добавить систему" + } + } + }, + + "project_cycles": { + "add_cycle": "Добавить цикл", + "more_details": "Подробнее", + "cycle": "Цикл", + "update_cycle": "Обновить цикл", + "create_cycle": "Создать цикл", + "no_matching_cycles": "Нет подходящих циклов", + "remove_filters_to_see_all_cycles": "Снимите фильтры для просмотра всех циклов", + "remove_search_criteria_to_see_all_cycles": "Очистите поиск для просмотра всех циклов", + "only_completed_cycles_can_be_archived": "Только завершённые циклы можно архивировать", + "active_cycle": { + "label": "Активный цикл", + "progress": "Прогресс", + "chart": "Диаграмма сгорания", + "priority_issue": "Приоритетные задачи", + "assignees": "Ответственные", + "issue_burndown": "Выгорание задач", + "ideal": "Идеальный", + "current": "Текущий", + "labels": "Метки" + }, + "upcoming_cycle": { + "label": "Предстоящий цикл" + }, + "completed_cycle": { + "label": "Завершённый цикл" + }, + "status": { + "days_left": "Дней осталось", + "completed": "Завершено", + "yet_to_start": "Ещё не начато", + "in_progress": "В процессе", + "draft": "Черновик" + }, + "action": { + "restore": { + "title": "Восстановить цикл", + "success": { + "title": "Цикл восстановлен", + "description": "Цикл успешно восстановлен" + }, + "failed": { + "title": "Ошибка восстановления", + "description": "Не удалось восстановить цикл" + } + }, + "favorite": { + "loading": "Добавление в избранное", + "success": { + "description": "Цикл добавлен в избранное", + "title": "Успех!" + }, + "failed": { + "description": "Ошибка добавления в избранное", + "title": "Ошибка!" + } + }, + "unfavorite": { + "loading": "Удаление из избранного", + "success": { + "description": "Цикл удалён из избранного", + "title": "Успех!" + }, + "failed": { + "description": "Ошибка удаления цикла из избранного. Попробуйте снова.", + "title": "Ошибка!" + } + }, + "update": { + "loading": "Обновление цикла", + "success": { + "description": "Цикл успешно обновлён", + "title": "Успех!" + }, + "failed": { + "description": "Ошибка обновления цикла. Попробуйте снова.", + "title": "Ошибка!" + }, + "error": { + "already_exists": "Цикл на указанные даты уже существует. Для создания черновика удалите даты." + } + } + }, + "empty_state": { + "general": { + "title": "Организуйте работу в циклах", + "description": "Разбивайте работу на временные интервалы, устанавливайте сроки и отслеживайте прогресс команды.", + "primary_button": { + "text": "Создать первый цикл", + "comic": { + "title": "Циклы - повторяющиеся временные интервалы", + "description": "Спринт, итерация или любой другой термин для еженедельного/двухнедельного планирования." + } + } + }, + "no_issues": { + "title": "Нет задач в цикле", + "description": "Добавьте существующие или создайте новые задачи для этого цикла", + "primary_button": { + "text": "Создать задачу" + }, + "secondary_button": { + "text": "Добавить существующую задачу" + } + }, + "completed_no_issues": { + "title": "Нет задач в цикле", + "description": "Нет задач. Задачи были перенесены или скрыты. Для просмотра измените настройки отображения." + }, + "active": { + "title": "Нет активных циклов", + "description": "Активный цикл включает текущую дату. Здесь отображается прогресс активного цикла." + }, + "archived": { + "title": "Нет архивных циклов", + "description": "Архивируйте завершённые циклы для упорядочивания проекта." + } + } + }, + + "project_issues": { + "empty_state": { + "no_issues": { + "title": "Создайте задачу и назначьте исполнителя", + "description": "Задачи помогают организовать работу команды. Создавайте, назначайте и завершайте задачи для достижения целей проекта.", + "primary_button": { + "text": "Создать первую задачу", + "comic": { + "title": "Задачи - строительные блоки Plane", + "description": "Примеры задач: редизайн интерфейса, ребрендинг компании или запуск новой системы." + } + } + }, + "no_archived_issues": { + "title": "Нет архивных задач", + "description": "Архивируйте завершённые или отменённые задачи вручную или автоматически.", + "primary_button": { + "text": "Настроить автоматизацию" + } + }, + "issues_empty_filter": { + "title": "Нет задач подходящих фильтрам", + "secondary_button": { + "text": "Сбросить фильтры" + } + } + } + }, + + "project_module": { + "add_module": "Добавить модуль", + "update_module": "Обновить модуль", + "create_module": "Создать модуль", + "archive_module": "Архивировать модуль", + "restore_module": "Восстановить модуль", + "delete_module": "Удалить модуль", + "empty_state": { + "general": { + "title": "Связывайте этапы проекта с модулями для удобного отслеживания задач.", + "description": "Модуль объединяет задачи по логическому или иерархическому признаку. Используйте модули для контроля этапов проекта. Каждый модуль имеет собственные сроки выполнения и аналитику для отслеживания прогресса.", + "primary_button": { + "text": "Создать первый модуль", + "comic": { + "title": "Модули группируют задачи по иерархии", + "description": "Примеры группировки: модуль корзины, модуль шасси или модуль склада." + } + } + }, + "no_issues": { + "title": "Нет задач в модуле", + "description": "Создавайте или добавляйте задачи, которые хотите выполнить в рамках этого модуля", + "primary_button": { + "text": "Создать новые задачи" + }, + "secondary_button": { + "text": "Добавить существующую задачу" + } + }, + "archived": { + "title": "Нет архивных модулей", + "description": "Архивируйте завершённые или отменённые модули для упорядочивания проекта. Они появятся здесь после архивации." + }, + "sidebar": { + "in_active": "Этот модуль ещё не активен.", + "invalid_date": "Некорректная дата. Укажите правильную дату." + } + }, + "quick_actions": { + "archive_module": "Архивировать модуль", + "archive_module_description": "Только завершённые или отменённые\nмодули можно архивировать.", + "delete_module": "Удалить модуль" + }, + "toast": { + "copy": { + "success": "Ссылка на модуль скопирована в буфер обмена" + }, + "delete": { + "success": "Модуль успешно удалён", + "error": "Ошибка удаления модуля" + } + } + }, + + "project_views": { + "empty_state": { + "general": { + "title": "Сохраняйте фильтры в виде представлений. Создавайте неограниченное количество вариантов", + "description": "Представления - это сохранённые наборы фильтров для быстрого доступа. Все участники проекта видят созданные представления и могут выбирать подходящие.", + "primary_button": { + "text": "Создать первое представление", + "comic": { + "title": "Представления работают на основе свойств задач", + "description": "Создавайте представления с любым количеством свойств в качестве фильтров." + } + } + }, + "filter": { + "title": "Подходящих представлений не найдено", + "description": "Нет представлений, соответствующих критериям поиска. \n Создайте новое представление." + } + } + }, + + "project_page": { + "empty_state": { + "general": { + "title": "Создавайте заметки, документы или базу знаний. Используйте Galileo, ИИ-помощник Plane.", + "description": "Страницы - пространство для организации мыслей в Plane. Делайте заметки, форматируйте текст, встраивайте задачи, используйте компоненты. Для быстрого создания документов используйте Galileo через горячие клавиши или кнопку.", + "primary_button": { + "text": "Создать первую страницу" + } + }, + "private": { + "title": "Нет приватных страниц", + "description": "Храните личные заметки здесь. Когда будете готовы поделиться, команда будет в одном клике.", + "primary_button": { + "text": "Создать первую страницу" + } + }, + "public": { + "title": "Нет публичных страниц", + "description": "Здесь отображаются страницы, доступные всем участникам проекта.", + "primary_button": { + "text": "Создать первую страницу" + } + }, + "archived": { + "title": "Нет архивных страниц", + "description": "Архивируйте неактуальные страницы. При необходимости вы найдете их здесь." + } + } + }, + + "command_k": { + "empty_state": { + "search": { + "title": "Ничего не найдено" + } + } + }, + + "issue_relation": { + "empty_state": { + "search": { + "title": "Не найдено подходящих задач" + }, + "no_issues": { + "title": "Задачи не найдены" + } + } + }, + + "issue_comment": { + "empty_state": { + "general": { + "title": "Комментариев пока нет", + "description": "Используйте комментарии для обсуждения и отслеживания задач" + } + } + }, + + "notification": { + "label": "Входящие", + "page_label": "{workspace} - Входящие", + "options": { + "mark_all_as_read": "Пометить все как прочитанные", + "mark_read": "Пометить как прочитанное", + "mark_unread": "Пометить как непрочитанное", + "refresh": "Обновить", + "filters": "Фильтры входящих", + "show_unread": "Показать непрочитанные", + "show_snoozed": "Показать отложенные", + "show_archived": "Показать архивные", + "mark_archive": "Архивировать", + "mark_unarchive": "Разархивировать", + "mark_snooze": "Отложить", + "mark_unsnooze": "Возобновить" + }, + "toasts": { + "read": "Уведомление помечено как прочитанное", + "unread": "Уведомление помечено как непрочитанное", + "archived": "Уведомление архивировано", + "unarchived": "Уведомление разархивировано", + "snoozed": "Уведомление отложено", + "unsnoozed": "Уведомление возобновлено" + }, + "empty_state": { + "detail": { + "title": "Выберите для просмотра деталей" + }, + "all": { + "title": "Нет назначенных задач", + "description": "Обновления по назначенным вам задачам будут \n отображаться здесь" + }, + "mentions": { + "title": "Нет упомянутых задач", + "description": "Обновления по задачам, где вас упомянули, \n будут отображаться здесь" + } + }, + "tabs": { + "all": "Все", + "mentions": "Упоминания" + }, + "filter": { + "assigned": "Назначенные мне", + "created": "Созданные мной", + "subscribed": "Отслеживаемые мной" + }, + "snooze": { + "1_day": "1 день", + "3_days": "3 дня", + "5_days": "5 дней", + "1_week": "1 неделя", + "2_weeks": "2 недели", + "custom": "Другое" + } + }, + + "active_cycle": { + "empty_state": { + "progress": { + "title": "Добавьте задачи в цикл, чтобы отслеживать прогресс" + }, + "chart": { + "title": "Добавьте задачи в цикл для построения графика выполнения" + }, + "priority_issue": { + "title": "Просматривайте задачи с высоким приоритетом в цикле" + }, + "assignee": { + "title": "Назначьте ответственных, чтобы видеть распределение задач" + }, + "label": { + "title": "Добавьте метки, чтобы видеть распределение задач по категориям" + } + } + }, + + "disabled_project": { + "empty_state": { + "inbox": { + "title": "Функция 'Входящие' отключена для проекта", + "description": "Входящие помогают управлять запросами и добавлять их в рабочий процесс. Включите функцию в настройках проекта.", + "primary_button": { + "text": "Управление функциями" + } + }, + "cycle": { + "title": "Циклы отключены для этого проекта", + "description": "Разбивайте работу на временные интервалы, устанавливайте сроки и отслеживайте прогресс команды. Включите функцию циклов в настройках проекта.", + "primary_button": { + "text": "Управление функциями" + } + }, + "module": { + "title": "Модули отключены для проекта", + "description": "Модули - основные компоненты вашего проекта. Включите их в настройках проекта.", + "primary_button": { + "text": "Управление функциями" + } + }, + "page": { + "title": "Страницы отключены для проекта", + "description": "Страницы - основные компоненты вашего проекта. Включите их в настройках проекта.", + "primary_button": { + "text": "Управление функциями" + } + }, + "view": { + "title": "Представления отключены для проекта", + "description": "Представления - основные компоненты вашего проекта. Включите их в настройках проекта.", + "primary_button": { + "text": "Управление функциями" + } + } + } + }, + "workspace_draft_issues": { + "draft_an_issue": "Создать черновик задачи", + "empty_state": { + "title": "Черновики задач , а вскоре и комментарии, будут отображаться здесь.", + "description": "Чтобы попробовать, начните добавлять задачу и прервитесь на полпути или создайте первый черновик ниже. 😉", + "primary_button": { + "text": "Создать первый черновик" + } + }, + "delete_modal": { + "title": "Удалить черновик", + "description": "Вы уверены, что хотите удалить этот черновик? Это действие нельзя отменить." + }, + "toasts": { + "created": { + "success": "Черновик создан", + "error": "Не удалось создать задачу. Попробуйте снова." + }, + "deleted": { + "success": "Черновик удалён" + } + } + }, + + "stickies": { + "title": "Ваши стикеры", + "placeholder": "нажмите, чтобы написать", + "all": "Все стикеры", + "no-data": "Запишите идею, зафиксируйте озарение или сохраните мысль. Создайте стикер, чтобы начать.", + "add": "Добавить стикер", + "search_placeholder": "Поиск по названию", + "delete": "Удалить стикер", + "delete_confirmation": "Вы уверены, что хотите удалить этот стикер?", + "empty_state": { + "simple": "Запишите идею, зафиксируйте озарение или сохраните мысль. Создайте стикер, чтобы начать.", + "general": { + "title": "Стикеры - это быстрые заметки и задачи, которые вы создаёте на лету.", + "description": "Легко фиксируйте свои мысли и идеи с помощью стикеров, которые доступны в любое время и в любом месте.", + "primary_button": { + "text": "Добавить стикер" + } + }, + "search": { + "title": "Ничего не найдено.", + "description": "Попробуйте другой запрос или сообщите нам,\nесли уверены в правильности поиска.", + "primary_button": { + "text": "Добавить стикер" + } + } + }, + "toasts": { + "errors": { + "wrong_name": "Название стикера не может быть длиннее 100 символов.", + "already_exists": "Стикер без описания уже существует" + }, + "created": { + "title": "Стикер создан", + "message": "Стикер успешно создан" + }, + "not_created": { + "title": "Ошибка создания стикера", + "message": "Не удалось создать стикер" + }, + "updated": { + "title": "Стикер обновлён", + "message": "Стикер успешно обновлён" + }, + "not_updated": { + "title": "Ошибка обновления", + "message": "Не удалось обновить стикер" + }, + "removed": { + "title": "Стикер удалён", + "message": "Стикер успешно удалён" + }, + "not_removed": { + "title": "Ошибка удаления", + "message": "Не удалось удалить стикер" + } + } + }, + + "role_details": { + "guest": { + "title": "Гость", + "description": "Внешние участники организаций могут быть приглашены как гости." + }, + "member": { + "title": "Участник", + "description": "Чтение, создание, редактирование и удаление элементов внутри проектов, циклов и модулей" + }, + "admin": { + "title": "Администратор", + "description": "Полные права доступа в рамках рабочего пространства." + } + }, + + "user_roles": { + "product_or_project_manager": "Продукт / Проект менеджер", + "development_or_engineering": "Разработка / Инжиниринг", + "founder_or_executive": "Основатель / Руководитель", + "freelancer_or_consultant": "Фрилансер / Консультант", + "marketing_or_growth": "Маркетинг / Рост", + "sales_or_business_development": "Продажи / Развитие бизнеса", + "support_or_operations": "Поддержка / Операции", + "student_or_professor": "Студент / Преподаватель", + "human_resources": "HR / Кадры", + "other": "Другое" + }, + + "importer": { + "github": { + "title": "GitHub", + "description": "Импорт задач из репозиториев GitHub с синхронизацией." + }, + "jira": { + "title": "Jira", + "description": "Импорт задач и эпиков из проектов Jira." + } + }, + + "exporter": { + "csv": { + "title": "CSV", + "description": "Экспорт задач в CSV-файл.", + "short_description": "Экспорт в csv" + }, + "excel": { + "title": "Excel", + "description": "Экспорт задач в файл Excel.", + "short_description": "Экспорт в excel" + }, + "xlsx": { + "title": "Excel", + "description": "Экспорт задач в файл Excel.", + "short_description": "Экспорт в excel" + }, + "json": { + "title": "JSON", + "description": "Экспорт задач в JSON-файл.", + "short_description": "Экспорт в json" + } + }, + "default_global_view": { + "all_issues": "Все задачи", + "assigned": "Назначенные", + "created": "Созданные", + "subscribed": "Подписанные" + }, + + "themes": { + "theme_options": { + "system_preference": { + "label": "Системные настройки" + }, + "light": { + "label": "Светлая" + }, + "dark": { + "label": "Тёмная" + }, + "light_contrast": { + "label": "Светлая высококонтрастностная" + }, + "dark_contrast": { + "label": "Тёмная высокая контрастность" + }, + "custom": { + "label": "Пользовательская тема" + } + } + }, + "project_modules": { + "status": { + "backlog": "Бэклог", + "planned": "Запланировано", + "in_progress": "В процессе", + "paused": "Приостановлено", + "completed": "Завершено", + "cancelled": "Отменено" + }, + "layout": { + "list": "Список", + "board": "Галерея", + "timeline": "Хронология" + }, + "order_by": { + "name": "Название", + "progress": "Прогресс", + "issues": "Количество задач", + "due_date": "Срок выполнения", + "created_at": "Дата создания", + "manual": "Вручную" + } + }, + + "cycle": { + "label": "{count, plural, one {Цикл} other {Циклы}}", + "no_cycle": "Нет цикла" + }, + + "module": { + "label": "{count, plural, one {Модуль} other {Модули}}", + "no_module": "Нет модуля" + } +} diff --git a/packages/i18n/src/store/index.ts b/packages/i18n/src/store/index.ts index 78e1311adb..284fb2fde0 100644 --- a/packages/i18n/src/store/index.ts +++ b/packages/i18n/src/store/index.ts @@ -147,6 +147,8 @@ export class TranslationStore { return import("../locales/ja/translations.json"); case "zh-CN": return import("../locales/zh-CN/translations.json"); + case "ru": + return import("../locales/ru/translations.json"); default: throw new Error(`Unsupported language: ${language}`); } diff --git a/packages/i18n/src/types/language.ts b/packages/i18n/src/types/language.ts index 86e141ff5c..552d46fa5f 100644 --- a/packages/i18n/src/types/language.ts +++ b/packages/i18n/src/types/language.ts @@ -1,4 +1,4 @@ -export type TLanguage = "en" | "fr" | "es" | "ja" | "zh-CN"; +export type TLanguage = "en" | "fr" | "es" | "ja" | "zh-CN" | "ru"; export interface ILanguageOption { label: string;