mirror of
https://github.com/lobehub/lobehub.git
synced 2026-09-20 04:56:13 +08:00
ebe586289d
* ✨ feat(page-editor): align document comments beside their source text Adds a gutter that positions comment threads next to the highlighted text they annotate instead of stacking them in a flat list below the document, with per-line quick-comment affordance and anchored/ unanchored thread partitioning in the comment list API. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> * 🌐 i18n: sync generated locale translations Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> * 🐛 fix(page-editor): hand failed anchored drafts back and bound the gutter's eager load - A failed anchored submission stashed while a newer draft owned the shared slot was written under `anchored-failed:<clientId>` and never read again, so the toast was the last the reader saw of their text. The provider now moves the stash back into the slot whenever that slot frees (the newer draft sent or cancelled, or the next open) and republishes its anchor, remounting the gutter composer beside the original selection with the failed words and attachments, ready to retry. The inline composer, always mounted and already holding the slot's state, adopts the stash itself on mount instead. - Anchored threads were drained to the last page whenever the document mounted, panel open or not, and every result mounted twice (gutter and list). Fetch ahead only while the gutter shows them, up to ANCHORED_EAGER_PAGE_LIMIT pages; a picked highlight past that fetches its thread on demand through the existing deep-link pin, and the list below the body now pages both caches so the rest stays reachable. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> * 🐛 fix(page-editor): forward paging keys from gutter controls and clear the marker over root whitespace - Keyboard focus usually enters the panel on a card's button or link, and the key forwarder skipped every key for any interactive target, so PageUp/PageDown from there did nothing: the control has no use for them and the browser default cannot scroll the sibling document pane. Decide ownership per key — a field or editable region keeps everything typed into it, a button or link keeps only Space (its activation). - Over the body's own whitespace between or after blocks, `blockAt` is null and the move handler returned early, leaving the marker for the last crossed line actionable for text no longer under the pointer; the host-level handler never sees those moves either, since the body contains the target. Clear it there unless the pointer is on the bridge to (or over) the current marker, the one path meant to survive. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> * 🐛 fix(page-editor): report a missing deep-linked reply once when the gutter duplicates the thread An anchored thread shown in both the gutter and the flat list received the same focus in both copies, so a deep link to a missing or failed reply ran both copies' missing-focus effect: two toasts, and the focus token advanced twice. The flat copy keeps the focus for its highlight but no longer answers for a miss when the gutter shows the same thread. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> * 🐛 fix(page-editor): partition thread pages client-side when the server ignores the scope The `anchored` filter on listThreads is new in this change. A production backend predating it strips the unknown key and answers the anchored and document scopes with the same mixed pages — which is exactly what the documented debug proxy (latest SPA against app.lobehub.com) produces — so the two caches overlapped and the list below the body rendered every such thread twice, with duplicate React keys. Filter each page to its scope's own subset on the client; the cursor still walks the server's order, so paging stays consistent. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> --------- Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
333 lines
28 KiB
JSON
333 lines
28 KiB
JSON
{
|
||
"addFolder": "Создать папку",
|
||
"addLibrary": "Добавить",
|
||
"addPage": "Создать страницу",
|
||
"detail.basic.createdAt": "Время создания",
|
||
"detail.basic.filename": "Имя файла",
|
||
"detail.basic.size": "Размер файла",
|
||
"detail.basic.title": "Основная информация",
|
||
"detail.basic.type": "Формат",
|
||
"detail.basic.updatedAt": "Время обновления",
|
||
"detail.data.chunkCount": "Фрагменты",
|
||
"detail.data.embedding.default": "Не встраивается",
|
||
"detail.data.embedding.error": "Ошибка",
|
||
"detail.data.embedding.pending": "Ожидание запуска",
|
||
"detail.data.embedding.processing": "В процессе",
|
||
"detail.data.embedding.success": "Завершено",
|
||
"detail.data.embeddingStatus": "встраивание",
|
||
"detail.data.noChunk": "Нет фрагмента",
|
||
"empty": "Файлы или папки ещё не загружены.",
|
||
"header.actions.builtInBlockList.filtered": "Отфильтровано {{ignored}} файлов (из {{total}} всего)",
|
||
"header.actions.connect": "Подключиться...",
|
||
"header.actions.createFolderError": "Не удалось создать папку",
|
||
"header.actions.creatingFolder": "Создание папки...",
|
||
"header.actions.deleteLibrary": "Удалить библиотеку",
|
||
"header.actions.gitignore.apply": "Применить правила",
|
||
"header.actions.gitignore.cancel": "Игнорировать правила",
|
||
"header.actions.gitignore.content": "Обнаружен файл .gitignore (всего {{count}} файлов). Применить правила игнорирования?",
|
||
"header.actions.gitignore.filtered": "Отфильтровано {{ignored}} файлов (всего {{total}} файлов)",
|
||
"header.actions.gitignore.title": "Обнаружен .gitignore",
|
||
"header.actions.newFolder": "Новая папка",
|
||
"header.actions.newPage": "Новая страница",
|
||
"header.actions.notion.error": "Не удалось импортировать файлы из Notion",
|
||
"header.actions.notion.foundFiles": "найдено {{count}} файлов",
|
||
"header.actions.notion.importing": "Импорт содержимого из Notion...",
|
||
"header.actions.notion.noMarkdownFiles": "В ZIP-архиве не найдено файлов в формате Markdown",
|
||
"header.actions.notion.partial": "Успешно импортировано {{success}} файлов, {{failed}} с ошибками",
|
||
"header.actions.notion.success": "Успешно импортировано {{count}} файлов",
|
||
"header.actions.notionGuide.cancel": "Не сейчас",
|
||
"header.actions.notionGuide.desc": "Сначала экспортируйте содержимое из Notion в формате Markdown (ZIP). Затем нажмите «Продолжить», чтобы выбрать ZIP-файл и импортировать все страницы.",
|
||
"header.actions.notionGuide.ok": "Выбрать ZIP из Notion",
|
||
"header.actions.notionGuide.title": "Импорт из Notion",
|
||
"header.actions.uploadFile": "Загрузить файл",
|
||
"header.actions.uploadFolder": "Загрузить папку",
|
||
"header.actions.uploadFolder.creatingFolders": "Создание структуры папок...",
|
||
"header.newPageButton": "Новая страница",
|
||
"header.uploadButton": "Загрузить",
|
||
"home.libraries": "Библиотеки",
|
||
"home.recentFiles": "Недавние файлы",
|
||
"home.recentPages": "Недавние страницы",
|
||
"home.uploadEntries.library.title": "Создать новую библиотеку",
|
||
"home.viewAll": "Посмотреть все",
|
||
"library.backToResources": "Назад к ресурсам",
|
||
"library.hierarchy.empty.desc": "Добавьте файлы или создайте папку, чтобы начать",
|
||
"library.hierarchy.empty.title": "Здесь пока ничего нет",
|
||
"library.hierarchy.search.noResults": "Нет совпадающих файлов или страниц",
|
||
"library.hierarchy.search.placeholder": "Поиск",
|
||
"library.import.action": "Импортировать в рабочую область…",
|
||
"library.import.failed": "Не удалось импортировать базу знаний.",
|
||
"library.import.success": "База знаний импортирована в {{name}}.",
|
||
"library.import.tooltip": "Скопируйте эту базу знаний в рабочую область. Файлы будут ссылаться на оригинал, который останется в вашем личном пространстве.",
|
||
"library.list.confirmRemoveLibrary": "Вы собираетесь удалить эту библиотеку. Файлы из неё не будут удалены, а перемещены в раздел «Все файлы». Это действие необратимо, пожалуйста, будьте осторожны.",
|
||
"library.list.copyDescription": "Клонируйте эту библиотеку и все её содержимое в другую рабочую область.",
|
||
"library.list.copyFailed": "Не удалось скопировать библиотеку",
|
||
"library.list.copySuccess": "Библиотека скопирована",
|
||
"library.list.copyTitle": "Копировать библиотеку",
|
||
"library.list.copyTo": "Копировать в…",
|
||
"library.list.empty": "Нажмите <1>+</1>, чтобы создать новую библиотеку",
|
||
"library.list.transferDescription": "Переместите эту библиотеку и всё её содержимое в другую рабочую область.",
|
||
"library.list.transferFailed": "Не удалось переместить библиотеку",
|
||
"library.list.transferSuccess": "Библиотека перемещена",
|
||
"library.list.transferTitle": "Переместить библиотеку",
|
||
"library.list.transferTo": "Переместить в…",
|
||
"library.new": "Новая библиотека",
|
||
"library.privateEmpty": "Создать частную библиотеку",
|
||
"library.publish": "Опубликовать в рабочем пространстве",
|
||
"library.publishConfirm.title": "Опубликовать базу знаний в рабочем пространстве?",
|
||
"library.title": "Библиотека",
|
||
"library.workspaceEmpty": "Создать библиотеку рабочего пространства",
|
||
"listView.uploadedBy": "Загружено {{name}}",
|
||
"loadMore": "Загрузить ещё",
|
||
"menu.allFiles": "Все файлы",
|
||
"menu.allPages": "Все страницы",
|
||
"networkError": "Не удалось получить библиотеки. Проверьте подключение к сети и попробуйте снова.",
|
||
"notFound.desc": "Этот файл не существует или больше недоступен — возможно, он был удален или сделан приватным его владельцем.",
|
||
"notFound.title": "Файл недоступен",
|
||
"notSupportGuide.desc": "Текущий режим развертывания не поддерживает управление файлами. Переключитесь на <1>режим с серверной базой данных</1> или используйте <3>LobeHub Cloud</3>.",
|
||
"notSupportGuide.features.allKind.desc": "Поддержка популярных типов файлов, включая форматы Word, PPT, Excel, PDF, TXT, а также кода — JS и Python.",
|
||
"notSupportGuide.features.allKind.title": "Поддержка различных форматов",
|
||
"notSupportGuide.features.embeddings.desc": "Использует высокопроизводительные векторные модели для преобразования текста, обеспечивая семантический поиск по содержимому.",
|
||
"notSupportGuide.features.embeddings.title": "Семантический поиск",
|
||
"notSupportGuide.features.libraries.desc": "Создавайте библиотеки и добавляйте в них файлы, чтобы организовать своё хранилище.",
|
||
"notSupportGuide.features.libraries.title": "Библиотека",
|
||
"notSupportGuide.title": "Текущий режим развертывания не поддерживает управление файлами",
|
||
"pageEditor.addIcon": "Добавить иконку",
|
||
"pageEditor.autoSaveMessage": "Страница сохраняется автоматически. Сохранять вручную не требуется.",
|
||
"pageEditor.chooseIcon": "Выбрать иконку",
|
||
"pageEditor.comments.anchor.add": "Комментарий",
|
||
"pageEditor.comments.anchor.addToLine": "Комментировать эту строку",
|
||
"pageEditor.comments.anchor.label": "Цитируемый текст:",
|
||
"pageEditor.comments.anchor.missing": "Оригинал удален",
|
||
"pageEditor.comments.anchor.remove": "Удалить цитату",
|
||
"pageEditor.comments.attachments.add": "Добавить",
|
||
"pageEditor.comments.attachments.chooseLibrary": "Выбрать из библиотеки",
|
||
"pageEditor.comments.author.deactivated": "Деактивированный пользователь",
|
||
"pageEditor.comments.author.former": "Бывший участник",
|
||
"pageEditor.comments.cancel": "Отмена",
|
||
"pageEditor.comments.createFailed": "Не удалось опубликовать комментарий. Ваш черновик все еще здесь.",
|
||
"pageEditor.comments.deepLinkLoadFailed": "Не удалось загрузить связанный комментарий. Попробуйте еще раз.",
|
||
"pageEditor.comments.deepLinkMissing": "Этот комментарий больше недоступен.",
|
||
"pageEditor.comments.delete": "Удалить",
|
||
"pageEditor.comments.deleteConfirm.content": "Удалить этот комментарий? Ответы останутся видимыми, если у этого комментария есть ветка.",
|
||
"pageEditor.comments.deleteConfirm.title": "Удалить комментарий",
|
||
"pageEditor.comments.deleteFailed": "Не удалось удалить комментарий. Попробуйте снова.",
|
||
"pageEditor.comments.deleted": "Этот комментарий был удален.",
|
||
"pageEditor.comments.edit": "Редактировать",
|
||
"pageEditor.comments.edited": "(отредактировано)",
|
||
"pageEditor.comments.gutterEmpty": "Выберите текст в документе, чтобы прокомментировать его.",
|
||
"pageEditor.comments.gutterEmptyReadOnly": "Комментариев пока нет.",
|
||
"pageEditor.comments.hideReplies": "Скрыть ответы",
|
||
"pageEditor.comments.loadMore": "Загрузить больше комментариев",
|
||
"pageEditor.comments.loadMoreReplies": "Загрузить больше ответов",
|
||
"pageEditor.comments.moreActions": "Дополнительные действия",
|
||
"pageEditor.comments.placeholder": "Добавить комментарий…",
|
||
"pageEditor.comments.publish": "Комментировать",
|
||
"pageEditor.comments.replies_one": "{{count}} ответ",
|
||
"pageEditor.comments.replies_other": "{{count}} ответов",
|
||
"pageEditor.comments.replyAction": "Ответить",
|
||
"pageEditor.comments.replyPlaceholder": "Написать ответ…",
|
||
"pageEditor.comments.save": "Сохранить",
|
||
"pageEditor.comments.title": "Комментарии",
|
||
"pageEditor.comments.toggle": "Комментарии",
|
||
"pageEditor.comments.updateFailed": "Не удалось обновить комментарий. Попробуйте снова.",
|
||
"pageEditor.copilot.toggle": "Спросить Lobe AI",
|
||
"pageEditor.deleteConfirm.content": "Эта страница будет удалена без возможности восстановления. Пожалуйста, будьте осторожны.",
|
||
"pageEditor.deleteConfirm.title": "Удалить страницу",
|
||
"pageEditor.deleteError": "Не удалось удалить страницу",
|
||
"pageEditor.deleteSuccess": "Страница успешно удалена",
|
||
"pageEditor.duplicateError": "Не удалось дублировать страницу",
|
||
"pageEditor.duplicateSuccess": "Страница успешно дублирована",
|
||
"pageEditor.editMode.checking": "Проверка доступности редактирования…",
|
||
"pageEditor.editMode.draftRestoreCancel": "Отменить",
|
||
"pageEditor.editMode.draftRestoreContent": "Найдены несохраненные локальные изменения из последней сессии. Восстановить их?",
|
||
"pageEditor.editMode.draftRestoreOk": "Восстановить",
|
||
"pageEditor.editMode.draftRestoreTitle": "Восстановить несохраненный черновик",
|
||
"pageEditor.editMode.lockLostDescription": "Последние изменения еще не синхронизированы. Сохранение возобновится, как только соединение восстановится.",
|
||
"pageEditor.editMode.lockLostTitle": "Временная потеря блокировки редактирования",
|
||
"pageEditor.editMode.lockUnstable": "Повторное подключение блокировки редактирования…",
|
||
"pageEditor.editMode.lockedByOther": "{{name}} редактирует этот документ",
|
||
"pageEditor.editMode.lockedBySelf": "Вы редактируете этот документ в другой вкладке",
|
||
"pageEditor.editMode.lockedBySelfDescription": "Сохранение возобновится после закрытия другой сессии или истечения ее блокировки (~30 секунд).",
|
||
"pageEditor.editMode.lockedBySomeone": "Кто-то другой редактирует этот документ",
|
||
"pageEditor.editMode.lockedDescription": "Страница доступна только для чтения, пока они редактируют. Ваши изменения не будут сохранены, пока они не завершат.",
|
||
"pageEditor.editedAt": "Последнее редактирование: {{time}}",
|
||
"pageEditor.editedAtBy": "Последнее изменение {{time}} пользователем {{name}}",
|
||
"pageEditor.editedBy": "Последнее редактирование: {{name}}",
|
||
"pageEditor.editorPlaceholder": "Нажмите «/» для ИИ и команд",
|
||
"pageEditor.empty.createNewDocument": "Создать новую страницу",
|
||
"pageEditor.empty.importNotion": "Импорт из Notion",
|
||
"pageEditor.empty.title": "Выберите страницу для начала работы",
|
||
"pageEditor.empty.uploadFiles": "Загрузить файлы",
|
||
"pageEditor.exportActions.openFile": "Открыть",
|
||
"pageEditor.exportActions.showInFolder": "Показать в папке",
|
||
"pageEditor.exportDialogTitle": "Экспорт страницы",
|
||
"pageEditor.exportError": "Не удалось экспортировать страницу",
|
||
"pageEditor.exportSuccess": "Страница успешно экспортирована",
|
||
"pageEditor.history.backToCopilot": "Copilot",
|
||
"pageEditor.history.compare": "Сравнить",
|
||
"pageEditor.history.compareCurrentLabel": "Текущая",
|
||
"pageEditor.history.compareDescription": "Сравнение текущего содержимого с выбранной версией истории",
|
||
"pageEditor.history.compareError": "Не удалось загрузить предварительный просмотр изменений",
|
||
"pageEditor.history.compareModalTitle": "Сравнение",
|
||
"pageEditor.history.compareOldLabel": "Восстановить до",
|
||
"pageEditor.history.compareTitle": "Сравнение версий",
|
||
"pageEditor.history.current": "Текущая",
|
||
"pageEditor.history.dayLabel.today": "Сегодня",
|
||
"pageEditor.history.dayLabel.yesterday": "Вчера",
|
||
"pageEditor.history.empty": "История версий отсутствует",
|
||
"pageEditor.history.restore": "Восстановить",
|
||
"pageEditor.history.restoreConfirm.content": "Восстановить страницу в состояние на {{savedAt}}? Текущее содержимое будет заменено и сохранено.",
|
||
"pageEditor.history.restoreConfirm.title": "Восстановление из истории",
|
||
"pageEditor.history.restoreError": "Не удалось восстановить из истории",
|
||
"pageEditor.history.saveSource.autosave": "Автосохранение",
|
||
"pageEditor.history.saveSource.llm_call": "AI-редактирование",
|
||
"pageEditor.history.saveSource.manual": "Ручное сохранение",
|
||
"pageEditor.history.saveSource.restore": "Восстановление",
|
||
"pageEditor.history.saveSource.system": "Система",
|
||
"pageEditor.history.title": "История версий",
|
||
"pageEditor.history.versionCount_one": "{{count}} версия",
|
||
"pageEditor.history.versionCount_other": "{{count}} версий",
|
||
"pageEditor.likes.count": "{{count}} лайков",
|
||
"pageEditor.likes.count_one": "{{count}} отметка \"Нравится\"",
|
||
"pageEditor.likes.count_other": "{{count}} отметок \"Нравится\"",
|
||
"pageEditor.likes.failed": "Не удалось обновить ваш лайк. Попробуйте снова.",
|
||
"pageEditor.likes.like": "Эта страница полезна? Поставьте лайк",
|
||
"pageEditor.likes.liked": "Понравилось",
|
||
"pageEditor.likes.more": "+{{count}} ещё",
|
||
"pageEditor.linkCopied": "Ссылка скопирована",
|
||
"pageEditor.lock.editingByOther": "{{name}} редактирует эту страницу. Ваши изменения не могут быть сохранены прямо сейчас.",
|
||
"pageEditor.lock.editingBySomeone": "Кто-то другой редактирует эту страницу. Ваши изменения не могут быть сохранены прямо сейчас.",
|
||
"pageEditor.menu.copyLink": "Скопировать ссылку",
|
||
"pageEditor.menu.export": "Экспорт",
|
||
"pageEditor.menu.export.markdown": "Markdown",
|
||
"pageEditor.menu.exportDocument": "Экспорт страницы",
|
||
"pageEditor.menu.importDocument": "Импорт страницы",
|
||
"pageEditor.menu.move": "Переместить",
|
||
"pageEditor.menu.pin": "Закрепить страницу",
|
||
"pageEditor.saveFailed": "Не удалось сохранить страницу, попробуйте позже",
|
||
"pageEditor.saving": "Сохранение...",
|
||
"pageEditor.titlePlaceholder": "Без названия",
|
||
"pageEditor.wordCount": "{{wordCount}} слов",
|
||
"pageList.actions.openInNewTab": "Открыть в новой вкладке",
|
||
"pageList.copyConfirm": "Копировать",
|
||
"pageList.copyContent": "Скопировать весь текст",
|
||
"pageList.copyDescription": "Создайте копию этой страницы в другой рабочей области.",
|
||
"pageList.copyFailed": "Не удалось скопировать страницу",
|
||
"pageList.copySuccess": "Страница скопирована",
|
||
"pageList.copyTitle": "Копировать страницу",
|
||
"pageList.copyTo": "Копировать в…",
|
||
"pageList.duplicate": "Дублировать",
|
||
"pageList.empty": "Пока нет страниц. Нажмите кнопку выше, чтобы создать первую.",
|
||
"pageList.filter.all": "Все",
|
||
"pageList.filter.onlyInPages": "Только в страницах",
|
||
"pageList.noResults": "Совпадений не найдено",
|
||
"pageList.pageCount": "Всего {{count}} страниц",
|
||
"pageList.pageSizeItem": "{{count}} элементов",
|
||
"pageList.privateTitle": "Частное",
|
||
"pageList.publishConfirm.ok": "Опубликовать",
|
||
"pageList.publishConfirm.title": "Опубликовать в рабочем пространстве",
|
||
"pageList.publishError": "Не удалось опубликовать страницу",
|
||
"pageList.publishSuccess": "Страница опубликована в рабочем пространстве",
|
||
"pageList.publishToWorkspace": "Опубликовать в рабочем пространстве",
|
||
"pageList.title": "Страницы",
|
||
"pageList.transferConfirm": "Переместить",
|
||
"pageList.transferDescription": "Переместите эту страницу (и любые содержащиеся в ней папки) в другую рабочую область.",
|
||
"pageList.transferFailed": "Не удалось переместить страницу",
|
||
"pageList.transferSuccess": "Страница перемещена",
|
||
"pageList.transferTitle": "Переместить страницу",
|
||
"pageList.transferTo": "Переместить в…",
|
||
"pageList.transferWarning": "Это одностороннее перемещение; для отмены потребуется повторное перемещение.",
|
||
"pageList.untitled": "Без названия",
|
||
"pageList.workspaceTitle": "Рабочее пространство",
|
||
"portal.openInPageEditor": "Редактировать в странице",
|
||
"preview.downloadFile": "Скачать файл",
|
||
"preview.raw": "Исходный",
|
||
"preview.render": "Предпросмотр",
|
||
"preview.unsupportedFileAndContact": "Этот формат файла пока не поддерживается для онлайн-просмотра. Если у вас есть пожелания, <1>свяжитесь с нами</1>.",
|
||
"resource": "Ресурс",
|
||
"resourceList.batchCopyDescription": "Клонируйте выбранные ресурсы в другую рабочую область.",
|
||
"resourceList.batchCopyTitle": "Копировать ресурсы",
|
||
"resourceList.batchTransferDescription": "Переместите выбранные ресурсы в другую рабочую область.",
|
||
"resourceList.batchTransferTitle": "Переместить ресурсы",
|
||
"resourceList.copyConfirm": "Копировать",
|
||
"resourceList.copyDocumentDescription": "Клонируйте этот документ в другую рабочую область.",
|
||
"resourceList.copyDocumentTitle": "Копировать документ",
|
||
"resourceList.copyFailed": "Не удалось скопировать ресурс",
|
||
"resourceList.copyFileDescription": "Клонируйте этот файл в другую рабочую область.",
|
||
"resourceList.copyFileTitle": "Копировать файл",
|
||
"resourceList.copyFolderDescription": "Клонируйте эту папку (и её содержимое) в другую рабочую область.",
|
||
"resourceList.copyFolderTitle": "Копировать папку",
|
||
"resourceList.copySuccess": "Ресурс скопирован",
|
||
"resourceList.copyTo": "Копировать в…",
|
||
"resourceList.transferConfirm": "Переместить",
|
||
"resourceList.transferDocumentDescription": "Переместите этот документ в другую рабочую область.",
|
||
"resourceList.transferDocumentTitle": "Переместить документ",
|
||
"resourceList.transferFailed": "Не удалось переместить ресурс",
|
||
"resourceList.transferFileDescription": "Переместите этот файл в другую рабочую область.",
|
||
"resourceList.transferFileTitle": "Переместить файл",
|
||
"resourceList.transferFolderDescription": "Переместите эту папку (и её содержимое) в другую рабочую область.",
|
||
"resourceList.transferFolderTitle": "Переместить папку",
|
||
"resourceList.transferSuccess": "Ресурс перемещён",
|
||
"resourceList.transferTo": "Переместить в…",
|
||
"resourceList.viewTransferred": "Просмотреть",
|
||
"searchFilePlaceholder": "Поиск файлов",
|
||
"searchPagePlaceholder": "Поиск страниц",
|
||
"tab.all": "Все",
|
||
"tab.artifacts": "Артефакты",
|
||
"tab.audios": "Аудио",
|
||
"tab.documents": "Документы",
|
||
"tab.files": "Файлы",
|
||
"tab.home": "Главная",
|
||
"tab.images": "Изображения",
|
||
"tab.moreTypes": "Другие типы",
|
||
"tab.pages": "Страницы",
|
||
"tab.videos": "Видео",
|
||
"tab.websites": "Веб-сайты",
|
||
"title": "Ресурсы",
|
||
"toggleLeftPanel": "Показать/Скрыть левую панель",
|
||
"uploadDock.body.collapse": "Свернуть",
|
||
"uploadDock.body.item.cancel": "Отменить",
|
||
"uploadDock.body.item.cancelled": "Отменено",
|
||
"uploadDock.body.item.done": "Загружено",
|
||
"uploadDock.body.item.error": "Ошибка загрузки, попробуйте снова",
|
||
"uploadDock.body.item.pending": "Подготовка к загрузке...",
|
||
"uploadDock.body.item.processing": "Обработка файла...",
|
||
"uploadDock.body.item.restTime": "Осталось {{time}}",
|
||
"uploadDock.body.item.retry": "Повторить загрузку",
|
||
"uploadDock.fileQueueInfo": "Загружаются первые {{count}} файлов, {{remaining}} в очереди",
|
||
"uploadDock.header.cancelAll": "Отменить все",
|
||
"uploadDock.totalCount": "Всего {{count}} элементов",
|
||
"uploadDock.uploadStatus.cancelled": "Загрузка отменена",
|
||
"uploadDock.uploadStatus.error": "Ошибка загрузки",
|
||
"uploadDock.uploadStatus.pending": "Ожидание загрузки",
|
||
"uploadDock.uploadStatus.processing": "Загрузка",
|
||
"uploadDock.uploadStatus.success": "Загрузка завершена",
|
||
"uploadDock.uploadStatus.uploading": "Загрузка",
|
||
"work.agentEmpty.desc": "Выберите другого агента, чтобы увидеть его работу.",
|
||
"work.agentEmpty.title": "Нет работы от этого агента",
|
||
"work.agentFilter.all": "Все",
|
||
"work.count_one": "{{count}} работа",
|
||
"work.count_other": "{{count}} работ",
|
||
"work.createdAt": "Создано {{date}}",
|
||
"work.date.today": "Сегодня",
|
||
"work.date.yesterday": "Вчера",
|
||
"work.empty.desc": "Работы, которые выполняют ваши агенты — задачи, документы, элементы Linear и GitHub — будут собираться здесь.",
|
||
"work.empty.title": "Пока нет работ",
|
||
"work.fromTopic": "{{topic}}",
|
||
"work.group": "Работы",
|
||
"work.loadError": "Что-то пошло не так при загрузке работ.",
|
||
"work.loadErrorTitle": "Не удалось загрузить работы",
|
||
"work.loadMoreError": "Не удалось загрузить больше работ.",
|
||
"work.retry": "Повторить",
|
||
"work.topicGroup.other": "Другое",
|
||
"work.totalCost": "Общая стоимость {{cost}}",
|
||
"work.type.document": "Документ",
|
||
"work.type.file": "Файл",
|
||
"work.type.githubIssue": "GitHub задача",
|
||
"work.type.githubPullRequest": "GitHub запрос на слияние",
|
||
"work.type.linearDocument": "Linear документ",
|
||
"work.type.linearIssue": "Linear задача",
|
||
"work.type.task": "Задача",
|
||
"work.updatedAt": "Обновлено {{date}}"
|
||
}
|