@termix-ssh/plugin-sdk 1.0.4 → 1.0.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +17 -0
- package/PLUGIN-GUIDE.md +780 -0
- package/README.md +2 -1
- package/cli/commands/build.mjs +7 -7
- package/cli/commands/migrations.mjs +2 -2
- package/cli/commands/validate.mjs +5 -0
- package/cli/index.mjs +0 -0
- package/dist/changelog.d.ts +3 -1
- package/dist/changelog.js +12 -2
- package/dist/db.d.ts +1 -1
- package/dist/db.js +1 -1
- package/dist/ddl.js +4 -1
- package/dist/host/{chunk-RU4E5XLY.js → chunk-26DAYAKC.js} +323 -216
- package/dist/host/{chunk-O2OHNVFX.js → chunk-DIOJ3KW2.js} +1 -1
- package/dist/host/{chunk-F5RZH6HE.js → chunk-NZG6HNQH.js} +14 -13
- package/dist/host/core-classes.json +1 -1
- package/dist/host/{linked-server-4VWYYABP.js → linked-server-QAKKDBFM.js} +1 -1
- package/dist/host/{rbac-api-WIJVZH3M.js → rbac-api-5267EMX7.js} +1 -1
- package/dist/host/testing-host.js +3 -3
- package/dist/host/types/src/types/credential-sidebar-preferences.d.ts +1 -1
- package/dist/host/types/src/types/onboarding.d.ts +1 -0
- package/dist/host/types/src/ui/api/plugins-api.d.ts +51 -0
- package/dist/host/types/src/ui/components/panel-layout.d.ts +0 -4
- package/dist/host/types/src/ui/hooks/use-mobile.d.ts +1 -0
- package/dist/host/types/src/ui/i18n/i18n.d.ts +1 -36
- package/dist/host/types/src/ui/i18n/languages.d.ts +13 -0
- package/dist/host/types/src/ui/lib/error-message.d.ts +1 -1
- package/dist/host/types/src/ui/lib/host-key-fingerprint.d.ts +5 -0
- package/dist/host/types/src/ui/lib/server-time.d.ts +5 -0
- package/dist/host/types/src/ui/main-axios.d.ts +5 -2
- package/dist/host/types/src/ui/ssh/dialogs/HostKeyVerificationDialog.d.ts +1 -1
- package/dist/host/ui.js +439 -69
- package/dist/host/{use-permissions-KIQCJ35M.js → use-permissions-2P2TP6GY.js} +1 -1
- package/dist/host-commands.js +1 -1
- package/package.json +14 -1
|
@@ -2,7 +2,7 @@ const __termixNoGlob = () => ({});
|
|
|
2
2
|
import {
|
|
3
3
|
hasPermission,
|
|
4
4
|
usePermissions
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-DIOJ3KW2.js";
|
|
6
6
|
import {
|
|
7
7
|
PRESETS,
|
|
8
8
|
SYNC_CHANGED_EVENT,
|
|
@@ -39,7 +39,7 @@ import {
|
|
|
39
39
|
usePluginStore,
|
|
40
40
|
useTabTypes,
|
|
41
41
|
websocketAuthProtocols
|
|
42
|
-
} from "./chunk-
|
|
42
|
+
} from "./chunk-NZG6HNQH.js";
|
|
43
43
|
import {
|
|
44
44
|
__export,
|
|
45
45
|
define_import_meta_env_default
|
|
@@ -49009,7 +49009,10 @@ var docs_pages_default = {
|
|
|
49009
49009
|
plugins: "guide/plugins",
|
|
49010
49010
|
pluginCatalog: "plugins",
|
|
49011
49011
|
cli: "cli",
|
|
49012
|
-
develop: "develop"
|
|
49012
|
+
develop: "develop",
|
|
49013
|
+
communityRegistry: "develop/community-registry",
|
|
49014
|
+
pluginRegistries: "guide/plugins#registries",
|
|
49015
|
+
hostRegistry: "develop/registries"
|
|
49013
49016
|
};
|
|
49014
49017
|
|
|
49015
49018
|
// src/ui/lib/docs.ts
|
|
@@ -49232,7 +49235,7 @@ function withAnchor(url, anchor) {
|
|
|
49232
49235
|
}
|
|
49233
49236
|
|
|
49234
49237
|
// src/ui/components/panel-layout.tsx
|
|
49235
|
-
import { Children as Children5, Fragment as Fragment11, useRef as useRef28 } from "react";
|
|
49238
|
+
import { Children as Children5, Fragment as Fragment11, isValidElement as isValidElement2, useRef as useRef28 } from "react";
|
|
49236
49239
|
import { useTranslation as useTranslation3 } from "react-i18next";
|
|
49237
49240
|
import { Fragment as Fragment12, jsx as jsx31, jsxs as jsxs8 } from "react/jsx-runtime";
|
|
49238
49241
|
var PANEL = {
|
|
@@ -49515,11 +49518,16 @@ function ToggleButton({
|
|
|
49515
49518
|
}
|
|
49516
49519
|
);
|
|
49517
49520
|
}
|
|
49521
|
+
function flattenFacts(children) {
|
|
49522
|
+
return Children5.toArray(children).flatMap(
|
|
49523
|
+
(child) => isValidElement2(child) && child.type === Fragment11 ? flattenFacts(child.props.children) : [child]
|
|
49524
|
+
);
|
|
49525
|
+
}
|
|
49518
49526
|
function Facts({
|
|
49519
49527
|
className,
|
|
49520
49528
|
children
|
|
49521
49529
|
}) {
|
|
49522
|
-
const items =
|
|
49530
|
+
const items = flattenFacts(children);
|
|
49523
49531
|
if (items.length === 0) return null;
|
|
49524
49532
|
return /* @__PURE__ */ jsx31("span", { className: cn("flex min-w-0 items-center gap-2", className), children: items.map((child, i) => /* @__PURE__ */ jsxs8(Fragment11, { children: [
|
|
49525
49533
|
i > 0 && /* @__PURE__ */ jsx31("span", { "aria-hidden": true, className: "h-3 w-px shrink-0 bg-border" }),
|
|
@@ -50473,12 +50481,8 @@ var en_default = {
|
|
|
50473
50481
|
offline: "Offline",
|
|
50474
50482
|
unknown: "Unknown",
|
|
50475
50483
|
continue: "Continue",
|
|
50476
|
-
maintenance: "Maintenance",
|
|
50477
|
-
degraded: "Degraded",
|
|
50478
50484
|
error: "Error",
|
|
50479
|
-
warning: "Warning",
|
|
50480
50485
|
unsavedChanges: "Unsaved changes",
|
|
50481
|
-
dismiss: "Dismiss",
|
|
50482
50486
|
more: "More",
|
|
50483
50487
|
loading: "Loading...",
|
|
50484
50488
|
host: "Host",
|
|
@@ -50488,15 +50492,7 @@ var en_default = {
|
|
|
50488
50492
|
connect: "Connect",
|
|
50489
50493
|
copied: "Copied",
|
|
50490
50494
|
connecting: "Connecting...",
|
|
50491
|
-
updateAvailable: "Update Available",
|
|
50492
|
-
appName: "Termix",
|
|
50493
50495
|
openInNewTab: "Open in New Tab",
|
|
50494
|
-
noReleases: "No Releases",
|
|
50495
|
-
updatesAndReleases: "Updates & Releases",
|
|
50496
|
-
newVersionAvailable: "A new version ({{version}}) is available.",
|
|
50497
|
-
failedToFetchUpdateInfo: "Failed to fetch update information",
|
|
50498
|
-
preRelease: "Pre-release",
|
|
50499
|
-
noReleasesFound: "No releases found.",
|
|
50500
50496
|
cancel: "Cancel",
|
|
50501
50497
|
username: "Username",
|
|
50502
50498
|
login: "Login",
|
|
@@ -50511,15 +50507,10 @@ var en_default = {
|
|
|
50511
50507
|
rename: "Rename",
|
|
50512
50508
|
edit: "Edit",
|
|
50513
50509
|
confirm: "Confirm",
|
|
50514
|
-
no: "No",
|
|
50515
|
-
or: "OR",
|
|
50516
50510
|
next: "Next",
|
|
50517
50511
|
previous: "Previous",
|
|
50518
50512
|
refresh: "Refresh",
|
|
50519
50513
|
language: "Language",
|
|
50520
|
-
checking: "Checking...",
|
|
50521
|
-
checkingDatabase: "Checking database connection...",
|
|
50522
|
-
checkingAuthentication: "Checking authentication...",
|
|
50523
50514
|
backendReconnected: "Server connection restored",
|
|
50524
50515
|
connectionDegraded: "Server connection lost, recovering\u2026",
|
|
50525
50516
|
reload: "Reload",
|
|
@@ -50528,12 +50519,6 @@ var en_default = {
|
|
|
50528
50519
|
copyFailed: "Failed to copy to clipboard",
|
|
50529
50520
|
maximize: "Maximize",
|
|
50530
50521
|
restore: "Restore",
|
|
50531
|
-
of: "of",
|
|
50532
|
-
saved: "Saved",
|
|
50533
|
-
deleted: "Deleted",
|
|
50534
|
-
deleteFailed: "Failed to delete",
|
|
50535
|
-
saveFailed: "Failed to save",
|
|
50536
|
-
required: "Required",
|
|
50537
50522
|
remove: "Remove",
|
|
50538
50523
|
add: "Add",
|
|
50539
50524
|
update: "Update",
|
|
@@ -50555,8 +50540,8 @@ var en_default = {
|
|
|
50555
50540
|
skip: "Skip setup",
|
|
50556
50541
|
next: "Next",
|
|
50557
50542
|
finish: "Done",
|
|
50558
|
-
pluginsTitle: "Choose your
|
|
50559
|
-
pluginsIntro: "Pick the
|
|
50543
|
+
pluginsTitle: "Choose your plugins",
|
|
50544
|
+
pluginsIntro: "Pick the plugins to keep. The recommended ones cover what most people need.",
|
|
50560
50545
|
pluginsUpgradeNote: "Everything you use now is kept as it is. Turn off or remove what you do not need.",
|
|
50561
50546
|
pluginsRemoveNote: "Plugins set to Remove are deleted from this server, with their data, when you continue. You can install any of them again at any time from the Plugins tab (this needs an internet connection). Pick Off to keep a plugin installed but turned off.",
|
|
50562
50547
|
pluginsUseRecommended: "Recommended",
|
|
@@ -50590,22 +50575,45 @@ var en_default = {
|
|
|
50590
50575
|
desktopLinked: "Linked to {{server}}",
|
|
50591
50576
|
pluginsDocsLink: "Read about each one"
|
|
50592
50577
|
},
|
|
50578
|
+
desktopUpdates: {
|
|
50579
|
+
title: "Desktop app",
|
|
50580
|
+
mode: "Updates",
|
|
50581
|
+
modeHint: "How this app gets new versions.",
|
|
50582
|
+
manualModeHint: "This copy can not update itself, so Termix only tells you when a new version is out.",
|
|
50583
|
+
modeAutomatic: "Automatic",
|
|
50584
|
+
modePrompt: "Ask first",
|
|
50585
|
+
modeNever: "Never",
|
|
50586
|
+
automaticBody: "Download new versions in the background and install them when you restart.",
|
|
50587
|
+
promptBody: "Tell me when a new version is out and let me choose when to download it.",
|
|
50588
|
+
neverBody: "Do not check for updates. You can still check by hand in Settings.",
|
|
50589
|
+
onboardingTitle: "App updates",
|
|
50590
|
+
onboardingBody: "The desktop app can now update itself. Pick how you want new versions to arrive. You can change this later in Settings, Updates.",
|
|
50591
|
+
onboardingManual: "This copy of the app was installed in a way that can not update itself, so Termix will tell you when a new version is out with a link to download it.",
|
|
50592
|
+
status: "Version {{version}}",
|
|
50593
|
+
statusIdle: "Not checked yet",
|
|
50594
|
+
statusChecking: "Checking for updates",
|
|
50595
|
+
statusAvailable: "Version {{version}} is available",
|
|
50596
|
+
statusDownloading: "Downloading {{version}} ({{progress}}%)",
|
|
50597
|
+
statusReady: "Version {{version}} is ready. Restart to install it.",
|
|
50598
|
+
statusUpToDate: "You have the newest version",
|
|
50599
|
+
statusError: "Could not check for updates. Try again later.",
|
|
50600
|
+
checkNow: "Check now",
|
|
50601
|
+
download: "Download",
|
|
50602
|
+
restart: "Restart now",
|
|
50603
|
+
later: "Later",
|
|
50604
|
+
available: "Termix {{version}} is available",
|
|
50605
|
+
manualHint: "Download it from the release page and install it over this one.",
|
|
50606
|
+
ready: "Termix {{version}} is ready to install",
|
|
50607
|
+
readyHint: "It installs the next time Termix restarts."
|
|
50608
|
+
},
|
|
50593
50609
|
nav: {
|
|
50594
50610
|
home: "Home",
|
|
50595
50611
|
terminal: "Terminal",
|
|
50596
|
-
fileManager: "File Manager",
|
|
50597
|
-
serverStats: "Host Metrics",
|
|
50598
|
-
admin: "Admin",
|
|
50599
|
-
userProfile: "User Profile",
|
|
50600
|
-
confirmClose: "Close this active session?",
|
|
50601
50612
|
close: "Close",
|
|
50602
|
-
cancel: "Cancel",
|
|
50603
|
-
sshManager: "SSH Manager",
|
|
50604
50613
|
hostTabTitle: "{{username}}@{{ip}}:{{port}}",
|
|
50605
50614
|
copyPassword: "Copy Password",
|
|
50606
50615
|
copySudoPassword: "Copy Sudo Password",
|
|
50607
50616
|
passwordCopied: "Password copied to clipboard",
|
|
50608
|
-
noPasswordAvailable: "No password available",
|
|
50609
50617
|
failedToCopyPassword: "Failed to copy password",
|
|
50610
50618
|
refreshTab: "Refresh connection",
|
|
50611
50619
|
renameTab: "Rename tab",
|
|
@@ -50616,13 +50624,7 @@ var en_default = {
|
|
|
50616
50624
|
openInRightDock: "Open in right dock",
|
|
50617
50625
|
closeRightDock: "Close right dock",
|
|
50618
50626
|
toggleRightDock: "Toggle right dock",
|
|
50619
|
-
multiPanelHintTitle: "Work with more than one panel",
|
|
50620
|
-
multiPanelHintBody: "Keep this panel open while the sidebar is used for something else. Two ways to move it:",
|
|
50621
|
-
multiPanelHintTabHow: "Ctrl+click its rail icon, or use the button in this header.",
|
|
50622
|
-
multiPanelHintDockHow: "Right-click its rail icon, or use the panel icon in the tab bar.",
|
|
50623
|
-
sidebarSettings: "Sidebar Settings...",
|
|
50624
50627
|
hosts: "Hosts",
|
|
50625
|
-
hostManager: "Host Manager",
|
|
50626
50628
|
credentials: "Credentials",
|
|
50627
50629
|
connections: "Connections",
|
|
50628
50630
|
keepSideMenuOpen: "Keep Menu Open",
|
|
@@ -50651,7 +50653,8 @@ var en_default = {
|
|
|
50651
50653
|
},
|
|
50652
50654
|
searchEverything: "Search hosts, tabs and actions",
|
|
50653
50655
|
search: "Search",
|
|
50654
|
-
|
|
50656
|
+
hiddenCount_one: "{{count}} hidden",
|
|
50657
|
+
hiddenCount_other: "{{count}} hidden",
|
|
50655
50658
|
showInRail: "Show in sidebar",
|
|
50656
50659
|
moveUp: "Move up",
|
|
50657
50660
|
moveDown: "Move down",
|
|
@@ -50715,7 +50718,8 @@ var en_default = {
|
|
|
50715
50718
|
unsavedChangesDescription: "Your host changes have not been saved. Discard them?",
|
|
50716
50719
|
keepEditing: "Keep editing",
|
|
50717
50720
|
discardChanges: "Discard changes",
|
|
50718
|
-
|
|
50721
|
+
movedToFolder_one: 'Moved {{count}} host to "{{folder}}"',
|
|
50722
|
+
movedToFolder_other: 'Moved {{count}} hosts to "{{folder}}"',
|
|
50719
50723
|
editHostTooltip: "Edit host",
|
|
50720
50724
|
behavior: "Behavior",
|
|
50721
50725
|
scrollbackBuffer: "Scrollback Buffer",
|
|
@@ -50916,7 +50920,8 @@ var en_default = {
|
|
|
50916
50920
|
collapseSubHosts: "Collapse sub-hosts",
|
|
50917
50921
|
expandSubHosts: "Expand sub-hosts",
|
|
50918
50922
|
cannotNestUnderDescendant: "Can't nest a host under its own sub-host",
|
|
50919
|
-
|
|
50923
|
+
movedToParent_one: 'Moved {{count}} host under "{{parent}}"',
|
|
50924
|
+
movedToParent_other: 'Moved {{count}} hosts under "{{parent}}"',
|
|
50920
50925
|
newFolder: "New folder",
|
|
50921
50926
|
createFolderTitle: "Create folder",
|
|
50922
50927
|
editFolderTitle: "Edit folder",
|
|
@@ -50944,7 +50949,8 @@ var en_default = {
|
|
|
50944
50949
|
folderSaved: "Folder saved",
|
|
50945
50950
|
failedToSaveFolder: "Failed to save folder",
|
|
50946
50951
|
folderDeleted: 'Deleted folder "{{name}}"',
|
|
50947
|
-
|
|
50952
|
+
deleteFolderConfirm_one: 'Delete "{{name}}" and its {{count}} host? This cannot be undone.',
|
|
50953
|
+
deleteFolderConfirm_other: 'Delete "{{name}}" and its {{count}} hosts? This cannot be undone.',
|
|
50948
50954
|
failedToMoveHosts: "Failed to move hosts",
|
|
50949
50955
|
failedToReorder: "Failed to reorder",
|
|
50950
50956
|
expandAll: "Expand all folders",
|
|
@@ -50994,8 +51000,8 @@ var en_default = {
|
|
|
50994
51000
|
showPinIconDesc: "Show a pin next to pinned hosts.",
|
|
50995
51001
|
showSharedBadge: "Shared badge",
|
|
50996
51002
|
showSharedBadgeDesc: "Show a badge on hosts shared with you.",
|
|
50997
|
-
showBadges: "
|
|
50998
|
-
showBadgesDesc: "Show badges that
|
|
51003
|
+
showBadges: "Plugin badges",
|
|
51004
|
+
showBadgesDesc: "Show badges that plugins add next to the host name.",
|
|
50999
51005
|
hostClickBehavior: "Clicking a host",
|
|
51000
51006
|
hostClickBehaviorDesc: 'What happens when you click a host that already has an open tab. Ctrl/Cmd click, middle click, or "Open in new tab" always start a new one.',
|
|
51001
51007
|
hostClickNewTab: "Always open a new tab",
|
|
@@ -51012,7 +51018,8 @@ var en_default = {
|
|
|
51012
51018
|
copyLink: "Copy Link",
|
|
51013
51019
|
deleteCredentialConfirm: 'Delete credential "{{name}}"?',
|
|
51014
51020
|
deletedCredential: "Deleted {{name}}",
|
|
51015
|
-
|
|
51021
|
+
deleteHostsConfirm_one: "Delete {{count}} host? This cannot be undone.",
|
|
51022
|
+
deleteHostsConfirm_other: "Delete {{count}} hosts? This cannot be undone.",
|
|
51016
51023
|
movedToRoot: "Moved to root",
|
|
51017
51024
|
addTagsPlaceholder: "Add tags...",
|
|
51018
51025
|
authDetails: "Authentication Details",
|
|
@@ -51068,10 +51075,11 @@ var en_default = {
|
|
|
51068
51075
|
groupTags: "Tags & pin",
|
|
51069
51076
|
groupProxy: "Proxy",
|
|
51070
51077
|
groupJumpHosts: "Jump hosts",
|
|
51071
|
-
groupFeatureFlags: "
|
|
51078
|
+
groupFeatureFlags: "Plugin settings",
|
|
51072
51079
|
groupAdvanced: "Advanced config",
|
|
51073
51080
|
preview: "Preview",
|
|
51074
|
-
|
|
51081
|
+
moreHosts_one: "... {{count}} more host",
|
|
51082
|
+
moreHosts_other: "... {{count}} more hosts",
|
|
51075
51083
|
summary: "{{selected}} of {{total}} hosts",
|
|
51076
51084
|
credentialsIncluded: "credentials included",
|
|
51077
51085
|
credentialsExcluded: "credentials excluded",
|
|
@@ -51084,16 +51092,20 @@ var en_default = {
|
|
|
51084
51092
|
sampleDownloaded: "Sample file downloaded",
|
|
51085
51093
|
failedToDeleteCredential2: "Failed to delete credential",
|
|
51086
51094
|
noFolderOption: "(No folder)",
|
|
51087
|
-
|
|
51088
|
-
|
|
51095
|
+
nSelected_one: "{{count}} selected",
|
|
51096
|
+
nSelected_other: "{{count}} selected",
|
|
51097
|
+
featuresMenu: "Plugins",
|
|
51089
51098
|
moveMenu: "Move",
|
|
51090
51099
|
connectSelected: "Connect",
|
|
51091
51100
|
cancelSelection: "Cancel",
|
|
51092
|
-
|
|
51093
|
-
|
|
51101
|
+
deletedCount_one: "Deleted {{count}} host",
|
|
51102
|
+
deletedCount_other: "Deleted {{count}} hosts",
|
|
51103
|
+
failedToDeleteCount_one: "Failed to delete {{count}} host",
|
|
51104
|
+
failedToDeleteCount_other: "Failed to delete {{count}} hosts",
|
|
51094
51105
|
duplicatedHost: 'Duplicated "{{name}}"',
|
|
51095
51106
|
failedToDuplicateHost: "Failed to duplicate host",
|
|
51096
|
-
|
|
51107
|
+
updatedCount_one: "Updated {{count}} host",
|
|
51108
|
+
updatedCount_other: "Updated {{count}} hosts",
|
|
51097
51109
|
friendlyNameLabel: "Friendly Name",
|
|
51098
51110
|
descriptionLabel: "Description",
|
|
51099
51111
|
loadingHosts: "Loading hosts...",
|
|
@@ -51101,6 +51113,7 @@ var en_default = {
|
|
|
51101
51113
|
noHostsYet: "No hosts yet",
|
|
51102
51114
|
noHostsYetHint: "Add a server to open terminals, browse files and see metrics.",
|
|
51103
51115
|
noHostsMatchSearch: "No hosts match your search",
|
|
51116
|
+
noHostSelected: "Pick a host to open this.",
|
|
51104
51117
|
searchHosts: "Search hosts...",
|
|
51105
51118
|
sortHosts: "Sort Hosts",
|
|
51106
51119
|
sortDefault: "Default Order",
|
|
@@ -51132,7 +51145,8 @@ var en_default = {
|
|
|
51132
51145
|
shareHostTitle: "Share: {{name}}",
|
|
51133
51146
|
shareFolder: "Share Folder",
|
|
51134
51147
|
shareFolderTitle: "Share folder: {{name}}",
|
|
51135
|
-
|
|
51148
|
+
folderSharedSuccessfully_one: "Shared {{count}} host in folder",
|
|
51149
|
+
folderSharedSuccessfully_other: "Shared {{count}} hosts in folder",
|
|
51136
51150
|
failedToShareFolder: "Failed to share folder",
|
|
51137
51151
|
sharing: {
|
|
51138
51152
|
loadError: "Failed to load sharing data. Please try again.",
|
|
@@ -51226,12 +51240,12 @@ var en_default = {
|
|
|
51226
51240
|
authFieldsAfterSave: "Save the host first, then fill in these fields.",
|
|
51227
51241
|
enablePluginFeature: "Enable {{name}}",
|
|
51228
51242
|
disablePluginFeature: "Disable {{name}}",
|
|
51229
|
-
filterFeaturesGroup: "
|
|
51243
|
+
filterFeaturesGroup: "Plugins",
|
|
51230
51244
|
localOnly: "Keep on this device only",
|
|
51231
51245
|
localOnlyDesc: "This host is not sent to the server and does not appear on your other devices.",
|
|
51232
51246
|
folderLocalOnly: "Keep on this device only",
|
|
51233
51247
|
folderLocalOnlyDesc: "This folder and every host in it stay on this device and are not sent to the server.",
|
|
51234
|
-
sudoPasswordDesc: "Used when the terminal fills a sudo prompt, and by
|
|
51248
|
+
sudoPasswordDesc: "Used when the terminal fills a sudo prompt, and by plugins that run commands with sudo.",
|
|
51235
51249
|
editorCancel: "Cancel",
|
|
51236
51250
|
editorSaving: "Saving...",
|
|
51237
51251
|
editorUpdate: "Update Host",
|
|
@@ -51248,23 +51262,15 @@ var en_default = {
|
|
|
51248
51262
|
quickActions: "Quick Actions",
|
|
51249
51263
|
navigation: "Navigation",
|
|
51250
51264
|
orShortcut: "or",
|
|
51251
|
-
hostManager: "Host Manager",
|
|
51252
|
-
hostManagerDesc: "Manage, add, or edit hosts",
|
|
51253
51265
|
addNewHost: "Add New Host",
|
|
51254
|
-
addNewHostDesc: "Register a new host",
|
|
51255
51266
|
adminSettings: "Admin Settings",
|
|
51256
|
-
adminSettingsDesc: "Configure system preferences and users",
|
|
51257
|
-
userProfile: "User Profile",
|
|
51258
|
-
userProfileDesc: "Manage your account and preferences",
|
|
51259
51267
|
addCredential: "Add Credential",
|
|
51260
|
-
addCredentialDesc: "Store SSH keys or passwords",
|
|
51261
51268
|
recentActivity: "Recent Activity",
|
|
51262
51269
|
serversAndHosts: "Servers & Hosts",
|
|
51263
51270
|
noHostsFound: 'No hosts found matching "{{search}}"',
|
|
51264
51271
|
links: "Links",
|
|
51265
51272
|
navigate: "Navigate",
|
|
51266
51273
|
select: "Select",
|
|
51267
|
-
toggleWith: "Toggle with",
|
|
51268
51274
|
pluginActions: "More actions",
|
|
51269
51275
|
noTargetTab: "No terminal tab is open",
|
|
51270
51276
|
documentation: "Documentation"
|
|
@@ -51299,8 +51305,8 @@ var en_default = {
|
|
|
51299
51305
|
unsplit: "Unsplit",
|
|
51300
51306
|
layouts: "Layouts",
|
|
51301
51307
|
applyLayout: "Change layout",
|
|
51302
|
-
|
|
51303
|
-
|
|
51308
|
+
maxPanes_one: "A split can hold up to {{count}} pane",
|
|
51309
|
+
maxPanes_other: "A split can hold up to {{count}} panes",
|
|
51304
51310
|
dropSplit: "Drop to split",
|
|
51305
51311
|
dropHere: "Drop to show here",
|
|
51306
51312
|
paneActions: "Pane actions",
|
|
@@ -51326,16 +51332,10 @@ var en_default = {
|
|
|
51326
51332
|
connectedFor: "Connected for {{duration}}",
|
|
51327
51333
|
connected: "Connected",
|
|
51328
51334
|
disconnected: "Disconnected",
|
|
51329
|
-
closeTab: "Close tab",
|
|
51330
|
-
closeConnection: "Close connection",
|
|
51331
|
-
forgetTab: "Forget",
|
|
51332
|
-
removeBackground: "Remove",
|
|
51333
51335
|
reconnect: "Reconnect",
|
|
51334
|
-
reopenTab: "Reopen",
|
|
51335
51336
|
sectionOpen: "Open",
|
|
51336
51337
|
sectionBackground: "Background",
|
|
51337
51338
|
backgroundDesc: "Sessions persist for {{minutes}} minutes after disconnect and can be reconnected.",
|
|
51338
|
-
persisted: "Persisted in background",
|
|
51339
51339
|
expiresIn: "Expires in {{duration}}",
|
|
51340
51340
|
search: "Search connections...",
|
|
51341
51341
|
noSearchResults: "No connections match your search",
|
|
@@ -51375,7 +51375,7 @@ var en_default = {
|
|
|
51375
51375
|
empty: "No cards. Use Add below to place cards."
|
|
51376
51376
|
},
|
|
51377
51377
|
auth: {
|
|
51378
|
-
tagline: "Self-hosted, plugin-based server management",
|
|
51378
|
+
tagline: "Self-hosted, plugin-based server management.",
|
|
51379
51379
|
loginTitle: "Welcome back",
|
|
51380
51380
|
registerTitle: "Create Account",
|
|
51381
51381
|
forgotPassword: "Forgot Password?",
|
|
@@ -51397,36 +51397,22 @@ var en_default = {
|
|
|
51397
51397
|
sshKeyPasswordDescription: "If your SSH key is encrypted, enter the passphrase here.",
|
|
51398
51398
|
passphraseRequired: "Passphrase Required",
|
|
51399
51399
|
passphraseRequiredDescription: "The SSH key is encrypted. Please enter the passphrase to unlock it.",
|
|
51400
|
-
back: "Back",
|
|
51401
|
-
firstUser: "First User",
|
|
51402
|
-
firstUserMessage: "You are the first user and will be made an admin. You can view admin settings in the sidebar user dropdown. If you think this is a mistake, check the docker logs, or create a GitHub issue.",
|
|
51403
51400
|
external: "External",
|
|
51404
51401
|
loginWithExternal: "Login with External Provider",
|
|
51405
51402
|
loginWithExternalDesc: "Login using your configured external identity provider",
|
|
51406
|
-
externalNotSupportedInElectron: "External sign-in is not supported in the desktop app yet. Please use the web version.",
|
|
51407
51403
|
loginWithProvider: "Login with {{name}}",
|
|
51408
|
-
orContinueWith: "or continue with",
|
|
51409
51404
|
resetPasswordButton: "Reset Password",
|
|
51410
51405
|
sendResetCode: "Send Reset Code",
|
|
51411
51406
|
resetCodeDesc: "Enter your username to receive a password reset code. The code will be logged in the docker container logs.",
|
|
51412
51407
|
resetCode: "Reset Code",
|
|
51413
51408
|
verifyCodeButton: "Verify Code",
|
|
51414
|
-
enterResetCode: "Enter the 6-digit code from the docker container logs for user:",
|
|
51415
51409
|
newPassword: "New Password",
|
|
51416
51410
|
confirmNewPassword: "Confirm Password",
|
|
51417
|
-
enterNewPassword: "Enter your new password for user:",
|
|
51418
51411
|
signUp: "Sign Up",
|
|
51419
|
-
desktopApp: "Desktop App",
|
|
51420
|
-
loggingInToDesktopApp: "Logging in to the desktop app",
|
|
51421
51412
|
loadingServer: "Loading server...",
|
|
51422
|
-
dataLossWarning: "Resetting your password this way will delete all your saved SSH hosts, credentials, and other encrypted data. This action cannot be undone. Only use this if you have forgotten your password and are not logged in.",
|
|
51423
|
-
authenticationDisabled: "Authentication Disabled",
|
|
51424
|
-
authenticationDisabledDesc: "All authentication methods are currently disabled. Please contact your administrator.",
|
|
51425
|
-
passwordLoginDisabledDesc: "Password login is disabled. Use a passkey or an external authentication provider.",
|
|
51426
|
-
attemptsRemaining: "{{count}} attempts remaining",
|
|
51427
|
-
confirmResetDataWipe: "This account has not logged in since the encryption upgrade, so its stored data cannot be recovered without the old password. Resetting will permanently delete its hosts, credentials and snippets. Continue?",
|
|
51428
51413
|
password: "Password",
|
|
51429
51414
|
secondFactorUnavailable: "Your account uses a second factor that is not available right now. Contact an admin to reset it.",
|
|
51415
|
+
externalLoginRequired: "This account signs in through single sign-on. Use that button to sign in.",
|
|
51430
51416
|
secondFactorNoUI: "This second factor cannot be shown on this screen. Contact an admin.",
|
|
51431
51417
|
serverAuthentication: "Server sign-in",
|
|
51432
51418
|
minChars: "min. {{min}} characters",
|
|
@@ -51456,6 +51442,8 @@ var en_default = {
|
|
|
51456
51442
|
databaseConnection: "Could not connect to the database",
|
|
51457
51443
|
embeddedServerFailed: "Termix's local server could not start",
|
|
51458
51444
|
unknownError: "Unknown error",
|
|
51445
|
+
syncedHostMissing: "The synced host does not exist on the linked server",
|
|
51446
|
+
linkedServerUnreachable: "The linked server is not reachable",
|
|
51459
51447
|
loginFailed: "Login failed",
|
|
51460
51448
|
failedPasswordReset: "Failed to initiate password reset",
|
|
51461
51449
|
failedVerifyCode: "Failed to verify reset code",
|
|
@@ -51469,19 +51457,14 @@ var en_default = {
|
|
|
51469
51457
|
requiredField: "This field is required",
|
|
51470
51458
|
minLength: "Minimum length is {{min}}",
|
|
51471
51459
|
passwordMismatch: "Passwords do not match",
|
|
51472
|
-
passwordLoginDisabled: "Username/password login is currently disabled",
|
|
51473
51460
|
sessionExpired: "Session expired - please log in again",
|
|
51474
|
-
totpRateLimited: "Rate limited: Too many TOTP verification attempts. Please try again later.",
|
|
51475
|
-
totpRateLimitedWithTime: "Rate limited: Too many TOTP verification attempts. Please wait {{time}} seconds before trying again.",
|
|
51476
|
-
resetCodeRateLimited: "Rate limited: Too many verification attempts. Please try again later.",
|
|
51477
|
-
resetCodeRateLimitedWithTime: "Rate limited: Too many verification attempts. Please wait {{time}} seconds before trying again.",
|
|
51478
51461
|
authTokenSaveFailed: "Failed to save authentication token",
|
|
51479
51462
|
authTokenMissing: "The server did not return a new authentication token. Please sign in again.",
|
|
51480
51463
|
failedToLoadServer: "Failed to load server",
|
|
51481
51464
|
sessionExpiredLogin: "Session expired. Please log in again."
|
|
51482
51465
|
},
|
|
51483
51466
|
messages: {
|
|
51484
|
-
registrationDisabled: "
|
|
51467
|
+
registrationDisabled: "You have no Termix account yet. Ask an admin to turn on Auto-create external accounts.",
|
|
51485
51468
|
userNotAllowed: "Your account is not authorized to register. Please contact an administrator.",
|
|
51486
51469
|
databaseConnectionFailed: "Failed to connect to the database server",
|
|
51487
51470
|
embeddedServerPortInUse: "Port {{port}} is already in use by another program. This is usually a Termix Docker container or a leftover Termix process from a previous session. Close it, then restart Termix.",
|
|
@@ -51494,7 +51477,6 @@ var en_default = {
|
|
|
51494
51477
|
registrationSuccess: "Registration successful"
|
|
51495
51478
|
},
|
|
51496
51479
|
placeholders: {
|
|
51497
|
-
language: "Language",
|
|
51498
51480
|
keyPassword: "key password",
|
|
51499
51481
|
pastePrivateKey: "Paste your private key here...",
|
|
51500
51482
|
enterPassword: "Enter your password",
|
|
@@ -51507,7 +51489,6 @@ var en_default = {
|
|
|
51507
51489
|
},
|
|
51508
51490
|
dashboard: {
|
|
51509
51491
|
title: "Dashboard",
|
|
51510
|
-
loading: "Loading dashboard...",
|
|
51511
51492
|
github: "GitHub",
|
|
51512
51493
|
reportBug: "Report a bug",
|
|
51513
51494
|
discord: "Discord",
|
|
@@ -51515,7 +51496,6 @@ var en_default = {
|
|
|
51515
51496
|
donate: "Donate",
|
|
51516
51497
|
serverOverview: "Server Overview",
|
|
51517
51498
|
version: "Version",
|
|
51518
|
-
upToDate: "Up to Date",
|
|
51519
51499
|
updateAvailable: "Update Available",
|
|
51520
51500
|
beta: "Beta",
|
|
51521
51501
|
uptime: "Uptime",
|
|
@@ -51526,7 +51506,6 @@ var en_default = {
|
|
|
51526
51506
|
totalCredentials: "Total Credentials",
|
|
51527
51507
|
recentActivity: "Recent Activity",
|
|
51528
51508
|
reset: "Reset",
|
|
51529
|
-
loadingRecentActivity: "Loading recent activity...",
|
|
51530
51509
|
noRecentActivity: "No recent activity",
|
|
51531
51510
|
quickActions: "Quick Actions",
|
|
51532
51511
|
addHost: "Add Host",
|
|
@@ -51534,48 +51513,21 @@ var en_default = {
|
|
|
51534
51513
|
adminSettings: "Admin Settings",
|
|
51535
51514
|
userProfile: "User Profile",
|
|
51536
51515
|
serverStats: "Server Stats",
|
|
51537
|
-
loadingServerStats: "Loading server stats...",
|
|
51538
|
-
noServerData: "No server data available",
|
|
51539
51516
|
customizeLayout: "Customize Dashboard",
|
|
51540
|
-
|
|
51541
|
-
enableDisableCards: "Enable/Disable Cards",
|
|
51542
|
-
resetLayout: "Reset to Default",
|
|
51543
|
-
serverOverviewCard: "Server Overview",
|
|
51544
|
-
recentActivityCard: "Recent Activity",
|
|
51545
|
-
quickActionsCard: "Quick Actions",
|
|
51546
|
-
serverStatsCard: "Server Stats",
|
|
51547
|
-
panelMain: "Main",
|
|
51548
|
-
panelSide: "Side",
|
|
51549
|
-
justNow: "just now",
|
|
51550
|
-
activityFileManager: "File manager"
|
|
51551
|
-
},
|
|
51552
|
-
donation: {
|
|
51553
|
-
title: "Enjoying Termix?",
|
|
51554
|
-
body: "Termix is free and open source, built and maintained by a two-person team in our spare time. If it's replaced a commercial tool you'd otherwise be paying for, a donation helps cover hosting costs and keeps development going. As of now, donations are crypto only.",
|
|
51555
|
-
milestones: "Donations also help fund the time to research and learn what's needed to build features like SAML and Kubernetes support. See the progress on the donate page.",
|
|
51556
|
-
cta: "Donate",
|
|
51557
|
-
dismiss: "Maybe later"
|
|
51517
|
+
justNow: "just now"
|
|
51558
51518
|
},
|
|
51559
51519
|
dashboardTab: {
|
|
51560
51520
|
stable: "STABLE",
|
|
51561
|
-
hostsOnline: "Hosts Online",
|
|
51562
51521
|
registerNewServer: "Register a new server",
|
|
51563
51522
|
storeSshKeysOrPasswords: "Store SSH keys or passwords",
|
|
51564
51523
|
manageUsersAndRoles: "Manage users and roles",
|
|
51565
51524
|
manageYourAccount: "Manage your account",
|
|
51566
51525
|
hostStatus: "Host Status",
|
|
51567
51526
|
noHostsConfigured: "No hosts configured",
|
|
51568
|
-
online: "ONLINE",
|
|
51569
|
-
offline: "OFFLINE",
|
|
51570
51527
|
checking: "CHECKING",
|
|
51571
|
-
onlineLower: "Online",
|
|
51572
|
-
add: "Add:",
|
|
51573
51528
|
commandPalette: "Command Palette",
|
|
51574
51529
|
done: "Done",
|
|
51575
|
-
editModeInstructions: "Drag cards to reorder. Drag the column divider to resize columns. Drag the bottom edge of a card to change its height. Use the trash button to remove a card.",
|
|
51576
|
-
empty: "Empty",
|
|
51577
51530
|
clear: "Clear",
|
|
51578
|
-
viewServerDetails: "View server details",
|
|
51579
51531
|
dragToResizeColumns: "Drag to resize columns",
|
|
51580
51532
|
hostsAvailable: "Hosts Available",
|
|
51581
51533
|
removeSection: "Remove section",
|
|
@@ -51651,7 +51603,7 @@ var en_default = {
|
|
|
51651
51603
|
allowPasswordLogin: "Allow Password Login",
|
|
51652
51604
|
allowPasswordLoginDesc: "Username/password login",
|
|
51653
51605
|
externalAutoProvision: "Auto-create external accounts",
|
|
51654
|
-
externalAutoProvisionDesc: "Create an account the first time someone signs in through an external login such as SSO or LDAP,
|
|
51606
|
+
externalAutoProvisionDesc: "Create an account the first time someone signs in through an external login such as SSO or LDAP. When off, only people who already have an account can sign in that way",
|
|
51655
51607
|
secondFactorAfterExternalLogin: "Ask for a second factor after external logins (SSO, GitHub, Google, LDAP)",
|
|
51656
51608
|
secondFactorAfterExternalLoginDesc: "Off, an enrolled second factor is only asked for after password and other local logins, same as before. On, it is asked for after every login method, including SSO and LDAP.",
|
|
51657
51609
|
allowPasswordReset: "Allow Password Reset",
|
|
@@ -51670,7 +51622,8 @@ var en_default = {
|
|
|
51670
51622
|
statusCheck: "Status Check",
|
|
51671
51623
|
sec: "sec",
|
|
51672
51624
|
logLevel: "Log Level",
|
|
51673
|
-
|
|
51625
|
+
usersCount_one: "{{count}} user",
|
|
51626
|
+
usersCount_other: "{{count}} users",
|
|
51674
51627
|
searchUsers: "Search users...",
|
|
51675
51628
|
noUsers: "No users",
|
|
51676
51629
|
noUsersMatch: "No users match your search",
|
|
@@ -51680,7 +51633,8 @@ var en_default = {
|
|
|
51680
51633
|
roleName: "Name",
|
|
51681
51634
|
roleDisplayName: "Display Name",
|
|
51682
51635
|
roleDescription: "Description",
|
|
51683
|
-
|
|
51636
|
+
rolesCount_one: "{{count}} role",
|
|
51637
|
+
rolesCount_other: "{{count}} roles",
|
|
51684
51638
|
createRole: "Create",
|
|
51685
51639
|
creating: "Creating...",
|
|
51686
51640
|
exportDatabase: "Export Database",
|
|
@@ -51694,7 +51648,8 @@ var en_default = {
|
|
|
51694
51648
|
changeFile: "Change",
|
|
51695
51649
|
import: "Import",
|
|
51696
51650
|
importing: "Importing...",
|
|
51697
|
-
|
|
51651
|
+
apiKeysCount_one: "{{count}} key",
|
|
51652
|
+
apiKeysCount_other: "{{count}} keys",
|
|
51698
51653
|
apiKeysDocsLink: "View docs",
|
|
51699
51654
|
apiKeysCliHint: "Use an API key with the Termix CLI to manage servers from your terminal.",
|
|
51700
51655
|
apiKeysCliLink: "View CLI docs",
|
|
@@ -51716,7 +51671,8 @@ var en_default = {
|
|
|
51716
51671
|
systemBadge: "SYS",
|
|
51717
51672
|
customBadge: "CUSTOM",
|
|
51718
51673
|
youBadge: "YOU",
|
|
51719
|
-
|
|
51674
|
+
sessionsActive_one: "{{count}} active",
|
|
51675
|
+
sessionsActive_other: "{{count}} active",
|
|
51720
51676
|
sessionActive: "Active: {{time}}",
|
|
51721
51677
|
sessionExpires: "Exp: {{time}}",
|
|
51722
51678
|
revokeAll: "All",
|
|
@@ -51727,7 +51683,6 @@ var en_default = {
|
|
|
51727
51683
|
noCustomRoles: "No custom roles defined",
|
|
51728
51684
|
removeRoleFailed: "Failed to remove role",
|
|
51729
51685
|
assignRoleFailed: "Failed to assign role",
|
|
51730
|
-
deleteRoleFailed: "Failed to delete role",
|
|
51731
51686
|
userAdminAccess: "Administrator",
|
|
51732
51687
|
userAdminAccessDesc: "Full access to all admin settings",
|
|
51733
51688
|
userRoles: "Roles",
|
|
@@ -51750,7 +51705,6 @@ var en_default = {
|
|
|
51750
51705
|
createUserPassword: "Password",
|
|
51751
51706
|
createUserPasswordHint: "Minimum 6 characters.",
|
|
51752
51707
|
createUserEnterUsername: "Enter username",
|
|
51753
|
-
createUserEnterPassword: "Enter password",
|
|
51754
51708
|
createUserSubmit: "Create User",
|
|
51755
51709
|
editUserTitle: "Manage User: {{username}}",
|
|
51756
51710
|
editUserDesc: "Edit roles, admin status, sessions, and account settings.",
|
|
@@ -51781,7 +51735,6 @@ var en_default = {
|
|
|
51781
51735
|
unlinkAccountInProgress: "Unlinking...",
|
|
51782
51736
|
unlinkAccountSuccess: "External sign-in unlinked",
|
|
51783
51737
|
unlinkAccountFailed: "Failed to unlink external sign-in",
|
|
51784
|
-
saving: "Saving...",
|
|
51785
51738
|
updateRegistrationFailed: "Failed to update registration setting",
|
|
51786
51739
|
updatePasswordLoginFailed: "Failed to update password login setting",
|
|
51787
51740
|
updateSecondFactorAfterExternalLoginFailed: "Failed to update second factor setting",
|
|
@@ -51828,14 +51781,16 @@ var en_default = {
|
|
|
51828
51781
|
exportUserDataDesc: "Download this user's hosts, credentials and file manager data as JSON. Secrets are decrypted.",
|
|
51829
51782
|
exportUserDataSuccess: "User data exported",
|
|
51830
51783
|
exportUserDataFailed: "Failed to export user data",
|
|
51831
|
-
|
|
51784
|
+
hostsCount_one: "{{count}} host",
|
|
51785
|
+
hostsCount_other: "{{count}} hosts",
|
|
51832
51786
|
addHostForUser: "Add Host",
|
|
51833
51787
|
noHostsForUser: "This user has no hosts",
|
|
51834
51788
|
connectToHost: "Connect",
|
|
51835
51789
|
deleteHostConfirm: 'Delete host "{{name}}" belonging to {{username}}?',
|
|
51836
51790
|
hostDeletedSuccess: "Host deleted",
|
|
51837
51791
|
hostDeleteFailed: "Failed to delete host",
|
|
51838
|
-
|
|
51792
|
+
credentialsCount_one: "{{count}} credential",
|
|
51793
|
+
credentialsCount_other: "{{count}} credentials",
|
|
51839
51794
|
addCredentialForUser: "Add Credential",
|
|
51840
51795
|
noCredentialsForUser: "This user has no credentials",
|
|
51841
51796
|
deleteCredentialConfirm: 'Delete credential "{{name}}" belonging to {{username}}?',
|
|
@@ -51863,16 +51818,16 @@ var en_default = {
|
|
|
51863
51818
|
importFailed: "Import failed: {{error}}",
|
|
51864
51819
|
importError: "Database import failed",
|
|
51865
51820
|
sectionHostDefaults: "Host Defaults",
|
|
51866
|
-
minutes: "minutes",
|
|
51867
51821
|
rolePermissions: {
|
|
51868
|
-
|
|
51822
|
+
count_one: "{{count}} permission",
|
|
51823
|
+
count_other: "{{count}} permissions",
|
|
51869
51824
|
editAction: "Edit permissions",
|
|
51870
51825
|
loadError: "Failed to load the permissions catalog",
|
|
51871
51826
|
saved: "Role permissions saved",
|
|
51872
51827
|
saveError: "Failed to save role permissions",
|
|
51873
51828
|
save: "Save",
|
|
51874
51829
|
saving: "Saving...",
|
|
51875
|
-
pluginDisabled: "
|
|
51830
|
+
pluginDisabled: "Plugin disabled",
|
|
51876
51831
|
groups: {
|
|
51877
51832
|
hosts: "Hosts",
|
|
51878
51833
|
credentials: "Credentials",
|
|
@@ -51915,7 +51870,6 @@ var en_default = {
|
|
|
51915
51870
|
hostLabel: "Host",
|
|
51916
51871
|
hostPlaceholder: "192.168.1.1 or example.com",
|
|
51917
51872
|
portLabel: "Port",
|
|
51918
|
-
portPlaceholder: "22",
|
|
51919
51873
|
usernameLabel: "Username",
|
|
51920
51874
|
usernamePlaceholder: "username",
|
|
51921
51875
|
authLabel: "Auth",
|
|
@@ -51933,7 +51887,6 @@ var en_default = {
|
|
|
51933
51887
|
noTarget: "Nothing installed can connect to this host type"
|
|
51934
51888
|
},
|
|
51935
51889
|
keybindings: {
|
|
51936
|
-
title: "Keyboard Shortcuts",
|
|
51937
51890
|
description: "Bind keys to actions in the terminal and the app, or change the built-in shortcuts.",
|
|
51938
51891
|
defaultsHeading: "Built-in Shortcuts",
|
|
51939
51892
|
fixedHeading: "App Shortcuts",
|
|
@@ -51959,7 +51912,6 @@ var en_default = {
|
|
|
51959
51912
|
customize: "Customize",
|
|
51960
51913
|
resetToDefault: "Reset to default",
|
|
51961
51914
|
resetAllToDefaults: "Reset all to defaults",
|
|
51962
|
-
close: "Close",
|
|
51963
51915
|
cancel: "Cancel",
|
|
51964
51916
|
saveBinding: "Save Shortcut",
|
|
51965
51917
|
saveError: "Failed to save keyboard shortcuts",
|
|
@@ -52030,7 +51982,6 @@ var en_default = {
|
|
|
52030
51982
|
cliLearnMore: "Learn More",
|
|
52031
51983
|
deleteAccount: "Delete Account",
|
|
52032
51984
|
deleteAccountDescription: "Permanently delete your account",
|
|
52033
|
-
changeServerDescription: "Switch to a different Termix backend server",
|
|
52034
51985
|
deleteButton: "Delete",
|
|
52035
51986
|
deleteAccountPermanent: "This action is permanent and cannot be undone.",
|
|
52036
51987
|
deleteAccountWarning: "All sessions, hosts, credentials, and settings will be permanently deleted.",
|
|
@@ -52044,8 +51995,6 @@ var en_default = {
|
|
|
52044
51995
|
keyboardShortcuts: "Keyboard Shortcuts",
|
|
52045
51996
|
keyboardShortcutsDescription: "Customize terminal copy, paste, and command shortcuts",
|
|
52046
51997
|
manageShortcuts: "Manage",
|
|
52047
|
-
historyTracking: "History Tracking",
|
|
52048
|
-
historyTrackingDesc: "Track terminal commands",
|
|
52049
51998
|
commandPalette: "Command Palette",
|
|
52050
51999
|
commandPaletteDesc: "Enable keyboard shortcut",
|
|
52051
52000
|
reopenTabsOnLogin: "Reopen Tabs on Login",
|
|
@@ -52058,28 +52007,16 @@ var en_default = {
|
|
|
52058
52007
|
sidebarSettingsMoved: "Host sidebar display settings have moved to the Customize sidebar panel, opened from the Hosts toolbar.",
|
|
52059
52008
|
showHostTags: "Show Host Tags",
|
|
52060
52009
|
showHostTagsDesc: "Display tags in host list",
|
|
52061
|
-
hostTrayOnClick: "Click to Expand Host Actions",
|
|
52062
|
-
hostTrayOnClickDesc: "Always show connection buttons; click to expand management options instead of hover",
|
|
52063
|
-
compactHostView: "Compact Host View",
|
|
52064
|
-
compactHostViewDesc: "Collapse each host to a single line showing only its name and address",
|
|
52065
52010
|
statusColors: "Real Status Colors",
|
|
52066
52011
|
statusColorsDesc: "Use green/red for online/offline status instead of the accent color",
|
|
52067
52012
|
pinAppRail: "Pin App Rail",
|
|
52068
52013
|
pinAppRailDesc: "Keep the left sidebar app rail always expanded instead of expanding on hover",
|
|
52069
|
-
openFullscreenSettings: "Open settings full screen",
|
|
52070
|
-
exitFullscreenSettings: "Exit full-screen settings",
|
|
52071
52014
|
expandAppRailOnHover: "Expand App Rail on Hover",
|
|
52072
52015
|
expandAppRailOnHoverDesc: "Allow the left sidebar app rail to expand when the pointer moves over it",
|
|
52073
52016
|
showPinAppRailButton: "Show Pin App Rail Button",
|
|
52074
52017
|
showPinAppRailButtonDesc: "Show a button in the app rail to pin it open. Off by default.",
|
|
52075
52018
|
settingsNavigation: "Navigation",
|
|
52076
52019
|
navigationTabsDesc: "Choose which tabs appear in the app rail",
|
|
52077
|
-
showSnippetCommands: "Show Commands",
|
|
52078
|
-
showSnippetCommandsDesc: "Show each snippet's command under its name. Turn off for a compact list.",
|
|
52079
|
-
foldersCollapsed: "Folders Collapsed",
|
|
52080
|
-
foldersCollapsedDesc: "Collapse folders by default",
|
|
52081
|
-
confirmExecution: "Confirm Execution",
|
|
52082
|
-
confirmExecutionDesc: "Confirm before running snippets",
|
|
52083
52020
|
settingsUpdates: "Updates",
|
|
52084
52021
|
disableUpdateChecks: "Disable Update Checks",
|
|
52085
52022
|
disableUpdateChecksDesc: "Stop checking for updates",
|
|
@@ -52102,7 +52039,8 @@ var en_default = {
|
|
|
52102
52039
|
apiKeyCreatedWarning: "Key created - copy it now, it won't be shown again.",
|
|
52103
52040
|
copyApiKey: "Copy API key",
|
|
52104
52041
|
copiedToClipboard: "Copied to clipboard",
|
|
52105
|
-
|
|
52042
|
+
apiKeyCount_one: "{{count}} key",
|
|
52043
|
+
apiKeyCount_other: "{{count}} keys",
|
|
52106
52044
|
newKey: "New Key",
|
|
52107
52045
|
noApiKeys: "No API keys yet.",
|
|
52108
52046
|
apiKeyActive: "Active",
|
|
@@ -52169,7 +52107,6 @@ var en_default = {
|
|
|
52169
52107
|
}
|
|
52170
52108
|
}
|
|
52171
52109
|
},
|
|
52172
|
-
terminalToolbar: {},
|
|
52173
52110
|
plugins: {
|
|
52174
52111
|
capabilities: {
|
|
52175
52112
|
"credentials:read": {
|
|
@@ -52281,8 +52218,8 @@ var en_default = {
|
|
|
52281
52218
|
consequence: "Server settings, not your hosts or credentials."
|
|
52282
52219
|
},
|
|
52283
52220
|
"plugins:read": {
|
|
52284
|
-
title: "See installed
|
|
52285
|
-
consequence: "It can see which
|
|
52221
|
+
title: "See installed plugins",
|
|
52222
|
+
consequence: "It can see which plugins are installed and running."
|
|
52286
52223
|
},
|
|
52287
52224
|
"ui:surface": {
|
|
52288
52225
|
title: "Add its own screens",
|
|
@@ -52291,9 +52228,9 @@ var en_default = {
|
|
|
52291
52228
|
},
|
|
52292
52229
|
runtime: {
|
|
52293
52230
|
needsPlugin: "{{name}} is not available",
|
|
52294
|
-
needsUnknownPlugin: "This
|
|
52231
|
+
needsUnknownPlugin: "This plugin is not available",
|
|
52295
52232
|
disabledHint: "It is turned off on this server.",
|
|
52296
|
-
missingHint: "The
|
|
52233
|
+
missingHint: "The plugin it came from has been removed.",
|
|
52297
52234
|
failed: "{{name}} could not start",
|
|
52298
52235
|
failedHint: "An admin can check the server logs for details.",
|
|
52299
52236
|
loading: "Loading {{name}}",
|
|
@@ -52304,25 +52241,42 @@ var en_default = {
|
|
|
52304
52241
|
tabs: {
|
|
52305
52242
|
installed: "Installed",
|
|
52306
52243
|
browse: "Browse",
|
|
52307
|
-
updates: "Updates"
|
|
52244
|
+
updates: "Updates",
|
|
52245
|
+
registries: "Registries"
|
|
52308
52246
|
},
|
|
52309
52247
|
status: {
|
|
52310
52248
|
summary: "{{installed}} installed, {{running}} running",
|
|
52311
52249
|
running: "Running",
|
|
52312
52250
|
disabled: "Disabled",
|
|
52313
52251
|
failed: "Stopped unexpectedly",
|
|
52314
|
-
blocked: "Waiting on another plugin"
|
|
52252
|
+
blocked: "Waiting on another plugin",
|
|
52253
|
+
server: "Runs on your server"
|
|
52315
52254
|
},
|
|
52316
52255
|
groups: {
|
|
52317
52256
|
running: "Running",
|
|
52318
|
-
notRunning: "Not running"
|
|
52257
|
+
notRunning: "Not running",
|
|
52258
|
+
onServer: "On your server"
|
|
52319
52259
|
},
|
|
52260
|
+
runsOnServerHint: "This plugin only runs on your server, so it stays off in the desktop app. It still works there.",
|
|
52320
52261
|
sort: {
|
|
52321
52262
|
popular: "Most popular",
|
|
52322
52263
|
name: "Name",
|
|
52323
52264
|
updated: "Recently updated",
|
|
52324
52265
|
category: "Category"
|
|
52325
52266
|
},
|
|
52267
|
+
columns: {
|
|
52268
|
+
title: "Columns",
|
|
52269
|
+
auto: "Auto",
|
|
52270
|
+
count: "{{count}} wide"
|
|
52271
|
+
},
|
|
52272
|
+
table: {
|
|
52273
|
+
name: "Name",
|
|
52274
|
+
description: "Description",
|
|
52275
|
+
version: "Version",
|
|
52276
|
+
status: "Status",
|
|
52277
|
+
category: "Category",
|
|
52278
|
+
installs: "Installs"
|
|
52279
|
+
},
|
|
52326
52280
|
risk: {
|
|
52327
52281
|
critical: "Critical",
|
|
52328
52282
|
high: "High risk",
|
|
@@ -52473,6 +52427,44 @@ var en_default = {
|
|
|
52473
52427
|
noneInstalled: "No plugins installed yet. Browse to add some.",
|
|
52474
52428
|
nothingHere: "Nothing here.",
|
|
52475
52429
|
nothingHereHint: "Try another category or search.",
|
|
52430
|
+
communitySubmit: "How to submit",
|
|
52431
|
+
registries: {
|
|
52432
|
+
intro: "Registries are lists of plugins you can install. The official one is always on. You can turn on the community registry or add your own.",
|
|
52433
|
+
hostYourOwn: "Host your own registry",
|
|
52434
|
+
add: "Add registry",
|
|
52435
|
+
addTitle: "Add a registry",
|
|
52436
|
+
addHint: "Paste the link to the registry's index.json. Termix reads it and shows the key it signs plugins with. Only add registries from people you trust.",
|
|
52437
|
+
urlLabel: "Index URL",
|
|
52438
|
+
check: "Check",
|
|
52439
|
+
addConfirm: "Trust and add",
|
|
52440
|
+
added: "Added {{name}}",
|
|
52441
|
+
customWarning: "Plugins from this registry are not reviewed by the Termix team. Only the owner of the registry decides what is in it. Every download must be signed by the key above.",
|
|
52442
|
+
keyFingerprint: "Key {{keyId}}",
|
|
52443
|
+
pluginCount_one: "{{count}} plugin",
|
|
52444
|
+
pluginCount_other: "{{count}} plugins",
|
|
52445
|
+
officialName: "Official",
|
|
52446
|
+
communityName: "Community",
|
|
52447
|
+
alwaysOn: "Always on",
|
|
52448
|
+
communityHint: "Plugins made by other people. Each version is checked by a person and by automated checks before it is listed.",
|
|
52449
|
+
communityConfirmTitle: "Turn on community plugins?",
|
|
52450
|
+
communityConfirmBody: "Community plugins are made by other people, not the Termix team. Every version is checked by a person and by automated checks before it is listed, but mistakes can still get through. Only install plugins you trust and check what each one asks for.",
|
|
52451
|
+
communityConfirm: "Turn on",
|
|
52452
|
+
communityBadge: "Community",
|
|
52453
|
+
communityBadgeHint: "From the community registry. Made by other people and reviewed before it was listed.",
|
|
52454
|
+
customBadge: "Custom",
|
|
52455
|
+
customBadgeHint: "From {{name}}, a registry an admin added. Not reviewed by the Termix team.",
|
|
52456
|
+
remove: "Remove",
|
|
52457
|
+
removeTitle: "Remove {{name}}?",
|
|
52458
|
+
removeBody: "Its plugins will no longer show in Browse. You can add it again later.",
|
|
52459
|
+
removed: "Removed {{name}}",
|
|
52460
|
+
inUse: "Uninstall the plugins from {{name}} first: {{list}}",
|
|
52461
|
+
changeFailed: "Could not change the registry: {{error}}",
|
|
52462
|
+
loadFailed: "Could not load registries: {{error}}",
|
|
52463
|
+
unreachable: "Could not read it: {{error}}",
|
|
52464
|
+
filter: "Registry",
|
|
52465
|
+
allRegistries: "All registries",
|
|
52466
|
+
browseHint: "Turn on community plugins or add your own registry in the Registries tab."
|
|
52467
|
+
},
|
|
52476
52468
|
upToDate: "Everything is up to date.",
|
|
52477
52469
|
lastChecked: "Last checked {{time}}",
|
|
52478
52470
|
updatesReady_one: "{{count}} update ready.",
|
|
@@ -52665,7 +52657,7 @@ var en_default = {
|
|
|
52665
52657
|
sshCredentials: "Credentials",
|
|
52666
52658
|
sshFolders: "Folders",
|
|
52667
52659
|
userPreferences: "Preferences",
|
|
52668
|
-
pluginUserSettings: "
|
|
52660
|
+
pluginUserSettings: "Plugin settings",
|
|
52669
52661
|
sharedHosts: "Hosts shared with you",
|
|
52670
52662
|
sharedCredentials: "Credentials shared with you",
|
|
52671
52663
|
vaultProfiles: "Vault profiles",
|
|
@@ -52674,7 +52666,12 @@ var en_default = {
|
|
|
52674
52666
|
dashboardServiceLinks: "Service links",
|
|
52675
52667
|
homepageItems: "Homepage items",
|
|
52676
52668
|
networkTopology: "Network map",
|
|
52677
|
-
workspaces: "Workspaces"
|
|
52669
|
+
workspaces: "Workspaces",
|
|
52670
|
+
hostDefaults: "Host defaults",
|
|
52671
|
+
hostDefaultsAdmin: "Server host defaults",
|
|
52672
|
+
aiProviders: "AI providers",
|
|
52673
|
+
homepageLayouts: "Homepage layouts",
|
|
52674
|
+
accountProfile: "Account profile"
|
|
52678
52675
|
},
|
|
52679
52676
|
proxy: {
|
|
52680
52677
|
title: "Reverse proxy",
|
|
@@ -52721,9 +52718,11 @@ var en_default = {
|
|
|
52721
52718
|
continue: "Continue",
|
|
52722
52719
|
back: "Back",
|
|
52723
52720
|
mergeTitle: "Add it to my account",
|
|
52724
|
-
|
|
52721
|
+
mergeBody_one: "The item on this device is added to your account. Items your account already has stay as they are on the server.",
|
|
52722
|
+
mergeBody_other: "The {{count}} items on this device are added to your account. Items your account already has stay as they are on the server.",
|
|
52725
52723
|
replaceTitle: "Replace it with my account",
|
|
52726
|
-
|
|
52724
|
+
replaceBody_one: "The item on this device is removed, and this device takes everything from your account. Hosts kept on this device only stay.",
|
|
52725
|
+
replaceBody_other: "The {{count}} items on this device are removed, and this device takes everything from your account. Hosts kept on this device only stay.",
|
|
52727
52726
|
link: "Link",
|
|
52728
52727
|
linking: "Linking and running the first sync...",
|
|
52729
52728
|
linked: "Linked. Your data is syncing now.",
|
|
@@ -52764,7 +52763,7 @@ var en_default = {
|
|
|
52764
52763
|
confirmNoChanges: "No existing host changes. New hosts will start with these defaults.",
|
|
52765
52764
|
menuMyDefaults: "My host defaults",
|
|
52766
52765
|
folderDefaultsAction: "Folder defaults",
|
|
52767
|
-
adminSectionDescription: "Set the defaults every host on this server follows, for every setting a host has, including each
|
|
52766
|
+
adminSectionDescription: "Set the defaults every host on this server follows, for every setting a host has, including each plugin's. Users and folders can set their own on top, and any host can still use its own value.",
|
|
52768
52767
|
editServerDefaults: "Edit server defaults",
|
|
52769
52768
|
resetMenu: "Reset",
|
|
52770
52769
|
resetAll: "Everything to defaults",
|
|
@@ -52794,7 +52793,7 @@ var en_default = {
|
|
|
52794
52793
|
needsAttention_one: "One thing needs attention.",
|
|
52795
52794
|
needsAttention_other: "{{count}} things need attention.",
|
|
52796
52795
|
bandHost: "Host",
|
|
52797
|
-
bandFeatures: "Protocols and
|
|
52796
|
+
bandFeatures: "Protocols and plugins",
|
|
52798
52797
|
bandCredential: "Credential",
|
|
52799
52798
|
sshConnection: "SSH connection",
|
|
52800
52799
|
errorAddressRequired: "An address is required.",
|
|
@@ -52823,46 +52822,131 @@ var en_default = {
|
|
|
52823
52822
|
pickCredential: "Pick a credential to edit",
|
|
52824
52823
|
pickDefaults: "Pick a level of defaults to edit",
|
|
52825
52824
|
pickHint: "Everything about a connection lives here, grouped so you can find it."
|
|
52825
|
+
},
|
|
52826
|
+
rbac: {
|
|
52827
|
+
roles: {
|
|
52828
|
+
admin: "Admin",
|
|
52829
|
+
user: "User"
|
|
52830
|
+
}
|
|
52826
52831
|
}
|
|
52827
52832
|
};
|
|
52828
52833
|
|
|
52834
|
+
// src/ui/locales/languages.json
|
|
52835
|
+
var languages_default = [
|
|
52836
|
+
{ code: "af", file: "af_ZA", name: "Afrikaans", label: "Afrikaans" },
|
|
52837
|
+
{ code: "ar", file: "ar_SA", name: "Arabic", label: "\u0627\u0644\u0639\u0631\u0628\u064A\u0629" },
|
|
52838
|
+
{ code: "bn", file: "bn_BD", name: "Bengali", label: "\u09AC\u09BE\u0982\u09B2\u09BE" },
|
|
52839
|
+
{ code: "bg", file: "bg_BG", name: "Bulgarian", label: "\u0411\u044A\u043B\u0433\u0430\u0440\u0441\u043A\u0438" },
|
|
52840
|
+
{ code: "ca", file: "ca_ES", name: "Catalan", label: "Catal\xE0" },
|
|
52841
|
+
{
|
|
52842
|
+
code: "zh-CN",
|
|
52843
|
+
file: "zh_CN",
|
|
52844
|
+
name: "Simplified Chinese",
|
|
52845
|
+
label: "\u4E2D\u6587 (\u7B80\u4F53)"
|
|
52846
|
+
},
|
|
52847
|
+
{
|
|
52848
|
+
code: "zh-TW",
|
|
52849
|
+
file: "zh_TW",
|
|
52850
|
+
name: "Traditional Chinese (Taiwan)",
|
|
52851
|
+
label: "\u4E2D\u6587 (\u7E41\u9AD4)"
|
|
52852
|
+
},
|
|
52853
|
+
{ code: "hr", file: "hr_HR", name: "Croatian", label: "Hrvatski" },
|
|
52854
|
+
{ code: "cs", file: "cs_CZ", name: "Czech", label: "\u010Ce\u0161tina" },
|
|
52855
|
+
{ code: "da", file: "da_DK", name: "Danish", label: "Dansk" },
|
|
52856
|
+
{ code: "nl", file: "nl_NL", name: "Dutch", label: "Nederlands" },
|
|
52857
|
+
{ code: "et", file: "et_EE", name: "Estonian", label: "Eesti" },
|
|
52858
|
+
{ code: "fi", file: "fi_FI", name: "Finnish", label: "Suomi" },
|
|
52859
|
+
{ code: "fr", file: "fr_FR", name: "French", label: "Fran\xE7ais" },
|
|
52860
|
+
{ code: "de", file: "de_DE", name: "German", label: "Deutsch" },
|
|
52861
|
+
{ code: "el", file: "el_GR", name: "Greek", label: "\u0395\u03BB\u03BB\u03B7\u03BD\u03B9\u03BA\u03AC" },
|
|
52862
|
+
{ code: "he", file: "he_IL", name: "Hebrew", label: "\u05E2\u05D1\u05E8\u05D9\u05EA" },
|
|
52863
|
+
{ code: "hi", file: "hi_IN", name: "Hindi", label: "\u0939\u093F\u0928\u094D\u0926\u0940" },
|
|
52864
|
+
{ code: "hu", file: "hu_HU", name: "Hungarian", label: "Magyar" },
|
|
52865
|
+
{
|
|
52866
|
+
code: "id",
|
|
52867
|
+
file: "id_ID",
|
|
52868
|
+
name: "Indonesian",
|
|
52869
|
+
label: "Indonesia"
|
|
52870
|
+
},
|
|
52871
|
+
{ code: "it", file: "it_IT", name: "Italian", label: "Italiano" },
|
|
52872
|
+
{ code: "ja", file: "ja_JP", name: "Japanese", label: "\u65E5\u672C\u8A9E" },
|
|
52873
|
+
{ code: "ko", file: "ko_KR", name: "Korean", label: "\uD55C\uAD6D\uC5B4" },
|
|
52874
|
+
{ code: "lv", file: "lv_LV", name: "Latvian", label: "Latvie\u0161u" },
|
|
52875
|
+
{
|
|
52876
|
+
code: "lt",
|
|
52877
|
+
file: "lt_LT",
|
|
52878
|
+
name: "Lithuanian",
|
|
52879
|
+
label: "Lietuvi\u0173"
|
|
52880
|
+
},
|
|
52881
|
+
{ code: "ms", file: "ms_MY", name: "Malay", label: "Bahasa Melayu" },
|
|
52882
|
+
{
|
|
52883
|
+
code: "no",
|
|
52884
|
+
file: "no_NO",
|
|
52885
|
+
name: "Norwegian Bokm\xE5l",
|
|
52886
|
+
label: "Norsk"
|
|
52887
|
+
},
|
|
52888
|
+
{ code: "pl", file: "pl_PL", name: "Polish", label: "Polski" },
|
|
52889
|
+
{
|
|
52890
|
+
code: "pt-PT",
|
|
52891
|
+
file: "pt_PT",
|
|
52892
|
+
name: "European Portuguese",
|
|
52893
|
+
label: "Portugu\xEAs (PT)"
|
|
52894
|
+
},
|
|
52895
|
+
{
|
|
52896
|
+
code: "pt-BR",
|
|
52897
|
+
file: "pt_BR",
|
|
52898
|
+
name: "Brazilian Portuguese",
|
|
52899
|
+
label: "Portugu\xEAs (BR)"
|
|
52900
|
+
},
|
|
52901
|
+
{ code: "ro", file: "ro_RO", name: "Romanian", label: "Rom\xE2n\u0103" },
|
|
52902
|
+
{ code: "ru", file: "ru_RU", name: "Russian", label: "\u0420\u0443\u0441\u0441\u043A\u0438\u0439" },
|
|
52903
|
+
{
|
|
52904
|
+
code: "sr",
|
|
52905
|
+
file: "sr_SP",
|
|
52906
|
+
name: "Serbian (Cyrillic script)",
|
|
52907
|
+
label: "\u0421\u0440\u043F\u0441\u043A\u0438"
|
|
52908
|
+
},
|
|
52909
|
+
{ code: "sk", file: "sk_SK", name: "Slovak", label: "Sloven\u010Dina" },
|
|
52910
|
+
{
|
|
52911
|
+
code: "sl",
|
|
52912
|
+
file: "sl_SI",
|
|
52913
|
+
name: "Slovenian",
|
|
52914
|
+
label: "Sloven\u0161\u010Dina"
|
|
52915
|
+
},
|
|
52916
|
+
{
|
|
52917
|
+
code: "es-ES",
|
|
52918
|
+
file: "es_ES",
|
|
52919
|
+
name: "Spanish (Spain)",
|
|
52920
|
+
label: "Espa\xF1ol"
|
|
52921
|
+
},
|
|
52922
|
+
{ code: "sv-SE", file: "sv_SE", name: "Swedish", label: "Svenska" },
|
|
52923
|
+
{ code: "th", file: "th_TH", name: "Thai", label: "\u0E44\u0E17\u0E22" },
|
|
52924
|
+
{ code: "tr", file: "tr_TR", name: "Turkish", label: "T\xFCrk\xE7e" },
|
|
52925
|
+
{
|
|
52926
|
+
code: "uk",
|
|
52927
|
+
file: "uk_UA",
|
|
52928
|
+
name: "Ukrainian",
|
|
52929
|
+
label: "\u0423\u043A\u0440\u0430\u0457\u043D\u0441\u044C\u043A\u0430"
|
|
52930
|
+
},
|
|
52931
|
+
{
|
|
52932
|
+
code: "vi",
|
|
52933
|
+
file: "vi_VN",
|
|
52934
|
+
name: "Vietnamese",
|
|
52935
|
+
label: "Ti\u1EBFng Vi\u1EC7t"
|
|
52936
|
+
}
|
|
52937
|
+
];
|
|
52938
|
+
|
|
52939
|
+
// src/ui/i18n/languages.ts
|
|
52940
|
+
var TRANSLATED_LANGUAGES = languages_default;
|
|
52941
|
+
var LANGUAGES = [
|
|
52942
|
+
{ code: "en", label: "English" },
|
|
52943
|
+
...TRANSLATED_LANGUAGES.map(({ code, label }) => ({ code, label }))
|
|
52944
|
+
];
|
|
52945
|
+
|
|
52829
52946
|
// src/ui/i18n/i18n.ts
|
|
52830
|
-
var LOCALE_FILES =
|
|
52831
|
-
|
|
52832
|
-
|
|
52833
|
-
bn: "bn_BD",
|
|
52834
|
-
bg: "bg_BG",
|
|
52835
|
-
ca: "ca_ES",
|
|
52836
|
-
cs: "cs_CZ",
|
|
52837
|
-
da: "da_DK",
|
|
52838
|
-
de: "de_DE",
|
|
52839
|
-
el: "el_GR",
|
|
52840
|
-
"es-ES": "es_ES",
|
|
52841
|
-
fi: "fi_FI",
|
|
52842
|
-
fr: "fr_FR",
|
|
52843
|
-
he: "he_IL",
|
|
52844
|
-
hi: "hi_IN",
|
|
52845
|
-
hu: "hu_HU",
|
|
52846
|
-
id: "id_ID",
|
|
52847
|
-
it: "it_IT",
|
|
52848
|
-
ja: "ja_JP",
|
|
52849
|
-
ko: "ko_KR",
|
|
52850
|
-
nl: "nl_NL",
|
|
52851
|
-
no: "no_NO",
|
|
52852
|
-
pl: "pl_PL",
|
|
52853
|
-
"pt-PT": "pt_PT",
|
|
52854
|
-
"pt-BR": "pt_BR",
|
|
52855
|
-
ro: "ro_RO",
|
|
52856
|
-
ru: "ru_RU",
|
|
52857
|
-
sr: "sr_SP",
|
|
52858
|
-
"sv-SE": "sv_SE",
|
|
52859
|
-
th: "th_TH",
|
|
52860
|
-
tr: "tr_TR",
|
|
52861
|
-
uk: "uk_UA",
|
|
52862
|
-
vi: "vi_VN",
|
|
52863
|
-
"zh-CN": "zh_CN",
|
|
52864
|
-
"zh-TW": "zh_TW"
|
|
52865
|
-
};
|
|
52947
|
+
var LOCALE_FILES = Object.fromEntries(
|
|
52948
|
+
TRANSLATED_LANGUAGES.map(({ code, file }) => [code, file])
|
|
52949
|
+
);
|
|
52866
52950
|
var translatedFiles = __termixNoGlob(
|
|
52867
52951
|
"../locales/translated/*.json"
|
|
52868
52952
|
);
|
|
@@ -52890,8 +52974,16 @@ function normalizeLanguageCode(language) {
|
|
|
52890
52974
|
(supported) => supported.toLowerCase() === normalized.toLowerCase()
|
|
52891
52975
|
);
|
|
52892
52976
|
if (exactMatch) return exactMatch;
|
|
52893
|
-
const baseLanguage = normalized.split("-")[0];
|
|
52894
|
-
|
|
52977
|
+
const baseLanguage = normalized.split("-")[0].toLowerCase();
|
|
52978
|
+
if (supportedLngs.includes(baseLanguage)) return baseLanguage;
|
|
52979
|
+
if (baseLanguage === "zh") {
|
|
52980
|
+
return /-(tw|hk|mo|hant)\b/i.test(normalized) ? "zh-TW" : "zh-CN";
|
|
52981
|
+
}
|
|
52982
|
+
if (baseLanguage === "nb" || baseLanguage === "nn") return "no";
|
|
52983
|
+
if (baseLanguage === "pt") return "pt-BR";
|
|
52984
|
+
return supportedLngs.find(
|
|
52985
|
+
(supported) => supported.toLowerCase().startsWith(`${baseLanguage}-`)
|
|
52986
|
+
) ?? "en";
|
|
52895
52987
|
}
|
|
52896
52988
|
var localeBackend = {
|
|
52897
52989
|
type: "backend",
|
|
@@ -53461,6 +53553,20 @@ function pluginApiFor(pluginId, origin, local) {
|
|
|
53461
53553
|
}
|
|
53462
53554
|
return client;
|
|
53463
53555
|
}
|
|
53556
|
+
async function fetchSocketTicket() {
|
|
53557
|
+
const base = (authApi.defaults.baseURL ?? "").replace(/\/+$/, "");
|
|
53558
|
+
try {
|
|
53559
|
+
const response = await fetch(`${base}/users/ws-ticket`, {
|
|
53560
|
+
method: "POST",
|
|
53561
|
+
credentials: "include"
|
|
53562
|
+
});
|
|
53563
|
+
if (!response.ok) return null;
|
|
53564
|
+
const data = await response.json();
|
|
53565
|
+
return typeof data.ticket === "string" ? data.ticket : null;
|
|
53566
|
+
} catch {
|
|
53567
|
+
return null;
|
|
53568
|
+
}
|
|
53569
|
+
}
|
|
53464
53570
|
async function pluginWsUrl(pluginId, path2, options2 = {}) {
|
|
53465
53571
|
const suffix = path2.startsWith("/") ? path2 : `/${path2}`;
|
|
53466
53572
|
const route = `/plugin-ws/${pluginId}${suffix}`;
|
|
@@ -53472,7 +53578,7 @@ async function pluginWsUrl(pluginId, path2, options2 = {}) {
|
|
|
53472
53578
|
remotePath: route
|
|
53473
53579
|
});
|
|
53474
53580
|
}
|
|
53475
|
-
const token = localStorage.getItem("jwt");
|
|
53581
|
+
const token = await fetchSocketTicket() ?? localStorage.getItem("jwt");
|
|
53476
53582
|
const protocols2 = websocketAuthProtocols(token);
|
|
53477
53583
|
const devProxy = !define_import_meta_env_default.VITE_API_HOST && (window.location.port === "3000" || window.location.port === "5173");
|
|
53478
53584
|
const wsProtocol = window.location.protocol === "https:" ? "wss" : "ws";
|
|
@@ -55019,6 +55125,7 @@ export {
|
|
|
55019
55125
|
getSecondFactorUI,
|
|
55020
55126
|
useSecondFactors,
|
|
55021
55127
|
listSecondFactorUIs,
|
|
55128
|
+
LANGUAGES,
|
|
55022
55129
|
setPluginLocaleResolver,
|
|
55023
55130
|
normalizeLanguageCode,
|
|
55024
55131
|
changeAppLanguage,
|