- FTPS: реализован FtpsClient через suppaftp + async-native-tls - AppError: кастомный enum с Serialize вместо Result<T, String> - Site Manager UI: создание/редактирование/удаление сайтов - Тесты: 53 тестов (domain, storage, transfer, fs, remote) - Multi-window: новое окно + сохранение геометрии - Auto-clear: воркер чистит завершённые задачи по таймеру - CI/CD: 3-ступенчатый пайплайн (lint→build→test) с кэшированием - Virtual scroll: fileTable с рендером только видимых строк - UI: исправлены close-кнопки, color-scheme для select, скриншоты в README
202 lines
6.2 KiB
JavaScript
202 lines
6.2 KiB
JavaScript
// English strings — the fallback locale. Every other locale (see i18n.js
|
|
// `dictionaries` map) only needs to cover the keys it wants to override;
|
|
// missing keys fall back to this file automatically.
|
|
export default {
|
|
common: {
|
|
open: "Open",
|
|
rename: "Rename",
|
|
delete: "Delete",
|
|
refresh: "Refresh",
|
|
settings: "Settings",
|
|
history: "History",
|
|
edit: "Edit",
|
|
save: "Save",
|
|
cancel: "Cancel",
|
|
ok: "OK",
|
|
copyPath: "Copy path",
|
|
newFolder: "New folder",
|
|
upload: "Upload",
|
|
download: "Download",
|
|
},
|
|
toolbar: {
|
|
newConnection: "New Connection",
|
|
queueLabel: "Queue",
|
|
uploadQueued: "Queued upload: {name}",
|
|
downloadQueued: "Queued download: {name}",
|
|
uploadQueuedMulti: "Queued {n} uploads",
|
|
downloadQueuedMulti: "Queued {n} downloads",
|
|
},
|
|
welcome: {
|
|
subtitle: "FTP / SFTP client",
|
|
newConnection: "New Connection",
|
|
recentConnections: "Recent connections",
|
|
savedSites: "Saved sites",
|
|
},
|
|
connect: {
|
|
title: "New Connection",
|
|
host: "Host",
|
|
username: "Username",
|
|
port: "Port",
|
|
password: "Password",
|
|
keyHint: "Leave empty to sign in with an SSH key (agent or ~/.ssh).",
|
|
keyFile: "Key file (optional)",
|
|
browse: "Browse…",
|
|
label: "Label (optional)",
|
|
connect: "Connect",
|
|
connecting: "Connecting…",
|
|
errorHost: "Host is required.",
|
|
errorUser: "Username is required.",
|
|
errorPort: "Port must be a number between 1 and 65535.",
|
|
},
|
|
history: {
|
|
recentConnections: "Recent connections",
|
|
noHistory: "No connection history yet",
|
|
},
|
|
panels: {
|
|
localLabel: "LOCAL",
|
|
remoteLabel: "REMOTE — {host}",
|
|
loading: "Loading…",
|
|
countItems: "{n} items",
|
|
colName: "Name",
|
|
colModified: "Modified",
|
|
colType: "Type",
|
|
colSize: "Size",
|
|
typeDir: "Folder",
|
|
typeFile: "File",
|
|
typeLink: "Link",
|
|
pathCopied: "Path copied",
|
|
sidebarDrives: "Drives",
|
|
sidebarBookmarks: "Bookmarks",
|
|
sidebarRoot: "Root",
|
|
sidebarRemoveBookmark: "Remove bookmark",
|
|
bookmarkThisFolder: "Bookmark this folder",
|
|
addToBookmarks: "Add to bookmarks",
|
|
alreadyBookmarked: "Already bookmarked",
|
|
bookmarkAdded: "Bookmark added",
|
|
uploadToServer: "Upload to server",
|
|
downloadToLocal: "Download to local",
|
|
notConnected: "Not connected",
|
|
movingFile: "Moving {name}…",
|
|
movingFiles: "Moving {n} items…",
|
|
moved: "Moved {n} items",
|
|
moveFailedCount: "{n} items failed to move",
|
|
deleted: "Deleted {n} items",
|
|
deleteFailedCount: "{n} items failed to delete",
|
|
cannotMoveCrossConnection: "Can't move files between different connections",
|
|
noActiveConnection: "No active connection",
|
|
opening: "Opening {name}…",
|
|
},
|
|
queue: {
|
|
title: "{n} transfers",
|
|
doneSuffix: "{done}/{total} done",
|
|
failedSuffix: "{n} failed",
|
|
empty: "No transfers yet",
|
|
stateQueued: "Queued",
|
|
stateUploading: "Uploading",
|
|
stateDownloading: "Downloading",
|
|
stateComplete: "Complete",
|
|
stateFailed: "Failed",
|
|
statePaused: "Paused",
|
|
stateCancelled: "Cancelled",
|
|
stateRetrying: "Retrying",
|
|
},
|
|
status: {
|
|
notConnected: "Not connected",
|
|
},
|
|
dialogs: {
|
|
newFolderTitle: "New Folder",
|
|
newFolderPlaceholder: "Folder name",
|
|
renameTitle: "Rename",
|
|
renamePlaceholder: "New name",
|
|
deleteTitle: "Delete {name}?",
|
|
deleteTitleMulti: "Delete {n} items?",
|
|
deleteBody: "This can't be undone.",
|
|
},
|
|
siteManager: {
|
|
title: "Site Manager",
|
|
addSite: "Add Site",
|
|
editSite: "Edit Site",
|
|
name: "Name",
|
|
protocol: "Protocol",
|
|
keyHint: "Only used for SFTP connections.",
|
|
folder: "Remote folder (optional)",
|
|
note: "Note (optional)",
|
|
saving: "Saving…",
|
|
saved: "Site saved",
|
|
confirmDelete: 'Delete "{name}"?',
|
|
noSites: "No saved sites yet.",
|
|
manageSites: "Manage Sites",
|
|
editSiteHover: "Edit this site",
|
|
},
|
|
settings: {
|
|
title: "Settings",
|
|
navGeneral: "General",
|
|
navAppearance: "Appearance",
|
|
navConnections: "Connections",
|
|
navHistory: "History",
|
|
navSecurity: "Security",
|
|
navTransfers: "Transfers",
|
|
navAbout: "About",
|
|
|
|
confirmDelete: "Confirm before delete",
|
|
confirmDeleteHint: "Ask before deleting files or folders, locally or on the server.",
|
|
language: "Language",
|
|
languageHint: "Interface language.",
|
|
startupFolder: "Startup folder",
|
|
startupFolderHint: "Local pane opens here when Wherry starts.",
|
|
homeDirectory: "Home directory",
|
|
useCurrentFolder: "Use current folder",
|
|
resetToHome: "Reset to home",
|
|
|
|
appearanceHint: "Toggle which parts of the window are visible.",
|
|
theme: "Theme",
|
|
themeHint: "Choose the application colour scheme.",
|
|
themeEmber: "Ember — Dark · Copper",
|
|
themeFrost: "Frost — Light · Blue",
|
|
themeMidnight: "Midnight — Dark · Indigo",
|
|
themeForest: "Forest — Dark · Green",
|
|
themeDawn: "Dawn — Light · Peach",
|
|
themeAsh: "Ash — High-contrast Dark · Neutral",
|
|
toolbar: "Toolbar",
|
|
sidebar: "Sidebar",
|
|
statusBar: "Status bar",
|
|
transferQueue: "Transfer queue",
|
|
|
|
sites: "Saved sites",
|
|
noSites: "No saved sites yet",
|
|
deleteSiteHover: "Remove this site",
|
|
removedSite: "Removed {name}",
|
|
bookmarksTitle: "Bookmarks",
|
|
noBookmarks: "No bookmarks yet",
|
|
bookmarkRemoved: "Bookmark removed",
|
|
|
|
historyTitle: "Connection history",
|
|
historyEmpty: "No connection history yet",
|
|
confirmClear: "Clear all connection history? This can't be undone.",
|
|
clearAll: "Clear all history",
|
|
deleteAll: "Delete all",
|
|
cleared: "History cleared",
|
|
|
|
securityHint:
|
|
"Passwords are stored in Wherry's local database.",
|
|
noConnections: "No saved connections",
|
|
forgetPasswordHover: "Forget saved password",
|
|
passwordForgotten: "Password forgotten",
|
|
forgetAll: "Forget all saved passwords",
|
|
allForgotten: "All saved passwords forgotten",
|
|
|
|
concurrentTitle: "Concurrent transfers",
|
|
concurrentHint: "How many uploads/downloads can run at the same time.",
|
|
autoRemoveTitle: "Auto-clear completed transfers",
|
|
autoRemoveHint: "Automatically remove finished transfers from the queue.",
|
|
never: "Never",
|
|
tenSec: "10s",
|
|
thirtySec: "30s",
|
|
oneMin: "1 min",
|
|
|
|
version: "Version",
|
|
license: "License",
|
|
database: "Database",
|
|
revealInFolder: "Reveal in folder",
|
|
},
|
|
};
|