Wherry/frontend/js/i18n/en.js
loki5512344 e188fbef36
feat: FTPS, AppError, Site Manager, tests, multi-window, auto-clear, CI/CD, virtual scroll
- 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
2026-07-11 00:04:13 +02:00

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",
},
};