mirror of
https://github.com/Termix-SSH/Termix.git
synced 2026-10-30 15:15:24 +00:00
* fix(sso): send the PKCE verifier for GitHub login (#1534) * fix(remote-desktop): clip cursor overflow without disabling zoom (#1535) * test(remote-desktop): preserve sessions beyond one hour (#1536) * fix(hosts): expose controls for overflowing editor tabs (#1537) * fix(hosts): expose controls for overflowing editor tabs * test(hosts): mock resize observation in admin panel tests * fix(status): skip TCP probes while host sessions are active (#1538) * fix(database): batch session activity persistence (#1539) * docs(api): describe cookie and API key authentication (#1540) * fix(snippets): repair missing note column on SQLite upgrades (#1541) * fix(docker): retain stored SSH credential association (#1543) * fix(file-manager): render transfer toasts without plugin hooks (#1546) * feat(hosts): keep compact row actions inline (#1547) * fix(auth): allow retrying unavailable second-factor interfaces (#1549) * fix(auth): reject unresolved legacy identity provisioning (#1550) * fix(desktop): ship the plugin SDK inside Mac App Store builds (#1551) * fix(tmux): pass full session info to the terminal's session picker (#1552) The tmux.sessions service reduced detected sessions to bare names, but the picker reads session.name, so every entry rendered blank and selecting one sent an empty name, which created a new session instead of attaching. * fix(ssh): read force keyboard-interactive as a boolean when resolving hosts (#1553) The column holds the text "true"/"false", and the resolver passed it through as-is. The string "false" is truthy, so the password provider treated every saved host as forced keyboard-interactive and left the password out. Jump hops are built straight from the resolved host, so a password hop whose server doesn't offer keyboard-interactive failed with "All configured authentication methods failed". * fix(database): batch database saves for bulk host writes (#1554) * fix(database): yield to the event loop between database saves Each SQLite save serializes and encrypts the whole database into new buffers, which V8 only releases once the event loop turns. Boot migrations and bulk host import write plugin settings per host and per key in an awaited loop, so hundreds of full copies piled up and the container ran out of memory. * fix(database): save once per bulk host write instead of once per row On SQLite every repository write force-saves the whole database. Boot plugin data migrations, host defaults materialization and the bulk host routes write one row per host per setting, so they serialized and encrypted the full database hundreds of times in a row. DatabaseSaveTrigger.batched wraps a function so force saves made while it runs collapse into a single save when it finishes. Nested scopes fold into the outer one, and work that outlives its scope saves normally. * feat(hosts): add instance-wide predefined tag suggestions (#1548) * feat(hosts): add shared predefined tag suggestions * style(hosts): format tag catalog routes * test(database): advance fake timers past the save yield (#1555) * fix(i18n): complete Simplified Chinese core and plugin translations (#1542) * fix(i18n): complete Chinese onboarding and navigation labels * fix(i18n): translate remaining Chinese core and plugin interfaces * fix(i18n): translate host editor tab overflow controls * fix(i18n): use consistent Chinese fleet terminology * fix(i18n): localize hardcoded controls and plugin views * fix(i18n): translate built-in homepage widget catalog * test(homepage): follow translated timezone placeholder * fix(i18n): translate plugin-provided homepage widgets * fix(i18n): localize feature settings section titles * fix: 2.8 oidc accounts unable to sign in after upgrading (#1381) * fix: plugins losing the saved ssh login when copying a host (#1391) * fix: fleets, proxmox and automations not getting the host sudo password * fix: host imports running a defaults pass and metrics restart per host (#1384) * fix: high cpu from status probes and full database saves on every sample (#1300) * fix: user data export freezing the server (#1393) * fix: op:// secret references rejected as ssh keys on credentials (#1394) * fix: slow file deletes from the trash lookups on every delete (#1390) * fix: add openapi docs and error handling to host tag routes * test: compare download stream buffers directly so it stops timing out * chore: drop em dash from host row comment * chore: update release notes for 2.9.1 * fix: restore space to add host tags and redesign predefined tags editor * fix: host key silently accepted when the host is missing from the database (#1397) * fix: clearer host login failed status label and fix its translations (#1396) * chore: add host key and status label fixes to release notes * fix: sso and ldap provider dialogs overflowing the screen and using mismatched toggles * chore: increment ver * fix(audit): store plugin entries with no acting user as a null user_id (#1556) Plugin audit entries written outside a request used the literal "system" as user_id. That column references users.id, so the insert was refused (Postgres logs it as an FK violation) and the entry was silently dropped. Write null instead and keep "system" / plugin:<id> in username. * chore: add sso/ldap dialog and audit log fixes to release notes * fix: tunnels and host settings missing from shared hosts on desktop * fix: remote desktop logins missing from shared hosts on desktop * fix: simplify host status to online/offline and keep it live without a refresh * chore: sync Crowdin translations for 2.9.1 --------- Co-authored-by: ZacharyZcR <zacharyzcr1984@gmail.com>
556 lines
41 KiB
JSON
556 lines
41 KiB
JSON
{
|
||
"nav": {
|
||
"files": "Файли",
|
||
"sftp": "SFTP",
|
||
"openFileManager": "Відкрити файловий менеджер"
|
||
},
|
||
"permissions": {
|
||
"use": {
|
||
"title": "Використовуйте файловий менеджер",
|
||
"description": "Переглядайте, редагуйте та передайте файли через SFTP."
|
||
}
|
||
},
|
||
"settings": {
|
||
"host": {
|
||
"enable": {
|
||
"label": "Увімкнути файловий менеджер",
|
||
"description": "Переглядайте та редагуйте файли на цьому хості через SFTP."
|
||
},
|
||
"defaultPath": {
|
||
"label": "Шлях за замовчуванням"
|
||
},
|
||
"scpLegacy": {
|
||
"label": "Застарілий режим SCP"
|
||
}
|
||
},
|
||
"user": {
|
||
"transferConcurrency": {
|
||
"label": "Одночасна передача файлів",
|
||
"description": "Скільки файлів одночасно завантажує або вивантажує локальний/віддалений менеджер. Зменште це значення, якщо ваш сервер обмежує кількість каналів SFTP."
|
||
},
|
||
"confirmBeforeTrash": {
|
||
"label": "Підтвердити перед переміщенням файлів у кошик",
|
||
"description": "Запитувати перед переміщенням віддалених файлів до кошика. Для остаточного видалення все одно потрібне підтвердження."
|
||
}
|
||
}
|
||
},
|
||
"hostCapability": {
|
||
"label": "Файловий менеджер"
|
||
},
|
||
"fileManager": {
|
||
"noHostSelected": "Хост не вибрано",
|
||
"initializingEditor": "Ініціалізація редактора...",
|
||
"file": "Файл",
|
||
"folder": "Папка",
|
||
"uploadFile": "Завантажити файл",
|
||
"downloadFile": "Завантажити",
|
||
"extractArchive": "Витягти архів",
|
||
"extractingArchive": "Видобування {{name}}...",
|
||
"archiveExtractedSuccessfully": "{{name}} успішно видобуто",
|
||
"extractFailed": "Не вдалося витягти",
|
||
"compressFile": "Стиснути файл",
|
||
"compressFiles": "Стиснути файли",
|
||
"compressFilesDesc": "Стиснути {{count}} елементів в архів",
|
||
"archiveName": "Назва архіву",
|
||
"enterArchiveName": "Введіть назву архіву...",
|
||
"compressionFormat": "Формат стиснення",
|
||
"selectedFiles": "Вибрані файли",
|
||
"andMoreFiles": "та {{count}} більше...",
|
||
"compress": "Стиснути",
|
||
"compressingFiles": "Стискання {{count}} елементів у {{name}}...",
|
||
"filesCompressedSuccessfully": "{{name}} успішно створено",
|
||
"compressFailed": "Стиснення не вдалося",
|
||
"edit": "Редагувати",
|
||
"preview": "Попередній перегляд",
|
||
"previous": "Попередній",
|
||
"next": "Далі",
|
||
"pageXOfY": "Сторінка {{current}} з {{total}}",
|
||
"zoomOut": "Зменшити масштаб",
|
||
"zoomIn": "Збільшити масштаб",
|
||
"newFile": "Новий файл",
|
||
"newFolder": "Нова папка",
|
||
"rename": "Перейменувати",
|
||
"uploading": "Завантаження...",
|
||
"uploadingFile": "Завантаження {{name}}...",
|
||
"uploadingChunk": "Завантаження {{name}}: {{percent}}% (частина {{chunk}} з {{total}})",
|
||
"fileName": "Ім'я файлу",
|
||
"folderName": "Назва папки",
|
||
"fileUploadedSuccessfully": "Файл «{{name}}» успішно завантажено",
|
||
"failedToUploadFile": "Не вдалося завантажити файл",
|
||
"uploadingFolderFiles": "Завантаження {{count}} файлів...",
|
||
"uploadedFolderFiles": "Успішно завантажено {{count}} файл(ів)",
|
||
"uploadedFolderPartial": "Завантажено {{uploaded}} файл(ів), {{failed}} не вдалося",
|
||
"fileDownloadedSuccessfully": "Файл «{{name}}» успішно завантажено",
|
||
"failedToDownloadFile": "Не вдалося завантажити файл",
|
||
"fileCreatedSuccessfully": "Файл «{{name}}» успішно створено",
|
||
"folderCreatedSuccessfully": "Папка «{{name}}» успішно створена",
|
||
"failedToCreateItem": "Не вдалося створити елемент",
|
||
"operationFailed": "Операція {{operation}} не вдалася для {{name}}: {{error}}",
|
||
"failedToResolveSymlink": "Не вдалося вирішити проблему з символічним посиланням",
|
||
"itemsDeletedSuccessfully": "{{count}} елементів успішно видалено",
|
||
"failedToDeleteItems": "Не вдалося видалити елементи",
|
||
"sudoPasswordRequired": "Потрібен пароль адміністратора",
|
||
"enterSudoPassword": "Введіть пароль sudo, щоб продовжити цю операцію",
|
||
"sudoPassword": "Пароль Sudo",
|
||
"sudoOperationFailed": "Операція Sudo не вдалася",
|
||
"sudoAuthFailed": "Не вдалося виконати автентифікацію Sudo",
|
||
"dragFilesToUpload": "Перетягніть сюди файли для завантаження",
|
||
"dropToUploadHere": "Перетягніть сюди, щоб завантажити",
|
||
"dropToDownloadHere": "Перетягніть сюди, щоб завантажити",
|
||
"localFiles": "Місцевий",
|
||
"showLocalFiles": "Показати локальні файли (розділений вигляд)",
|
||
"hideLocalFiles": "Приховати локальні файли",
|
||
"localHome": "Домашня папка",
|
||
"localPathPlaceholder": "Шлях до локальної папки",
|
||
"localShowHidden": "Показати приховані файли",
|
||
"localHideHidden": "Приховати приховані файли",
|
||
"localRevealInFileManager": "Показати в системному файловому менеджері",
|
||
"localCannotOpenFolder": "Не вдається відкрити папку",
|
||
"localItemCount": "{{count}} елементів",
|
||
"localSelectedCount": "{{count}} вибрано",
|
||
"back": "Назад",
|
||
"forward": "Вперед",
|
||
"up": "Вгору",
|
||
"kind": "Вид",
|
||
"localUploadingProgress": "Завантаження {{current}} з {{total}}",
|
||
"localDownloadingProgress": "Завантаження {{current}} з {{total}}",
|
||
"localTransferInFlight": "{{count}} одразу",
|
||
"localPreparingDownload": "Підготовка завантаження...",
|
||
"localTransferCancelled": "Переказ скасовано",
|
||
"localNothingToTransfer": "Нічого для перенесення",
|
||
"localUploadComplete": "Завантажено {{count}} файл(ів)",
|
||
"localUploadFailed": "Не вдалося завантажити",
|
||
"localUploadPartial": "Завантажено {{done}} файл(ів), {{failed}} не вдалося",
|
||
"localDownloadComplete": "Завантажено {{count}} файл(ів)",
|
||
"localDownloadFailed": "Завантаження не вдалося",
|
||
"localDownloadPartial": "Завантажено {{done}} файл(ів), {{failed}} не вдалося",
|
||
"localReplaceExistingPrompt": "{{count}} елементів вже є в цій папці. Замінити їх?",
|
||
"localReplace": "Замінити",
|
||
"localSkipExisting": "Пропустити",
|
||
"localSkippedExisting": "Пропущено {{count}} існуючих елементів",
|
||
"localUnsafeNamesSkipped": "Пропущено {{count}} елементів, назви яких не можна використовувати на цьому комп’ютері",
|
||
"localOpen": "ВІДЧИНЕНО",
|
||
"localOpenFolder": "Відкрити папку",
|
||
"localUploadToRemote": "Завантажити на сервер",
|
||
"localUploadToRemoteMany": "Завантажити {{count}} елементів на сервер",
|
||
"localMoveToTrash": "Перемістити в кошик",
|
||
"localMoveToTrashMany": "Перемістити {{count}} елементів до кошика",
|
||
"localTrashConfirmSingle": "Перемістити \"{{name}}\" до кошика?",
|
||
"localTrashConfirmFolder": "Перемістити папку «{{name}}» та весь її вміст до кошика?",
|
||
"localTrashConfirmMany": "Перемістити {{count}} елементів до кошика?",
|
||
"localTrashed": "Переміщено {{count}} елементів до кошика",
|
||
"localTrashFailed": "Не вдалося перемістити в кошик",
|
||
"localRenameFailed": "Не вдалося перейменувати",
|
||
"localCreateFailed": "Не вдалося створити елемент",
|
||
"goToParentFolder": "Перейти до батьківської папки",
|
||
"resizeSidebar": "Перетягніть, щоб змінити розмір бічної панелі (двічі клацніть, щоб скинути налаштування)",
|
||
"resizeLocalPane": "Перетягніть, щоб змінити розмір локальної панелі (двічі клацніть, щоб скинути налаштування)",
|
||
"columns": "Колонки",
|
||
"columnsHint": "Клацніть правою кнопкою миші, щоб вибрати стовпці",
|
||
"emptyFolder": "Ця папка порожня",
|
||
"searchFiles": "Пошук файлів...",
|
||
"upload": "Завантажити",
|
||
"selectHostToStart": "Виберіть хост, щоб розпочати керування файлами",
|
||
"sshRequiredForFileManager": "Файловий менеджер вимагає SSH. На цьому хості SSH не ввімкнено.",
|
||
"failedToConnect": "Не вдалося підключитися до SSH",
|
||
"failedToLoadDirectory": "Не вдалося завантажити каталог",
|
||
"noSSHConnection": "SSH-з'єднання недоступне",
|
||
"copy": "Копіювати",
|
||
"cut": "Вирізати",
|
||
"paste": "Вставити",
|
||
"copyPath": "Копіювати шлях",
|
||
"copyPaths": "Копіювати шляхи",
|
||
"delete": "Видалити",
|
||
"properties": "Властивості",
|
||
"refresh": "Оновити",
|
||
"downloadFiles": "Завантажити {{count}} файлів у браузер",
|
||
"copyFiles": "Копіювати {{count}} елементів",
|
||
"cutFiles": "Вирізати {{count}} елементів",
|
||
"deleteFiles": "Видалити {{count}} елементів",
|
||
"filesCopiedToClipboard": "{{count}} елементів, скопійованих у буфер обміну",
|
||
"filesCutToClipboard": "{{count}} елементів, вирізаних у буфер обміну",
|
||
"pathCopiedToClipboard": "Шлях скопійовано в буфер обміну",
|
||
"pathsCopiedToClipboard": "{{count}} шляхів скопійовано в буфер обміну",
|
||
"failedToCopyPath": "Не вдалося скопіювати шлях до буфера обміну",
|
||
"copyFolderLink": "Копіювати посилання до папки",
|
||
"copyCurrentFolderLink": "Копіювати посилання до поточної папки",
|
||
"folderLinkCopied": "Посилання на папку скопійовано в буфер обміну",
|
||
"failedToCopyFolderLink": "Не вдалося скопіювати посилання на папку",
|
||
"movedItems": "Переміщено {{count}} елементів",
|
||
"failedToDeleteItem": "Не вдалося видалити елемент",
|
||
"itemRenamedSuccessfully": "{{type}} успішно перейменовано",
|
||
"failedToRenameItem": "Не вдалося перейменувати елемент",
|
||
"download": "Завантажити",
|
||
"openExternalEditor": "Відкрити зовні",
|
||
"chooseExternalEditor": "Виберіть зовнішній редактор",
|
||
"externalEditorSelected": "Вибрано зовнішнього редактора",
|
||
"externalEditorDesktopOnly": "Зовнішній редактор доступний лише в настільній програмі",
|
||
"externalEditorOpened": "Відкрито в зовнішньому редакторі. Збереження там завантажить зміни назад на сервер.",
|
||
"failedToOpenExternalEditor": "Не вдалося відкрити зовнішній редактор",
|
||
"failedToSelectExternalEditor": "Не вдалося вибрати зовнішній редактор",
|
||
"permissions": "Дозволи",
|
||
"size": "Розмір",
|
||
"modified": "Змінено",
|
||
"path": "Шлях",
|
||
"confirmDelete": "Ви впевнені, що хочете видалити {{name}}?",
|
||
"permissionDenied": "Дозвіл відхилено",
|
||
"serverError": "Помилка сервера",
|
||
"fileSavedSuccessfully": "Файл успішно збережено",
|
||
"failedToSaveFile": "Не вдалося зберегти файл",
|
||
"confirmDeleteSingleItem": "Ви впевнені, що хочете остаточно видалити \"{{name}}\"?",
|
||
"confirmDeleteMultipleItems": "Ви впевнені, що хочете остаточно видалити {{count}} елементів?",
|
||
"confirmDeleteMultipleItemsWithFolders": "Ви впевнені, що хочете остаточно видалити {{count}} елементів? Це стосується папок та їхнього вмісту.",
|
||
"confirmDeleteFolder": "Ви впевнені, що хочете остаточно видалити папку «{{name}}» та весь її вміст?",
|
||
"permanentDeleteWarning": "Цю дію неможливо скасувати. Елемент(и) буде назавжди видалено із сервера.",
|
||
"moveToTrashWarning": "Елемент(и) буде переміщено до кошика Termix і може бути відновлено до закінчення терміну зберігання.",
|
||
"itemsMovedToTrash": "{{count}} елементів переміщено до кошика",
|
||
"trash": "Сміття",
|
||
"trashDescription": "Видалені елементи зберігаються на цьому хості протягом {{days}} днів.",
|
||
"trashLoadFailed": "Не вдалося завантажити кошик",
|
||
"trashEmpty": "Кошик порожній",
|
||
"trashRestore": "Відновити",
|
||
"trashRestored": "Відновлено {{name}}",
|
||
"trashRestoreFailed": "Не вдалося відновити елемент. Можливо, початковий шлях уже існує.",
|
||
"trashDeletePermanently": "Видалити назавжди",
|
||
"trashDeleteConfirm": "Видалити {{name}}назавжди? Цю дію не можна скасувати.",
|
||
"trashPermanentlyDeleted": "Видалено назавжди {{name}}",
|
||
"trashDeleteFailed": "Не вдалося остаточно видалити елемент",
|
||
"trashEmptyAction": "Очистити кошик",
|
||
"trashEmptyConfirm": "Видалити всі елементи з кошика назавжди? Цю дію не можна скасувати.",
|
||
"trashEmptied": "Кошик очищено",
|
||
"trashRetention": "Автоматичне очищення через (дні)",
|
||
"trashRetentionSaved": "Збереження кошика оновлено",
|
||
"trashRetentionFailed": "Не вдалося оновити налаштування зберігання в кошику",
|
||
"trashUnavailableConfirm": "Цей елемент не можна перемістити до кошика, зазвичай тому, що він знаходиться в іншій файловій системі або потребує підвищених прав. Видалити його назавжди?",
|
||
"recent": "Нещодавні",
|
||
"pinned": "Закріплено",
|
||
"folderShortcuts": "Ярлики папок",
|
||
"failedToReconnectSSH": "Не вдалося відновити сеанс SSH",
|
||
"openTerminalHere": "Відкрити термінал тут",
|
||
"run": "Бігти",
|
||
"openTerminalInFolder": "Відкрити термінал у цій папці",
|
||
"openTerminalInFileLocation": "Відкрити термінал у місці розташування файлу",
|
||
"runningFile": "Біг – {{file}}",
|
||
"onlyRunExecutableFiles": "Можна запускати лише виконувані файли",
|
||
"directories": "Довідники",
|
||
"removedFromRecentFiles": "Видалено \"{{name}}\" з останніх файлів",
|
||
"removeFailed": "Видалити не вдалося",
|
||
"unpinnedSuccessfully": "Відкріплено \"{{name}}\" успішно",
|
||
"unpinFailed": "Не вдалося відкріпити",
|
||
"removedShortcut": "Видалено ярлик «{{name}}»",
|
||
"removeShortcutFailed": "Не вдалося видалити ярлик",
|
||
"clearedAllRecentFiles": "Очищено всі нещодавні файли",
|
||
"clearFailed": "Очистити не вдалося",
|
||
"removeFromRecentFiles": "Видалити з останніх файлів",
|
||
"clearAllRecentFiles": "Очистити всі нещодавні файли",
|
||
"unpinFile": "Відкріпити файл",
|
||
"removeShortcut": "Видалити ярлик",
|
||
"pinFile": "Закріпити файл",
|
||
"addToShortcuts": "Додати до ярликів",
|
||
"pasteFailed": "Вставити не вдалося",
|
||
"noUndoableActions": "Немає дій, які можна скасувати",
|
||
"undoCopySuccess": "Скасовано копіювання: Видалено {{count}} скопійованих файлів",
|
||
"undoCopyFailedDelete": "Не вдалося скасувати: не вдалося видалити жодного скопійованого файлу",
|
||
"undoCopyFailedNoInfo": "Не вдалося скасувати: не вдалося знайти інформацію про скопійований файл",
|
||
"undoMoveSuccess": "Скасовано операцію переміщення: {{count}} файлів переміщено назад у початкове розташування",
|
||
"undoMoveFailedMove": "Не вдалося скасувати: не вдалося перемістити жодного файлу назад",
|
||
"undoMoveFailedNoInfo": "Не вдалося скасувати: не вдалося знайти інформацію про переміщений файл",
|
||
"undoDeleteNotSupported": "Операцію видалення неможливо скасувати: файли остаточно видалено із сервера",
|
||
"undoTypeNotSupported": "Непідтримуваний тип операції скасування",
|
||
"undoOperationFailed": "Не вдалося скасувати операцію",
|
||
"unknownError": "Невідома помилка",
|
||
"confirm": "Підтвердити",
|
||
"find": "Знайти...",
|
||
"replace": "Замінити",
|
||
"downloadInstead": "Завантажити замість цього",
|
||
"keyboardShortcuts": "Комбінації клавіш",
|
||
"searchAndReplace": "Пошук і заміна",
|
||
"editing": "Редагування",
|
||
"search": "Пошук",
|
||
"findNext": "Знайти далі",
|
||
"findPrevious": "Знайти попередній",
|
||
"save": "Зберегти",
|
||
"selectAll": "Вибрати все",
|
||
"undo": "Скасувати",
|
||
"redo": "Повторити",
|
||
"moveLineUp": "Перемістити лінію вгору",
|
||
"moveLineDown": "Перемістити рядок вниз",
|
||
"toggleComment": "Перемикач коментарів",
|
||
"autoComplete": "Автоматичне завершення",
|
||
"imageLoadError": "Не вдалося завантажити зображення",
|
||
"startTyping": "Почніть друкувати...",
|
||
"unknownSize": "Невідомий розмір",
|
||
"fileIsEmpty": "Файл порожній",
|
||
"largeFileWarning": "Попередження про великий файл",
|
||
"largeFileWarningDesc": "Розмір цього файлу становить {{size}} , що може спричинити проблеми з продуктивністю під час відкриття його як тексту.",
|
||
"fileNotFoundAndRemoved": "Файл «{{name}}» не знайдено та видалено з нещодавніх/закріплених файлів",
|
||
"failedToLoadFile": "Не вдалося завантажити файл: {{error}}",
|
||
"serverErrorOccurred": "Сталася помилка сервера. Будь ласка, спробуйте пізніше.",
|
||
"autoSaveFailed": "Не вдалося автоматично зберегти",
|
||
"fileAutoSaved": "Файл автоматично збережено",
|
||
"moveFileFailed": "Не вдалося перемістити {{name}}",
|
||
"moveOperationFailed": "Не вдалося перемістити",
|
||
"canOnlyCompareFiles": "Можна порівняти лише два файли",
|
||
"comparingFiles": "Порівняння файлів: {{file1}} та {{file2}}",
|
||
"dragFailed": "Не вдалося перетягнути",
|
||
"filePinnedSuccessfully": "Файл «{{name}}» успішно закріплено",
|
||
"pinFileFailed": "Не вдалося закріпити файл",
|
||
"fileUnpinnedSuccessfully": "Файл «{{name}}» успішно відкріплено",
|
||
"unpinFileFailed": "Не вдалося відкріпити файл",
|
||
"shortcutAddedSuccessfully": "Ярлик папки «{{name}}» успішно додано",
|
||
"addShortcutFailed": "Не вдалося додати ярлик",
|
||
"operationCompletedSuccessfully": "{{operation}} {{count}} елементів успішно",
|
||
"operationCompleted": "{{operation}} {{count}} елементів",
|
||
"downloadFileSuccess": "Файл {{name}} успішно завантажено",
|
||
"downloadFileFailed": "Завантаження не вдалося",
|
||
"downloadingFile": "Завантаження {{name}}…",
|
||
"downloadProgressBytes": "{{transferred}} / {{total}}",
|
||
"moveTo": "Перейти до {{name}}",
|
||
"diffCompareWith": "Різниця у порівнянні з {{name}}",
|
||
"dragOutsideToDownload": "Перетягніть за межі вікна, щоб завантажити ({{count}} файлів)",
|
||
"newFolderDefault": "НоваПапка",
|
||
"newFileDefault": "НовийФайл.txt",
|
||
"successfullyMovedItems": "Елементів {{count}} успішно переміщено до {{target}}",
|
||
"move": "Перемістити",
|
||
"searchInFile": "Пошук у файлі (Ctrl+F)",
|
||
"showKeyboardShortcuts": "Показати комбінації клавіш",
|
||
"decreaseFontSize": "Зменшити розмір шрифту",
|
||
"increaseFontSize": "Збільшити розмір шрифту",
|
||
"startWritingMarkdown": "Почніть писати свій контент у форматі Markdown...",
|
||
"loadingFileComparison": "Завантаження порівняння файлів...",
|
||
"reload": "Перезавантажити",
|
||
"compare": "Порівняти",
|
||
"sideBySide": "Пліч-о-пліч",
|
||
"inline": "Вбудований",
|
||
"fileComparison": "Порівняння файлів: {{file1}} проти {{file2}}",
|
||
"fileTooLarge": "File is too large (> 10MB) and cannot be opened as text for security reasons.",
|
||
"sshConnectionFailed": "Помилка SSH-з’єднання. Будь ласка, перевірте ваше з’єднання з {{name}} ({{ip}}:{{port}})",
|
||
"loadFileFailed": "Не вдалося завантажити файл: {{error}}",
|
||
"connecting": "Підключення...",
|
||
"connectedSuccessfully": "Підключено успішно",
|
||
"totpVerificationFailed": "Не вдалося перевірити TOTP",
|
||
"browserSignInFailed": "Не вдалося ввійти. Спробуйте ще раз.",
|
||
"authenticationFailed": "Помилка автентифікації",
|
||
"incorrectPassphrase": "Неправильна парольна фраза. Спробуйте ще раз.",
|
||
"verificationCodePrompt": "Код підтвердження:",
|
||
"changePermissions": "Змінити дозволи",
|
||
"currentPermissions": "Поточні дозволи",
|
||
"owner": "Власник",
|
||
"group": "Група",
|
||
"others": "Інші",
|
||
"read": "Читати",
|
||
"write": "Написати",
|
||
"execute": "Виконати",
|
||
"permissionsChangedSuccessfully": "Дозволи успішно змінено",
|
||
"failedToChangePermissions": "Не вдалося змінити дозволи",
|
||
"name": "Ім'я",
|
||
"sortByName": "Ім'я",
|
||
"sortByDate": "Дата зміни",
|
||
"sortBySize": "Розмір",
|
||
"ascending": "Зростаючий",
|
||
"descending": "Спадання",
|
||
"root": "Корінь",
|
||
"new": "Новий",
|
||
"sortBy": "Сортувати за",
|
||
"items": "Елементи",
|
||
"selected": "Вибрано",
|
||
"editor": "Редактор",
|
||
"octal": "Вісімкове",
|
||
"storage": "Зберігання",
|
||
"disk": "Диск",
|
||
"used": "Використано",
|
||
"of": "з",
|
||
"toggleSidebar": "Перемикання бічної панелі",
|
||
"compactLayout": "Використовуйте компактний макет",
|
||
"comfortableLayout": "Використовуйте зручний макет",
|
||
"cannotLoadPdf": "Не вдається завантажити PDF",
|
||
"pdfLoadError": "Під час завантаження цього PDF-файлу сталася помилка.",
|
||
"loadingPdf": "Loading PDF viewer...",
|
||
"loadingPage": "Завантаження сторінки...",
|
||
"cancel": "Скасувати",
|
||
"copiedItems_one": "Скопійовано елемент {{count}}",
|
||
"copiedItems_other": "Скопійовано {{count}} елементів",
|
||
"deleteCopiedFileFailed": "Не вдалося видалити копію {{name}}: {{error}}",
|
||
"dragMovedItems_one": "Переміщено елемент {{count}} до {{target}}",
|
||
"dragMovedItems_other": "Переміщено {{count}} елементів до {{target}}",
|
||
"moveBackFileFailed": "Не вдалося перемістити {{name}} назад: {{error}}",
|
||
"terminal": "Термінал: {{host}} ({{path}})",
|
||
"dragToDesktop": "Перетягування {{name}} на робочий стіл",
|
||
"dragFilesToDesktop": "Перетягування файлів {{count}} на робочий стіл",
|
||
"folderDragUnsupported": "Перетягування папок на робочий стіл поки що не підтримується",
|
||
"saveToDesktopFailed": "Не вдалося зберегти: {{error}}",
|
||
"dragFailedDetail": "Не вдалося перетягнути: {{error}}",
|
||
"videoUnsupported": "Ваш браузер не може відтворити цей відеоформат.",
|
||
"downloadToPlay": "Завантажте, щоб відтворити деінде",
|
||
"cannotPreviewType": "Неможливо переглянути цей тип файлу",
|
||
"cannotPreviewTypeHint": "Цей тип файлу не має попереднього перегляду. Завантажте його, щоб відкрити в іншій програмі.",
|
||
"loadingFile": "Loading file...",
|
||
"loadingImage": "Loading image...",
|
||
"loadingEditor": "Loading editor...",
|
||
"loadingPreview": "Loading preview...",
|
||
"loadingAudio": "Loading audio player...",
|
||
"emptyPreview": "Nothing to preview yet...",
|
||
"revert": "Revert",
|
||
"openAsText": "Open as Text",
|
||
"confirmOpenAsText": "Do you want to continue opening this file as text? This may slow down your browser."
|
||
},
|
||
"sftpTransfer": {
|
||
"title": "SFTP",
|
||
"description": "Передача файлів між двома SSH-хостами.",
|
||
"sourceServer": "Вихідний сервер",
|
||
"destinationServer": "Цільовий сервер",
|
||
"selectHost": "Виберіть хоста",
|
||
"noHostSelected": "Хост не вибрано",
|
||
"move": "Перемістити",
|
||
"copy": "Копіювати",
|
||
"upload": "Завантажити",
|
||
"itemsSelected": "Вибрано елемент {{count}}",
|
||
"itemsSelected_other": "Вибрано {{count}} елементів",
|
||
"ready": "Готовий",
|
||
"loadingHosts": "Завантаження хостів...",
|
||
"name": "Ім'я",
|
||
"modified": "Змінено",
|
||
"size": "Розмір",
|
||
"noFiles": "Немає файлів",
|
||
"open": "ВІДЧИНЕНО",
|
||
"up": "Вгору",
|
||
"refresh": "Оновити",
|
||
"copyToTarget": "Копіювати до цільового каталогу",
|
||
"rename": "Перейменувати",
|
||
"delete": "Видалити",
|
||
"editPermissions": "Редагувати дозволи",
|
||
"createNewFolder": "Створити нову папку",
|
||
"deleteSelectedItems": "Видалити вибрані елементи",
|
||
"deleteConfirm": "Видалити {{count}} вибраний елемент?",
|
||
"deleteConfirm_other": "Видалити {{count}} вибраних елементів?",
|
||
"cancel": "Скасувати",
|
||
"save": "Зберегти",
|
||
"folderCreated": "Папку створено",
|
||
"itemRenamed": "Елемент перейменовано",
|
||
"actionFailed": "Дія не вдалася",
|
||
"itemsDeleted": "{{count}} елемент видалено",
|
||
"itemsDeleted_other": "{{count}} елементів видалено",
|
||
"deleteFailed": "Видалити не вдалося",
|
||
"permissionsUpdated": "Дозволи оновлено",
|
||
"noRemoteSessionConnected": "Немає підключеного віддаленого сеансу",
|
||
"failedToListFiles": "Не вдалося переглянути файли",
|
||
"failedToRefresh": "Не вдалося оновити",
|
||
"destinationInsideSource": "Пункт призначення не може бути всередині вибраного вихідного шляху.",
|
||
"sameHostNoOp": "Джерело та призначення – це одна й та сама папка."
|
||
},
|
||
"hosts": {
|
||
"fileManager": "Файловий менеджер",
|
||
"fileManagerUrlCopied": "URL-адресу файлового менеджера скопійовано",
|
||
"copyFileManagerUrlAction": "Копіювати URL-адресу файлового менеджера",
|
||
"docsLink": "Переглянути документи",
|
||
"hostNotFound": "Хост не знайдено",
|
||
"loadingHost": "Завантаження хоста..."
|
||
},
|
||
"onboarding": {
|
||
"feature_files": "Файловий менеджер",
|
||
"feature_files_desc": "Переглядайте, завантажуйте, вивантажуйте та редагуйте файли через SFTP, не виходячи з програми."
|
||
},
|
||
"terminal": {
|
||
"runTitle": "Запуск {{command}} - {{host}}",
|
||
"terminalTitle": "Термінал - {{host}}",
|
||
"terminalWithPath": "Термінал - {{host}}:{{path}}"
|
||
},
|
||
"transfer": {
|
||
"browseFolders": "Перегляд папок призначення",
|
||
"browsePathError": "Не вдалося відкрити цей шлях на хості призначення.",
|
||
"browsePathWillBeCreated": "Цієї папки ще не існує. Вона буде створена, коли розпочнеться передача.",
|
||
"cancel": "Скасувати",
|
||
"cleanupDestFiles": "Прибирання місця призначення",
|
||
"cleanupDestFilesError": "Очищення не вдалося",
|
||
"cleanupDestFilesNothing": "Нічого прибирати на місці призначення",
|
||
"cleanupDestFilesPartial": "Не вдалося видалити деякі часткові файли",
|
||
"cleanupDestFilesSuccess": "Видалено часткові файли з місця призначення",
|
||
"confirmCopy": "Копіювати",
|
||
"confirmMove": "Перемістити",
|
||
"copyFolderToHost": "Копіювати папку на хост…",
|
||
"copyItemsToHost": "Копіювати елементи {{count}} для розміщення…",
|
||
"copyToHost": "Копіювати на хост…",
|
||
"destinationPath": "Шлях призначення",
|
||
"destMustBeDirectory": "Для перенесення кількох елементів місцем призначення має бути каталог",
|
||
"goUp": "Піднімися",
|
||
"hostAuthRequired": "Потрібна автентифікація. Спочатку відкрийте файловий менеджер на цьому хості.",
|
||
"hostConnecting": "Підключення…",
|
||
"hostConnectionFailed": "Помилка підключення",
|
||
"hostDisconnected": "Не підключено",
|
||
"hostReady": "Готовий",
|
||
"itemsSummary": "{{count}} елементів",
|
||
"jumpHostLimitation": "Обидва хости мають бути доступні з сервера Termix. Пряма маршрутизація між хостами не підтримується.",
|
||
"methodAuto": "Авто",
|
||
"methodAutoHint": "Вибирає tar-файл або SFTP для кожного файлу на основі кількості файлів, розміру та стискальності. Окремі файли завжди використовують потоковий SFTP.",
|
||
"methodItemSftp": "SFTP для кожного файлу",
|
||
"methodItemSftpHint": "Передавайте кожен файл окремо через SFTP. Працює на всіх хостах, включаючи Windows.",
|
||
"methodItemSftpLimitation": "Кожен файл використовує той самий потік SFTP, що й копія окремого файлу, послідовно. Прогрес об'єднується для всіх файлів, тому шкала рухається повільно під час роботи з великими файлами.",
|
||
"methodLabel": "Спосіб переказу",
|
||
"methodPreviewError": "Не вдалося переглянути метод передачі. Сервер все одно вибере метод під час запуску.",
|
||
"methodPreviewLoading": "Розрахунок методу переказу…",
|
||
"methodPreviewScanSummary": "{{fileCount}} файлів, {{totalSize}} всього (проскановано на вихідному хості).",
|
||
"methodPreviewWillUseItemSftp": "Буде використовуватися: SFTP для кожного файлу",
|
||
"methodPreviewWillUseTar": "Буде використано: архів Tar",
|
||
"methodReason": {
|
||
"user_item_sftp": "Ви обрали SFTP для кожного файлу.",
|
||
"user_tar": "Ви обрали tar-архів.",
|
||
"tar_unavailable": "Архів TAR недоступний на одному або обох хостах, тому замість нього буде використовуватися SFTP для кожного файлу.",
|
||
"windows_host": "Задіяний хост Windows, тому tar не використовується.",
|
||
"auto_multi_large": "Авто: кілька файлів, включаючи великий файл ({{largestSize}}) зі стислими даними. Tar об'єднує їх в одну передачу.",
|
||
"auto_single_large_in_archive": "Авто: один великий файл ({{largestSize}}) у цьому наборі, тому SFTP для кожного файлу.",
|
||
"auto_many_incompressible": "Авто: переважно нестисливі дані, тому SFTP для кожного файлу.",
|
||
"auto_many_files": "Авто: багато файлів ({{fileCount}}), tar зменшує накладні витрати на кожен файл.",
|
||
"auto_default": "Авто: SFTP для кожного файлу для цього набору."
|
||
},
|
||
"methodTar": "Архів Tar",
|
||
"methodTarHint": "Стиснення у вихідному коді, перенесення одного архіву, розпакування у кінцевому. Потрібен tar-архів на обох хостах Unix.",
|
||
"metricsCompress": "Стиснути у вихідному коді: {{duration}}",
|
||
"metricsExtract": "Вилучити в місці призначення: {{duration}}",
|
||
"metricsPrepare": "Підготувати пункт призначення: {{duration}}",
|
||
"metricsRouteBenchmark": "Зонд маршруту: прямий {{direct}}, ретрансляційний {{relay}}",
|
||
"metricsSourceDelete": "Видалити з джерела: {{duration}}",
|
||
"metricsTotal": "Всього: {{duration}}",
|
||
"metricsTransfer": "Від кінця до кінця: {{throughput}} ({{duration}})",
|
||
"metricsVerify": "SHA-256 перевірено: {{duration}}",
|
||
"moveFolderToHost": "Перемістити папку на хост…",
|
||
"moveItemsToHost": "Перемістити {{count}} елементів на хост…",
|
||
"moveToHost": "Перемістити на хост…",
|
||
"noHostsConnected": "Інших хостів файлових менеджерів немає.",
|
||
"noHostsConnectedHint": "Додайте ще один SSH-хост з увімкненим файловим менеджером у Host Manager.",
|
||
"parallelSegmentsHint": "Великі файли розділяються на фрагменти по 256 МБ. Кілька ліній використовують окремі з’єднання (наприклад, запуск кількох передач) для підвищення загальної пропускної здатності.",
|
||
"parallelSegmentsLabel": "Паралельні пересадочні смуги",
|
||
"parallelSegmentsOption": "{{count}} смуги",
|
||
"progressBenchmarking": "Вибір найшвидшого маршруту пересадки…",
|
||
"progressBytes": "{{transferred}} / {{total}}",
|
||
"progressCancel": "Скасувати",
|
||
"progressCancelling": "Скасування…",
|
||
"progressCompressing": "Стиснення на вихідному хості…",
|
||
"progressExtracting": "Видобування в місці призначення…",
|
||
"progressItems": "{{current}} / {{total}} файли",
|
||
"progressReconnecting": "Повторне підключення…",
|
||
"progressStalled": "Зупинився",
|
||
"progressTotalSpeed": "{{speed}} всього ({{lanes}} смуг)",
|
||
"progressTransferring": "Передача даних…",
|
||
"progressTransferringItems": "Передача файлів ({{current}} з {{total}})…",
|
||
"progressVerifying": "Перевірка цілісності файлу…",
|
||
"recentDestinations": "Нещодавні напрямки",
|
||
"resumedHint": "Повторне підключення до активної передачі, розпочатої в іншому вікні.",
|
||
"retryTransfer": "Повторити спробу",
|
||
"retryTransferError": "Повторна спроба не вдалася",
|
||
"selectDestinationHost": "Виберіть хост призначення",
|
||
"transferCancelled": "Переказ скасовано",
|
||
"transferCancelledCopyHint": "Часткові файли можуть залишатися на місці призначення.",
|
||
"transferCancelledMoveHint": "Часткові файли можуть залишатися в місці призначення. Вихідні файли не видалено.",
|
||
"transferError": "Передача не вдалася",
|
||
"transferFailedRetryHint": "На місці призначення збережено частку даних. Повторна спроба відновиться після відновлення з’єднання.",
|
||
"transferPartialHint": "Не вдалося перенести: {{paths}}",
|
||
"transferSuccess": "Перенесення завершено",
|
||
"metricsHopSourceRead": "Джерело → сервер: {{throughput}}",
|
||
"metricsHopDestSftpWrite": "Сервер → призначення (SFTP): {{throughput}}",
|
||
"metricsHopDestLocalWrite": "Сервер → призначення (локальний): {{throughput}}"
|
||
},
|
||
"plugin": {
|
||
"name": "File Manager"
|
||
}
|
||
}
|