From c502fd3fa4af8d885a80d68dbef00a2d2611ec5c Mon Sep 17 00:00:00 2001 From: Jeongkyu Shin Date: Mon, 4 Dec 2023 22:52:33 +0900 Subject: [PATCH] feat: add model store tab to storage page (#2064) * feat: add model store tab to storage page * update: hard-coded scaling group * update: remove hardcoded field * update: i18n resource * feat: model store card draft ui * fix: typo * feat: open modal if click the list item - fix: lint errors * update: packages / i18n * feat: give fragment to modelCardModal * add: architecure and framework * display min_resource using `ResourceNumber` * display architecture and framework info with icon * fix ts type of framework * fix ts type of img tag alt * display `\n` in the description as a new line. * set a gird prop for responsive grid list * fix: storage list height * model card filtering in frontend * update: set the modal vertically centered * add: mockup for download / clone * add refresh button on model card list page * add Select components for category, task and label filtering * add clone and download button (disabled) * add markdown-to-jsx * lint * update: card size to small * fix: the condition of filter select inputs * two columns layout modal when lg screen * use BAImodal and fix align * fix filter condition * refactor: filter condition * change: New Folder to Add * fix layout of ModelCardModal (marginTop:0) * add: readme field to graphql * display model_info.readme markdown * ui: model clone modal * change modal size and margin * feat: add label tags to the model card * feat: clone model card as user type folder (cherry picked from commit 5c3f94a30481e0d514d69a1c16e71d91e8462109) * update: config.toml sample to control tab * feat: toggle model store menu according to the `supportModelStore` option * lint: unused * update CloneInfo i18n * feat: clone model card using vfolder field of ModelInfo * feat: disable storage selector and add tooltip on the clone modal * feat: set sourceFolderHost as initial value * fix: delete default value of storage selector Co-authored-by: Jong Eun Lee * style: display tag only info exists --------- Co-authored-by: agatha197 Co-authored-by: Jong Eun Lee --- config.toml.sample | 5 +- package-lock.json | 200 +- package.json | 12 +- react/data/schema.graphql | 401 ++- react/package-lock.json | 947 ++++++- react/package.json | 4 +- react/src/components/BAIModal.tsx | 12 +- react/src/components/ModelCardModal.tsx | 327 +++ react/src/components/ModelCloneModal.tsx | 227 ++ react/src/components/ProjectSelector.tsx | 20 +- react/src/components/ResourceNumber.tsx | 32 +- react/src/components/StorageSelector.tsx | 2 +- react/src/components/TextHighlighter.tsx | 30 +- react/src/hooks/index.ts | 2 + react/src/index.tsx | 14 + react/src/pages/ModelStoreListPage.tsx | 258 ++ resources/i18n/de.json | 59 +- resources/i18n/el.json | 59 +- resources/i18n/en.json | 43 +- resources/i18n/es.json | 59 +- resources/i18n/fi.json | 2792 +++++++++++---------- resources/i18n/fr.json | 59 +- resources/i18n/id.json | 59 +- resources/i18n/it.json | 59 +- resources/i18n/ja.json | 59 +- resources/i18n/ko.json | 43 +- resources/i18n/mn.json | 65 +- resources/i18n/ms.json | 63 +- resources/i18n/pl.json | 63 +- resources/i18n/pt-BR.json | 59 +- resources/i18n/pt.json | 59 +- resources/i18n/ru.json | 63 +- resources/i18n/tr.json | 59 +- resources/i18n/vi.json | 63 +- resources/i18n/zh-CN.json | 59 +- resources/i18n/zh-TW.json | 59 +- src/components/backend-ai-data-view.ts | 22 +- src/components/backend-ai-login.ts | 10 + src/components/backend-ai-storage-list.ts | 8 +- src/components/backend-ai-webui.ts | 6 +- src/lib/backend.ai-client-esm.ts | 9 +- 41 files changed, 4655 insertions(+), 1796 deletions(-) create mode 100644 react/src/components/ModelCardModal.tsx create mode 100644 react/src/components/ModelCloneModal.tsx create mode 100644 react/src/pages/ModelStoreListPage.tsx diff --git a/config.toml.sample b/config.toml.sample index 7defd0fc6d..ac27df98c1 100644 --- a/config.toml.sample +++ b/config.toml.sample @@ -24,13 +24,14 @@ hideAgents = true # If false, show the `Agent Summary` men enable2FA = false # If true and backend.ai-totp-plugin is installed, users can activate 2FA. force2FA = false # If true, user should be register the 2FA to use Backend.AI WebUI. appDownloadUrl = "" # URL to download the electron app. If blank, https://github.com/lablup/backend.ai-webui/releases/download will be used. -allowAppDownloadPanel = true # If true, display the download WebUI app panel on the summary page. +allowAppDownloadPanel = true # If true, display the download WebUI app panel on the summary page. systemSSHImage = "" # This image is used to launch ssh session from the filebrowser dialog to support fast uploading. directoryBasedUsage = false # If true, display the amount of usage per directory such as folder capacity, and number of files and directories. isDirectorySizeVisible = true # If false, directory size in folder explorer will show `-`. default value is set to true. maxCountForPreopenPorts = 10 # The maximum allowed number of preopen ports. If you set this option to 0, the feature of preopen ports is disabled. allowCustomResourceAllocation = true # If true, display the custom allocation on the session launcher. -eduAppNamePrefix = "" # The prefix of edu applauncher's app name. If the app name starts with this prefix, split it by '-' and use the tail as the name of image. +eduAppNamePrefix = "" # The prefix of edu applauncher's app name. If the app name starts with this prefix, split it by '-' and use the tail as the name of image. +supportModelStore = false # Enable model store feature. (From Backend.AI 24.03) [wsproxy] proxyURL = "[Proxy URL]" diff --git a/package-lock.json b/package-lock.json index 856c64f158..7443d7cb0e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -67,13 +67,13 @@ "winston": "^3.10.0" }, "devDependencies": { - "@babel/core": "^7.23.0", - "@babel/parser": "^7.23.0", + "@babel/core": "^7.23.2", + "@babel/parser": "^7.23.2", "@babel/plugin-proposal-class-properties": "^7.18.6", - "@babel/plugin-proposal-decorators": "^7.23.0", + "@babel/plugin-proposal-decorators": "^7.23.2", "@babel/plugin-syntax-dynamic-import": "^7.8.3", - "@babel/preset-typescript": "^7.23.0", - "@babel/types": "^7.23.0", + "@babel/preset-typescript": "^7.23.2", + "@babel/types": "^7.23.2", "@rollup/plugin-commonjs": "^25.0.4", "@rollup/plugin-node-resolve": "^15.2.1", "@rollup/plugin-replace": "^5.0.2", @@ -94,8 +94,8 @@ "cli-color": "^2.0.3", "concurrently": "^8.2.1", "cors": "^2.8.5", - "crypto-es": "^2.0.4", - "electron": "^26.2.2", + "crypto-es": "^2.1.0", + "electron": "^26.2.4", "electron-installer-debian": "^3.2.0", "electron-installer-dmg": "^4.0.0", "electron-packager": "^17.1.2", @@ -183,11 +183,11 @@ } }, "node_modules/@babel/code-frame": { - "version": "7.22.13", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz", - "integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==", + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz", + "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==", "dependencies": { - "@babel/highlight": "^7.22.13", + "@babel/highlight": "^7.23.4", "chalk": "^2.4.2" }, "engines": { @@ -203,20 +203,20 @@ } }, "node_modules/@babel/core": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.0.tgz", - "integrity": "sha512-97z/ju/Jy1rZmDxybphrBuI+jtJjFVoz7Mr9yUQVVVi+DNZE333uFQeMOqcCIy1x3WYBIbWftUSLmbNXNT7qFQ==", + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.5.tgz", + "integrity": "sha512-Cwc2XjUrG4ilcfOw4wBAK+enbdgwAcAJCfGUItPBKR7Mjw4aEfAFYrLxeRp4jWgtNIKn3n2AlBOfwwafl+42/g==", "dependencies": { "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.22.13", - "@babel/generator": "^7.23.0", + "@babel/code-frame": "^7.23.5", + "@babel/generator": "^7.23.5", "@babel/helper-compilation-targets": "^7.22.15", - "@babel/helper-module-transforms": "^7.23.0", - "@babel/helpers": "^7.23.0", - "@babel/parser": "^7.23.0", + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helpers": "^7.23.5", + "@babel/parser": "^7.23.5", "@babel/template": "^7.22.15", - "@babel/traverse": "^7.23.0", - "@babel/types": "^7.23.0", + "@babel/traverse": "^7.23.5", + "@babel/types": "^7.23.5", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -237,11 +237,11 @@ "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==" }, "node_modules/@babel/generator": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.0.tgz", - "integrity": "sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g==", + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.5.tgz", + "integrity": "sha512-BPssCHrBD+0YrxviOa3QzpqwhNIXKEtOa2jQrm4FlmkC2apYgRnQcmPWiGZDlGxiNtltnUFolMe8497Esry+jA==", "dependencies": { - "@babel/types": "^7.23.0", + "@babel/types": "^7.23.5", "@jridgewell/gen-mapping": "^0.3.2", "@jridgewell/trace-mapping": "^0.3.17", "jsesc": "^2.5.1" @@ -304,17 +304,17 @@ } }, "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.22.15.tgz", - "integrity": "sha512-jKkwA59IXcvSaiK2UN45kKwSC9o+KuoXsBDvHvU/7BecYIp8GQ2UwrVvFgJASUT+hBnwJx6MhvMCuMzwZZ7jlg==", + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.23.5.tgz", + "integrity": "sha512-QELlRWxSpgdwdJzSJn4WAhKC+hvw/AtHbbrIoncKHkhKKR/luAlKkgBDcri1EzWAo8f8VvYVryEHN4tax/V67A==", "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-function-name": "^7.22.5", - "@babel/helper-member-expression-to-functions": "^7.22.15", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-member-expression-to-functions": "^7.23.0", "@babel/helper-optimise-call-expression": "^7.22.5", - "@babel/helper-replace-supers": "^7.22.9", + "@babel/helper-replace-supers": "^7.22.20", "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", "@babel/helper-split-export-declaration": "^7.22.6", "semver": "^6.3.1" @@ -403,12 +403,12 @@ } }, "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.22.15.tgz", - "integrity": "sha512-qLNsZbgrNh0fDQBCPocSL8guki1hcPvltGDv/NxvUoABwFq7GkKSu1nRXeJkVZc+wJvne2E0RKQz+2SQrz6eAA==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.23.0.tgz", + "integrity": "sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA==", "dev": true, "dependencies": { - "@babel/types": "^7.22.15" + "@babel/types": "^7.23.0" }, "engines": { "node": ">=6.9.0" @@ -426,9 +426,9 @@ } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.0.tgz", - "integrity": "sha512-WhDWw1tdrlT0gMgUJSlX0IQvoO1eN279zrAUbVB+KpV2c3Tylz8+GnKOLllCS6Z/iZQEyVYxhZVUdPTqs2YYPw==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz", + "integrity": "sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==", "dependencies": { "@babel/helper-environment-visitor": "^7.22.20", "@babel/helper-module-imports": "^7.22.15", @@ -533,9 +533,9 @@ } }, "node_modules/@babel/helper-string-parser": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz", - "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz", + "integrity": "sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==", "engines": { "node": ">=6.9.0" } @@ -572,24 +572,24 @@ } }, "node_modules/@babel/helpers": { - "version": "7.23.1", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.1.tgz", - "integrity": "sha512-chNpneuK18yW5Oxsr+t553UZzzAs3aZnFm4bxhebsNTeshrC95yA7l5yl7GBAG+JG1rF0F7zzD2EixK9mWSDoA==", + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.5.tgz", + "integrity": "sha512-oO7us8FzTEsG3U6ag9MfdF1iA/7Z6dz+MtFhifZk8C8o453rGJFFWUP1t+ULM9TUIAzC9uxXEiXjOiVMyd7QPg==", "dependencies": { "@babel/template": "^7.22.15", - "@babel/traverse": "^7.23.0", - "@babel/types": "^7.23.0" + "@babel/traverse": "^7.23.5", + "@babel/types": "^7.23.5" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/highlight": { - "version": "7.22.13", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.13.tgz", - "integrity": "sha512-C/BaXcnnvBCmHTpz/VGZ8jgtE2aYlW4hxDhseJAWZb7gqGM/qtCK6iZUb0TyKFf7BOUsBH7Q7fkRsDRhg1XklQ==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz", + "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==", "dependencies": { - "@babel/helper-validator-identifier": "^7.22.5", + "@babel/helper-validator-identifier": "^7.22.20", "chalk": "^2.4.2", "js-tokens": "^4.0.0" }, @@ -598,9 +598,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.0.tgz", - "integrity": "sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw==", + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.5.tgz", + "integrity": "sha512-hOOqoiNXrmGdFbhgCzu6GiURxUgM27Xwd/aPuu8RfHEZPBzL1Z54okAHAQjXfcQNwvrlkAmAp4SlRTZ45vlthQ==", "bin": { "parser": "bin/babel-parser.js" }, @@ -692,16 +692,16 @@ } }, "node_modules/@babel/plugin-proposal-decorators": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.23.0.tgz", - "integrity": "sha512-kYsT+f5ARWF6AdFmqoEEp+hpqxEB8vGmRWfw2aj78M2vTwS2uHW91EF58iFm1Z9U8Y/RrLu2XKJn46P9ca1b0w==", + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.23.5.tgz", + "integrity": "sha512-6IsY8jOeWibsengGlWIezp7cuZEFzNlAghFpzh9wiZwhQ42/hRcPnY/QV9HJoKTlujupinSlnQPiEy/u2C1ZfQ==", "dev": true, "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.22.15", + "@babel/helper-create-class-features-plugin": "^7.23.5", "@babel/helper-plugin-utils": "^7.22.5", "@babel/helper-replace-supers": "^7.22.20", "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/plugin-syntax-decorators": "^7.22.10" + "@babel/plugin-syntax-decorators": "^7.23.3" }, "engines": { "node": ">=6.9.0" @@ -947,9 +947,9 @@ } }, "node_modules/@babel/plugin-syntax-decorators": { - "version": "7.22.10", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.22.10.tgz", - "integrity": "sha512-z1KTVemBjnz+kSEilAsI4lbkPOl5TvJH7YDSY1CTIzvLWJ+KHXp+mRe8VPmfnyvqOPqar1V2gid2PleKzRUstQ==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.23.3.tgz", + "integrity": "sha512-cf7Niq4/+/juY67E0PbgH0TDhLQ5J7zS8C/Q5FFx+DWyrRa9sUQdTXkjqKu8zGvuqr7vw1muKiukseihU+PJDA==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" @@ -1039,9 +1039,9 @@ } }, "node_modules/@babel/plugin-syntax-jsx": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.22.5.tgz", - "integrity": "sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.23.3.tgz", + "integrity": "sha512-EB2MELswq55OHUoRZLGg/zC7QWUKfNLpE57m/S2yr1uEneIgsTgrSzXP3NXEsMkVn76OlaVVnzN+ugObuYGwhg==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" @@ -1155,9 +1155,9 @@ } }, "node_modules/@babel/plugin-syntax-typescript": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.22.5.tgz", - "integrity": "sha512-1mS2o03i7t1c6VzH6fdQ3OA8tcEIxwG18zIPRp+UY1Ihv6W+XZzBCVxExF9upussPXJ0xE9XRHwMoNs1ep/nRQ==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.23.3.tgz", + "integrity": "sha512-9EiNjVJOMwCO+43TqoTrgQ8jMwcAd0sWyXi9RPfIsLTj4R2MADDDQXELhffaUx/uJv2AYcxBgPwH6j4TIA4ytQ==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" @@ -1427,12 +1427,12 @@ } }, "node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.23.0.tgz", - "integrity": "sha512-32Xzss14/UVc7k9g775yMIvkVK8xwKE0DPdP5JTapr3+Z9w4tzeOuLNY6BXDQR6BdnzIlXnCGAzsk/ICHBLVWQ==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.23.3.tgz", + "integrity": "sha512-aVS0F65LKsdNOtcz6FRCpE4OgsP2OFnW46qNxNIX9h3wuzaNcSQsJysuMwqSibC98HPrf2vCgtxKNwS0DAlgcA==", "dev": true, "dependencies": { - "@babel/helper-module-transforms": "^7.23.0", + "@babel/helper-module-transforms": "^7.23.3", "@babel/helper-plugin-utils": "^7.22.5", "@babel/helper-simple-access": "^7.22.5" }, @@ -1747,15 +1747,15 @@ } }, "node_modules/@babel/plugin-transform-typescript": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.22.15.tgz", - "integrity": "sha512-1uirS0TnijxvQLnlv5wQBwOX3E1wCFX7ITv+9pBV2wKEk4K+M5tqDaoNXnTH8tjEIYHLO98MwiTWO04Ggz4XuA==", + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.23.5.tgz", + "integrity": "sha512-2fMkXEJkrmwgu2Bsv1Saxgj30IXZdJ+84lQcKKI7sm719oXs0BBw2ZENKdJdR1PjWndgLCEBNXJOri0fk7RYQA==", "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-create-class-features-plugin": "^7.22.15", + "@babel/helper-create-class-features-plugin": "^7.23.5", "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-typescript": "^7.22.5" + "@babel/plugin-syntax-typescript": "^7.23.3" }, "engines": { "node": ">=6.9.0" @@ -1938,16 +1938,16 @@ } }, "node_modules/@babel/preset-typescript": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.23.0.tgz", - "integrity": "sha512-6P6VVa/NM/VlAYj5s2Aq/gdVg8FSENCg3wlZ6Qau9AcPaoF5LbN1nyGlR9DTRIw9PpxI94e+ReydsJHcjwAweg==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.23.3.tgz", + "integrity": "sha512-17oIGVlqz6CchO9RFYn5U6ZpWRZIngayYCtrPRSgANSwC2V1Jb+iP74nVxzzXJte8b8BYxrL1yY96xfhTBrNNQ==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/helper-validator-option": "^7.22.15", - "@babel/plugin-syntax-jsx": "^7.22.5", - "@babel/plugin-transform-modules-commonjs": "^7.23.0", - "@babel/plugin-transform-typescript": "^7.22.15" + "@babel/plugin-syntax-jsx": "^7.23.3", + "@babel/plugin-transform-modules-commonjs": "^7.23.3", + "@babel/plugin-transform-typescript": "^7.23.3" }, "engines": { "node": ">=6.9.0" @@ -1987,18 +1987,18 @@ } }, "node_modules/@babel/traverse": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.0.tgz", - "integrity": "sha512-t/QaEvyIoIkwzpiZ7aoSKK8kObQYeF7T2v+dazAYCb8SXtp58zEVkWW7zAnju8FNKNdr4ScAOEDmMItbyOmEYw==", + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.5.tgz", + "integrity": "sha512-czx7Xy5a6sapWWRx61m1Ke1Ra4vczu1mCTtJam5zRTBOonfdJ+S/B6HYmGYu3fJtr8GGET3si6IhgWVBhJ/m8w==", "dependencies": { - "@babel/code-frame": "^7.22.13", - "@babel/generator": "^7.23.0", + "@babel/code-frame": "^7.23.5", + "@babel/generator": "^7.23.5", "@babel/helper-environment-visitor": "^7.22.20", "@babel/helper-function-name": "^7.23.0", "@babel/helper-hoist-variables": "^7.22.5", "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/parser": "^7.23.0", - "@babel/types": "^7.23.0", + "@babel/parser": "^7.23.5", + "@babel/types": "^7.23.5", "debug": "^4.1.0", "globals": "^11.1.0" }, @@ -2007,11 +2007,11 @@ } }, "node_modules/@babel/types": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.0.tgz", - "integrity": "sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg==", + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.5.tgz", + "integrity": "sha512-ON5kSOJwVO6xXVRTvOI0eOnWe7VdUcIpsovGo9U/Br4Ie4UVFQTboO2cYnDhAGU6Fp+UxSiT+pMft0SMHfuq6w==", "dependencies": { - "@babel/helper-string-parser": "^7.22.5", + "@babel/helper-string-parser": "^7.23.4", "@babel/helper-validator-identifier": "^7.22.20", "to-fast-properties": "^2.0.0" }, @@ -9072,9 +9072,9 @@ } }, "node_modules/crypto-es": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/crypto-es/-/crypto-es-2.0.4.tgz", - "integrity": "sha512-GJxgJJ7HjGzwT7iQF0K9RertKkzgSKUXd8X2aQ7RGDS8yMVDzIBFMNHID9hnj48Ep8NAICHWV1CFIETlVNZ/Lg==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/crypto-es/-/crypto-es-2.1.0.tgz", + "integrity": "sha512-C5Dbuv4QTPGuloy5c5Vv/FZHtmK+lobLAypFfuRaBbwCsk3qbCWWESCH3MUcBsrgXloRNMrzwUAiPg4U6+IaKA==", "dev": true }, "node_modules/crypto-md5": { @@ -9721,9 +9721,9 @@ } }, "node_modules/electron": { - "version": "26.2.2", - "resolved": "https://registry.npmjs.org/electron/-/electron-26.2.2.tgz", - "integrity": "sha512-Ihb3Zt4XYnHF52DYSq17ySkgFqJV4OT0VnfhUYZASAql7Vembz3VsAq7mB3OALBHXltAW34P8BxTIwTqZaMS3g==", + "version": "26.6.1", + "resolved": "https://registry.npmjs.org/electron/-/electron-26.6.1.tgz", + "integrity": "sha512-4Vz9u0Jt/khPa/en2l8Jv6SWEfsK/ieWYtchl5j0clbNSjdeTucnEFOhz9B9WwsAmfQjxBnpuMZpmdBuyxq+wg==", "dev": true, "hasInstallScript": true, "dependencies": { diff --git a/package.json b/package.json index a1ddbe85bf..f6a4574f80 100644 --- a/package.json +++ b/package.json @@ -89,13 +89,13 @@ "winston": "^3.10.0" }, "devDependencies": { - "@babel/core": "^7.23.0", - "@babel/parser": "^7.23.0", + "@babel/core": "^7.23.2", + "@babel/parser": "^7.23.2", "@babel/plugin-proposal-class-properties": "^7.18.6", - "@babel/plugin-proposal-decorators": "^7.23.0", + "@babel/plugin-proposal-decorators": "^7.23.2", "@babel/plugin-syntax-dynamic-import": "^7.8.3", - "@babel/preset-typescript": "^7.23.0", - "@babel/types": "^7.23.0", + "@babel/preset-typescript": "^7.23.2", + "@babel/types": "^7.23.2", "@rollup/plugin-commonjs": "^25.0.4", "@rollup/plugin-node-resolve": "^15.2.1", "@rollup/plugin-replace": "^5.0.2", @@ -116,7 +116,7 @@ "cli-color": "^2.0.3", "concurrently": "^8.2.1", "cors": "^2.8.5", - "crypto-es": "^2.0.4", + "crypto-es": "^2.1.0", "electron": "^26.2.4", "electron-installer-debian": "^3.2.0", "electron-installer-dmg": "^4.0.0", diff --git a/react/data/schema.graphql b/react/data/schema.graphql index 04392a5d3e..7a86755a7b 100644 --- a/react/data/schema.graphql +++ b/react/data/schema.graphql @@ -1,4 +1,4 @@ -# PR #1688 79ef241dff642618d97e8d087c2a4d36e19fb27b +#PR 1749 schema { query: Queries @@ -14,7 +14,7 @@ type Queries { The ID of the object """ id: ID! - ): Node + ): AsyncNode agent(agent_id: String!): Agent agent_list( limit: Int! @@ -36,9 +36,35 @@ type Queries { ): AgentSummaryList domain(name: String): Domain domains(is_active: Boolean): [Domain] + + """ + Added in 24.03.0. + """ + group_node(id: String!): GroupNode + + """ + Added in 24.03.0. + """ + group_nodes( + filter: String + order: String + offset: Int + before: String + after: String + first: Int + last: Int + ): GroupConnection group(id: UUID!, domain_name: String): Group groups_by_name(name: String!, domain_name: String): [Group] - groups(domain_name: String, is_active: Boolean): [Group] + groups( + domain_name: String + is_active: Boolean + + """ + Added since 24.03.0. Available values: GENERAL, MODEL_STORE + """ + type: [String] = ["GENERAL"] + ): [Group] image(reference: String!, architecture: String = "aarch64"): Image images(is_installed: Boolean, is_operation: Boolean): [Image] user(domain_name: String, email: String): User @@ -59,6 +85,24 @@ type Queries { is_active: Boolean status: String ): UserList + + """ + Added in 24.03.0. + """ + user_node(id: String!): UserNode + + """ + Added in 24.03.0. + """ + user_nodes( + filter: String + order: String + offset: Int + before: String + after: String + first: Int + last: Int + ): UserConnection keypair(domain_name: String, access_key: String): KeyPair keypairs(domain_name: String, email: String, is_active: Boolean): [KeyPair] keypair_list( @@ -207,12 +251,31 @@ type Queries { quota_scope(storage_host_name: String!, quota_scope_id: String!): QuotaScope container_registry(hostname: String!): ContainerRegistry container_registries: [ContainerRegistry] + + """ + Added in 24.03.0. + """ + model_info(id: String!): ModelInfo + + """ + Added in 24.03.0. + """ + model_infos( + filter: String + order: String + offset: Int + before: String + after: String + first: Int + last: Int + ): ModelInfoConnection } """ -An object with an ID +This GraphQL Relay Node extension is for running asynchronous resolvers and fine-grained handling of global id. +Refer to: https://github.com/graphql-python/graphene/blob/master/graphene/relay/node.py """ -interface Node { +interface AsyncNode { """ The ID of the object """ @@ -350,6 +413,169 @@ type Domain { scaling_groups: [String] } +type GroupNode implements AsyncNode { + """ + The ID of the object + """ + id: ID! + name: String + description: String + is_active: Boolean + created_at: DateTime + modified_at: DateTime + domain_name: String + total_resource_slots: JSONString + allowed_vfolder_hosts: JSONString + integration_id: String + resource_policy: String + scaling_groups: [String] + user_nodes( + filter: String + order: String + offset: Int + before: String + after: String + first: Int + last: Int + ): UserConnection +} + +type UserConnection { + """ + Pagination data for this connection. + """ + pageInfo: PageInfo! + + """ + Contains the nodes in this connection. + """ + edges: [UserEdge]! + + """ + Total count of the GQL nodes of the query. + """ + count: Int +} + +""" +The Relay compliant `PageInfo` type, containing data necessary to paginate this connection. +""" +type PageInfo { + """ + When paginating forwards, are there more items? + """ + hasNextPage: Boolean! + + """ + When paginating backwards, are there more items? + """ + hasPreviousPage: Boolean! + + """ + When paginating backwards, the cursor to continue. + """ + startCursor: String + + """ + When paginating forwards, the cursor to continue. + """ + endCursor: String +} + +""" +A Relay edge containing a `User` and its cursor. +""" +type UserEdge { + """ + The item at the end of the edge + """ + node: UserNode + + """ + A cursor for use in pagination + """ + cursor: String! +} + +type UserNode implements AsyncNode { + """ + The ID of the object + """ + id: ID! + + """ + Unique username of the user. + """ + username: String + + """ + Unique email of the user. + """ + email: String + need_password_change: Boolean + full_name: String + description: String + is_active: Boolean + @deprecated( + reason: "Deprecated since 24.03.0. Recommend to use `status` field." + ) + + """ + The status is one of `active`, `inactive`, `deleted` or `before-verification`. + """ + status: String + + """ + Additional information of user status. + """ + status_info: String + created_at: DateTime + modified_at: DateTime + domain_name: String + + """ + The role is one of `user`, `admin`, `superadmin` or `monitor`. + """ + role: String + resource_policy: String + allowed_client_ip: [String] + totp_activated: Boolean + totp_activated_at: DateTime + sudo_session_enabled: Boolean +} + +type GroupConnection { + """ + Pagination data for this connection. + """ + pageInfo: PageInfo! + + """ + Contains the nodes in this connection. + """ + edges: [GroupEdge]! + + """ + Total count of the GQL nodes of the query. + """ + count: Int +} + +""" +A Relay edge containing a `Group` and its cursor. +""" +type GroupEdge { + """ + The item at the end of the edge + """ + node: GroupNode + + """ + A cursor for use in pagination + """ + cursor: String! +} + type Group { id: UUID name: String @@ -362,6 +588,11 @@ type Group { allowed_vfolder_hosts: JSONString integration_id: String resource_policy: String + + """ + Added since 24.03.0. + """ + type: String scaling_groups: [String] } @@ -625,6 +856,16 @@ type StorageVolume implements Item { hardware_metadata: JSONString performance_metric: JSONString usage: JSONString + + """ + Added since 24.03.0. Name of the proxy which this volume belongs to. + """ + proxy: String + + """ + Added since 24.03.0. Name of the storage. + """ + name: String } type StorageVolumeList implements PaginatedList { @@ -828,6 +1069,16 @@ type ContainerRegistry implements Node { config: ContainerRegistryConfig } +""" +An object with an ID +""" +interface Node { + """ + The ID of the object + """ + id: ID! +} + type ContainerRegistryConfig { url: String! type: String! @@ -837,6 +1088,78 @@ type ContainerRegistryConfig { ssl_verify: Boolean } +type ModelInfo implements AsyncNode { + """ + The ID of the object + """ + id: ID! + name: String + vfolder: VirtualFolder + author: String + + """ + Human readable name of the model. + """ + title: String + version: String + + """ + The time the model was created. + """ + created_at: DateTime + + """ + The last time the model was modified. + """ + modified_at: DateTime + description: String + task: String + category: String + architecture: String + framework: [String] + label: [String] + license: String + min_resource: JSONString + readme: String + + """ + Type (mostly extension of the filename) of the README file. e.g. md, rst, txt, ... + """ + readme_filetype: String +} + +type ModelInfoConnection { + """ + Pagination data for this connection. + """ + pageInfo: PageInfo! + + """ + Contains the nodes in this connection. + """ + edges: [ModelInfoEdge]! + + """ + Total count of the GQL nodes of the query. + """ + count: Int +} + +""" +A Relay edge containing a `ModelInfo` and its cursor. +""" +type ModelInfoEdge { + """ + The item at the end of the edge + """ + node: ModelInfo + + """ + A cursor for use in pagination + """ + cursor: String! +} + """ All available GraphQL mutations. """ @@ -1032,12 +1355,12 @@ type CreateDomain { } input DomainInput { - description: String - is_active: Boolean - total_resource_slots: JSONString - allowed_vfolder_hosts: JSONString - allowed_docker_registries: [String] - integration_id: String + description: String = "" + is_active: Boolean = true + total_resource_slots: JSONString = "{}" + allowed_vfolder_hosts: JSONString = "{}" + allowed_docker_registries: [String] = [] + integration_id: String = null } type ModifyDomain { @@ -1082,13 +1405,17 @@ type CreateGroup { } input GroupInput { - description: String - is_active: Boolean + """ + Added since 24.03.0. Available values: GENERAL, MODEL_STORE + """ + type: String = "GENERAL" + description: String = "" + is_active: Boolean = true domain_name: String! - total_resource_slots: JSONString - allowed_vfolder_hosts: JSONString - integration_id: String - resource_policy: String + total_resource_slots: JSONString = "{}" + allowed_vfolder_hosts: JSONString = "{}" + integration_id: String = "" + resource_policy: String = "default" } type ModifyGroup { @@ -1140,17 +1467,17 @@ input UserInput { username: String! password: String! need_password_change: Boolean! - full_name: String - description: String - is_active: Boolean - status: String - domain_name: String! - role: String + full_name: String = "" + description: String = "" + is_active: Boolean = true + status: String = "active" + domain_name: String! = "default" + role: String = "user" group_ids: [String] - allowed_client_ip: [String] - totp_activated: Boolean - resource_policy: String - sudo_session_enabled: Boolean + allowed_client_ip: [String] = null + totp_activated: Boolean = false + resource_policy: String = "default" + sudo_session_enabled: Boolean = false } type ModifyUser { @@ -1216,8 +1543,8 @@ type CreateKeyPair { } input KeyPairInput { - is_active: Boolean - is_admin: Boolean + is_active: Boolean = true + is_admin: Boolean = false resource_policy: String! concurrency_limit: Int rate_limit: Int! @@ -1467,16 +1794,16 @@ type CreateScalingGroup { } input CreateScalingGroupInput { - description: String - is_active: Boolean - is_public: Boolean - wsproxy_addr: String - wsproxy_api_token: String + description: String = "" + is_active: Boolean = true + is_public: Boolean = true + wsproxy_addr: String = null + wsproxy_api_token: String = null driver: String! - driver_opts: JSONString + driver_opts: JSONString = "{}" scheduler: String! - scheduler_opts: JSONString - use_host_network: Boolean + scheduler_opts: JSONString = "{}" + use_host_network: Boolean = false } type ModifyScalingGroup { diff --git a/react/package-lock.json b/react/package-lock.json index 61142b0165..719b35b502 100644 --- a/react/package-lock.json +++ b/react/package-lock.json @@ -22,10 +22,12 @@ "i18next": "^23.5.1", "i18next-http-backend": "^2.2.2", "lodash": "^4.17.21", + "markdown-to-jsx": "^7.3.2", "react": "^18.2.0", "react-dom": "^18.2.0", "react-error-boundary": "^4.0.11", "react-i18next": "^13.2.2", + "react-markdown": "^9.0.1", "react-query": "^3.39.3", "react-relay": "^15.0.0", "react-router-dom": "^6.16.0", @@ -8075,6 +8077,14 @@ "@types/node": "*" } }, + "node_modules/@types/debug": { + "version": "4.1.12", + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz", + "integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==", + "dependencies": { + "@types/ms": "*" + } + }, "node_modules/@types/detect-port": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/@types/detect-port/-/detect-port-1.3.3.tgz", @@ -8269,6 +8279,14 @@ "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.199.tgz", "integrity": "sha512-Vrjz5N5Ia4SEzWWgIVwnHNEnb1UE1XMkvY5DGXrAeOGE9imk0hgTHh5GyDjLDJi9OTCn9oo9dXH1uToK1VRfrg==" }, + "node_modules/@types/mdast": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.3.tgz", + "integrity": "sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==", + "dependencies": { + "@types/unist": "*" + } + }, "node_modules/@types/mdx": { "version": "2.0.7", "resolved": "https://registry.npmjs.org/@types/mdx/-/mdx-2.0.7.tgz", @@ -8286,6 +8304,11 @@ "integrity": "sha512-vXOTGVSLR2jMw440moWTC7H19iUyLtP3Z1YTj7cSsubOICinjMxFeb/V57v9QdyyPGbbWolUFSSmSiRSn94tFw==", "dev": true }, + "node_modules/@types/ms": { + "version": "0.7.34", + "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.34.tgz", + "integrity": "sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==" + }, "node_modules/@types/node": { "version": "20.7.0", "resolved": "https://registry.npmjs.org/@types/node/-/node-20.7.0.tgz", @@ -8732,6 +8755,11 @@ "url": "https://opencollective.com/typescript-eslint" } }, + "node_modules/@ungap/structured-clone": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", + "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==" + }, "node_modules/@webassemblyjs/ast": { "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.6.tgz", @@ -9939,6 +9967,15 @@ "npm": ">=6" } }, + "node_modules/bail": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz", + "integrity": "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", @@ -11593,6 +11630,27 @@ "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz", "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==" }, + "node_modules/decode-named-character-reference": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.0.2.tgz", + "integrity": "sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==", + "dependencies": { + "character-entities": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/decode-named-character-reference/node_modules/character-entities": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz", + "integrity": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/dedent": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", @@ -11845,6 +11903,18 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" }, + "node_modules/devlop": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz", + "integrity": "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==", + "dependencies": { + "dequal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/didyoumean": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", @@ -13204,8 +13274,7 @@ "node_modules/extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "dev": true + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" }, "node_modules/extract-zip": { "version": "1.7.0", @@ -14246,6 +14315,86 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/hast-util-to-jsx-runtime": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/hast-util-to-jsx-runtime/-/hast-util-to-jsx-runtime-2.2.0.tgz", + "integrity": "sha512-wSlp23N45CMjDg/BPW8zvhEi3R+8eRE1qFbjEyAUzMCzu2l1Wzwakq+Tlia9nkCtEl5mDxa7nKHsvYJ6Gfn21A==", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "comma-separated-tokens": "^2.0.0", + "hast-util-whitespace": "^3.0.0", + "property-information": "^6.0.0", + "space-separated-tokens": "^2.0.0", + "style-to-object": "^0.4.0", + "unist-util-position": "^5.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-to-jsx-runtime/node_modules/@types/hast": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.3.tgz", + "integrity": "sha512-2fYGlaDy/qyLlhidX42wAH0KBi2TCjKMH8CHmBXgRlJ3Y+OXTiqsPQ6IWarZKwF1JoUcAJdPogv1d4b0COTpmQ==", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/hast-util-to-jsx-runtime/node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==" + }, + "node_modules/hast-util-to-jsx-runtime/node_modules/comma-separated-tokens": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz", + "integrity": "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/hast-util-to-jsx-runtime/node_modules/property-information": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/property-information/-/property-information-6.4.0.tgz", + "integrity": "sha512-9t5qARVofg2xQqKtytzt+lZ4d1Qvj8t5B8fEwXK6qOfgRLgH/b13QlgEyDh033NOS31nXeFbYv7CLUDG1CeifQ==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/hast-util-to-jsx-runtime/node_modules/space-separated-tokens": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz", + "integrity": "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/hast-util-whitespace": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-3.0.0.tgz", + "integrity": "sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==", + "dependencies": { + "@types/hast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-whitespace/node_modules/@types/hast": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.3.tgz", + "integrity": "sha512-2fYGlaDy/qyLlhidX42wAH0KBi2TCjKMH8CHmBXgRlJ3Y+OXTiqsPQ6IWarZKwF1JoUcAJdPogv1d4b0COTpmQ==", + "dependencies": { + "@types/unist": "*" + } + }, "node_modules/hastscript": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-6.0.0.tgz", @@ -14406,6 +14555,15 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/html-url-attributes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/html-url-attributes/-/html-url-attributes-3.0.0.tgz", + "integrity": "sha512-/sXbVCWayk6GDVg3ctOX6nxaVj7So40FcFAnWlWGNAB1LpYKcV5Cd10APjPjW80O7zYW2MsjBV4zZ7IZO5fVow==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/html-webpack-plugin": { "version": "5.5.3", "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.5.3.tgz", @@ -14713,6 +14871,11 @@ "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" }, + "node_modules/inline-style-parser": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.1.1.tgz", + "integrity": "sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==" + }, "node_modules/internal-slot": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz", @@ -18304,7 +18467,6 @@ "version": "7.3.2", "resolved": "https://registry.npmjs.org/markdown-to-jsx/-/markdown-to-jsx-7.3.2.tgz", "integrity": "sha512-B+28F5ucp83aQm+OxNrPkS8z0tMKaeHiy0lHJs3LqCyDQFtWuenaIrkaVTgAm1pf1AU85LXltva86hlaT17i8Q==", - "dev": true, "engines": { "node": ">= 10" }, @@ -18334,6 +18496,117 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/mdast-util-from-markdown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.0.tgz", + "integrity": "sha512-n7MTOr/z+8NAX/wmhhDji8O3bRvPTV/U0oTCaZJkjhPSKTPhS3xufVhKGF8s1pJ7Ox4QgoIU7KHseh09S+9rTA==", + "dependencies": { + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "mdast-util-to-string": "^4.0.0", + "micromark": "^4.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-decode-string": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-from-markdown/node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==" + }, + "node_modules/mdast-util-from-markdown/node_modules/mdast-util-to-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-4.0.0.tgz", + "integrity": "sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==", + "dependencies": { + "@types/mdast": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-hast": { + "version": "13.0.2", + "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-13.0.2.tgz", + "integrity": "sha512-U5I+500EOOw9e3ZrclN3Is3fRpw8c19SMyNZlZ2IS+7vLsNzb2Om11VpIVOR+/0137GhZsFEF6YiKD5+0Hr2Og==", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "@ungap/structured-clone": "^1.0.0", + "devlop": "^1.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "trim-lines": "^3.0.0", + "unist-util-position": "^5.0.0", + "unist-util-visit": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-hast/node_modules/@types/hast": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.3.tgz", + "integrity": "sha512-2fYGlaDy/qyLlhidX42wAH0KBi2TCjKMH8CHmBXgRlJ3Y+OXTiqsPQ6IWarZKwF1JoUcAJdPogv1d4b0COTpmQ==", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/mdast-util-to-hast/node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==" + }, + "node_modules/mdast-util-to-hast/node_modules/unist-util-is": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", + "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-hast/node_modules/unist-util-visit": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.0.0.tgz", + "integrity": "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0", + "unist-util-visit-parents": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-hast/node_modules/unist-util-visit-parents": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", + "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/mdast-util-to-string": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-1.1.0.tgz", @@ -18403,6 +18676,427 @@ "node": ">= 0.6" } }, + "node_modules/micromark": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/micromark/-/micromark-4.0.0.tgz", + "integrity": "sha512-o/sd0nMof8kYff+TqcDx3VSrgBTcZpSvYcAHIfHhv5VAuNmisCxjhx6YmxS8PFEpb9z5WKWKPdzf0jM23ro3RQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "@types/debug": "^4.0.0", + "debug": "^4.0.0", + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "micromark-core-commonmark": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-combine-extensions": "^2.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-encode": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "micromark-util-subtokenize": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-core-commonmark": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-2.0.0.tgz", + "integrity": "sha512-jThOz/pVmAYUtkroV3D5c1osFXAMv9e0ypGDOIZuCeAe91/sD6BoE2Sjzt30yuXtwOYUmySOhMas/PVyh02itA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "micromark-factory-destination": "^2.0.0", + "micromark-factory-label": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-factory-title": "^2.0.0", + "micromark-factory-whitespace": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-classify-character": "^2.0.0", + "micromark-util-html-tag-name": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-subtokenize": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-destination": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-2.0.0.tgz", + "integrity": "sha512-j9DGrQLm/Uhl2tCzcbLhy5kXsgkHUrjJHg4fFAeoMRwJmJerT9aw4FEhIbZStWN8A3qMwOp1uzHr4UL8AInxtA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-label": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-2.0.0.tgz", + "integrity": "sha512-RR3i96ohZGde//4WSe/dJsxOX6vxIg9TimLAS3i4EhBAFx8Sm5SmqVfR8E87DPSR31nEAjZfbt91OMZWcNgdZw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "devlop": "^1.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-space": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.0.tgz", + "integrity": "sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-title": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-2.0.0.tgz", + "integrity": "sha512-jY8CSxmpWLOxS+t8W+FG3Xigc0RDQA9bKMY/EwILvsesiRniiVMejYTE4wumNc2f4UbAa4WsHqe3J1QS1sli+A==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-whitespace": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-2.0.0.tgz", + "integrity": "sha512-28kbwaBjc5yAI1XadbdPYHX/eDnqaUFVikLwrO7FDnKG7lpgxnvk/XGRhX/PN0mOZ+dBSZ+LgunHS+6tYQAzhA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-character": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.0.1.tgz", + "integrity": "sha512-3wgnrmEAJ4T+mGXAUfMvMAbxU9RDG43XmGce4j6CwPtVxB3vfwXSZ6KhFwDzZ3mZHhmPimMAXg71veiBGzeAZw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-chunked": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-2.0.0.tgz", + "integrity": "sha512-anK8SWmNphkXdaKgz5hJvGa7l00qmcaUQoMYsBwDlSKFKjc6gjGXPDw3FNL3Nbwq5L8gE+RCbGqTw49FK5Qyvg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-classify-character": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-2.0.0.tgz", + "integrity": "sha512-S0ze2R9GH+fu41FA7pbSqNWObo/kzwf8rN/+IGlW/4tC6oACOs8B++bh+i9bVyNnwCcuksbFwsBme5OCKXCwIw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-combine-extensions": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-2.0.0.tgz", + "integrity": "sha512-vZZio48k7ON0fVS3CUgFatWHoKbbLTK/rT7pzpJ4Bjp5JjkZeasRfrS9wsBdDJK2cJLHMckXZdzPSSr1B8a4oQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-chunked": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-decode-numeric-character-reference": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-2.0.1.tgz", + "integrity": "sha512-bmkNc7z8Wn6kgjZmVHOX3SowGmVdhYS7yBpMnuMnPzDq/6xwVA604DuOXMZTO1lvq01g+Adfa0pE2UKGlxL1XQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-decode-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-2.0.0.tgz", + "integrity": "sha512-r4Sc6leeUTn3P6gk20aFMj2ntPwn6qpDZqWvYmAG6NgvFTIlj4WtrAudLi65qYoaGdXYViXYw2pkmn7QnIFasA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "decode-named-character-reference": "^1.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-encode": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.0.tgz", + "integrity": "sha512-pS+ROfCXAGLWCOc8egcBvT0kf27GoWMqtdarNfDcjb6YLuV5cM3ioG45Ys2qOVqeqSbjaKg72vU+Wby3eddPsA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/micromark-util-html-tag-name": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-2.0.0.tgz", + "integrity": "sha512-xNn4Pqkj2puRhKdKTm8t1YHC/BAjx6CEwRFXntTaRf/x16aqka6ouVoutm+QdkISTlT7e2zU7U4ZdlDLJd2Mcw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/micromark-util-normalize-identifier": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-2.0.0.tgz", + "integrity": "sha512-2xhYT0sfo85FMrUPtHcPo2rrp1lwbDEEzpx7jiH2xXJLqBuy4H0GgXk5ToU8IEwoROtXuL8ND0ttVa4rNqYK3w==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-resolve-all": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-2.0.0.tgz", + "integrity": "sha512-6KU6qO7DZ7GJkaCgwBNtplXCvGkJToU86ybBAUdavvgsCiG8lSSvYxr9MhwmQ+udpzywHsl4RpGJsYWG1pDOcA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-sanitize-uri": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.0.tgz", + "integrity": "sha512-WhYv5UEcZrbAtlsnPuChHUAsu/iBPOVaEVsntLBIdpibO0ddy8OzavZz3iL2xVvBZOpolujSliP65Kq0/7KIYw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-encode": "^2.0.0", + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-subtokenize": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-2.0.0.tgz", + "integrity": "sha512-vc93L1t+gpR3p8jxeVdaYlbV2jTYteDje19rNSS/H5dlhxUYll5Fy6vJ2cDwP8RnsXi818yGty1ayP55y3W6fg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "devlop": "^1.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-symbol": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", + "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/micromark-util-types": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.0.tgz", + "integrity": "sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, "node_modules/micromatch": { "version": "4.0.5", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", @@ -21986,6 +22680,83 @@ "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==" }, + "node_modules/react-markdown": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/react-markdown/-/react-markdown-9.0.1.tgz", + "integrity": "sha512-186Gw/vF1uRkydbsOIkcGXw7aHq0sZOCRFFjGrr7b9+nVZg4UfA4enXCaxm4fUzecU38sWfrNDitGhshuU7rdg==", + "dependencies": { + "@types/hast": "^3.0.0", + "devlop": "^1.0.0", + "hast-util-to-jsx-runtime": "^2.0.0", + "html-url-attributes": "^3.0.0", + "mdast-util-to-hast": "^13.0.0", + "remark-parse": "^11.0.0", + "remark-rehype": "^11.0.0", + "unified": "^11.0.0", + "unist-util-visit": "^5.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + }, + "peerDependencies": { + "@types/react": ">=18", + "react": ">=18" + } + }, + "node_modules/react-markdown/node_modules/@types/hast": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.3.tgz", + "integrity": "sha512-2fYGlaDy/qyLlhidX42wAH0KBi2TCjKMH8CHmBXgRlJ3Y+OXTiqsPQ6IWarZKwF1JoUcAJdPogv1d4b0COTpmQ==", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/react-markdown/node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==" + }, + "node_modules/react-markdown/node_modules/unist-util-is": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", + "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/react-markdown/node_modules/unist-util-visit": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.0.0.tgz", + "integrity": "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0", + "unist-util-visit-parents": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/react-markdown/node_modules/unist-util-visit-parents": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", + "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/react-query": { "version": "3.39.3", "resolved": "https://registry.npmjs.org/react-query/-/react-query-3.39.3.tgz", @@ -23648,6 +24419,45 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/remark-parse": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-11.0.0.tgz", + "integrity": "sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==", + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-from-markdown": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-rehype": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/remark-rehype/-/remark-rehype-11.0.0.tgz", + "integrity": "sha512-vx8x2MDMcxuE4lBmQ46zYUDfcFMmvg80WYX+UNLeG6ixjdCCLcw1lrgAukwBTuOFsS78eoAedHGn9sNM0w7TPw==", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "mdast-util-to-hast": "^13.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-rehype/node_modules/@types/hast": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.3.tgz", + "integrity": "sha512-2fYGlaDy/qyLlhidX42wAH0KBi2TCjKMH8CHmBXgRlJ3Y+OXTiqsPQ6IWarZKwF1JoUcAJdPogv1d4b0COTpmQ==", + "dependencies": { + "@types/unist": "*" + } + }, "node_modules/remark-slug": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/remark-slug/-/remark-slug-6.1.0.tgz", @@ -24851,6 +25661,14 @@ "webpack": "^5.0.0" } }, + "node_modules/style-to-object": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-0.4.4.tgz", + "integrity": "sha512-HYNoHZa2GorYNyqiCaBgsxvcJIn7OHq6inEga+E6Ke3m5JkoqpQbnFssk4jwe+K7AhGa2fcha4wSOf1Kn01dMg==", + "dependencies": { + "inline-style-parser": "0.1.1" + } + }, "node_modules/stylehacks": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-5.1.1.tgz", @@ -25552,6 +26370,24 @@ "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" }, + "node_modules/trim-lines": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz", + "integrity": "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/trough": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/trough/-/trough-2.1.0.tgz", + "integrity": "sha512-AqTiAOLcj85xS7vQ8QkAV41hPDIJ71XJB4RCUrzo/1GM2CQwhkJGaf9Hgr7BOugMRpgGUrqRg/DrBDl4H40+8g==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/tryer": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/tryer/-/tryer-1.0.1.tgz", @@ -25913,6 +26749,40 @@ "node": ">=4" } }, + "node_modules/unified": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.4.tgz", + "integrity": "sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==", + "dependencies": { + "@types/unist": "^3.0.0", + "bail": "^2.0.0", + "devlop": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unified/node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==" + }, + "node_modules/unified/node_modules/is-plain-obj": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", + "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/unique-string": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", @@ -25934,6 +26804,40 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/unist-util-position": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz", + "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-position/node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==" + }, + "node_modules/unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-stringify-position/node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==" + }, "node_modules/unist-util-visit": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-2.0.3.tgz", @@ -26269,6 +27173,43 @@ "node": ">= 0.8" } }, + "node_modules/vfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", + "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile-message/node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==" + }, + "node_modules/vfile/node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==" + }, "node_modules/void-elements": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-3.1.0.tgz", diff --git a/react/package.json b/react/package.json index b3b066c9a9..388cb9c8f8 100644 --- a/react/package.json +++ b/react/package.json @@ -17,10 +17,12 @@ "i18next": "^23.5.1", "i18next-http-backend": "^2.2.2", "lodash": "^4.17.21", + "markdown-to-jsx": "^7.3.2", "react": "^18.2.0", "react-dom": "^18.2.0", "react-error-boundary": "^4.0.11", "react-i18next": "^13.2.2", + "react-markdown": "^9.0.1", "react-query": "^3.39.3", "react-relay": "^15.0.0", "react-router-dom": "^6.16.0", @@ -71,13 +73,13 @@ "@storybook/react": "^7.4.5", "@storybook/react-webpack5": "^7.4.5", "@storybook/testing-library": "^0.2.1", - "babel-plugin-named-exports-order": "^0.0.2", "@testing-library/user-event": "^14.5.1", "@types/react-relay": "^14.1.6", "@types/react-syntax-highlighter": "^15.5.7", "@types/react-test-renderer": "^18.0.3", "@types/relay-runtime": "^14.1.14", "@types/relay-test-utils": "^14.1.1", + "babel-plugin-named-exports-order": "^0.0.2", "babel-plugin-relay": "^15.0.0", "eslint-plugin-storybook": "^0.6.14", "prop-types": "^15.8.1", diff --git a/react/src/components/BAIModal.tsx b/react/src/components/BAIModal.tsx index a3f3a59be7..418589e4b2 100644 --- a/react/src/components/BAIModal.tsx +++ b/react/src/components/BAIModal.tsx @@ -1,18 +1,26 @@ // @ts-ignore import rawBAIModalCss from './BAIModal.css?raw'; -import { Modal, ModalProps } from 'antd'; +import { Modal, ModalProps, theme } from 'antd'; import React from 'react'; export interface BAIModalProps extends ModalProps { okText?: string; // customize text of ok button with adequate content } -const BAIModal: React.FC = ({ ...modalProps }) => { +const BAIModal: React.FC = ({ styles, ...modalProps }) => { + const { token } = theme.useToken(); return ( <> diff --git a/react/src/components/ModelCardModal.tsx b/react/src/components/ModelCardModal.tsx new file mode 100644 index 0000000000..f9b156b9b6 --- /dev/null +++ b/react/src/components/ModelCardModal.tsx @@ -0,0 +1,327 @@ +import { useBackendaiImageMetaData } from '../hooks'; +import BAIModal, { BAIModalProps } from './BAIModal'; +import Flex from './Flex'; +import ModelCloneModal from './ModelCloneModal'; +import ResourceNumber from './ResourceNumber'; +import { ModelCardModalFragment$key } from './__generated__/ModelCardModalFragment.graphql'; +import { + BankOutlined, + CopyOutlined, + DownloadOutlined, + FileOutlined, +} from '@ant-design/icons'; +import { + Button, + Card, + Col, + Descriptions, + Grid, + Row, + Tag, + Typography, + theme, +} from 'antd'; +import graphql from 'babel-plugin-relay/macro'; +import dayjs from 'dayjs'; +import _ from 'lodash'; +import Markdown from 'markdown-to-jsx'; +import React, { Suspense, useState } from 'react'; +import { useTranslation } from 'react-i18next'; +import { useFragment } from 'react-relay'; + +const { Title, Paragraph } = Typography; + +interface ModelCardModalProps extends BAIModalProps { + modelCardModalFrgmt?: ModelCardModalFragment$key | null; + onRequestClose: () => void; +} +const ModelCardModal: React.FC = ({ + modelCardModalFrgmt = null, + onRequestClose, + ...props +}) => { + const { t } = useTranslation(); + const { token } = theme.useToken(); + + const [visibleCloneModal, setVisibleCloneModal] = useState(false); + + const screen = Grid.useBreakpoint(); + const [metadata] = useBackendaiImageMetaData(); + const model_info = useFragment( + graphql` + fragment ModelCardModalFragment on ModelInfo { + id + name + author + title + version + created_at + modified_at + description + task + category + architecture + framework + label + license + readme + min_resource + architecture + framework + vfolder { + name + cloneable + host + } + } + `, + modelCardModalFrgmt, + ); + return ( + { + onRequestClose(); + }} + > + {t('button.Close')} + , + ]} + > + + + {model_info?.category && ( + + {model_info?.category} + + )} + {model_info?.task && ( + + {model_info?.task} + + )} + {model_info?.label && + _.map(model_info?.label, (label) => ( + + {label} + + ))} + {model_info?.license && ( + } + bordered={false} + color="geekblue" + style={{ marginRight: 0 }} + > + {model_info?.license} + + )} + + + + + + + + + + + {t('modelStore.Description')} + + + {model_info?.description} + + + {_.map( + _.castArray(model_info?.framework), + (framework) => { + const targetImageKey = framework?.replace( + /\s*\d+\s*$/, + '', + ); + const imageInfo = _.find( + metadata?.imageInfo, + (imageInfo) => imageInfo.name === targetImageKey, + ); + return imageInfo?.icon ? ( + + {framework + {framework} + + ) : ( + {framework} + ); + }, + )} + + ), + }, + { + key: 'created', + label: t('modelStore.Created'), + children: dayjs(model_info?.created_at).format('lll'), + }, + { + key: 'last_modified', + label: t('modelStore.LastModified'), + children: dayjs(model_info?.modified_at).format('lll'), + }, + { + key: 'min_resource', + label: t('modelStore.MinResource'), + children: ( + + {model_info?.min_resource && + _.map( + JSON.parse(model_info?.min_resource), + (value, type) => { + return ( + + ); + }, + )} + + ), + }, + ]} + /> + + + + + + README.md + + } + bodyStyle={{ + padding: token.paddingLG, + overflow: 'auto', + height: screen.lg ? 'calc(100vh - 243px)' : undefined, + minHeight: 200, + // maxHeight: 650 + }} + > + {model_info?.readme || ''} + + + + + { + setVisibleCloneModal(false); + }} + onCancel={() => { + setVisibleCloneModal(false); + }} + /> + + + ); +}; + +export default ModelCardModal; diff --git a/react/src/components/ModelCloneModal.tsx b/react/src/components/ModelCloneModal.tsx new file mode 100644 index 0000000000..985f49dda9 --- /dev/null +++ b/react/src/components/ModelCloneModal.tsx @@ -0,0 +1,227 @@ +import { useSuspendedBackendaiClient } from '../hooks'; +import { useTanMutation } from '../hooks/reactQueryAlias'; +import { usePainKiller } from '../hooks/usePainKiller'; +import BAIModal, { BAIModalProps } from './BAIModal'; +import Flex from './Flex'; +import StorageSelector from './StorageSelector'; +import { Alert, Form, Input, Select, Switch, message } from 'antd'; +import { useTranslation } from 'react-i18next'; + +interface ModelCloneModalProps extends BAIModalProps { + sourceFolderName: string; + sourceFolderHost: string; +} +const ModelCloneModal: React.FC = ({ + sourceFolderName, + sourceFolderHost, + ...props +}) => { + const { t } = useTranslation(); + const baiClient = useSuspendedBackendaiClient(); + const [form] = Form.useForm(); + const painKiller = usePainKiller(); + + // const { data: allowed_vfolder_types } = useTanQuery({ + // queryKey: ['modelCloneModal', 'vfolder_allowed_types'], + // queryFn: () => { + // return baiClient.vfolder.list_allowed_types(); + // }, + // }); + + const mutationToClone = useTanMutation({ + // @ts-ignore + mutationFn: ({ input, name }: { input: any; name: string }) => { + return baiClient.vfolder.clone(input, name); + }, + }); + + return ( + { + form + .validateFields() + .then((values) => { + mutationToClone.mutate( + { + input: values, + name: sourceFolderName, + }, + { + onSuccess(data) { + message.info({ + content: t('modelStore.CloneSuccess'), + }); + props.onOk?.(data); + }, + onError(error: any) { + // const title = painKiller.relieve(error?.title); + const messageStr = painKiller.relieve(error?.message); + message.error({ + content: messageStr, + }); + }, + }, + ); + }) + .catch(() => {}); + }} + > + + +
+ + + + + + + + + + {/* + + {/* + + +
+
+
+ ); +}; + +export default ModelCloneModal; diff --git a/react/src/components/ProjectSelector.tsx b/react/src/components/ProjectSelector.tsx index d3756c003d..1bfcb58e62 100644 --- a/react/src/components/ProjectSelector.tsx +++ b/react/src/components/ProjectSelector.tsx @@ -1,23 +1,27 @@ import { ProjectSelectorQuery } from './__generated__/ProjectSelectorQuery.graphql'; +import { useControllableValue } from 'ahooks'; import { Select, SelectProps } from 'antd'; import graphql from 'babel-plugin-relay/macro'; import _ from 'lodash'; -import React from 'react'; +import React, { useEffect } from 'react'; import { useTranslation } from 'react-i18next'; import { useLazyLoadQuery } from 'react-relay'; interface Props extends SelectProps { onSelectProject?: (project: any) => void; domain: string; + autoSelectDefault?: boolean; } const ProjectSelector: React.FC = ({ onSelectProject, domain, + autoClearSearchValue, ...selectProps }) => { const { t } = useTranslation(); + const [value, setValue] = useControllableValue(selectProps); const { projects } = useLazyLoadQuery( graphql` query ProjectSelectorQuery($domain_name: String) { @@ -36,13 +40,27 @@ const ProjectSelector: React.FC = ({ fetchPolicy: 'store-and-network', }, ); + + useEffect(() => { + if ( + autoClearSearchValue && + !value && + projects?.length && + projects?.length > 0 + ) { + alert(projects[0]?.id); + setValue(projects[0]?.id); + } + }); return ( ({ + label: t, + value: t, + }))} + mode={'multiple'} + popupMatchSelectWidth={false} + value={selectedCategories} + onChange={(value) => { + setSelectedCategories(value as string[]); + }} + allowClear + /> + ({ + label: t, + value: t, + }))} + mode={'multiple'} + popupMatchSelectWidth={false} + value={selectedLabels} + onChange={(value) => { + setSelectedLabels(value as string[]); + }} + allowClear + /> + + + edge?.node) + .filter((info) => { + let passSearchFilter = true; + if (search) { + const searchLower = search.toLowerCase(); + passSearchFilter = + info?.title?.toLowerCase().includes(searchLower) || + info?.task?.toLowerCase().includes(searchLower) || + info?.category?.toLowerCase().includes(searchLower) || + info?.label?.some( + (label) => label?.toLowerCase().includes(searchLower), + ) || + false; + } + + return ( + (_.isEmpty(selectedCategories) || + _.includes(selectedCategories, info?.category)) && + (_.isEmpty(selectedLabels) || + _.intersection(selectedLabels, info?.label).length > 0) && + (_.isEmpty(selectedTasks) || + _.includes(selectedTasks, info?.task)) && + passSearchFilter + ); + })} + renderItem={(item) => ( + { + setCurrentModelInfo(item); + }} + > + + {item?.title} + + } + size="small" + > + + {item?.category && ( + + + {item?.category} + + + )} + {item?.task && ( + + + {item?.task} + + + )} + {item?.label && + _.map(item?.label, (label) => ( + + + {label} + + + ))} + + + + )} + /> + { + setCurrentModelInfo(null); + }} + /> + + ); +}; + +export default ModelStoreListPage; diff --git a/resources/i18n/de.json b/resources/i18n/de.json index 34ac2e92cc..aba3433e67 100644 --- a/resources/i18n/de.json +++ b/resources/i18n/de.json @@ -61,7 +61,8 @@ "PasswordChangePlace": "Klicken Sie auf das Personensymbol in der oberen Leiste und rufen Sie das Menü \"Mein Konto\" auf.", "Notifications": "Benachrichtigungen", "Tasks": "Aufgaben", - "FastTrack": "FastTrack" + "FastTrack": "FastTrack", + "Data&Model": "" }, "YouAreOffline": "Du bist jetzt offline", "YouAreOnline": "Sie sind jetzt online", @@ -240,17 +241,18 @@ "FolderAliasInvalid": "Es sind nur alphanumerische Zeichen, Unterstrich (_), Schrägstrich (/) und Bindestrich (-) zulässig.", "PreOpenPortMaxCountLimit": "Sie können bis zu {{count}} vorgeöffnete Ports einstellen.", "StartTimeMustBeInTheFuture": "Die Startzeit muss nach der aktuellen Uhrzeit liegen.", - "PreOpenPortMaxCountLimit_plural": "__NOT_TRANSLATED__", - "EnqueueComputeSessionWarning": "__NOT_TRANSLATED__", - "SessionName": "__NOT_TRANSLATED__", - "ResetFormConfirm": "__NOT_TRANSLATED__", - "TemplateAndHistory": "__NOT_TRANSLATED__", - "ScheduleTimeSimple": "__NOT_TRANSLATED__", + "PreOpenPortMaxCountLimit_plural": "", + "EnqueueComputeSessionWarning": "", + "SessionName": "", + "ResetFormConfirm": "", + "TemplateAndHistory": "", + "ScheduleTimeSimple": "", "ResourceAllocationPerContainer": "Ressourcenzuweisung pro Container", "NumberOfContainer": "Nummer des Behälters", "EnterEnvironmentVariable": "Variablenname eingeben", "EnvironmentVariableNamePatternError": "Der Variablenname muss mit einem Buchstaben oder Unterstrich beginnen und darf nur Buchstaben, Zahlen und Unterstriche enthalten.", - "EnvironmentVariableDuplicateName": "Ein Variablenname, der bereits existiert." + "EnvironmentVariableDuplicateName": "Ein Variablenname, der bereits existiert.", + "Template": "Sitzungsvorlage" }, "Preparing": "Vorbereitung...", "PreparingSession": "Sitzung vorbereiten...", @@ -399,7 +401,9 @@ "Unset": "Nicht eingestellt", "OK": "OK", "Commit": "Commit", - "EnterManually": "Manuell eingeben" + "EnterManually": "Manuell eingeben", + "Download": "Herunterladen", + "Clone": "Klonen" }, "agent": { "Endpoint": "Endpunkt", @@ -443,7 +447,7 @@ "Enabled": "aktiviert", "StorageProxies": "Speicher", "None": "Keine", - "Image": "__NOT_TRANSLATED__" + "Image": "" }, "credential": { "Permission": "Genehmigung", @@ -521,7 +525,7 @@ "SignoutSeccessfullyFinished": "Die Abmeldung ist erfolgreich abgeschlossen", "Status": "Status", "NoUserToDisplay": "Keine Benutzer zum Anzeigen", - "EnableSudoSession": "__NOT_TRANSLATED__" + "EnableSudoSession": "" }, "data": { "Folders": "Ordner", @@ -687,7 +691,11 @@ "Pipeline": "Pipeline-Ordner", "DialogDataFolder": "Pipeline-spezifische Ordner, die bei der Erstellung von Pipelines in FastTrack automatisch erstellt werden.", "DialogModelFolder": "Sie können Modelle bedienen und verwalten.", - "SearchByName": "Suche mit Name" + "SearchByName": "Suche mit Name", + "ModelStore": "", + "New": "__NOT_TRANSLATED__", + "Add": "hinzufügen", + "CloningIsOnlyPossibleSameHost": "Derzeit ist das Klonen nur auf demselben Host möglich." }, "dialog": { "warning": { @@ -1438,5 +1446,32 @@ "OpenVSCodeRemote": "Lokalen Visual Studio Code öffnen", "inputLimit": { "4to64chars": "(4~64 Zeichen)" + }, + "modelStore": { + "Description": "Beschreibung", + "Model": "Modell", + "FilterByName": "Nach Namen filtern", + "ServiceDetails": "Servicedetails", + "Metadata": "Metadaten", + "ModelPath": "Modellpfad", + "SearchModels": "Modelle suchen", + "MinResource": "Min. Ressource", + "LastModified": "Zuletzt bearbeitet", + "Created": "Erstellt", + "Version": "Ausführung", + "Author": "Autor", + "MaxRetries": "Max. Wiederholungsversuche", + "Path": "Weg", + "HealthCheck": "Gesundheitskontrolle", + "Port": "Hafen", + "StartCommand": "Befehl starten", + "PreStartActions": "Aktionen vor dem Start", + "Framework": "Rahmenwerk", + "Category": "Kategorien", + "Label": "Etikett", + "Task": "Aufgabe", + "CloneAsFolder": "Als Ordner klonen", + "CloneSuccess": "Die Klonanfrage wurde erfolgreich gesendet.", + "CloneInfo": "Er wird als Ihr Benutzertyp-Ordner geklont." } } diff --git a/resources/i18n/el.json b/resources/i18n/el.json index b87e7de262..f981ec9bb8 100644 --- a/resources/i18n/el.json +++ b/resources/i18n/el.json @@ -61,7 +61,8 @@ "PasswordChangePlace": "Κάντε κλικ στο εικονίδιο προσώπου στην επάνω μπάρα και μεταβείτε στο μενού \"Ο λογαριασμός μου\".", "Notifications": "Ειδοποιήσεις", "Tasks": "Εργασίες", - "FastTrack": "FastTrack" + "FastTrack": "FastTrack", + "Data&Model": "" }, "YouAreOffline": "Είστε πλέον εκτός σύνδεσης", "YouAreOnline": "Είστε πλέον συνδεδεμένοι", @@ -240,17 +241,18 @@ "FolderAliasInvalid": "Επιτρέπονται μόνο αλφαριθμητικοί χαρακτήρες, κάτω παύλα (_), κάθετος (/) και παύλα (-).", "PreOpenPortMaxCountLimit": "Μπορείτε να ορίσετε έως και {{count}} προ-ανοικτές θύρες.", "StartTimeMustBeInTheFuture": "Η ώρα έναρξης πρέπει να είναι μετά την τρέχουσα ώρα.", - "PreOpenPortMaxCountLimit_plural": "__NOT_TRANSLATED__", - "EnqueueComputeSessionWarning": "__NOT_TRANSLATED__", - "SessionName": "__NOT_TRANSLATED__", - "ResetFormConfirm": "__NOT_TRANSLATED__", - "TemplateAndHistory": "__NOT_TRANSLATED__", - "ScheduleTimeSimple": "__NOT_TRANSLATED__", + "PreOpenPortMaxCountLimit_plural": "", + "EnqueueComputeSessionWarning": "", + "SessionName": "", + "ResetFormConfirm": "", + "TemplateAndHistory": "", + "ScheduleTimeSimple": "", "ResourceAllocationPerContainer": "Κατανομή πόρων ανά εμπορευματοκιβώτιο", "NumberOfContainer": "Αριθμός εμπορευματοκιβωτίων", "EnterEnvironmentVariable": "Εισάγετε το όνομα της μεταβλητής", "EnvironmentVariableNamePatternError": "Το όνομα της μεταβλητής πρέπει να αρχίζει με γράμμα ή υπογράμμιση και μπορεί να περιέχει μόνο γράμματα, αριθμούς και υπογράμμιση.", - "EnvironmentVariableDuplicateName": "Ένα όνομα μεταβλητής που υπάρχει ήδη." + "EnvironmentVariableDuplicateName": "Ένα όνομα μεταβλητής που υπάρχει ήδη.", + "Template": "Πρότυπο συνεδρίας" }, "Preparing": "Προετοιμασία ...", "PreparingSession": "Προετοιμασία συνεδρίας ...", @@ -399,7 +401,9 @@ "Unset": "Μη ρυθμισμένο", "OK": "OK", "Commit": "Δέσμευση", - "EnterManually": "Εισάγετε χειροκίνητα" + "EnterManually": "Εισάγετε χειροκίνητα", + "Download": "Λήψη", + "Clone": "Κλώνος" }, "agent": { "Endpoint": "Τελικό σημείο", @@ -443,7 +447,7 @@ "Enabled": "Ενεργοποιήθηκε", "StorageProxies": "Αποθήκες", "None": "Κανένα", - "Image": "__NOT_TRANSLATED__" + "Image": "" }, "credential": { "Permission": "Αδεια", @@ -521,7 +525,7 @@ "SignoutSeccessfullyFinished": "Η αποσύνδεση ολοκληρώθηκε επιτυχώς", "Status": "Κατάσταση", "NoUserToDisplay": "Δεν υπάρχουν χρήστες για εμφάνιση", - "EnableSudoSession": "__NOT_TRANSLATED__" + "EnableSudoSession": "" }, "data": { "Folders": "Φάκελοι", @@ -687,7 +691,11 @@ "Pipeline": "Φάκελοι αγωγών", "DialogDataFolder": "Ειδικοί φάκελοι αγωγών που δημιουργούνται αυτόματα κατά τη δημιουργία αγωγών στο FastTrack.", "DialogModelFolder": "Μπορείτε να εξυπηρετείτε και να διαχειρίζεστε μοντέλα.", - "SearchByName": "Αναζήτηση με όνομα" + "SearchByName": "Αναζήτηση με όνομα", + "ModelStore": "", + "New": "__NOT_TRANSLATED__", + "Add": "Προσθέστε", + "CloningIsOnlyPossibleSameHost": "Προς το παρόν, η κλωνοποίηση είναι δυνατή μόνο στον ίδιο κεντρικό υπολογιστή." }, "dialog": { "warning": { @@ -1438,5 +1446,32 @@ "OpenVSCodeRemote": "Ανοίξτε τον τοπικό κώδικα του Visual Studio", "inputLimit": { "4to64chars": "(4~64 χαρακτήρες)" + }, + "modelStore": { + "Description": "Περιγραφή", + "Model": "Μοντέλο", + "FilterByName": "Φιλτράρισμα κατά όνομα", + "ServiceDetails": "Στοιχεία υπηρεσίας", + "Metadata": "Μεταδεδομένα", + "ModelPath": "Μοντέλο Μονοπάτι", + "SearchModels": "Αναζήτηση μοντέλων", + "MinResource": "Ελάχιστος πόρος", + "LastModified": "Τελευταία τροποποίηση", + "Created": "Δημιουργήθηκε", + "Version": "Εκδοχή", + "Author": "Συγγραφέας", + "MaxRetries": "Μέγιστες επαναλήψεις", + "Path": "Μονοπάτι", + "HealthCheck": "Ελεγχος υγείας", + "Port": "Λιμάνι", + "StartCommand": "Εκκίνηση Εντολή", + "PreStartActions": "Ενέργειες πριν από την έναρξη", + "Framework": "Πλαίσιο", + "Category": "Κατηγορίες", + "Label": "Ετικέτα", + "Task": "Εργασία", + "CloneAsFolder": "Clone as Folder", + "CloneSuccess": "Η αίτηση κλωνοποίησης έχει σταλεί με επιτυχία.", + "CloneInfo": "Θα κλωνοποιηθεί ως φάκελος τύπου χρήστη." } } diff --git a/resources/i18n/en.json b/resources/i18n/en.json index e9e1f76e70..69fd6dd175 100644 --- a/resources/i18n/en.json +++ b/resources/i18n/en.json @@ -61,7 +61,8 @@ "NewPasswordCannotBeSame": "Please enter a password that is different from your current password.", "Notifications": "Notifications", "Tasks": "Tasks", - "FastTrack": "FastTrack" + "FastTrack": "FastTrack", + "Data&Model": "Data & Model" }, "YouAreOffline": "You are now offline", "YouAreOnline": "You are now online", @@ -261,7 +262,8 @@ "NumberOfContainer": "Number of container", "EnterEnvironmentVariable": "Enter Variable name", "EnvironmentVariableNamePatternError": "Variable name must start with a letter or underscore, and can only contain letters, numbers, and underscores.", - "EnvironmentVariableDuplicateName": "A variable name that already exists." + "EnvironmentVariableDuplicateName": "A variable name that already exists.", + "Template": "Session Template" }, "Preparing": "Preparing...", "PreparingSession": "Preparing session...", @@ -457,7 +459,9 @@ "Commit": "Commit", "Reset": "Reset", "EnterManually": "Enter Manually", - "Unset": "Unset" + "Unset": "Unset", + "Download": "Download", + "Clone": "Clone" }, "agent": { "Endpoint": "Endpoint", @@ -779,7 +783,11 @@ "ProjectFolder": "Project Folder", "Pipeline": "Pipeline Folders", "DialogDataFolder": "Pipeline dedicated folders that are automatically created when creating pipelines in FastTrack.", - "SearchByName": "Search by name" + "SearchByName": "Search by name", + "ModelStore": "Model Store", + "New": "New", + "Add": "Add", + "CloningIsOnlyPossibleSameHost": "Currently, cloning is only possible on the same host." }, "dialog": { "warning": { @@ -1438,5 +1446,32 @@ "reloadPage": "Reload the page", "resetErrorBoundary": "Reset ErrorBoundary", "displayOnlyDevEnv": "This error block is displayed only in WebUI development environment." + }, + "modelStore": { + "FilterByName": "Filter By Name", + "Model": "Model", + "Description": "Description", + "ServiceDetails": "Service Details", + "ModelPath": "Model Path", + "PreStartActions": "Pre Start Actions", + "Metadata": "Metadata", + "Author": "Author", + "Version": "Version", + "Created": "Created", + "LastModified": "Last Modified", + "MinResource": "Min Resource", + "HealthCheck": "Health Check", + "Path": "Path", + "MaxRetries": "Max Retries", + "Port": "Port", + "StartCommand": "Start Command", + "SearchModels": "Search Models", + "Framework": "Framework", + "Category": "Category", + "Label": "Label", + "Task": "Task", + "CloneAsFolder": "Clone as Folder", + "CloneSuccess": "The clone request has been sent successfully.", + "CloneInfo": "It will be cloned as your user type folder." } } diff --git a/resources/i18n/es.json b/resources/i18n/es.json index d0b6d55390..97b58eb457 100644 --- a/resources/i18n/es.json +++ b/resources/i18n/es.json @@ -127,7 +127,9 @@ "Share": "Compartir", "Unset": "Sin configurar", "Update": "Actualización", - "Yes": "Sí" + "Yes": "Sí", + "Download": "Descargar", + "Clone": "Clon" }, "credential": { "AccessKeyOptional": "Clave de acceso (opcional)", @@ -205,7 +207,7 @@ "PolicyName": "Nombre de la póliza Obligatorio.", "ValidationFailed": "Validación fallida" }, - "EnableSudoSession": "__NOT_TRANSLATED__" + "EnableSudoSession": "" }, "data": { "Allowslettersnumbersand-_": "Permite letras, números y -_", @@ -371,7 +373,11 @@ "StatusOfSelectedHost": "Estado del host seleccionado", "used": "usado" }, - "SearchByName": "Buscar por nombre" + "SearchByName": "Buscar por nombre", + "ModelStore": "", + "New": "__NOT_TRANSLATED__", + "Add": "Añadir", + "CloningIsOnlyPossibleSameHost": "Actualmente, la clonación sólo es posible en el mismo host." }, "dialog": { "ErrorOccurred": "Se ha producido un error", @@ -476,7 +482,7 @@ "Username": "Nombre de usuario", "cores": "núcleos", "None": "Ninguno", - "Image": "__NOT_TRANSLATED__" + "Image": "" }, "import": { "CleanUpImportTask": "Tarea de importación de limpieza...", @@ -1112,17 +1118,18 @@ "Network": "Red", "Enable": "Permitir", "StartTimeMustBeInTheFuture": "La hora de inicio debe ser posterior a la hora actual.", - "PreOpenPortMaxCountLimit_plural": "__NOT_TRANSLATED__", - "EnqueueComputeSessionWarning": "__NOT_TRANSLATED__", - "SessionName": "__NOT_TRANSLATED__", - "ResetFormConfirm": "__NOT_TRANSLATED__", - "TemplateAndHistory": "__NOT_TRANSLATED__", - "ScheduleTimeSimple": "__NOT_TRANSLATED__", + "PreOpenPortMaxCountLimit_plural": "", + "EnqueueComputeSessionWarning": "", + "SessionName": "", + "ResetFormConfirm": "", + "TemplateAndHistory": "", + "ScheduleTimeSimple": "", "ResourceAllocationPerContainer": "Asignación de recursos por contenedor", "NumberOfContainer": "Número de contenedor", "EnterEnvironmentVariable": "Introduzca el nombre de la variable", "EnvironmentVariableNamePatternError": "El nombre de la variable debe empezar por una letra o un guión bajo, y sólo puede contener letras, números y guiones bajos.", - "EnvironmentVariableDuplicateName": "Un nombre de variable que ya existe." + "EnvironmentVariableDuplicateName": "Un nombre de variable que ya existe.", + "Template": "Plantilla de sesión" }, "ExpiresAfter": "Tiempo restante", "CPU": "CPU", @@ -1436,7 +1443,35 @@ "Users": "Usuarios", "WelcomeMessage": "Bienvenido,", "WelcomeMessage_2": " .", - "YouMushChangeYourPassword": "Se recomienda cambiar periódicamente la contraseña por razones de seguridad. Dado que ha transcurrido cierto tiempo desde la última vez que cambió su contraseña, deberá cambiarla para poder seguir utilizando el servicio." + "YouMushChangeYourPassword": "Se recomienda cambiar periódicamente la contraseña por razones de seguridad. Dado que ha transcurrido cierto tiempo desde la última vez que cambió su contraseña, deberá cambiarla para poder seguir utilizando el servicio.", + "Data&Model": "" } + }, + "modelStore": { + "Description": "Descripción", + "Model": "Modelo", + "FilterByName": "Filtrar por nombre", + "ServiceDetails": "Detalles del servicio", + "Metadata": "Metadatos", + "ModelPath": "Ruta del modelo", + "SearchModels": "Buscar modelos", + "MinResource": "Recurso mínimo", + "LastModified": "Última modificación", + "Created": "Creado", + "Version": "Versión", + "Author": "Autor", + "MaxRetries": "Reintentos máximos", + "Path": "Camino", + "HealthCheck": "Chequeo de salud", + "Port": "Puerto", + "StartCommand": "Comando de inicio", + "PreStartActions": "Acciones previas al inicio", + "Framework": "Marco", + "Category": "Categorías", + "Label": "Etiqueta", + "Task": "Tarea", + "CloneAsFolder": "Clonar como carpeta", + "CloneSuccess": "La solicitud de clonación se ha enviado correctamente.", + "CloneInfo": "Se clonará como su carpeta de tipo de usuario." } } diff --git a/resources/i18n/fi.json b/resources/i18n/fi.json index a11133cb02..e43b9a4c79 100644 --- a/resources/i18n/fi.json +++ b/resources/i18n/fi.json @@ -1,1442 +1,1460 @@ { - "summary": { - "FastTrack": "FastTrack", - "ATOMEnabled": "ATOM NPU käytössä", - "Accept": "Hyväksy", - "AcceptSharedVFolder": "Voit nyt käyttää kansiota:", - "ActiveSessions": "Aktiiviset istunnot", - "Announcement": "Ilmoitus", - "ChangeSystemSetting": "Vaihda järjestelmäasetusta", - "CheckResources": "Tarkista resurssit", - "ConnectedNodes": "Yhdistetyt
Solmut", - "CoresReserved": "Varatut ytimet", - "CreateANewKeypair": "Luo uusi avainpari", - "CurrentVersion": "Nykyinen versio", - "Decline": "Lasku", - "DeclineSharedVFolder": "Kansiokutsu on poistettu:", - "DownloadWebUIApp": "Lataa Backend.AI Web UI App", - "FolderName": "Kansion nimi", - "FractionalGPUScalingEnabled": "Murto-osittainen GPU-skaalaus käytössä", - "IPUEnabled": "IPU NPU käytössä", - "Invitation": "Kutsu", - "MaintainKeypairs": "Ylläpidä avainpareja", - "NoAnnouncement": "Näytettävää ilmoitusta ei ole.", - "NoInvitations": "Näytettäviä kutsuja ei ole.", - "Permission": "Lupa", - "ROCMGPUEnabled": "ROCm GPU käytössä", - "Reserved": "Varattu", - "ResourceStatistics": "Resurssitilastot", - "StartMenu": "Käynnistä-valikko", - "SystemMaintenance": "Järjestelmän ylläpito", - "SystemResources": "Järjestelmäresurssit", - "TPUEnabled": "TPU käytössä", - "Total": "Yhteensä", - "UpdateEnvironmentImages": "Päivitä ympäristökuvat", - "UploadFiles": "Lataa tiedostoja", - "Used": "Käytetty", - "Using": "Käyttämällä", - "WarboyEnabled": "Warboy NPU käytössä", - "connectingToCluster": "Yhteyden muodostaminen Backend.AI-klusteriin...", - "reserved": "varattu" - }, - "error": { - "WrongAPIServerAddress": "Väärä API-palvelimen osoite.", - "APIEndpointIsEmpty": "API-päätepiste on tyhjä. Määritä Backend.AI API-päätepiste rekisteröitymistä varten.", - "APINotSupported": "API ei tuettu. Vaatii Backend.AI managerin uusimman version.", - "AuthenticationFailed": "Tunnistautuminen epäonnistui. Tarkista tiedot ja managerin tila.", - "CannotChangeVirtualFolderOption": "Et voi muuttaa sellaisen v-kansion asetuksia, joka ei ole minun omistuksessani.", - "CannotSharePrivateAutomountFolder": "Automaattisesti kiinnitettyjä v-kansioita ei voida jakaa käytäntöjen mukaisesti.", - "FolderSharingNotAvailableToUser": "Kansioiden jakaminen ei ole käytettävissä pyydetyille käyttäjille.", - "InvalidSignupToken": "Virheellinen kirjautumistunniste", - "LoginFailed": "Kirjautuminen epäonnistui. Tarkista kirjautumistiedot.", - "LoginInformationMismatch": "Kirjautumistietojen epäsuhta. Tarkista tietosi", - "LoginSucceededManagerNotResponding": "Sisäänkirjautuminen onnistuu, mutta johtaja ei vastaa.", - "MaximumVfolderCreation": "Et voi luoda lisää v-kansioita resurssikäytännön vuoksi.", - "NetworkConnectionFailed": "Verkkoyhteys epäonnistui. Tarkista verkon tila.", - "ReachedResourceLimit": "Resurssiraja saavutettu. Tarkista resurssit ja istunnot.", - "ResourceLimitExceed": "Resurssiraja ylitetty. Tarkista vapaat resurssit.", - "ResourcePolicyAlreadyExist": "Samanniminen resurssikäytäntö on jo olemassa.", - "ResourcePolicyStillReferenced": "On olemassa avainpareja, jotka viittaavat tähän resurssikäytäntöön.", - "ScalingGroupAlreadyExist": "Samanniminen resurssiryhmä on jo olemassa.", - "SmallerResourceThenImageRequires": "Resurssipyyntösi on pienempi kuin kuvan edellyttämä minimi. Kokeile lisää resursseja.", - "TooManyLoginFailures": "Kirjautumishäiriöitä on ollut liian monta lyhyessä ajassa. Sisäänkirjautuminen on estetty jonkin aikaa.", - "UpdateError": "Päivitysvirhe", - "UserHasNoGroup": "Käyttäjällä ei ole ryhmää. Ota yhteyttä ylläpitäjään sen korjaamiseksi.", - "UserNameAlreadyExist": "Käyttäjätunnus on jo olemassa. Sitä ei voi kopioida.", - "VirtualFolderAlreadyExist": "Samanniminen virtuaalikansio on jo olemassa. Poista oma kansiosi tai hylkää kutsu." - }, - "DownloadSSHKey": "Lataa SSH-avain", - "ErrorBoundary": { - "displayOnlyDevEnv": "Tämä virhelohko näytetään vain WebUI-kehitysympäristössä.", - "reloadPage": "Lataa sivu uudelleen", - "resetErrorBoundary": "Nollaa ErrorBoundary", - "title": "On tapahtunut virhe." - }, - "OpenVSCodeRemote": "Avaa paikallinen Visual Studio Code", - "agent": { - "AgentSetting": "Agentin asetukset", - "AgentSettingUpdated": "Agentin asetus päivitetty.", - "Allocation": "Jakaminen", - "Architecture": "Arkkitehtuuri", - "BackendType": "Backend-tyyppi", - "Capabilities": "Kyvyt", - "Connected": "Yhdistetty", - "DetailedInformation": "Yksityiskohtaiset tiedot", - "DiskPerc": "Levy %", - "Endpoint": "Loppupiste", - "Maintaining": "ylläpito", - "NoAgentToDisplay": "Ei näytettäviä agentteja", - "NoAvailableLiveStat": "Ei saatavilla live stat", - "NoChanges": "Ei muutoksia.", - "NoNetworkSignal": "Ei verkkosignaaleja.", - "Region": "Alue", - "Resources": "Resurssit", - "Running": "Running", - "Schedulable": "Aikataulutettavissa", - "Starts": "Alkaa", - "Status": "Tila", - "Terminated": "Lopetettu", - "Utilization": "Käyttö" - }, "button": { - "Add": "Lisää", - "Cancel": "Peruuta", - "ClearLogs": "Tyhjennä lokit", - "Close": "Sulje", - "Commit": "Sitoumus", - "Confirm": "Vahvista", - "Create": "Luo", - "Delete": "Poista", - "DeleteAll": "Poista kaikki", - "Discard": "Hävitä", - "DismissAndProceed": "Hylkää ja jatka", - "Edit": "Muokkaa", - "EnterManually": "Syötä manuaalisesti", - "Finish": "Viimeistely", - "ForceTerminate": "Pakota lopettamaan", - "Generate": "Luo", - "GoBackToSummaryPage": "Takaisin yhteenvetosivulle", - "No": "Ei", - "OK": "OK", - "Okay": "Okei", - "Refresh": "Päivitä", - "Reset": "Nollaa", - "Save": "Tallenna", - "SaveAndClose": "Tallenna ja sulje", - "SaveChanges": "Tallenna muutokset", - "Share": "Jaa", - "Unset": "Unset", - "Update": "Päivitys", - "Yes": "Kyllä" + "Download": "Lataa", + "Clone": "Klooni", + "Save": "__NOT_TRANSLATED__", + "Add": "__NOT_TRANSLATED__", + "Confirm": "__NOT_TRANSLATED__", + "Refresh": "__NOT_TRANSLATED__", + "Edit": "__NOT_TRANSLATED__", + "Delete": "__NOT_TRANSLATED__", + "Reset": "__NOT_TRANSLATED__", + "Close": "__NOT_TRANSLATED__", + "Unset": "__NOT_TRANSLATED__", + "OK": "__NOT_TRANSLATED__", + "Yes": "__NOT_TRANSLATED__", + "No": "__NOT_TRANSLATED__", + "Update": "__NOT_TRANSLATED__", + "Cancel": "__NOT_TRANSLATED__", + "Okay": "__NOT_TRANSLATED__", + "SaveChanges": "__NOT_TRANSLATED__", + "DismissAndProceed": "__NOT_TRANSLATED__", + "Finish": "__NOT_TRANSLATED__", + "GoBackToSummaryPage": "__NOT_TRANSLATED__", + "Create": "__NOT_TRANSLATED__", + "Commit": "__NOT_TRANSLATED__", + "ForceTerminate": "__NOT_TRANSLATED__", + "DeleteAll": "__NOT_TRANSLATED__", + "Share": "__NOT_TRANSLATED__", + "SaveAndClose": "__NOT_TRANSLATED__", + "Discard": "__NOT_TRANSLATED__", + "Generate": "__NOT_TRANSLATED__", + "EnterManually": "__NOT_TRANSLATED__", + "ClearLogs": "__NOT_TRANSLATED__" }, - "credential": { - "AccessKeyOptional": "Pääsyavain (valinnainen)", - "Active": "Aktiivinen", - "AddCredential": "Lisää valtakirja", - "AdminCanOnlyRemoveTotp": "Vain muiden käyttäjien 2FA:n poistaminen käytöstä on mahdollista.", - "Allocation": "Jakaminen", - "Association": "Yhdistys", - "ConcurrentSessions": "Samanaikaiset istunnot", - "Create": "Luo", - "CreatePolicy": "Luo politiikka", - "CreateResourcePolicy": "Luo resurssikäytäntö", - "CreateUser": "Luo käyttäjä", - "Created": "Luotu", - "Credentials": "Valtakirjat", - "Days": "Päivät", - "DescActiveUser": "Aktiivinen käyttäjä?", - "DescRequirePasswordChange": "Vaadi salasanan vaihtamista?", - "Description": "Kuvaus", - "Domain": "Verkkotunnus", - "ExportCSVFile": "Vie CSV-tiedosto", - "FileName": "Tiedoston nimi", - "FullName": "Koko nimi", - "Inactive": "Inaktiivinen", - "Information": "Tiedot", - "InvalidRateLimitValue": "Syötä kelvollinen Rate Limit -arvo.", - "KeyAge": "Avain Ikä", - "KeySeccessfullyDeleted": "KeyPair on poistettu lopullisesti.", - "KeypairCreated": "Avainparin luominen onnistui.", - "KeypairDetail": "Avainparin tiedot", - "Lastused": "Viimeksi käytetty", - "Max#": "Max. # Kansioiden määrä", - "ModifyKeypairResourcePolicy": "Muokkaa avainparin resurssikäytäntöä", - "ModifyUserDetail": "Muokkaa käyttäjän tietoja", - "Name": "Nimi", - "NoChanges": "Muutoksia ei tehty", - "NoCredentialToDisplay": "Ei näytettäviä valtakirjoja", - "NoUserToDisplay": "Ei näytettäviä käyttäjiä", - "NumberOfQueries": "Kyselyjen määrä", - "Permission": "Lupa", - "PolicyGroup": "Politiikkaryhmä", - "ProjectAndGroup": "Projektit & ryhmät", - "RateLimit": "Määräraja", - "RateLimitFor15min": "Nopeusraja (15 min.)", - "RateLimitInputRequired": "Tarvittava syöttö.", - "RateLimitValidation": "Rate Limitin tulisi olla suurempi kuin nolla ja alle 50000.", - "ResourcePolicies": "Resurssipolitiikka", - "ResourcePolicy": "Resurssipolitiikka", - "Role": "Rooli", - "SelectPolicy": "Valitse politiikka", - "SignoutSeccessfullyFinished": "Uloskirjautuminen on päättynyt hetkessä", - "Status": "Tila", - "UserAccountCreated": "Käyttäjätili on luotu onnistuneesti", - "UserAccountCreatedError": "Tämä tili on jo rekisteröity.", - "UserDetail": "Käyttäjän tiedot", - "UserID": "Käyttäjätunnus", - "UserIDAsEmail": "Käyttäjätunnus sähköpostina", - "UserIDRequired": "Käyttäjätunnus vaaditaan.", - "UserName": "Käyttäjän nimi", - "UserNotFound": "Valtakirjan luominen epäonnistui, koska seuraavaa käyttäjätunnusta ei löytynyt :", - "UserStatus": "Käyttäjän tila", - "Users": "Käyttäjät", - "WarningLessRateLimit": "Jos Rate Limit -arvo on pieni, API-toiminnot, kuten kirjautuminen, voivat estyä.", - "active": "aktiivinen", - "concurrentsessions": "Samanaikaiset istunnot", - "exportCSV": "viedä CSV", - "for900seconds": "900 sekuntia", - "validation": { - "InvalidEmailAddress": "Virheellinen sähköpostiosoite.", - "LetterNumber-_dot": "Sallii kirjaimet, numerot ja -_.", - "NameAlreadyExists": "Käytännön nimi on jo olemassa!", - "NumbersOnly": "Sallii vain numerot", - "PleaseSelectOption": "Valitse yksi vaihtoehto", - "PleaseSelectOptions": "Valitse vähintään yksi tai useampi vaihtoehto.", - "PolicyName": "Vakuutuksen nimi Pakollinen.", - "ValidationFailed": "Validointi epäonnistui" - }, - "EnableSudoSession": "__NOT_TRANSLATED__" + "ErrorBoundary": { + "title": "__NOT_TRANSLATED__", + "reloadPage": "__NOT_TRANSLATED__", + "resetErrorBoundary": "__NOT_TRANSLATED__", + "displayOnlyDevEnv": "__NOT_TRANSLATED__" }, - "data": { - "Allowslettersnumbersand-_": "Sallii kirjaimet, numerot ja -_", - "Allowslettersnumbersand-_dot": "Sallii kirjaimet, numerot ja -_.", - "AutomountFolders": "Automount-kansiot", - "Create": "Luo", - "CreateANewStorageFolder": "Luo uusi tallennuskansio", - "Created": "Luotu", - "DialogDataFolder": "Putkistolle omistetut kansiot, jotka luodaan automaattisesti, kun luodaan putkia FastTrackissa.", - "DialogFolderStartingWithDotAutomount": ".(pisteellä) alkavat kansiot asennetaan automaattisesti, kun uusi istunto aloitetaan.", - "DialogModelFolder": "Voit palvella ja hallita malleja.", - "EnterDifferentValue": "Anna jokin muu arvo kuin olemassa olevan tiedoston tai kansion nimi. Tarkista, onko syöttökentässä välilyönti vai ei.", - "ExistingFolderName": "Olemassa olevan kansion nimi", - "FileandFoldernameRequired": "Tiedoston/kansioiden nimi vaaditaan", - "FolderNameRequired": "Kansion nimi vaaditaan", - "FolderNameTooLong": "Kirjoita kansion nimi alle 64 merkkiä", - "FolderToCopy": "Kopioitava kansio", - "Foldername": "Kansion nimi", - "Folders": "Kansiot", - "Host": "Isäntä", - "HostDetails": "Näyttää valitun tallennusaseman kiintiötiedot.", - "Invited": "Kutsuttu", - "Limit": "Raja", - "Models": "Mallit", - "NewFolder": "Uusi kansio", - "NoStorageDescriptionFound": "Ei kuvausta.", - "NumberOfFolders": "Kansioiden määrä", - "Permission": "Lupa", - "Pipeline": "Putkiston kansiot", - "Project": "Hanke", - "ProjectFolder": "Projektikansio", - "QuotaPerStorageVolume": "Kiintiö tallennustilavuutta kohti", - "SelectStorageHost": "Valitse tallennusisäntä", - "StorageStatus": "Säilytyksen tila", - "Type": "Tyyppi", - "Update": "Päivitys", - "UsageMode": "Käyttötila", - "Used": "Käytetty", - "User": "Käyttäjä", - "explorer": { - "Actions": "Toimet", - "ClickFilebrowserButton": "Lataa kansio(t) napsauttamalla Execute filebrowser-painiketta.", - "CreateANewFolder": "Luo uusi kansio", - "Created": "Luotu", - "Delete": "Poista", - "DoYouWantToOverwrite": "Haluatko ylikirjoittaa?", - "DownloadFile": "Lataa tiedosto", - "EmptyFilesAndFoldersAreNotUploaded": "Tyhjiä tiedostoja ja kansioita ei ladata.", - "EnterEmailAddress": "Syötä sähköpostiosoite", - "ExecuteFileBrowser": "Suorita filebrowser", - "ExecutingFileBrowser": "Filebrowserin suorittaminen...", - "FileAlreadyExists": "Ladattava tiedosto on jo olemassa.", - "FileExtensionChanged": "Haluatko muuttaa tiedostopäätteen?", - "FileUploadSizeLimit": "Tiedoston koko ylittää latauskokorajan.", - "FolderAlreadyExists": "Ladattava kansio on jo olemassa.", - "Foldername": "Kansion nimi", - "InviteeEmail": "Kutsutun sähköpostiosoite", - "KeepFileExtension": "Pidä", - "LessThan10Sec": "Alle 10 sekuntia", - "ModifyPermissions": "Muokkaa käyttöoikeuksia", - "MoreThanADay": "Yli päivä", - "Name": "Nimi", - "NewFileName": "Uusi tiedostonimi", - "NewFolder": "Uusi kansio", - "NoImagesSupportingFileBrowser": "Kuvia tukevaa tiedostoselainta ei ole vielä olemassa. Kansion tai kansioiden lataamiseen tarvitaan vähintään yksi tai useampi kuva, joka tukee tiedostoselainta.", - "NoImagesSupportingSystemSession": "SSH:ta / SFTP:tä tukevaa kuvaa ei vielä ole. Ainakin yksi tai useampi kuva, joka tukee SSH:n / SFTP:n käyttöä tukevia järjestelmäroolikuvia.", - "NotEnoughResourceForFileBrowserSession": "Resurssit eivät riitä (cpu: 1 Core, mem: 0.5GB) filebrowser-istunnon luomiseen. tarkista käytettävissä olevat resurssit.", - "NumberOfSFTPSessionsExceededBody": "Käytössäsi ovat kaikki käytettävissä olevat latausistunnot, joita voit luoda. Lopeta käyttämättömät latausistunnot ennen uuden istunnon aloittamista.", - "NumberOfSFTPSessionsExceededTitle": "Käynnissä olevan latausistunnon lukumäärän raja saavutettu", - "People": "Ihmiset", - "Permission": "Lupa", - "Permissions": "Luvat", - "ReadOnlyFolderOnFileBrowser": "Lukukansion avaaminen tiedostoselaimessa, vain tiedostojen/kansioiden lataaminen on sallittua.", - "ReadonlyFolder": "Vain luku Kansio", - "RemoveFileExtension": "poista tiedostopääte", - "RenameAFile": "Nimeä tiedosto uudelleen", - "RunSSH/SFTPserver": "Käynnistä SFTP-palvelin", - "SFTPSessionNotAvailable": "SFTP-istunto ei ole nyt käytettävissä", - "ShareFolder": "Jaa kansio", - "Size": "Koko", - "StartingSSH/SFTPSession": "SFTP-istunnon käynnistäminen...", - "StopUploading": "Lopeta lataaminen", - "TouchToDownload": "Lataa tiedosto koskettamalla", - "UploadFiles": "Lataa tiedostoja", - "UploadFolder": "Lataa kansio", - "UseNewFileExtension": "Käytä", - "ValueRequired": "Arvo vaaditaan", - "ValueShouldBeStarted": "Polun tulee alkaa kirjaimella .(piste) tai vain kirjaimilla ja numeroilla.", - "WritePermissionRequiredInUploadFiles": "Tiedoston (tiedostojen) lataaminen edellyttää kirjoitusoikeutta." + "dialog": { + "ErrorOccurred": "__NOT_TRANSLATED__", + "warning": { + "CannotBeUndone": "__NOT_TRANSLATED__", + "Required": "__NOT_TRANSLATED__", + "WillBeAppliedToNewSessions": "__NOT_TRANSLATED__", + "LogDeletion": "__NOT_TRANSLATED__" }, - "folders": { - "CannotDeleteFolder": "Yhdessä tai useammassa istunnossa asennettua kansiota ei voi poistaa. Lopeta istunto ensin.", - "CloneAFolder": "Kloonaa kansio", - "CloneFolder": "Kloonattu kansio", - "Cloneable": "Kloonattavissa", - "Control": "Valvonta", - "Delete": "Poista", - "DeleteAFolder": "Poista kansio", - "DescYouAreFolderOwner": "Olet tämän kansion omistaja.", - "Edit": "Muokkaa", - "EditDelete": "Muokkaa+Poista", - "FileDeleted": "Tiedosto poistettu", - "FileRenamed": "Tiedosto nimetty uudelleen", - "FolderCloned": "Kloonattu kansio", - "FolderCreated": "Kansio luotu", - "FolderDeleted": "Kansio poistettu", - "FolderDisconnected": "Kansio on katkaistu.", - "FolderInfo": "Info", - "FolderNameMismatched": "Kansion nimi ei täsmää. Tarkista, onko syöttökentässä välilyönti vai ei.", - "FolderOptionUpdate": "Päivitä kansiovaihtoehto", - "FolderQuota": "Kapasiteetti", - "FolderRenamed": "Kansio nimetty uudelleen", - "FolderUpdated": "Kansiovaihtoehto(t) päivitetty", - "FolderUsage": "Kansion käyttö", - "FolderUsing": "Käyttämällä", - "KickOut": "Kick out käyttäjä", - "Leave": "Jätä", - "LeaveAFolder": "Jätä kansio", - "LeaveFolder": "Jätä kansio", - "Location": "Sijainti", - "MaxFolderQuota": "Kansioiden enimmäiskiintiö", - "ModifyPermissions": "Muokkaa käyttöoikeuksia", - "MultipleFilesDeleted": "Useita tiedostoja poistettu", - "Name": "Nimi", - "NoFolderToDisplay": "Ei näytettäviä kansioita", - "NumberOfFiles": "Tiedostojen määrä", - "OpenAFolder": "Avaa kansio", - "Owner": "Omistaja", - "Ownership": "Omistus", - "Permission": "Lupa", - "Rename": "Nimeä uudelleen", - "RenameAFolder": "Nimeä kansio uudelleen", - "SameFileName": "Syöttöarvo on sama kuin päivitettävän tiedoston nimi. Vaihda se toiseen nimeen.", - "SelectPermission": "Valitse lupa", - "Serve": "Malli, joka palvelee", - "ShareFolder": "Jaa kansio", - "Status": "Tila", - "Type": "Tyyppi", - "TypeFolderNameToDelete": "Kirjoita poistettavan kansion nimi", - "TypeFolderNameToLeave": "Kirjoita poistuvan kansion nimi", - "TypeNewFolderName": "Kirjoita uuden kansion nimi", - "View": "Näytä" + "error": { + "Error": "__NOT_TRANSLATED__" }, - "invitation": { - "FolderSharingNotAvailableToUser": "Kansioiden jakaminen ei ole käytettävissä pyydetyille käyttäjille:", - "InvitationError": "Kutsu epäonnistui. Käyttäjä on ehkä jo kutsuttu.", - "Invited": "Kutsuttu onnistuneesti", - "NoOneWasInvited": "Ketään ei ole kutsuttu, koska kutsu on jo olemassa", - "NoOneWasShared": "Ryhmäkansion jakaminen epäonnistui", - "NoValidEmails": "Kelvollisia sähköposteja ei ole syötetty", - "Shared": "Ryhmäkansion jakaminen onnistui", - "SharingError": "Jakaminen epäonnistui. Käyttäjä on ehkä jo jaettu tai ei kuulu asianmukaiseen projektiin." + "title": { + "LetsDouble-Check": "__NOT_TRANSLATED__", + "Notice": "__NOT_TRANSLATED__" }, - "permission": { - "NoChanges": "Ei muutoksia", - "PermissionModified": "Lupa päivitetty" + "ask": { + "DoYouWantToProceed": "__NOT_TRANSLATED__" }, - "usage": { - "Adequate": "Riittävästi", - "Caution": "Varoitus", - "Insufficient": "Riittämätön", - "Status": "Tila", - "StatusOfSelectedHost": "Valitun isännän tila", - "used": "käytetty" + "hide": { + "DonotShowThisAgain": "__NOT_TRANSLATED__" + } + }, + "registry": { + "ModifyRegistry": "__NOT_TRANSLATED__", + "AddRegistry": "__NOT_TRANSLATED__", + "ConfirmNoUserName": "__NOT_TRANSLATED__", + "Hostname": "__NOT_TRANSLATED__", + "DescHostnameIsEmpty": "__NOT_TRANSLATED__", + "RegistryHostnameAlreadyExists": "__NOT_TRANSLATED__", + "RegistryURL": "__NOT_TRANSLATED__", + "DescURLStartString": "__NOT_TRANSLATED__", + "Username": "__NOT_TRANSLATED__", + "Password": "__NOT_TRANSLATED__", + "RegistryType": "__NOT_TRANSLATED__", + "PleaseSelectOption": "__NOT_TRANSLATED__", + "ProjectName": "__NOT_TRANSLATED__", + "ProjectNameIsRequired": "__NOT_TRANSLATED__", + "RescanFailed": "__NOT_TRANSLATED__", + "UpdatingRegistryInfo": "__NOT_TRANSLATED__", + "RescanImages": "__NOT_TRANSLATED__", + "RegistryUpdateFinished": "__NOT_TRANSLATED__", + "RegistryUpdateFailed": "__NOT_TRANSLATED__", + "Type": "__NOT_TRANSLATED__", + "HarborProject": "__NOT_TRANSLATED__", + "RegistryTurnedOn": "__NOT_TRANSLATED__", + "RegistryTurnedOff": "__NOT_TRANSLATED__", + "RegistrySuccessfullyAdded": "__NOT_TRANSLATED__", + "RegistrySuccessfullyModified": "__NOT_TRANSLATED__", + "RegistrySuccessfullyDeleted": "__NOT_TRANSLATED__", + "TypeRegistryNameToDelete": "__NOT_TRANSLATED__", + "HostnameDoesNotMatch": "__NOT_TRANSLATED__", + "ForHarborOnly": "__NOT_TRANSLATED__", + "Registries": "__NOT_TRANSLATED__", + "NoRegistryToDisplay": "__NOT_TRANSLATED__", + "RegistryHostname": "__NOT_TRANSLATED__", + "UsernameOptional": "__NOT_TRANSLATED__", + "PasswordOptional": "__NOT_TRANSLATED__" + }, + "webui": { + "menu": { + "ChangePassword": "__NOT_TRANSLATED__", + "PleaseChangeYourPassword": "__NOT_TRANSLATED__", + "YouMushChangeYourPassword": "__NOT_TRANSLATED__", + "NewPassword": "__NOT_TRANSLATED__", + "InvalidPasswordMessage": "__NOT_TRANSLATED__", + "NewPasswordCannotBeSame": "__NOT_TRANSLATED__", + "NewPasswordAgain": "__NOT_TRANSLATED__", + "Update": "__NOT_TRANSLATED__", + "Sessions": "__NOT_TRANSLATED__", + "Project": "__NOT_TRANSLATED__", + "SetupTotp": "__NOT_TRANSLATED__", + "AboutBackendAI": "__NOT_TRANSLATED__", + "MyAccount": "__NOT_TRANSLATED__", + "Preferences": "__NOT_TRANSLATED__", + "LogsErrors": "__NOT_TRANSLATED__", + "LogOut": "__NOT_TRANSLATED__", + "TotpActivated": "__NOT_TRANSLATED__", + "FullnameUpdated": "__NOT_TRANSLATED__", + "PasswordUpdated": "__NOT_TRANSLATED__", + "Cancel": "__NOT_TRANSLATED__", + "MyAccountInformation": "__NOT_TRANSLATED__", + "FullName": "__NOT_TRANSLATED__", + "FullNameInvalid": "__NOT_TRANSLATED__", + "OriginalPassword": "__NOT_TRANSLATED__", + "InputOriginalPassword": "__NOT_TRANSLATED__", + "NewPasswordMismatch": "__NOT_TRANSLATED__", + "PleaseConfirmYourPassword": "__NOT_TRANSLATED__", + "Data&Storage": "__NOT_TRANSLATED__", + "PasswordMismatch": "__NOT_TRANSLATED__", + "AIAccelerator": "__NOT_TRANSLATED__", + "TermsOfService": "__NOT_TRANSLATED__", + "PrivacyPolicy": "__NOT_TRANSLATED__", + "Summary": "__NOT_TRANSLATED__", + "Experiments": "__NOT_TRANSLATED__", + "Pipeline": "__NOT_TRANSLATED__", + "AgentSummary": "__NOT_TRANSLATED__", + "PipelineJob": "__NOT_TRANSLATED__", + "Statistics": "__NOT_TRANSLATED__", + "Settings&Logs": "__NOT_TRANSLATED__", + "UserCredentials&Policies": "__NOT_TRANSLATED__", + "Environments&Presets": "__NOT_TRANSLATED__", + "ComputationResources": "__NOT_TRANSLATED__", + "Configurations": "__NOT_TRANSLATED__", + "Maintenance": "__NOT_TRANSLATED__", + "Information": "__NOT_TRANSLATED__", + "Logs": "__NOT_TRANSLATED__", + "Import&Run": "__NOT_TRANSLATED__", + "Serving": "__NOT_TRANSLATED__", + "Settings": "__NOT_TRANSLATED__", + "Help": "__NOT_TRANSLATED__", + "Users": "__NOT_TRANSLATED__", + "Resources": "__NOT_TRANSLATED__", + "Environments": "__NOT_TRANSLATED__", + "Administration": "__NOT_TRANSLATED__", + "FastTrack": "__NOT_TRANSLATED__", + "Data&Model": "__NOT_TRANSLATED__", + "LeaveService": "__NOT_TRANSLATED__", + "WelcomeMessage": "__NOT_TRANSLATED__", + "WelcomeMessage_2": "__NOT_TRANSLATED__", + "PasswordChangePlace": "__NOT_TRANSLATED__", + "Notifications": "__NOT_TRANSLATED__", + "Tasks": "__NOT_TRANSLATED__" }, - "SearchByName": "Hae nimellä" + "NOTFOUND": "__NOT_TRANSLATED__", + "DescNOTFOUND": "__NOT_TRANSLATED__", + "UNAUTHORIZEDACCESS": "__NOT_TRANSLATED__", + "AdminOnlyPage": "__NOT_TRANSLATED__", + "CleanUpLoginSession": "__NOT_TRANSLATED__", + "CleanUpNow": "__NOT_TRANSLATED__", + "YouAreOffline": "__NOT_TRANSLATED__", + "YouAreOnline": "__NOT_TRANSLATED__" }, - "dialog": { - "ErrorOccurred": "Tapahtunut virhe", - "ask": { - "DoYouWantToProceed": "Haluatteko jatkaa?" + "general": { + "Enabled": "__NOT_TRANSLATED__", + "Control": "__NOT_TRANSLATED__", + "Add": "__NOT_TRANSLATED__", + "AccessKey": "__NOT_TRANSLATED__", + "SecretKey": "__NOT_TRANSLATED__", + "NewPassword": "__NOT_TRANSLATED__", + "ResourceGroup": "__NOT_TRANSLATED__", + "Image": "__NOT_TRANSLATED__", + "None": "__NOT_TRANSLATED__", + "cores": "__NOT_TRANSLATED__", + "StorageProxies": "__NOT_TRANSLATED__", + "Folders": "__NOT_TRANSLATED__", + "Advanced": "__NOT_TRANSLATED__", + "E-Mail": "__NOT_TRANSLATED__", + "Username": "__NOT_TRANSLATED__", + "Password": "__NOT_TRANSLATED__", + "ConfirmPassword": "__NOT_TRANSLATED__" + }, + "maintenance": { + "RescanImages": "__NOT_TRANSLATED__", + "Fix": "__NOT_TRANSLATED__", + "MatchDatabase": "__NOT_TRANSLATED__", + "DescMatchDatabase": "__NOT_TRANSLATED__", + "Recalculating": "__NOT_TRANSLATED__", + "RecalculateUsage": "__NOT_TRANSLATED__", + "ImagesEnvironment": "__NOT_TRANSLATED__", + "RescanImageList": "__NOT_TRANSLATED__", + "DescRescanImageList": "__NOT_TRANSLATED__", + "RescanImageScanning": "__NOT_TRANSLATED__", + "CleanupOldImages": "__NOT_TRANSLATED__", + "DescCleanupOldImages": "__NOT_TRANSLATED__", + "CleanupImages": "__NOT_TRANSLATED__", + "Scanning": "__NOT_TRANSLATED__", + "RescanImageFinished": "__NOT_TRANSLATED__", + "RescanFailed": "__NOT_TRANSLATED__", + "RecalculationFinished": "__NOT_TRANSLATED__", + "RecalculationFailed": "__NOT_TRANSLATED__" + }, + "storageHost": { + "quotaSettings": { + "SelectDomain": "__NOT_TRANSLATED__", + "AllowNumberAndDot": "__NOT_TRANSLATED__", + "SelectProject": "__NOT_TRANSLATED__", + "SelectFirst": "__NOT_TRANSLATED__", + "ClickSettingButton": "__NOT_TRANSLATED__", + "AddQuotaConfigs": "__NOT_TRANSLATED__", + "QuotaScopeId": "__NOT_TRANSLATED__", + "UnsetCustomSettings": "__NOT_TRANSLATED__", + "ConfirmUnsetCustomQuota": "__NOT_TRANSLATED__", + "QuotaScopeSuccessfullyUpdated": "__NOT_TRANSLATED__", + "QuotaSettings": "__NOT_TRANSLATED__", + "SelectUser": "__NOT_TRANSLATED__" }, - "error": { - "Error": "Virhe" + "ResourcePolicySuccessfullyUpdated": "__NOT_TRANSLATED__", + "ResourcePolicySuccessfullyCreated": "__NOT_TRANSLATED__", + "ResourcePolicySettings": "__NOT_TRANSLATED__", + "BeCarefulToSetProjectResourcePolicy": "__NOT_TRANSLATED__", + "MaxFolderSize": "__NOT_TRANSLATED__", + "HardLimit": "__NOT_TRANSLATED__", + "Usage": "__NOT_TRANSLATED__", + "UnsetResourcePolicy": "__NOT_TRANSLATED__", + "DoYouWantToUseDefaultValue": "__NOT_TRANSLATED__", + "SelectProjectOrUserFirst": "__NOT_TRANSLATED__", + "ResourcePolicy": "__NOT_TRANSLATED__", + "Used": "__NOT_TRANSLATED__", + "Total": "__NOT_TRANSLATED__", + "QuotaSettings": "__NOT_TRANSLATED__", + "ForUser": "__NOT_TRANSLATED__", + "ForProject": "__NOT_TRANSLATED__", + "QuotaDoesNotSupported": "__NOT_TRANSLATED__", + "BeCarefulToSetUserResourcePolicy": "__NOT_TRANSLATED__" + }, + "modelService": { + "TokenGenerated": "__NOT_TRANSLATED__", + "TokenExpiredDateError": "__NOT_TRANSLATED__", + "TokenGenerationFailed": "__NOT_TRANSLATED__", + "Generate": "__NOT_TRANSLATED__", + "GenerateNewToken": "__NOT_TRANSLATED__", + "TokenExpiredDateHelp": "__NOT_TRANSLATED__", + "ExpiredDate": "__NOT_TRANSLATED__", + "PleaseSelectTime": "__NOT_TRANSLATED__", + "CurrentTime": "__NOT_TRANSLATED__", + "EditModelService": "__NOT_TRANSLATED__", + "DesiredSessionCount": "__NOT_TRANSLATED__", + "OnlyAllowsNonNegativeIntegers": "__NOT_TRANSLATED__", + "FailedToStartService": "__NOT_TRANSLATED__", + "FormValidationFailed": "__NOT_TRANSLATED__", + "StartNewServing": "__NOT_TRANSLATED__", + "ServiceName": "__NOT_TRANSLATED__", + "ServiceNameRule": "__NOT_TRANSLATED__", + "OpenToPublic": "__NOT_TRANSLATED__", + "DesiredRoutingCount": "__NOT_TRANSLATED__", + "ServingRouteErrorModalTitle": "__NOT_TRANSLATED__", + "SessionId": "__NOT_TRANSLATED__", + "Services": "__NOT_TRANSLATED__", + "RoutingInfo": "__NOT_TRANSLATED__", + "ClearErrors": "__NOT_TRANSLATED__", + "ServiceInfo": "__NOT_TRANSLATED__", + "EndpointName": "__NOT_TRANSLATED__", + "Status": "__NOT_TRANSLATED__", + "EndpointId": "__NOT_TRANSLATED__", + "SessionOwner": "__NOT_TRANSLATED__", + "ServiceEndpoint": "__NOT_TRANSLATED__", + "NoServiceEndpoint": "__NOT_TRANSLATED__", + "resources": "__NOT_TRANSLATED__", + "Image": "__NOT_TRANSLATED__", + "GeneratedTokens": "__NOT_TRANSLATED__", + "GenerateToken": "__NOT_TRANSLATED__", + "RoutesInfo": "__NOT_TRANSLATED__", + "RouteId": "__NOT_TRANSLATED__", + "TrafficRatio": "__NOT_TRANSLATED__", + "StartService": "__NOT_TRANSLATED__", + "Controls": "__NOT_TRANSLATED__", + "CreatedAt": "__NOT_TRANSLATED__", + "RoutingsCount": "__NOT_TRANSLATED__", + "Active/Total": "__NOT_TRANSLATED__", + "Public": "__NOT_TRANSLATED__", + "YouAreAboutToTerminate": "__NOT_TRANSLATED__" + }, + "session": { + "launcher": { + "EnterEnvironmentVariable": "__NOT_TRANSLATED__", + "EnvironmentVariableNamePatternError": "__NOT_TRANSLATED__", + "EnvironmentVariableDuplicateName": "__NOT_TRANSLATED__", + "Environments": "__NOT_TRANSLATED__", + "Version": "__NOT_TRANSLATED__", + "Base": "__NOT_TRANSLATED__", + "Architecture": "__NOT_TRANSLATED__", + "Requirements": "__NOT_TRANSLATED__", + "PreOpenPortTitle": "__NOT_TRANSLATED__", + "PreOpenPortRangeGuide": "__NOT_TRANSLATED__", + "PreOpenPortMaxCountLimit": "__NOT_TRANSLATED__", + "PreOpenPortMaxCountLimit_plural": "__NOT_TRANSLATED__", + "PreOpenPortRange": "__NOT_TRANSLATED__", + "preopen": "__NOT_TRANSLATED__", + "EnqueueComputeSessionWarning": "__NOT_TRANSLATED__", + "CPU": "__NOT_TRANSLATED__", + "Core": "__NOT_TRANSLATED__", + "Memory": "__NOT_TRANSLATED__", + "MinMemory": "__NOT_TRANSLATED__", + "SharedMemory": "__NOT_TRANSLATED__", + "AIAccelerator": "__NOT_TRANSLATED__", + "ClusterMode": "__NOT_TRANSLATED__", + "SingleNode": "__NOT_TRANSLATED__", + "MultiNode": "__NOT_TRANSLATED__", + "Container": "__NOT_TRANSLATED__", + "Node": "__NOT_TRANSLATED__", + "ClusterSize": "__NOT_TRANSLATED__", + "ModelStorageToMount": "__NOT_TRANSLATED__", + "SessionName": "__NOT_TRANSLATED__", + "FolderAlias": "__NOT_TRANSLATED__", + "FolderAliasInvalid": "__NOT_TRANSLATED__", + "FolderAliasOverlapping": "__NOT_TRANSLATED__", + "ResourceGroup": "__NOT_TRANSLATED__", + "ModelStorage": "__NOT_TRANSLATED__", + "SessionType": "__NOT_TRANSLATED__", + "ResourceAllocation": "__NOT_TRANSLATED__", + "Network": "__NOT_TRANSLATED__", + "ConfirmAndLaunch": "__NOT_TRANSLATED__", + "SessionAlreadyExists": "__NOT_TRANSLATED__", + "StartNewSession": "__NOT_TRANSLATED__", + "ResetFormConfirm": "__NOT_TRANSLATED__", + "TemplateAndHistory": "__NOT_TRANSLATED__", + "BatchModeConfig": "__NOT_TRANSLATED__", + "StartUpCommand": "__NOT_TRANSLATED__", + "SessionStartTime": "__NOT_TRANSLATED__", + "Enable": "__NOT_TRANSLATED__", + "StartTimeMustBeInTheFuture": "__NOT_TRANSLATED__", + "HPCOptimization": "__NOT_TRANSLATED__", + "SwitchOpenMPoptimization": "__NOT_TRANSLATED__", + "NumOpenMPthreads": "__NOT_TRANSLATED__", + "OpenMPOptimization": "__NOT_TRANSLATED__", + "NumOpenBLASthreads": "__NOT_TRANSLATED__", + "ScheduleTimeSimple": "__NOT_TRANSLATED__", + "Project": "__NOT_TRANSLATED__", + "EnvironmentVariable": "__NOT_TRANSLATED__", + "ResourceAllocationPerContainer": "__NOT_TRANSLATED__", + "CustomAllocation": "__NOT_TRANSLATED__", + "NumberOfContainer": "__NOT_TRANSLATED__", + "TotalAllocation": "__NOT_TRANSLATED__", + "NoFolderMounted": "__NOT_TRANSLATED__", + "Launch": "__NOT_TRANSLATED__", + "ProxyNotReady": "__NOT_TRANSLATED__", + "SettingUpProxyForApp": "__NOT_TRANSLATED__", + "ProxyConfiguratorNotResponding": "__NOT_TRANSLATED__", + "AddingKernelToSocketQueue": "__NOT_TRANSLATED__", + "FailedToConnectCoordinator": "__NOT_TRANSLATED__", + "StartImportedNotebook": "__NOT_TRANSLATED__", + "ChooseEnvironment": "__NOT_TRANSLATED__", + "OwnerResourceGroup": "__NOT_TRANSLATED__", + "Sessions": "__NOT_TRANSLATED__", + "ResourceMonitorToggle": "__NOT_TRANSLATED__", + "CurrentResourceGroup": "__NOT_TRANSLATED__", + "UserResourceLimit": "__NOT_TRANSLATED__", + "PleaseWaitInitializing": "__NOT_TRANSLATED__", + "DuplicatedSessionName": "__NOT_TRANSLATED__", + "SessionNameAllowCondition": "__NOT_TRANSLATED__", + "MustSpecifyVersion": "__NOT_TRANSLATED__", + "NotEnoughOwnershipInfo": "__NOT_TRANSLATED__", + "SharedMemorySettingIsReduced": "__NOT_TRANSLATED__", + "ImageDoesNotProvideModelPath": "__NOT_TRANSLATED__", + "sessionStillPreparing": "__NOT_TRANSLATED__", + "NotEnoughResource": "__NOT_TRANSLATED__", + "DescFolderAlias": "__NOT_TRANSLATED__", + "NoActiveKeypair": "__NOT_TRANSLATED__", + "NoDescriptionFound": "__NOT_TRANSLATED__", + "DescCPU": "__NOT_TRANSLATED__", + "DescMemory": "__NOT_TRANSLATED__", + "DescSharedMemory": "__NOT_TRANSLATED__", + "DescAIAccelerator": "__NOT_TRANSLATED__", + "TitleSession": "__NOT_TRANSLATED__", + "DescSession": "__NOT_TRANSLATED__", + "DescSingleNode": "__NOT_TRANSLATED__", + "DescMultiNode": "__NOT_TRANSLATED__", + "DescOpenMPOptimization": "__NOT_TRANSLATED__", + "EnvironmentVariableTitle": "__NOT_TRANSLATED__", + "DescSetEnv": "__NOT_TRANSLATED__", + "DescSetPreOpenPort": "__NOT_TRANSLATED__", + "CustomResourceApplied": "__NOT_TRANSLATED__", + "EnvironmentVariableConfigurationDone": "__NOT_TRANSLATED__", + "PreOpenPortConfigurationDone": "__NOT_TRANSLATED__", + "InfiniteTime": "__NOT_TRANSLATED__", + "ResetStartTime": "__NOT_TRANSLATED__", + "Start": "__NOT_TRANSLATED__", + "InferenceMode": "__NOT_TRANSLATED__", + "BatchMode": "__NOT_TRANSLATED__", + "InteractiveMode": "__NOT_TRANSLATED__", + "ManualImageName": "__NOT_TRANSLATED__", + "SessionNameOptional": "__NOT_TRANSLATED__", + "ScheduleTime": "__NOT_TRANSLATED__", + "SetEnvironmentVariable": "__NOT_TRANSLATED__", + "EnvironmentVariableValue": "__NOT_TRANSLATED__", + "NoEnvConfigured": "__NOT_TRANSLATED__", + "SetPreopenPorts": "__NOT_TRANSLATED__", + "NoPreOpenPortsConfigured": "__NOT_TRANSLATED__", + "SetSessionOwner": "__NOT_TRANSLATED__", + "OwnerEmail": "__NOT_TRANSLATED__", + "OwnerAccessKey": "__NOT_TRANSLATED__", + "OwnerGroup": "__NOT_TRANSLATED__", + "LaunchSessionWithAccessKey": "__NOT_TRANSLATED__", + "FolderToMount": "__NOT_TRANSLATED__", + "FolderToMountList": "__NOT_TRANSLATED__", + "NoAvailableFolderToMount": "__NOT_TRANSLATED__", + "MountedFolders": "__NOT_TRANSLATED__", + "Accelerator": "__NOT_TRANSLATED__", + "NoSuitablePreset": "__NOT_TRANSLATED__", + "SharedMemoryAbbr": "__NOT_TRANSLATED__", + "GPUSlot": "__NOT_TRANSLATED__", + "AllocateNode": "__NOT_TRANSLATED__", + "EnvironmentVariablePaneTitle": "__NOT_TRANSLATED__", + "PreOpenPortPanelTitle": "__NOT_TRANSLATED__", + "PortsTitleWithRange": "__NOT_TRANSLATED__", + "HomeDirectoryDeletionDialog": "__NOT_TRANSLATED__", + "LaunchConfirmationDialog": "__NOT_TRANSLATED__", + "EnvConfigWillDisappear": "__NOT_TRANSLATED__", + "PrePortConfigWillDisappear": "__NOT_TRANSLATED__", + "StartModelServing": "__NOT_TRANSLATED__" }, - "hide": { - "DonotShowThisAgain": "Älä näytä tätä enää." + "ResourceGroup": "__NOT_TRANSLATED__", + "core": "__NOT_TRANSLATED__", + "SessionInfo": "__NOT_TRANSLATED__", + "Status": "__NOT_TRANSLATED__", + "Configuration": "__NOT_TRANSLATED__", + "Usage": "__NOT_TRANSLATED__", + "Reservation": "__NOT_TRANSLATED__", + "Architecture": "__NOT_TRANSLATED__", + "SessionType": "__NOT_TRANSLATED__", + "Agent": "__NOT_TRANSLATED__", + "Validation": { + "EnterValidSessionName": "__NOT_TRANSLATED__", + "SessionNameTooLong64": "__NOT_TRANSLATED__", + "PleaseFollowSessionNameRule": "__NOT_TRANSLATED__", + "SessionNameRequired": "__NOT_TRANSLATED__", + "SluggedStrings": "__NOT_TRANSLATED__", + "SessionNameAlreadyExist": "__NOT_TRANSLATED__" }, - "title": { - "LetsDouble-Check": "Tupla-tarkistetaan", - "Notice": "Ilmoitus" + "Running": "__NOT_TRANSLATED__", + "Finished": "__NOT_TRANSLATED__", + "Others": "__NOT_TRANSLATED__", + "CheckAgainDialog": "__NOT_TRANSLATED__", + "Interactive": "__NOT_TRANSLATED__", + "Batch": "__NOT_TRANSLATED__", + "Inference": "__NOT_TRANSLATED__", + "exportCSV": "__NOT_TRANSLATED__", + "CreationFailed": "__NOT_TRANSLATED__", + "applauncher": { + "Prepared": "__NOT_TRANSLATED__", + "NoExistingConnectionExample": "__NOT_TRANSLATED__", + "SSHConnectionExampleClipboardCopy": "__NOT_TRANSLATED__", + "App": "__NOT_TRANSLATED__", + "AppMustBeRun": "__NOT_TRANSLATED__", + "AppMustBeRunDialog": "__NOT_TRANSLATED__", + "ConfirmAndRun": "__NOT_TRANSLATED__" }, - "warning": { - "CannotBeUndone": "VAROITUS: tätä ei voi perua!", - "LogDeletion": "Haluatko varmasti poistaa kaikki lokiviestit?", - "Required": "Vaadittu", - "WillBeAppliedToNewSessions": "Tätä päivitystä sovelletaan uusiin istuntoihin." - } + "Readmore": "__NOT_TRANSLATED__", + "Readless": "__NOT_TRANSLATED__", + "OpenToPublic": "__NOT_TRANSLATED__", + "AllowedClientIps": "__NOT_TRANSLATED__", + "CommaSeparated": "__NOT_TRANSLATED__", + "TryPreferredPort": "__NOT_TRANSLATED__", + "UseSubdomain": "__NOT_TRANSLATED__", + "SFTPDescription": "__NOT_TRANSLATED__", + "ConnectionNotice": "__NOT_TRANSLATED__", + "SFTPExtraNotification": "__NOT_TRANSLATED__", + "ConnectionInformation": "__NOT_TRANSLATED__", + "ConnectionExample": "__NOT_TRANSLATED__", + "TensorboardPath": "__NOT_TRANSLATED__", + "InputTensorboardPath": "__NOT_TRANSLATED__", + "DefaultTensorboardPath": "__NOT_TRANSLATED__", + "UseThisPath": "__NOT_TRANSLATED__", + "Arguments": "__NOT_TRANSLATED__", + "ModifyArguments": "__NOT_TRANSLATED__", + "UseThisArguments": "__NOT_TRANSLATED__", + "VNCconnection": "__NOT_TRANSLATED__", + "UseYourFavoriteVNCApp": "__NOT_TRANSLATED__", + "XRDPconnection": "__NOT_TRANSLATED__", + "UseYourFavoriteMSTSCApp": "__NOT_TRANSLATED__", + "VSCodeRemoteConnection": "__NOT_TRANSLATED__", + "VSCodeRemoteDescription": "__NOT_TRANSLATED__", + "VSCodeRemotePasswordTitle": "__NOT_TRANSLATED__", + "VSCodeRemoteNoticeSSHConfig": "__NOT_TRANSLATED__", + "DownloadingCSVFile": "__NOT_TRANSLATED__", + "Preparing": "__NOT_TRANSLATED__", + "PreparingSession": "__NOT_TRANSLATED__", + "EnvironmentInfo": "__NOT_TRANSLATED__", + "NetworkIdleTimeout": "__NOT_TRANSLATED__", + "MaxSessionLifetime": "__NOT_TRANSLATED__", + "UtilizationIdleTimeout": "__NOT_TRANSLATED__", + "ExpiresAfter": "__NOT_TRANSLATED__", + "GracePeriod": "__NOT_TRANSLATED__", + "CPU": "__NOT_TRANSLATED__", + "MEM": "__NOT_TRANSLATED__", + "GPU": "__NOT_TRANSLATED__", + "GPU(MEM)": "__NOT_TRANSLATED__", + "NoLogs": "__NOT_TRANSLATED__", + "DownloadingSessionLogs": "__NOT_TRANSLATED__", + "CommitOnGoing": "__NOT_TRANSLATED__", + "CommitFinished": "__NOT_TRANSLATED__", + "CommitFailed": "__NOT_TRANSLATED__", + "CommitSession": "__NOT_TRANSLATED__", + "AlreadyTerminatingSession": "__NOT_TRANSLATED__", + "SessionTerminated": "__NOT_TRANSLATED__", + "SessionsTerminated": "__NOT_TRANSLATED__", + "OnlyOneFolderAttached": "__NOT_TRANSLATED__", + "StatusDetail": "__NOT_TRANSLATED__", + "Message": "__NOT_TRANSLATED__", + "TotalRetries": "__NOT_TRANSLATED__", + "LastTry": "__NOT_TRANSLATED__", + "SessionRenamed": "__NOT_TRANSLATED__", + "TimeoutExceeded": "__NOT_TRANSLATED__", + "IdleChecks": "__NOT_TRANSLATED__", + "IdleChecksDesc": "__NOT_TRANSLATED__", + "MaxSessionLifetimeDesc": "__NOT_TRANSLATED__", + "NetworkIdleTimeoutDesc": "__NOT_TRANSLATED__", + "UtilizationIdleTimeoutDesc": "__NOT_TRANSLATED__", + "GracePeriodDesc": "__NOT_TRANSLATED__", + "UtilizationThreshold": "__NOT_TRANSLATED__", + "UtilizationThresholdDesc": "__NOT_TRANSLATED__", + "Utilization": "__NOT_TRANSLATED__", + "Threshold": "__NOT_TRANSLATED__", + "SeeAppDialog": "__NOT_TRANSLATED__", + "ExecuteTerminalApp": "__NOT_TRANSLATED__", + "TerminateSession": "__NOT_TRANSLATED__", + "SeeContainerLogs": "__NOT_TRANSLATED__", + "NoLogMsgAvailable": "__NOT_TRANSLATED__", + "RequestContainerCommit": "__NOT_TRANSLATED__", + "ElapsedTime": "__NOT_TRANSLATED__", + "DescCommitSession": "__NOT_TRANSLATED__", + "Terminate": "__NOT_TRANSLATED__", + "NoSessionToDisplay": "__NOT_TRANSLATED__", + "StatusInfo": "__NOT_TRANSLATED__", + "NoSession": "__NOT_TRANSLATED__", + "System": "__NOT_TRANSLATED__", + "ExportSessionListToCSVFile": "__NOT_TRANSLATED__", + "ExportCSVFile": "__NOT_TRANSLATED__" }, - "eduapi": { - "CannotAuthorizeSessionByToken": "Istuntoa ei pystytä valtuuttamaan. Kirjaudu ensin portaaliin.", - "ComputeSessionPrepared": "Laskenta-istunto valmis", - "CreatingComputeSession": "Laskenta-istunnon luominen ...", - "EmptyProject": "EmptyProject", - "FindingSessionTemplate": "Istuntomallin löytäminen ...", - "FoundExistingComputeSession": "Löytyi olemassa oleva laskenta-istunto", - "NoSessionTemplate": "Ei sopivia istuntomalleja", - "PleaseReload": "Lataa uudelleen jonkin ajan kuluttua.", - "QueryingExisitingComputeSession": "Olemassa olevan laskenta-istunnon kysely ...", - "SessionStillPreparing": "Istunto on edelleen valmistelussa. Lataa uudelleen hetken kuluttua", - "sessionStatusIs": "Istunnon tila on" + "information": { + "CannotRead": "__NOT_TRANSLATED__", + "Core": "__NOT_TRANSLATED__", + "ManagerVersion": "__NOT_TRANSLATED__", + "Installation": "__NOT_TRANSLATED__", + "LatestRelease": "__NOT_TRANSLATED__", + "APIVersion": "__NOT_TRANSLATED__", + "Security": "__NOT_TRANSLATED__", + "DefaultAdministratorAccountChanged": "__NOT_TRANSLATED__", + "DescDefaultAdministratorAccountChanged": "__NOT_TRANSLATED__", + "UsesSSL": "__NOT_TRANSLATED__", + "DescUsesSSL": "__NOT_TRANSLATED__", + "Component": "__NOT_TRANSLATED__", + "DockerVersion": "__NOT_TRANSLATED__", + "DescDockerVersion": "__NOT_TRANSLATED__", + "Compatible": "__NOT_TRANSLATED__", + "PostgreSQLVersion": "__NOT_TRANSLATED__", + "DescPostgreSQLVersion": "__NOT_TRANSLATED__", + "ETCDVersion": "__NOT_TRANSLATED__", + "DescETCDVersion": "__NOT_TRANSLATED__", + "RedisVersion": "__NOT_TRANSLATED__", + "DescRedisVersion": "__NOT_TRANSLATED__", + "License": "__NOT_TRANSLATED__", + "IsLicenseValid": "__NOT_TRANSLATED__", + "DescIsLicenseValid": "__NOT_TRANSLATED__", + "LicenseType": "__NOT_TRANSLATED__", + "DescLicenseType": "__NOT_TRANSLATED__", + "FixedLicense": "__NOT_TRANSLATED__", + "DynamicLicense": "__NOT_TRANSLATED__", + "Licensee": "__NOT_TRANSLATED__", + "DescLicensee": "__NOT_TRANSLATED__", + "LicenseKey": "__NOT_TRANSLATED__", + "DescLicenseKey": "__NOT_TRANSLATED__", + "Expiration": "__NOT_TRANSLATED__", + "DescExpiration": "__NOT_TRANSLATED__" }, "environment": { - "Action": "Toiminta", - "AppInfoDeleted": "Sovelluksen tiedot onnistuneesti poistettu.", - "AppName": "Sovelluksen nimi", - "AppNameMustNotBeEmpty": "Sovelluksen nimi ei saa olla tyhjä", - "Architecture": "Arkkitehtuuri", - "Base": "Base", - "Constraint": "Rajoitus", - "Delete": "Poista", - "DescDeleteAppInfo": "Olet poistamassa sovelluksen tietoja:", - "DescDeleteImage": "Olet poistamassa kuvaa (kuvia):", - "DescDownloadImage": "Olet asentamassa kuvaa (kuvia):", - "DescProblemOccurred": "Ongelma ilmeni asennuksen aikana", - "DescServicePortModified": "Palvelun porttia muutettu onnistuneesti", - "DescSignificantDownloadTime": "Tämä prosessi vaatii huomattavan paljon latausaikaa.", - "Digest": "Digest", - "Disabled": "disabled", - "Images": "Kuvat", - "Install": "Asenna", - "Installed": "asennettu", - "Installing": "asentaminen", - "InstallingImage": "Asennus:", - "Language": "Kieli", - "ManageApps": "Hallitse sovelluksia", - "ModifyImageResourceLimit": "Kuvan resurssirajan muuttaminen", - "Namespace": "Nimiavaruus", - "NoChangeMade": "Muutoksia ei tehty", - "NoImageToDisplay": "Ei näytettäviä kuvia", - "PasswordsDoNotMatch": "Salasana ja vahvistus eivät täsmää.", - "Port": "Satama", - "PortMustBeInRange": "Portin on oltava välillä 0-65534", - "PortMustBeUnique": "Portin on oltava yksilöllinen jokaisessa sovelluksessa", - "PortReservedForInternalUse": "Portit 2000-2003, 2200 ja 7681 on varattu sisäiseen käyttöön.", - "ProblemOccurred": "Ongelma ilmeni", - "Protocol": "Pöytäkirja", - "ProtocolMustBeOneOfSupported": "Protokollan on oltava jokin seuraavista: 'http', 'tcp', 'preopen' ja 'pty'.", - "Registries": "Rekisterit", - "Registry": "Rekisteri", - "ResourceLimit": "Resurssiraja", - "ResourcePresets": "Resurssien esiasetukset", - "SelectedImagesAlreadyInstalled": "Valittu kuva (valitut kuvat) on jo asennettu tai Ei mitään. Tarkista uudelleen.", - "SelectedImagesNotInstalled": "Valittuja kuvia ei ole asennettu. Tarkista uudelleen.", - "Status": "Tila", - "SuccessfullyModified": "Muutettu onnistuneesti", - "TakesTime": ". Se vie aikaa, joten ota kuppi kahvia!", - "Version": "Versio" + "ManageApps": "__NOT_TRANSLATED__", + "AppName": "__NOT_TRANSLATED__", + "Protocol": "__NOT_TRANSLATED__", + "Port": "__NOT_TRANSLATED__", + "Action": "__NOT_TRANSLATED__", + "AppNameMustNotBeEmpty": "__NOT_TRANSLATED__", + "Architecture": "__NOT_TRANSLATED__", + "PasswordsDoNotMatch": "__NOT_TRANSLATED__", + "SuccessfullyModified": "__NOT_TRANSLATED__", + "AppInfoDeleted": "__NOT_TRANSLATED__", + "NoChangeMade": "__NOT_TRANSLATED__", + "ProblemOccurred": "__NOT_TRANSLATED__", + "SelectedImagesAlreadyInstalled": "__NOT_TRANSLATED__", + "InstallingImage": "__NOT_TRANSLATED__", + "TakesTime": "__NOT_TRANSLATED__", + "Installing": "__NOT_TRANSLATED__", + "DescProblemOccurred": "__NOT_TRANSLATED__", + "SelectedImagesNotInstalled": "__NOT_TRANSLATED__", + "Disabled": "__NOT_TRANSLATED__", + "ProtocolMustBeOneOfSupported": "__NOT_TRANSLATED__", + "PortMustBeUnique": "__NOT_TRANSLATED__", + "PortMustBeInRange": "__NOT_TRANSLATED__", + "PortReservedForInternalUse": "__NOT_TRANSLATED__", + "DescServicePortModified": "__NOT_TRANSLATED__", + "Installed": "__NOT_TRANSLATED__", + "Images": "__NOT_TRANSLATED__", + "Install": "__NOT_TRANSLATED__", + "Delete": "__NOT_TRANSLATED__", + "Status": "__NOT_TRANSLATED__", + "Registry": "__NOT_TRANSLATED__", + "Namespace": "__NOT_TRANSLATED__", + "Language": "__NOT_TRANSLATED__", + "Version": "__NOT_TRANSLATED__", + "Base": "__NOT_TRANSLATED__", + "Constraint": "__NOT_TRANSLATED__", + "Digest": "__NOT_TRANSLATED__", + "ResourceLimit": "__NOT_TRANSLATED__", + "NoImageToDisplay": "__NOT_TRANSLATED__", + "ModifyImageResourceLimit": "__NOT_TRANSLATED__", + "DescDownloadImage": "__NOT_TRANSLATED__", + "DescSignificantDownloadTime": "__NOT_TRANSLATED__", + "DescDeleteImage": "__NOT_TRANSLATED__", + "DescDeleteAppInfo": "__NOT_TRANSLATED__", + "ResourcePresets": "__NOT_TRANSLATED__", + "Registries": "__NOT_TRANSLATED__" }, - "explorer": { - "InputTooShort": "InputTooShort", - "ValueRequired": "ValueRequired" + "modelStore": { + "Description": "__NOT_TRANSLATED__", + "Metadata": "__NOT_TRANSLATED__", + "Author": "__NOT_TRANSLATED__", + "Version": "__NOT_TRANSLATED__", + "Framework": "__NOT_TRANSLATED__", + "Created": "__NOT_TRANSLATED__", + "LastModified": "__NOT_TRANSLATED__", + "MinResource": "__NOT_TRANSLATED__", + "SearchModels": "__NOT_TRANSLATED__", + "Category": "__NOT_TRANSLATED__", + "Task": "__NOT_TRANSLATED__", + "Label": "__NOT_TRANSLATED__", + "CloneAsFolder": "Kloonata kansioksi", + "CloneSuccess": "Kloonauspyyntö on lähetetty onnistuneesti.", + "CloneInfo": "Se kloonataan käyttäjätyypin kansioksi." }, - "general": { - "AccessKey": "Access Key", + "resourcePreset": { + "ResourcePresets": "__NOT_TRANSLATED__", + "SHMEMShouldBeSmallerThanMemory": "__NOT_TRANSLATED__", + "CreatePreset": "__NOT_TRANSLATED__", + "Name": "__NOT_TRANSLATED__", + "Resources": "__NOT_TRANSLATED__", + "NoResourcePresetToDisplay": "__NOT_TRANSLATED__", + "ModifyResourcePreset": "__NOT_TRANSLATED__", + "PresetName": "__NOT_TRANSLATED__", + "ResourcePreset": "__NOT_TRANSLATED__", + "MinimumCPUUnit": "__NOT_TRANSLATED__", + "RAM": "__NOT_TRANSLATED__", + "MinimumMemUnit": "__NOT_TRANSLATED__", + "SharedMemory": "__NOT_TRANSLATED__", + "MinimumShmemUnit": "__NOT_TRANSLATED__", + "CreateResourcePreset": "__NOT_TRANSLATED__", + "AboutToDeletePreset": "__NOT_TRANSLATED__", + "Deleted": "__NOT_TRANSLATED__", + "NoPresetName": "__NOT_TRANSLATED__", + "MemoryShouldBeLargerThanSHMEM": "__NOT_TRANSLATED__", + "Updated": "__NOT_TRANSLATED__", + "Created": "__NOT_TRANSLATED__" + }, + "agent": { + "Endpoint": "__NOT_TRANSLATED__", + "BackendType": "__NOT_TRANSLATED__", + "Capabilities": "__NOT_TRANSLATED__", + "Terminated": "__NOT_TRANSLATED__", + "Running": "__NOT_TRANSLATED__", + "NoAvailableLiveStat": "__NOT_TRANSLATED__", + "AgentSettingUpdated": "__NOT_TRANSLATED__", + "NoChanges": "__NOT_TRANSLATED__", + "DetailedInformation": "__NOT_TRANSLATED__", + "NoNetworkSignal": "__NOT_TRANSLATED__", + "AgentSetting": "__NOT_TRANSLATED__", + "Schedulable": "__NOT_TRANSLATED__", + "Region": "__NOT_TRANSLATED__", + "Architecture": "__NOT_TRANSLATED__", + "Starts": "__NOT_TRANSLATED__", + "Allocation": "__NOT_TRANSLATED__", + "Utilization": "__NOT_TRANSLATED__", + "DiskPerc": "__NOT_TRANSLATED__", + "Status": "__NOT_TRANSLATED__", + "NoAgentToDisplay": "__NOT_TRANSLATED__", + "Connected": "__NOT_TRANSLATED__", + "Maintaining": "__NOT_TRANSLATED__", + "Resources": "__NOT_TRANSLATED__" + }, + "resourceGroup": { + "Domain": "__NOT_TRANSLATED__", + "ResourceGroupNameRequired": "__NOT_TRANSLATED__", + "EnterValidResourceGroupName": "__NOT_TRANSLATED__", + "ResourceGroupAlreadyExist": "__NOT_TRANSLATED__", + "ResourceGroupCreated": "__NOT_TRANSLATED__", + "NochangesMade": "__NOT_TRANSLATED__", + "ResourceGroupModified": "__NOT_TRANSLATED__", + "ResourceGroupNameNotMatch": "__NOT_TRANSLATED__", + "ResourceGroupDeleted": "__NOT_TRANSLATED__", + "ResourceGroups": "__NOT_TRANSLATED__", + "Name": "__NOT_TRANSLATED__", + "Description": "__NOT_TRANSLATED__", + "ActiveStatus": "__NOT_TRANSLATED__", + "PublicStatus": "__NOT_TRANSLATED__", + "Driver": "__NOT_TRANSLATED__", + "Scheduler": "__NOT_TRANSLATED__", + "WsproxyAddress": "__NOT_TRANSLATED__", + "ModifyResourceGroup": "__NOT_TRANSLATED__", + "CreateResourceGroup": "__NOT_TRANSLATED__", + "SelectDomain": "__NOT_TRANSLATED__", + "ResourceGroupName": "__NOT_TRANSLATED__", + "SelectScheduler": "__NOT_TRANSLATED__", + "AllowedSessionTypes": "__NOT_TRANSLATED__", + "Active": "__NOT_TRANSLATED__", + "Public": "__NOT_TRANSLATED__", + "SchedulerOptions": "__NOT_TRANSLATED__", + "TimeoutSeconds": "__NOT_TRANSLATED__", + "RetriesToSkip": "__NOT_TRANSLATED__", + "TypeResourceGroupNameToDelete": "__NOT_TRANSLATED__", + "ResourceGroupDetail": "__NOT_TRANSLATED__", + "DriverOptions": "__NOT_TRANSLATED__", + "NoGroupToDisplay": "__NOT_TRANSLATED__" + }, + "data": { + "User": "__NOT_TRANSLATED__", + "SelectStorageHost": "__NOT_TRANSLATED__", + "StorageStatus": "__NOT_TRANSLATED__", + "NumberOfFolders": "__NOT_TRANSLATED__", + "Created": "__NOT_TRANSLATED__", + "Limit": "__NOT_TRANSLATED__", + "ProjectFolder": "__NOT_TRANSLATED__", + "Invited": "__NOT_TRANSLATED__", + "QuotaPerStorageVolume": "__NOT_TRANSLATED__", + "HostDetails": "__NOT_TRANSLATED__", + "Host": "__NOT_TRANSLATED__", + "Project": "__NOT_TRANSLATED__", + "Used": "__NOT_TRANSLATED__", + "folders": { + "Name": "__NOT_TRANSLATED__", + "Cloneable": "__NOT_TRANSLATED__", + "CloneAFolder": "__NOT_TRANSLATED__", + "FolderCreated": "__NOT_TRANSLATED__", + "FolderCloned": "__NOT_TRANSLATED__", + "Location": "__NOT_TRANSLATED__", + "Status": "__NOT_TRANSLATED__", + "FolderQuota": "__NOT_TRANSLATED__", + "Type": "__NOT_TRANSLATED__", + "Permission": "__NOT_TRANSLATED__", + "Owner": "__NOT_TRANSLATED__", + "Control": "__NOT_TRANSLATED__", + "NoFolderToDisplay": "__NOT_TRANSLATED__", + "FolderOptionUpdate": "__NOT_TRANSLATED__", + "MaxFolderQuota": "__NOT_TRANSLATED__", + "RenameAFolder": "__NOT_TRANSLATED__", + "TypeNewFolderName": "__NOT_TRANSLATED__", + "DeleteAFolder": "__NOT_TRANSLATED__", + "TypeFolderNameToDelete": "__NOT_TRANSLATED__", + "Delete": "__NOT_TRANSLATED__", + "LeaveAFolder": "__NOT_TRANSLATED__", + "TypeFolderNameToLeave": "__NOT_TRANSLATED__", + "Leave": "__NOT_TRANSLATED__", + "NumberOfFiles": "__NOT_TRANSLATED__", + "Ownership": "__NOT_TRANSLATED__", + "DescYouAreFolderOwner": "__NOT_TRANSLATED__", + "FolderUsage": "__NOT_TRANSLATED__", + "FolderUsing": "__NOT_TRANSLATED__", + "View": "__NOT_TRANSLATED__", + "Edit": "__NOT_TRANSLATED__", + "EditDelete": "__NOT_TRANSLATED__", + "SelectPermission": "__NOT_TRANSLATED__", + "KickOut": "__NOT_TRANSLATED__", + "OpenAFolder": "__NOT_TRANSLATED__", + "Serve": "__NOT_TRANSLATED__", + "FolderInfo": "__NOT_TRANSLATED__", + "CloneFolder": "__NOT_TRANSLATED__", + "ShareFolder": "__NOT_TRANSLATED__", + "ModifyPermissions": "__NOT_TRANSLATED__", + "Rename": "__NOT_TRANSLATED__", + "LeaveFolder": "__NOT_TRANSLATED__", + "FolderUpdated": "__NOT_TRANSLATED__", + "FolderRenamed": "__NOT_TRANSLATED__", + "CannotDeleteFolder": "__NOT_TRANSLATED__", + "FolderNameMismatched": "__NOT_TRANSLATED__", + "FolderDeleted": "__NOT_TRANSLATED__", + "FolderDisconnected": "__NOT_TRANSLATED__", + "SameFileName": "__NOT_TRANSLATED__", + "FileRenamed": "__NOT_TRANSLATED__", + "FileDeleted": "__NOT_TRANSLATED__", + "MultipleFilesDeleted": "__NOT_TRANSLATED__" + }, + "UsageMode": "__NOT_TRANSLATED__", + "Type": "__NOT_TRANSLATED__", + "Permission": "__NOT_TRANSLATED__", + "SearchByName": "__NOT_TRANSLATED__", + "explorer": { + "EnterEmailAddress": "__NOT_TRANSLATED__", + "ValueRequired": "__NOT_TRANSLATED__", + "RunSSH/SFTPserver": "__NOT_TRANSLATED__", + "Delete": "__NOT_TRANSLATED__", + "UploadFiles": "__NOT_TRANSLATED__", + "UploadFolder": "__NOT_TRANSLATED__", + "NewFolder": "__NOT_TRANSLATED__", + "ReadonlyFolder": "__NOT_TRANSLATED__", + "ExecuteFileBrowser": "__NOT_TRANSLATED__", + "StopUploading": "__NOT_TRANSLATED__", + "Name": "__NOT_TRANSLATED__", + "Created": "__NOT_TRANSLATED__", + "Size": "__NOT_TRANSLATED__", + "Actions": "__NOT_TRANSLATED__", + "CreateANewFolder": "__NOT_TRANSLATED__", + "Foldername": "__NOT_TRANSLATED__", + "ShareFolder": "__NOT_TRANSLATED__", + "People": "__NOT_TRANSLATED__", + "Permissions": "__NOT_TRANSLATED__", + "ModifyPermissions": "__NOT_TRANSLATED__", + "InviteeEmail": "__NOT_TRANSLATED__", + "Permission": "__NOT_TRANSLATED__", + "RenameAFile": "__NOT_TRANSLATED__", + "NewFileName": "__NOT_TRANSLATED__", + "DownloadFile": "__NOT_TRANSLATED__", + "TouchToDownload": "__NOT_TRANSLATED__", + "FileExtensionChanged": "__NOT_TRANSLATED__", + "KeepFileExtension": "__NOT_TRANSLATED__", + "UseNewFileExtension": "__NOT_TRANSLATED__", + "RemoveFileExtension": "__NOT_TRANSLATED__", + "ReadOnlyFolderOnFileBrowser": "__NOT_TRANSLATED__", + "FileUploadSizeLimit": "__NOT_TRANSLATED__", + "FileAlreadyExists": "__NOT_TRANSLATED__", + "DoYouWantToOverwrite": "__NOT_TRANSLATED__", + "ClickFilebrowserButton": "__NOT_TRANSLATED__", + "NoImagesSupportingFileBrowser": "__NOT_TRANSLATED__", + "WritePermissionRequiredInUploadFiles": "__NOT_TRANSLATED__", + "FolderAlreadyExists": "__NOT_TRANSLATED__", + "EmptyFilesAndFoldersAreNotUploaded": "__NOT_TRANSLATED__", + "LessThan10Sec": "__NOT_TRANSLATED__", + "MoreThanADay": "__NOT_TRANSLATED__", + "NotEnoughResourceForFileBrowserSession": "__NOT_TRANSLATED__", + "ExecutingFileBrowser": "__NOT_TRANSLATED__", + "NoImagesSupportingSystemSession": "__NOT_TRANSLATED__", + "SFTPSessionNotAvailable": "__NOT_TRANSLATED__", + "StartingSSH/SFTPSession": "__NOT_TRANSLATED__", + "NumberOfSFTPSessionsExceededTitle": "__NOT_TRANSLATED__", + "NumberOfSFTPSessionsExceededBody": "__NOT_TRANSLATED__", + "ValueShouldBeStarted": "__NOT_TRANSLATED__" + }, + "usage": { + "Adequate": "__NOT_TRANSLATED__", + "Caution": "__NOT_TRANSLATED__", + "Insufficient": "__NOT_TRANSLATED__", + "StatusOfSelectedHost": "__NOT_TRANSLATED__", + "Status": "__NOT_TRANSLATED__", + "used": "__NOT_TRANSLATED__" + }, + "Folders": "__NOT_TRANSLATED__", + "Pipeline": "__NOT_TRANSLATED__", + "AutomountFolders": "__NOT_TRANSLATED__", + "Models": "__NOT_TRANSLATED__", + "ModelStore": "__NOT_TRANSLATED__", + "New": "__NOT_TRANSLATED__", + "DialogDataFolder": "__NOT_TRANSLATED__", + "DialogFolderStartingWithDotAutomount": "__NOT_TRANSLATED__", + "DialogModelFolder": "__NOT_TRANSLATED__", + "CreateANewStorageFolder": "__NOT_TRANSLATED__", + "Foldername": "__NOT_TRANSLATED__", + "Allowslettersnumbersand-_dot": "__NOT_TRANSLATED__", + "Create": "__NOT_TRANSLATED__", + "FolderToCopy": "__NOT_TRANSLATED__", + "NoStorageDescriptionFound": "__NOT_TRANSLATED__", + "FolderNameRequired": "__NOT_TRANSLATED__", + "FolderNameTooLong": "__NOT_TRANSLATED__", + "Allowslettersnumbersand-_": "__NOT_TRANSLATED__", + "Update": "__NOT_TRANSLATED__", + "ExistingFolderName": "__NOT_TRANSLATED__", + "permission": { + "NoChanges": "__NOT_TRANSLATED__", + "PermissionModified": "__NOT_TRANSLATED__" + }, + "FileandFoldernameRequired": "__NOT_TRANSLATED__", + "EnterDifferentValue": "__NOT_TRANSLATED__", + "invitation": { + "NoValidEmails": "__NOT_TRANSLATED__", + "Invited": "__NOT_TRANSLATED__", + "FolderSharingNotAvailableToUser": "__NOT_TRANSLATED__", + "NoOneWasInvited": "__NOT_TRANSLATED__", + "Shared": "__NOT_TRANSLATED__", + "NoOneWasShared": "__NOT_TRANSLATED__", + "InvitationError": "__NOT_TRANSLATED__", + "SharingError": "__NOT_TRANSLATED__" + }, "Add": "Lisää", - "Advanced": "Edistynyt", - "ConfirmPassword": "Vahvista salasana", - "Control": "Valvonta", - "E-Mail": "Sähköposti", - "Enabled": "Käytössä", - "Folders": "Kansiot", - "NewPassword": "Uusi salasana", - "Password": "Salasana", - "ResourceGroup": "Resurssiryhmä", - "SecretKey": "Salainen avain", - "StorageProxies": "Varastot", - "Username": "Käyttäjätunnus", - "cores": "ytimet", - "None": "Ei ole", - "Image": "__NOT_TRANSLATED__" + "CloningIsOnlyPossibleSameHost": "Tällä hetkellä kloonaus on mahdollista vain samassa isännässä." }, - "import": { - "CleanUpImportTask": "Tuontitehtävän siivous...", - "CouldNotCopyText": "Tekstiä ei voitu kopioida:", - "CreateButtonCode": "Luo", - "CreateNotebookButton": "Luo muistikirja -painike", - "Downloading": "Lataaminen...", - "FolderAlreadyExists": "On olemassa kansio, jolla on sama nimi. nimi nimetään uudelleen.", - "FolderCreated": "Kansio luotu.", - "FolderName": "Tuodun kansion nimi:", - "GetAndRunNotebook": "Tuo ja suorita", - "GetToFolder": "Siirry kansioon", - "GitHubURL": "GitHub URL", - "GithubAPIEtcError": "Github-palvelimen ongelma.", - "GithubAPILimitError": "Github API-rajoitusvirhe.", - "GithubInternalError": "Githubin sisäinen virhe.", - "GitlabDefaultBranch": "Gitlab Branchin nimi", - "GitlabRepoWillBeFolder": "Tuodut Gitlab-arkistot muunnetaan kansioiksi ja ne voidaan asentaa istunnon alkaessa.", - "GitlabURL": "Gitlabin URL-osoite", - "ImportFinished": "Tuonti valmis.", - "ImportGithubRepo": "Tuo Github-repositoriosta", - "ImportGitlabRepo": "Tuo Gitlab-repositoriosta", - "ImportNotebook": "Tuo muistikirja", - "NoNotebookCode": "Muistikirjan osoite on tyhjä. Syötä voimassa oleva muistikirjan koodi kopioidaksesi virkamerkkikoodin.", - "NoSuitableResourceFoundOnGivenURL": "Annetusta URL-osoitteesta ei löytynyt sopivaa resurssia.", - "NotebookBadgeCodeCopied": "Muistikirjan merkkikoodi kopioidaan leikepöydälle.", - "NotebookBadgeCodeHTML": "Muistikirjan merkkikoodi (HTML)", - "NotebookBadgeCodeMarkdown": "Muistikirjan merkkikoodi (Markdown)", - "NotebookBadgeURL": "Muistikirjan URL-osoite", - "NotebookURL": "Muistikirjan URL-osoite", - "Preparing": "Valmistautuminen...", - "ReadyToImport": "Valmis tuomaan", - "RepoWillBeFolder": "Tuodut GitHub-arkistot muunnetaan kansioiksi ja ne voidaan asentaa istunnon alkaessa.", - "WrongURLType": "Väärä URL-tyyppi", - "YouCanCreateNotebookCode": "Kirjoita muistikirjan URL-osoite luodaksesi alla olevan kaltaisen merkkikoodin, jonka voit suorittaa suoraan Backend.AI:ssa." + "totp": { + "TotpSetupCompleted": "__NOT_TRANSLATED__", + "InvalidTotpCode": "__NOT_TRANSLATED__", + "TotpSetupNotAvailable": "__NOT_TRANSLATED__", + "TypeInAuthKey": "__NOT_TRANSLATED__", + "ScanQRToEnable": "__NOT_TRANSLATED__", + "TurnOffTotp": "__NOT_TRANSLATED__", + "ConfirmTotpRemovalBody": "__NOT_TRANSLATED__", + "RemoveTotpSetupCompleted": "__NOT_TRANSLATED__", + "OTP": "__NOT_TRANSLATED__" }, - "information": { - "APIVersion": "API-versio", - "CannotRead": "Ei voi lukea", - "Compatible": "Yhteensopiva", - "Component": "Komponentti", - "Core": "Ydin", - "DefaultAdministratorAccountChanged": "Järjestelmänvalvojan oletustili muutettu", - "DescDefaultAdministratorAccountChanged": "PITÄÄ vaihtaa oletustili/salasana tuotantokäyttöön.", - "DescDockerVersion": "Docker-versio klusterissa", - "DescETCDVersion": "Backend.AI:n asetusrekisteri", - "DescExpiration": "Lisenssin voimassaoloaika. Jos aika on päättynyt, klusteriohjelmisto pysäytetään.", - "DescIsLicenseValid": "Vahvistaa järjestelmään tällä hetkellä asennetun lisenssin.", - "DescLicenseKey": "Tunnistusavain käyttöoikeutta varten. Pidä se turvassa.", - "DescLicenseType": "Järjestelmässä tällä hetkellä käytössä olevan lisenssin tyyppi.
Kiinteissä lisensseissä suoritusoikeudet annetaan vain ennalta määritellylle laitteistolle. Muuttuvien lisenssien tapauksessa suoritusoikeudet myönnetään klusterilaitteistolle sopimuksen rajoissa.", - "DescLicensee": "Tiedot organisaatiosta tai ostajasta, jolle on myönnetty käyttölupa.", - "DescPostgreSQLVersion": "Backend.AI:n tietokantajärjestelmä", - "DescRedisVersion": "Backend.AI:n välimuisti / väliaikainen tallennus.
Käytetään myös asynkronista viestintää agenttien välillä.", - "DescUsesSSL": "HTTPS ja asianmukaiset SSL-asetukset auttavat järjestelmän turvallisuutta.", - "DockerVersion": "Docker-versio", - "DynamicLicense": "Dynaaminen lisenssi", - "ETCDVersion": "ETCD-versio", - "Expiration": "Viimeinen voimassaoloaika", - "FixedLicense": "Kiinteä lisenssi", - "Installation": "Asennus", - "IsLicenseValid": "Validointi", - "LatestRelease": "Viimeisin julkaisu", - "License": "Lisenssi", - "LicenseKey": "Lisenssiavain", - "LicenseType": "Lisenssin tyyppi", - "Licensee": "Lisenssinhaltija", - "ManagerVersion": "Manager-versio", - "PostgreSQLVersion": "PostgreSQL-versio", - "RedisVersion": "Redisin versio", - "Security": "Turvallisuus", - "UsesSSL": "Käyttää SSL:ää" + "credential": { + "UserDetail": "__NOT_TRANSLATED__", + "Information": "__NOT_TRANSLATED__", + "UserID": "__NOT_TRANSLATED__", + "UserName": "__NOT_TRANSLATED__", + "FullName": "__NOT_TRANSLATED__", + "DescActiveUser": "__NOT_TRANSLATED__", + "DescRequirePasswordChange": "__NOT_TRANSLATED__", + "EnableSudoSession": "__NOT_TRANSLATED__", + "Association": "__NOT_TRANSLATED__", + "Domain": "__NOT_TRANSLATED__", + "Role": "__NOT_TRANSLATED__", + "ProjectAndGroup": "__NOT_TRANSLATED__", + "ModifyUserDetail": "__NOT_TRANSLATED__", + "Description": "__NOT_TRANSLATED__", + "UserStatus": "__NOT_TRANSLATED__", + "AdminCanOnlyRemoveTotp": "__NOT_TRANSLATED__", + "KeySeccessfullyDeleted": "__NOT_TRANSLATED__", + "Days": "__NOT_TRANSLATED__", + "RateLimitInputRequired": "__NOT_TRANSLATED__", + "RateLimitValidation": "__NOT_TRANSLATED__", + "InvalidRateLimitValue": "__NOT_TRANSLATED__", + "WarningLessRateLimit": "__NOT_TRANSLATED__", + "NoChanges": "__NOT_TRANSLATED__", + "Permission": "__NOT_TRANSLATED__", + "KeyAge": "__NOT_TRANSLATED__", + "ResourcePolicy": "__NOT_TRANSLATED__", + "Allocation": "__NOT_TRANSLATED__", + "NoCredentialToDisplay": "__NOT_TRANSLATED__", + "KeypairDetail": "__NOT_TRANSLATED__", + "Created": "__NOT_TRANSLATED__", + "Lastused": "__NOT_TRANSLATED__", + "NumberOfQueries": "__NOT_TRANSLATED__", + "ConcurrentSessions": "__NOT_TRANSLATED__", + "active": "__NOT_TRANSLATED__", + "concurrentsessions": "__NOT_TRANSLATED__", + "RateLimit": "__NOT_TRANSLATED__", + "for900seconds": "__NOT_TRANSLATED__", + "ModifyKeypairResourcePolicy": "__NOT_TRANSLATED__", + "SelectPolicy": "__NOT_TRANSLATED__", + "KeypairCreated": "__NOT_TRANSLATED__", + "UserNotFound": "__NOT_TRANSLATED__", + "UserAccountCreated": "__NOT_TRANSLATED__", + "UserAccountCreatedError": "__NOT_TRANSLATED__", + "validation": { + "PolicyName": "__NOT_TRANSLATED__", + "LetterNumber-_dot": "__NOT_TRANSLATED__", + "NameAlreadyExists": "__NOT_TRANSLATED__", + "InvalidEmailAddress": "__NOT_TRANSLATED__", + "ValidationFailed": "__NOT_TRANSLATED__", + "PleaseSelectOptions": "__NOT_TRANSLATED__", + "NumbersOnly": "__NOT_TRANSLATED__", + "PleaseSelectOption": "__NOT_TRANSLATED__" + }, + "Users": "__NOT_TRANSLATED__", + "Credentials": "__NOT_TRANSLATED__", + "ResourcePolicies": "__NOT_TRANSLATED__", + "exportCSV": "__NOT_TRANSLATED__", + "Active": "__NOT_TRANSLATED__", + "Inactive": "__NOT_TRANSLATED__", + "CreateUser": "__NOT_TRANSLATED__", + "AddCredential": "__NOT_TRANSLATED__", + "PolicyGroup": "__NOT_TRANSLATED__", + "CreatePolicy": "__NOT_TRANSLATED__", + "UserIDAsEmail": "__NOT_TRANSLATED__", + "UserIDRequired": "__NOT_TRANSLATED__", + "RateLimitFor15min": "__NOT_TRANSLATED__", + "AccessKeyOptional": "__NOT_TRANSLATED__", + "CreateResourcePolicy": "__NOT_TRANSLATED__", + "Max#": "__NOT_TRANSLATED__", + "Create": "__NOT_TRANSLATED__", + "ExportCSVFile": "__NOT_TRANSLATED__", + "FileName": "__NOT_TRANSLATED__", + "SignoutSeccessfullyFinished": "__NOT_TRANSLATED__", + "Name": "__NOT_TRANSLATED__", + "Status": "__NOT_TRANSLATED__", + "NoUserToDisplay": "__NOT_TRANSLATED__" }, - "inputLimit": { - "4to64chars": "(4~64 merkkiä)" + "maxLength": { + "64chars": "__NOT_TRANSLATED__", + "500chars": "__NOT_TRANSLATED__", + "255chars": "__NOT_TRANSLATED__", + "2048chars": "__NOT_TRANSLATED__", + "200chars": "__NOT_TRANSLATED__", + "512chars": "__NOT_TRANSLATED__" }, - "language": { - "English": "English", - "French": "Français", - "Indonesian": "Bahasa Indonesia", - "Korean": "한국어", - "Language": "Kieli", - "Mongolian": "Монгол", - "OSDefault": "Käyttöjärjestelmän oletusarvo", - "Russian": "русский", - "Brazilian": "brasileiro", - "Chinese": "中文", - "Chinese (Simplified)": "简体中文", - "Finnish": "Suomalainen", - "German": "Deutsch", - "Greek": "Ελληνική", - "Italian": "Italian", - "Japanese": "日本語", - "Polish": "Polski", - "Portuguese": "Português", - "Spanish": "Español", - "Turkish": "Türkçe", - "Vietnamese": "Tiếng Việt" + "error": { + "NetworkConnectionFailed": "__NOT_TRANSLATED__", + "LoginFailed": "__NOT_TRANSLATED__", + "AuthenticationFailed": "__NOT_TRANSLATED__", + "TooManyLoginFailures": "__NOT_TRANSLATED__", + "VirtualFolderAlreadyExist": "__NOT_TRANSLATED__", + "MaximumVfolderCreation": "__NOT_TRANSLATED__", + "CannotChangeVirtualFolderOption": "__NOT_TRANSLATED__", + "CannotSharePrivateAutomountFolder": "__NOT_TRANSLATED__", + "FolderSharingNotAvailableToUser": "__NOT_TRANSLATED__", + "ReachedResourceLimit": "__NOT_TRANSLATED__", + "UserHasNoGroup": "__NOT_TRANSLATED__", + "InvalidSignupToken": "__NOT_TRANSLATED__", + "LoginInformationMismatch": "__NOT_TRANSLATED__", + "ResourcePolicyAlreadyExist": "__NOT_TRANSLATED__", + "ScalingGroupAlreadyExist": "__NOT_TRANSLATED__", + "UserNameAlreadyExist": "__NOT_TRANSLATED__", + "ResourceLimitExceed": "__NOT_TRANSLATED__", + "ResourcePolicyStillReferenced": "__NOT_TRANSLATED__", + "SmallerResourceThenImageRequires": "__NOT_TRANSLATED__", + "UpdateError": "__NOT_TRANSLATED__", + "APIEndpointIsEmpty": "__NOT_TRANSLATED__", + "LoginSucceededManagerNotResponding": "__NOT_TRANSLATED__" }, - "license": { - "OpenSource": "Avoin lähdekoodi", - "Perpetual": "Ikuinen", - "Subscription": "Tilaus" + "summary": { + "ResourceStatistics": "__NOT_TRANSLATED__", + "connectingToCluster": "__NOT_TRANSLATED__", + "SystemResources": "__NOT_TRANSLATED__", + "ConnectedNodes": "__NOT_TRANSLATED__", + "ActiveSessions": "__NOT_TRANSLATED__", + "CoresReserved": "__NOT_TRANSLATED__", + "Using": "__NOT_TRANSLATED__", + "reserved": "__NOT_TRANSLATED__", + "FractionalGPUScalingEnabled": "__NOT_TRANSLATED__", + "ROCMGPUEnabled": "__NOT_TRANSLATED__", + "TPUEnabled": "__NOT_TRANSLATED__", + "IPUEnabled": "__NOT_TRANSLATED__", + "ATOMEnabled": "__NOT_TRANSLATED__", + "WarboyEnabled": "__NOT_TRANSLATED__", + "Reserved": "__NOT_TRANSLATED__", + "Used": "__NOT_TRANSLATED__", + "Total": "__NOT_TRANSLATED__", + "Announcement": "__NOT_TRANSLATED__", + "AcceptSharedVFolder": "__NOT_TRANSLATED__", + "DeclineSharedVFolder": "__NOT_TRANSLATED__", + "StartMenu": "__NOT_TRANSLATED__", + "UploadFiles": "__NOT_TRANSLATED__", + "CreateANewKeypair": "__NOT_TRANSLATED__", + "MaintainKeypairs": "__NOT_TRANSLATED__", + "NoAnnouncement": "__NOT_TRANSLATED__", + "Invitation": "__NOT_TRANSLATED__", + "FolderName": "__NOT_TRANSLATED__", + "Permission": "__NOT_TRANSLATED__", + "Decline": "__NOT_TRANSLATED__", + "Accept": "__NOT_TRANSLATED__", + "NoInvitations": "__NOT_TRANSLATED__", + "DownloadWebUIApp": "__NOT_TRANSLATED__", + "CurrentVersion": "__NOT_TRANSLATED__", + "UpdateEnvironmentImages": "__NOT_TRANSLATED__", + "CheckResources": "__NOT_TRANSLATED__", + "ChangeSystemSetting": "__NOT_TRANSLATED__", + "SystemMaintenance": "__NOT_TRANSLATED__" + }, + "webTerminalUsageGuide": { + "CopyGuideOne": "__NOT_TRANSLATED__", + "CopyGuideTwo": "__NOT_TRANSLATED__", + "CopyGuideThree": "__NOT_TRANSLATED__", + "CopyGuideFour": "__NOT_TRANSLATED__", + "LearnMore": "__NOT_TRANSLATED__", + "CopyGuide": "__NOT_TRANSLATED__" }, + "DownloadSSHKey": "__NOT_TRANSLATED__", + "OpenVSCodeRemote": "__NOT_TRANSLATED__", "login": { - "APIEndpointEmpty": "API-päätepiste on tyhjä. Määritä API-päätepiste kirjautumista varten.", - "APIKey": "API-avain", - "CancelLogin": "Peruuta kirjautuminen", - "ChangePassword": "Vaihda salasana", - "ClickToUseIAM": "Klikkaa käyttääksesi IAM:ää", - "ClickToUseID": "Klikkaa käyttääksesi ID:tä", - "ConnectingToCluster": "Yhteyden muodostaminen Backend.AI-klusteriin...", - "DescChangePasswordEmail": "Jos haluat lähettää sähköpostiviestin salasanasi vaihtamiseksi, kirjoita sähköpostiosoitteesi ja paina SEND-painiketta.", - "DescConfirmLeave": "Vahvistaaksesi, kirjoita sähköpostiosoitteesi ja salasanasi uudelleen.", - "DescEndpoint": "

API ENDPOINT -kenttään tulee syöttää Backend.AI-verkkopalvelimen URL-osoite, joka välittää pyynnön Managerille.

esim. http://127.0.0.1:8090/

", - "E-mail": "Sähköposti", - "EmailSendButton": "Lähetä", - "Endpoint": "Loppupiste", - "EndpointHistory": "Loppupisteen historia", - "EndpointInfo": "Tietoja Endpointista", - "EndpointStartWith": "Päätepisteen on alettava kirjaimella http:// tai https://.", - "ForgotPassword": "Unohditko salasanan?", - "InvalidChangePasswordToken": "Merkki on virheellinen", - "InvalidChangePasswordTokenMessage": "Salasanan vaihtamiseen myönnetyssä tokenissa on virhe. Lähetä toinen sähköpostiviesti salasanan vaihtamiseksi ja yritä uudelleen.", - "LeaveService": "Jätä palvelu", - "Login": "Kirjaudu sisään", - "LoginAnotherway": "Haluatko kirjautua sisään toisella tavalla?", - "LoginWithE-mail": "Kirjaudu sisään sähköpostilla", - "LoginWithIAM": "Kirjaudu sisään IAM:n avulla", - "NoEndpointSaved": "Päätepistettä ei ole tallennettu.", - "NotAUser": "Etkö ole käyttäjä?", - "Password": "Salasana", - "PasswordChanged": "Salasana on onnistuneesti vaihdettu", - "PleaseInputLoginInfo": "Syötä tunnus ja salasana kirjautumista varten.", - "PleaseWait": "Odota kirjautumista.", - "SecretKey": "Salainen avain", - "SendChangePasswordEmail": "Lähetä sähköpostiviesti salasanan vaihtamisesta", - "SignUp": "Rekisteröidy", - "SignoutFinished": "Kirjautuminen päättyi.", + "PasswordChanged": "__NOT_TRANSLATED__", + "UpdatePasswordMessage": "__NOT_TRANSLATED__", + "InvalidChangePasswordToken": "__NOT_TRANSLATED__", + "InvalidChangePasswordTokenMessage": "__NOT_TRANSLATED__", + "Login": "__NOT_TRANSLATED__", + "PleaseWait": "__NOT_TRANSLATED__", + "ConnectingToCluster": "__NOT_TRANSLATED__", + "SignoutFinished": "__NOT_TRANSLATED__", + "TooManyAttempt": "__NOT_TRANSLATED__", + "APIEndpointEmpty": "__NOT_TRANSLATED__", + "PleaseInputLoginInfo": "__NOT_TRANSLATED__", + "EndpointInfo": "__NOT_TRANSLATED__", + "DescEndpoint": "__NOT_TRANSLATED__", + "LoginWithE-mail": "__NOT_TRANSLATED__", + "LoginWithIAM": "__NOT_TRANSLATED__", + "LoginAnotherway": "__NOT_TRANSLATED__", + "ClickToUseIAM": "__NOT_TRANSLATED__", + "ClickToUseID": "__NOT_TRANSLATED__", + "E-mail": "__NOT_TRANSLATED__", + "Password": "__NOT_TRANSLATED__", + "APIKey": "__NOT_TRANSLATED__", + "SecretKey": "__NOT_TRANSLATED__", + "EndpointHistory": "__NOT_TRANSLATED__", + "NoEndpointSaved": "__NOT_TRANSLATED__", + "Endpoint": "__NOT_TRANSLATED__", + "EndpointStartWith": "__NOT_TRANSLATED__", "SingleSignOn": { - "LoginWithRealm": "Kirjaudu sisään {{ realmName }}", - "LoginWithSAML": "Kirjautuminen SAML:llä" + "LoginWithSAML": "__NOT_TRANSLATED__", + "LoginWithRealm": "__NOT_TRANSLATED__" }, - "TooManyAttempt": "Kirjautumisyrityksiä oli liikaa. Kirjautumisyritykset on estetty jonkin aikaa.", - "UpdatePasswordMessage": "Kirjoita sähköpostiosoitteesi ja uusi salasana ja paina sitten Päivitä-painiketta." + "NotAUser": "__NOT_TRANSLATED__", + "SignUp": "__NOT_TRANSLATED__", + "ForgotPassword": "__NOT_TRANSLATED__", + "ChangePassword": "__NOT_TRANSLATED__", + "LeaveService": "__NOT_TRANSLATED__", + "DescConfirmLeave": "__NOT_TRANSLATED__", + "SendChangePasswordEmail": "__NOT_TRANSLATED__", + "DescChangePasswordEmail": "__NOT_TRANSLATED__", + "EmailSendButton": "__NOT_TRANSLATED__", + "CancelLogin": "__NOT_TRANSLATED__" }, - "logs": { - "ErrorMessage": "Virheilmoitus", - "ErrorTitle": "Virheen otsikko", - "ErrorType": "Virhetyyppi", - "LogMessageRemoved": "Lokiviestit on poistettu.", - "LogMessages": "Lokiviestit", - "Method": "Menetelmä", - "NoLogToDisplay": "Ei näytettäviä lokitietoja", - "Parameters": "Parametrit", - "RequestUrl": "Pyyntö Url", - "Status": "Tila", - "TimeStamp": "Aikaleima", - "UpTo3000Logs": "(Enintään 3000 viimeisintä lokia)" + "signup": { + "InvalidEmail": "__NOT_TRANSLATED__", + "PasswordInputRequired": "__NOT_TRANSLATED__", + "PasswordInvalid": "__NOT_TRANSLATED__", + "PasswordNotMatched": "__NOT_TRANSLATED__", + "VerificationError": "__NOT_TRANSLATED__", + "EmailSent": "__NOT_TRANSLATED__", + "SendError": "__NOT_TRANSLATED__", + "EmailVerified": "__NOT_TRANSLATED__", + "EmailVerifiedMessage": "__NOT_TRANSLATED__", + "EmailVerificationFailed": "__NOT_TRANSLATED__", + "EmailVerificationFailedMessage": "__NOT_TRANSLATED__", + "SendEmail": "__NOT_TRANSLATED__", + "Signup": "__NOT_TRANSLATED__", + "RequestAgreementTermsOfService": "__NOT_TRANSLATED__", + "Processing": "__NOT_TRANSLATED__", + "SignupSucceeded": "__NOT_TRANSLATED__", + "EmailInputRequired": "__NOT_TRANSLATED__", + "SignupBETA": "__NOT_TRANSLATED__", + "E-mail": "__NOT_TRANSLATED__", + "UserName": "__NOT_TRANSLATED__", + "InvitationToken": "__NOT_TRANSLATED__", + "TokenInputRequired": "__NOT_TRANSLATED__", + "Password": "__NOT_TRANSLATED__", + "PasswordAgain": "__NOT_TRANSLATED__", + "PolicyAgreement_1": "__NOT_TRANSLATED__", + "TermsOfService": "__NOT_TRANSLATED__", + "PolicyAgreement_2": "__NOT_TRANSLATED__", + "PrivacyPolicy": "__NOT_TRANSLATED__", + "PolicyAgreement_3": "__NOT_TRANSLATED__", + "ThankYou": "__NOT_TRANSLATED__", + "VerificationMessage": "__NOT_TRANSLATED__" }, - "maintenance": { - "CleanupImages": "Siivous Kuvat", - "CleanupOldImages": "Vanhojen kuvien siivoaminen", - "DescCleanupOldImages": "Vanhojen kuvien siivoaminen docker-kuvaluettelosta.", - "DescMatchDatabase": "Laske käyttötietokanta uudelleen senhetkisen tilan mukaan.
Hyödyllinen, jos docker epäonnistuu vahingossa tai jotkin istunnot on lopetettu väkisin.", - "DescRescanImageList": "Skannaa kuvaluettelo rekisteröidyistä arkistoista.
Se voi kestää kauan, joten odota suorituksen jälkeen.", - "Fix": "Korjaa", - "ImagesEnvironment": "Kuvat / Ympäristö", - "MatchDatabase": "Sovita käyttötietokanta nykyiseen tilaan", - "RecalculateUsage": "Laske käyttö uudelleen", - "Recalculating": "Uudelleenlaskenta...", - "RecalculationFailed": "Uudelleenlaskenta epäonnistui", - "RecalculationFinished": "Uudelleenlaskenta valmis", - "RescanFailed": "Uudelleentarkistus epäonnistui", - "RescanImageFinished": "Kuvan uudelleenkuvaus valmis.", - "RescanImageList": "Kuvaluettelon uudelleenetsintä arkistosta", - "RescanImageScanning": "Uudelleen skannaus...", - "RescanImages": "Kuvien uudelleenkuvaus", - "Scanning": "Skannaus..." + "resourcePolicy": { + "PolicyNameEmpty": "__NOT_TRANSLATED__", + "SuccessfullyCreated": "__NOT_TRANSLATED__", + "CannotCreateResourcePolicy": "__NOT_TRANSLATED__", + "PolicyName": "__NOT_TRANSLATED__", + "ResourcePolicy": "__NOT_TRANSLATED__", + "Unlimited": "__NOT_TRANSLATED__", + "Sessions": "__NOT_TRANSLATED__", + "ContainerPerSession": "__NOT_TRANSLATED__", + "IdleTimeoutSec": "__NOT_TRANSLATED__", + "ConcurrentJobs": "__NOT_TRANSLATED__", + "MaxSessionLifeTime": "__NOT_TRANSLATED__", + "Folders": "__NOT_TRANSLATED__", + "AllowedHosts": "__NOT_TRANSLATED__", + "Resources": "__NOT_TRANSLATED__", + "Name": "__NOT_TRANSLATED__", + "Concurrency": "__NOT_TRANSLATED__", + "ClusterSize": "__NOT_TRANSLATED__", + "StorageNodes": "__NOT_TRANSLATED__", + "NoResourcePolicyToDisplay": "__NOT_TRANSLATED__", + "UpdateResourcePolicy": "__NOT_TRANSLATED__", + "AboutToDeleteResourcePolicy": "__NOT_TRANSLATED__", + "SuccessfullyUpdated": "__NOT_TRANSLATED__", + "SuccessfullyDeleted": "__NOT_TRANSLATED__" }, - "maxLength": { - "200chars": "(enintään 200 merkkiä)", - "2048chars": "(enintään 2048 merkkiä)", - "255chars": "(enintään 255 merkkiä)", - "500chars": "(enintään 500 merkkiä)", - "512chars": "(enintään 512 merkkiä)", - "64chars": "(enintään 64 merkkiä)" + "import": { + "FolderAlreadyExists": "__NOT_TRANSLATED__", + "Downloading": "__NOT_TRANSLATED__", + "ReadyToImport": "__NOT_TRANSLATED__", + "NoSuitableResourceFoundOnGivenURL": "__NOT_TRANSLATED__", + "WrongURLType": "__NOT_TRANSLATED__", + "GithubInternalError": "__NOT_TRANSLATED__", + "GithubAPILimitError": "__NOT_TRANSLATED__", + "GithubAPIEtcError": "__NOT_TRANSLATED__", + "Preparing": "__NOT_TRANSLATED__", + "FolderCreated": "__NOT_TRANSLATED__", + "CleanUpImportTask": "__NOT_TRANSLATED__", + "ImportFinished": "__NOT_TRANSLATED__", + "FolderName": "__NOT_TRANSLATED__", + "NoNotebookCode": "__NOT_TRANSLATED__", + "NotebookBadgeCodeCopied": "__NOT_TRANSLATED__", + "CouldNotCopyText": "__NOT_TRANSLATED__", + "ImportNotebook": "__NOT_TRANSLATED__", + "NotebookURL": "__NOT_TRANSLATED__", + "GetAndRunNotebook": "__NOT_TRANSLATED__", + "CreateNotebookButton": "__NOT_TRANSLATED__", + "YouCanCreateNotebookCode": "__NOT_TRANSLATED__", + "NotebookBadgeURL": "__NOT_TRANSLATED__", + "CreateButtonCode": "__NOT_TRANSLATED__", + "NotebookBadgeCodeHTML": "__NOT_TRANSLATED__", + "NotebookBadgeCodeMarkdown": "__NOT_TRANSLATED__", + "ImportGithubRepo": "__NOT_TRANSLATED__", + "RepoWillBeFolder": "__NOT_TRANSLATED__", + "GitHubURL": "__NOT_TRANSLATED__", + "GetToFolder": "__NOT_TRANSLATED__", + "ImportGitlabRepo": "__NOT_TRANSLATED__", + "GitlabRepoWillBeFolder": "__NOT_TRANSLATED__", + "GitlabURL": "__NOT_TRANSLATED__", + "GitlabDefaultBranch": "__NOT_TRANSLATED__" }, - "modelService": { - "Active/Total": "Aktiivinen/Kokonaismäärä", - "ClearErrors": "Tyhjennä virhe ja yritä uudelleen", - "Controls": "Ohjaimet", - "CreatedAt": "Created at", - "CurrentTime": "Nykyinen aika", - "DesiredRoutingCount": "Haluttu reititysmäärä", - "DesiredSessionCount": "Haluttu istunnon määrä", - "EditModelService": "Muokkaa mallipalvelua", - "EndpointId": "Päätepisteen tunnus", - "EndpointName": "Päätepisteen nimi", - "ExpiredDate": "Vanhentunut päiväys", - "FailedToStartService": "Palvelun luominen epäonnistui.", - "FormValidationFailed": "Lomakkeen validointi epäonnistui", - "Generate": "Luo", - "GenerateNewToken": "Luo uusi merkki", - "GenerateToken": "Luo tunniste", - "GeneratedTokens": "Generoidut tunnukset", - "Image": "Kuva", - "NoServiceEndpoint": "Ei palvelun päätepistettä", - "OnlyAllowsNonNegativeIntegers": "Sallii vain ei-negatiiviset kokonaisluvut", - "OpenToPublic": "Avoinna yleisölle", - "PleaseSelectTime": "Valitse aika!", - "Public": "Julkinen", - "RouteId": "Reitin tunnus", - "RoutesInfo": "Reittien tiedot", - "RoutingInfo": "Reititystiedot", - "RoutingsCount": "Reittien määrä", - "ServiceEndpoint": "Palvelun päätepiste", - "ServiceInfo": "Palvelun tiedot", - "ServiceName": "Palvelun nimi", - "ServiceNameRule": "Ainoastaan aakkosnumeerisia merkkejä, alaviivoja(_), väliviivoja(-) ja pisteitä(.) saa olla 4-24 merkkiä, ja sen on päätyttävä aakkosnumeeriseen merkkiin.", - "Services": "Palvelut", - "ServingRouteErrorModalTitle": "Palvelevan reitin virhe", - "SessionId": "Istunnon ID", - "SessionOwner": "Istunnon omistaja", - "StartNewServing": "Aloita uusi annos", - "StartService": "Käynnistä palvelu", - "Status": "Tila", - "TokenExpiredDateError": "Merkin voimassaoloajan on oltava nykyisen ajan jälkeen.", - "TokenExpiredDateHelp": "Tokenin oletusarvoinen vanhentumisaika on 24 tuntia myöhemmin.", - "TokenGenerated": "Tuotettu merkki", - "TokenGenerationFailed": "Tokenin luominen epäonnistui. yritä uudelleen.", - "TrafficRatio": "Liikennesuhde", - "YouAreAboutToTerminate": "Olet lopettamassa", - "resources": "Resurssit" + "eduapi": { + "CannotAuthorizeSessionByToken": "__NOT_TRANSLATED__", + "QueryingExisitingComputeSession": "__NOT_TRANSLATED__", + "sessionStatusIs": "__NOT_TRANSLATED__", + "PleaseReload": "__NOT_TRANSLATED__", + "FoundExistingComputeSession": "__NOT_TRANSLATED__", + "FindingSessionTemplate": "__NOT_TRANSLATED__", + "NoSessionTemplate": "__NOT_TRANSLATED__", + "EmptyProject": "__NOT_TRANSLATED__", + "CreatingComputeSession": "__NOT_TRANSLATED__", + "SessionStillPreparing": "__NOT_TRANSLATED__", + "ComputeSessionPrepared": "__NOT_TRANSLATED__" + }, + "logs": { + "TimeStamp": "__NOT_TRANSLATED__", + "Status": "__NOT_TRANSLATED__", + "ErrorTitle": "__NOT_TRANSLATED__", + "ErrorMessage": "__NOT_TRANSLATED__", + "ErrorType": "__NOT_TRANSLATED__", + "Method": "__NOT_TRANSLATED__", + "RequestUrl": "__NOT_TRANSLATED__", + "Parameters": "__NOT_TRANSLATED__", + "NoLogToDisplay": "__NOT_TRANSLATED__", + "LogMessages": "__NOT_TRANSLATED__", + "UpTo3000Logs": "__NOT_TRANSLATED__", + "LogMessageRemoved": "__NOT_TRANSLATED__" }, "notification": { - "Initializing": "Aloitetaan...", - "SeeDetail": "Katso lisätietoja", - "SuccessfullyUpdated": "Päivitetty onnistuneesti", - "Visit": "Käy osoitteessa" + "Initializing": "__NOT_TRANSLATED__", + "SuccessfullyUpdated": "__NOT_TRANSLATED__", + "Visit": "__NOT_TRANSLATED__", + "SeeDetail": "__NOT_TRANSLATED__" + }, + "usagepanel": { + "StatisticsForThisMonth": "__NOT_TRANSLATED__", + "NumSessions": "__NOT_TRANSLATED__", + "UsedTime": "__NOT_TRANSLATED__", + "CpuUsedTime": "__NOT_TRANSLATED__", + "GpuUsedTime": "__NOT_TRANSLATED__", + "DiskUsed": "__NOT_TRANSLATED__", + "TrafficUsed": "__NOT_TRANSLATED__" + }, + "explorer": { + "ValueRequired": "__NOT_TRANSLATED__", + "InputTooShort": "__NOT_TRANSLATED__" }, "pipeline": { + "NoPipelineSelected": "__NOT_TRANSLATED__", "Component": { - "Connect": "Yhdistä", - "NoComponentSelected": "Ei valittu putkistokomponenttia" + "NoComponentSelected": "__NOT_TRANSLATED__", + "Connect": "__NOT_TRANSLATED__" }, "ComponentDialog": { - "CPUNotEnough": "CPU:n on oltava vähintään 1", - "CreateTitle": "Lisää putkistokomponentti", - "DeleteTitle": "Poista putkistokomponentti", - "Description": "Komponentin kuvaus", - "MemoryNotEnough": "Muistia on oltava vähintään 0,1 GiB.", - "Name": "Komponentin nimi", - "NamePathRequired": "Nimi ja polku vaaditaan", - "PathInFolder": "Komponentin polku tallennuskansiossa", - "UpdateTitle": "Päivitä putkistokomponentti" + "NamePathRequired": "__NOT_TRANSLATED__", + "CPUNotEnough": "__NOT_TRANSLATED__", + "MemoryNotEnough": "__NOT_TRANSLATED__", + "CreateTitle": "__NOT_TRANSLATED__", + "UpdateTitle": "__NOT_TRANSLATED__", + "Name": "__NOT_TRANSLATED__", + "Description": "__NOT_TRANSLATED__", + "PathInFolder": "__NOT_TRANSLATED__", + "DeleteTitle": "__NOT_TRANSLATED__" }, - "Finished": "Valmis", - "List": "Luettelo", - "NoPipelineSelected": "Ei valittua putkistoa", - "PipelineCreated": "Putkilinja luotu", - "PipelineDeleted": "Putkilinja poistettu", + "RunPipeline": "__NOT_TRANSLATED__", "PipelineDialog": { - "CreateTitle": "Luo putki", - "DeleteTitle": "Poista putkisto", - "Description": "Putkiston kuvaus", - "Environment": "Ympäristö", - "FillAllInputFields": "Täytä kaikki syöttökentät", - "Name": "Putkilinjan nimi", - "TargetFolder": "Tavoitetiedoston kansio", - "UpdateTitle": "Päivitä putkisto", - "Version": "Versio" + "FillAllInputFields": "__NOT_TRANSLATED__", + "CreateTitle": "__NOT_TRANSLATED__", + "UpdateTitle": "__NOT_TRANSLATED__", + "Name": "__NOT_TRANSLATED__", + "Description": "__NOT_TRANSLATED__", + "Environment": "__NOT_TRANSLATED__", + "Version": "__NOT_TRANSLATED__", + "DeleteTitle": "__NOT_TRANSLATED__", + "TargetFolder": "__NOT_TRANSLATED__" }, - "RunPipeline": "Suorita putkisto", - "Running": "Running", - "SelectPipeline": "Valitse putkisto" + "PipelineCreated": "__NOT_TRANSLATED__", + "PipelineDeleted": "__NOT_TRANSLATED__", + "SelectPipeline": "__NOT_TRANSLATED__", + "List": "__NOT_TRANSLATED__", + "Running": "__NOT_TRANSLATED__", + "Finished": "__NOT_TRANSLATED__" }, - "registry": { - "AddRegistry": "Lisää rekisteri", - "DescHostnameIsEmpty": "Isäntänimi on tyhjä", - "DescURLStartString": "URL-osoite alkaa kirjaimella http:// tai https://", - "ForHarborOnly": "Vain satamaan!", - "HarborProject": "Satamahanke", - "Hostname": "Isäntänimi", - "HostnameDoesNotMatch": "Isäntänimi ei täsmää!", - "ModifyRegistry": "Muokkaa rekisteriä", - "NoRegistryToDisplay": "Ei rekistereitä näytettäväksi", - "Password": "Salasana", - "PasswordOptional": "Salasana (valinnainen)", - "PleaseSelectOption": "Valitse vaihtoehto", - "ProjectName": "Hankkeen nimi", - "ProjectNameIsRequired": "Hankkeen nimi vaaditaan", - "Registries": "Rekisterit", - "RegistryHostname": "Rekisterin isäntänimi", - "RegistryHostnameAlreadyExists": "Isäntänimi on jo olemassa. Vaihda isäntänimi lisäämällä", - "RegistrySuccessfullyAdded": "Rekisteri lisätty onnistuneesti.", - "RegistrySuccessfullyDeleted": "Rekisteri onnistuneesti poistettu.", - "RegistrySuccessfullyModified": "Rekisteriä muutettu onnistuneesti.", - "RegistryTurnedOff": "Rekisteri poistettu käytöstä", - "RegistryTurnedOn": "Rekisteri käytössä", - "RegistryType": "Rekisterin tyyppi", - "RegistryURL": "Rekisterin URL-osoite", - "RegistryUpdateFailed": "Rekisterin päivitys epäonnistui.", - "RegistryUpdateFinished": "Rekisterin päivitys valmis.", - "RescanFailed": "Uudelleentarkistus epäonnistui.", - "RescanImages": "Kuvien uudelleen skannaaminen...", - "Type": "Tyyppi", - "TypeRegistryNameToDelete": "Kirjoita rekisterin isäntänimi, jonka haluat poistaa", - "UpdatingRegistryInfo": "Rekisteritietojen päivittäminen...", - "Username": "Käyttäjätunnus", - "UsernameOptional": "Käyttäjätunnus (valinnainen)", - "ConfirmNoUserName": "Käyttäjää ja salasanaa ei ole määritetty, haluatko tallentaa?" - }, - "resourceGroup": { - "Active": "Aktiivinen", - "ActiveStatus": "Aktiivinen tila", - "AllowedSessionTypes": "Sallitut istuntotyypit", - "CreateResourceGroup": "Luo resurssiryhmä", - "Description": "Kuvaus", - "Domain": "Verkkotunnus", - "Driver": "Kuljettaja", - "DriverOptions": "Kuljettajan vaihtoehdot", - "EnterValidResourceGroupName": "Syötä kelvollinen resurssiryhmän nimi", - "ModifyResourceGroup": "Resurssiryhmän muokkaaminen", - "Name": "Nimi", - "NoGroupToDisplay": "NoGroupToDisplay", - "NochangesMade": "Ei muutoksia", - "Public": "Julkinen", - "PublicStatus": "Julkinen asema", - "ResourceGroupAlreadyExist": "Samanniminen resurssiryhmä on jo olemassa.", - "ResourceGroupCreated": "Resurssiryhmä luotu onnistuneesti", - "ResourceGroupDeleted": "Resurssiryhmä onnistuneesti poistettu", - "ResourceGroupDetail": "Resurssiryhmän tiedot", - "ResourceGroupModified": "Resurssiryhmän muokkaus onnistui onnistuneesti", - "ResourceGroupName": "Resurssiryhmän nimi", - "ResourceGroupNameNotMatch": "Resurssiryhmän nimi ei täsmää!", - "ResourceGroupNameRequired": "Resurssiryhmän nimi vaaditaan.", - "ResourceGroups": "Resurssiryhmät", - "RetriesToSkip": "Times", - "Scheduler": "Aikatauluttaja", - "SchedulerOptions": "Aikataulun asetukset", - "SelectDomain": "Valitse verkkotunnus", - "SelectScheduler": "Valitse Ajastin", - "TimeoutSeconds": "Sekuntia", - "TypeResourceGroupNameToDelete": "Kirjoita poistettavan resurssiryhmän nimi", - "WsproxyAddress": "WSProxy-palvelimen osoite" - }, - "resourcePolicy": { - "AboutToDeleteResourcePolicy": "Olet poistamassa tätä resurssikäytäntöä:", - "AllowedHosts": "Sallitut isännät", - "CannotCreateResourcePolicy": "Resurssikäytäntöä ei voida luoda. Tarkista syöttöarvot.", - "Capacity": "Kapasiteetti", - "ClusterSize": "Klusterin koko", - "Concurrency": "Samanaikaisuus", - "ConcurrentJobs": "Samanaikaiset työt", - "ContainerPerSession": "Säiliö istuntoa kohti", - "Folders": "Kansiot", - "IdleTimeoutSec": "Tyhjäkäynnin aikakatkaisu (sek.)", - "MaxSessionLifeTime": "Istunnon kesto (sek.)", - "Name": "Nimi", - "NoResourcePolicyToDisplay": "Ei näytettäviä resurssikäytäntöjä", - "PolicyName": "Politiikan nimi", - "PolicyNameEmpty": "Käytännön nimi ei saa olla tyhjä.", - "ResourcePolicy": "Resurssipolitiikka", - "Resources": "Resurssit", - "Sessions": "Istunnot", - "StorageNodes": "Varastointisolmut", - "SuccessfullyCreated": "Resurssikäytäntö luotu onnistuneesti.", - "SuccessfullyDeleted": "Resurssikäytäntö poistettu onnistuneesti.", - "SuccessfullyUpdated": "Resurssikäytäntö päivitetty onnistuneesti.", - "Unlimited": "Rajoittamaton", - "UpdateResourcePolicy": "Resurssipolitiikan päivittäminen" - }, - "resourcePreset": { - "AboutToDeletePreset": "Olet poistamassa tätä esiasetusta:", - "CreatePreset": "Luo esiasetus", - "CreateResourcePreset": "Luo resurssien esiasetus", - "Created": "Resurssien esiasetus luotu", - "Deleted": "Resurssin esiasetus on onnistuneesti poistettu.", - "MemoryShouldBeLargerThanSHMEM": "Muistin pitäisi olla suurempi kuin jaetun muistin", - "MinimumCPUUnit": "Suoritin käynnistyy 1 ytimellä", - "MinimumMemUnit": "Muisti alkaa 1 GB:lla", - "MinimumShmemUnit": "Jaetun muistin vähimmäisyksikkö on 0,01 Gt.", - "ModifyResourcePreset": "Muokkaa resurssien esiasetusta", - "Name": "Nimi", - "NoPresetName": "Tulo esiasetuksen nimi", - "NoResourcePresetToDisplay": "Ei resurssien esiasetuksia näytettäväksi", - "PresetName": "Esiasetuksen nimi", - "RAM": "RAM-MUISTI (GB)", - "ResourcePreset": "Resurssien esiasetus", - "ResourcePresets": "Resurssien esiasetukset", - "Resources": "Resurssit", - "SharedMemory": "Jaettu muisti (GB)", - "Updated": "Resurssien esiasetus päivitetty", - "SHMEMShouldBeSmallerThanMemory": "Jaetun muistin on oltava pienempi kuin muistin" - }, - "session": { - "Agent": "Agentti", - "AllowedClientIps": "Sallitut asiakkaan IP-osoitteet", - "AlreadyTerminatingSession": "Istunto on jo päättymässä.", - "Architecture": "Arkkitehtuuri", - "Arguments": "Argumentit", - "Batch": "Erä", - "CheckAgainDialog": "Tätä toimenpidettä ei voi perua. Haluatko jatkaa?", - "CommaSeparated": "pilkulla erotettu", - "CommitFailed": "Sitoutumisistunnon toiminto epäonnistui", - "CommitFinished": "Sitoumusistunnon toiminto päättyi.", - "CommitOnGoing": "Sitoutua edistykseen...", - "CommitSession": "Sitoumusistunto", - "Configuration": "Konfigurointi", - "ConnectionExample": "Yhteys Esimerkki", - "ConnectionInformation": "Liitäntätiedot", - "ConnectionNotice": "Ilmoitus", - "CreationFailed": "Istunnon luominen epäonnistui. Yritä uudelleen muutaman minuutin kuluttua.", - "DefaultTensorboardPath": "/home/work/logs", - "DescCommitSession": "Olet aikeissa sitouttaa alla olevaa istuntoa vastaavan kontin:", - "DownloadingCSVFile": "CSV-tiedoston lataaminen...", - "DownloadingSessionLogs": "Istuntolokien lataaminen.", - "ElapsedTime": "Kulunut aika", - "EnvironmentInfo": "Ympäristötiedot", - "ExecuteTerminalApp": "Suorita päätelaitesovellus", - "ExportCSVFile": "Vie CSV-tiedosto", - "ExportSessionListToCSVFile": "Vie istuntoluettelo CSV-tiedostoon", - "Finished": "Valmis", - "GracePeriod": "Karenssiaika", - "GracePeriodDesc": "Käyttötarkkailu aktivoituu tämän alkuvapauden jälkeen. Tänä aikana istuntoja ei lopeteta, vaikka käyttöaste olisi alhainen.", - "IdleChecks": "Tyhjäkäyntitarkastukset", - "IdleChecksDesc": "Backend.AI tukee toimimattomuuskriteereitä (idleness) laskenta-istuntojen automaattista roskienkeruuta varten.", - "Inference": "Päättely", - "InputTensorboardPath": "Syötä lokihakemisto, johon TensorBoard viittaa. Huomaa, että lokihakemistoa ei luoda automaattisesti...", - "Interactive": "Interaktiivinen", - "LastTry": "Viimeinen yritys", - "MaxSessionLifetime": "Istunnon enimmäiskestoikä", - "MaxSessionLifetimeDesc": "Pakottaa lopettamaan istunnot tämän ajan kuluttua luomisesta. Se estää istuntoa toimimasta loputtomiin.", - "Message": "Viesti", - "ModifyArguments": "Muokkaa argumentteja", - "NetworkIdleTimeout": "Verkon tyhjäkäynnin aikakatkaisu", - "NetworkIdleTimeoutDesc": "Pakota lopettamaan istunnot, jotka eivät vaihda tietoja käyttäjän (selaimen tai verkkosovelluksen) kanssa tämän ajan kuluttua. Käyttäjän ja laskenta-istunnon välistä liikennettä tapahtuu jatkuvasti, kun käyttäjä on vuorovaikutuksessa sovelluksen, kuten terminaalin tai Jupyterin, kanssa näppäimistösyötön, Jupyter-solujen luomisen jne. avulla. Jupyter-solujen luominen jne. Jos vuorovaikutusta ei tapahdu tiettyyn ajanjaksoon, roskienkeräyksen ehto täyttyy. Vaikka laskenta-istunnossa olisi prosessi, joka suorittaa työtä, se lopetetaan, jos käyttäjän vuorovaikutusta ei ole.", - "NoLogMsgAvailable": "Nykyisestä tilasta ei ole saatavilla lokiviestiä", - "NoLogs": "Ei lokitietoja.", - "NoSession": "Ei istuntoa.", - "NoSessionToDisplay": "Ei näytettäviä istuntoja", - "OnlyOneFolderAttached": "Vain yksi kansio on liitetty.", - "OpenToPublic": "Sovelluksen avaaminen yleisölle", - "Others": "Muut", - "Preparing": "Valmistautuminen...", - "PreparingSession": "Istunnon valmistelu...", - "Readless": "Lue vähemmän", - "Readmore": "Lue lisää...", - "RequestContainerCommit": "Pyyntö Container Commit", - "Reservation": "Varaukset", - "ResourceGroup": "Resurssiryhmä", - "Running": "Running", - "SFTPDescription": "Voit ladata tiedostoja nopeasti ja turvallisesti SSH/SFTP-asiakasohjelman kautta. Jos et ole ladannut SSH-avainparia etukäteen, tallenna SSH-avaimesi ensin napsauttamalla \"SSH-avaimen lataus\" -painiketta. Tämän jälkeen voit käyttää avainta SFTP:n, SCP:n ja Rsyncin kaltaisten komentojen suorittamiseen. \"Istunto - Upload Session\" -sivulla voit hallita istuntojen luetteloa tiedostojen lataamista varten.", - "SFTPExtraNotification": "On suositeltavaa poistaa istunnot sen jälkeen, kun ne on käytetty, sillä istuntojen määrä on rajoitettu. Istunnot, joita ei käytetä tiedostojen lataamiseen tietyn ajan kuluessa, voidaan poistaa automaattisesti.", - "SeeAppDialog": "Katso sovellusdialogi", - "SeeContainerLogs": "Katso konttien lokit", - "SessionInfo": "SessionInfo", - "SessionRenamed": "Istunto nimetty uudelleen", - "SessionTerminated": "Istunto päättyi.", - "SessionType": "SessionType", - "SessionsTerminated": "Istunnot lopetettu.", - "Status": "Tila", - "StatusDetail": "Yksityiskohta", - "StatusInfo": "Tilatiedot", - "System": "Lataa istuntoja", - "TensorboardPath": "TensorBoardin lokihakemisto", - "Terminate": "Lopeta", - "TerminateSession": "Lopeta istunto", - "Threshold": "Kynnysarvo", - "TimeoutExceeded": "Saavutettu aika. Tarkistan...", - "TotalRetries": "Uudelleenyrityksiä yhteensä", - "TryPreferredPort": "Kokeile haluamaasi porttia", - "Usage": "Käyttö", - "UseSubdomain": "UseSubdomain", - "UseThisArguments": "Käytä tätä argumenttia", - "UseThisPath": "Käytä", - "UseYourFavoriteMSTSCApp": "Käytä suosikki MS Remote Desktop -sovellusta", - "UseYourFavoriteVNCApp": "Käytä suosikkisovellustasi VNC", - "Utilization": "Käyttö", - "UtilizationIdleTimeout": "Käytön tarkistusohjelma (Utilization Checker)", - "UtilizationIdleTimeoutDesc": "Pakottaa lopettamaan istunnot vain niille osoitettujen resurssien käytön perusteella.", - "UtilizationThreshold": "Käyttökynnys", - "UtilizationThresholdDesc": "Kunkin laskentaresurssin kynnysarvokriteerit. Kun yksi tai useampi laskenta-istunnon resurssi ei ylitä määritettyjä kynnysarvokriteerejä tiettyyn aikaan, istunto kerätään roskakoriin (lopetetaan). Jos esimerkiksi asetat 1 % CUDA:n käyttöasteen kynnysarvon, laskenta-istunnot, joiden CUDA GPU:n käyttöaste on alle 1 % tietyn ajanjakson ajan, tuhotaan. Resurssit, joiden arvot ovat tyhjiä, jätetään roskienkeräyskriteerien ulkopuolelle.", - "VNCconnection": "VNC-yhteys", - "VSCodeRemoteConnection": "VSCode-etäkytkentä", - "VSCodeRemoteDescription": "Voit käynnistää paikallisen Visual Studio Code -sovelluksen ja muodostaa yhteyden etälaskentaistuntoon (SSH:n kautta) käyttämällä alla olevaa salasanaa. Kopioi salasana ennen painikkeen napsauttamista. (HUOMAUTUS: Sinun on asennettava Visual Studio Code paikalliselle koneellesi).", - "VSCodeRemoteNoticeSSHConfig": "Jos haluat luoda saumattoman yhteyden Visual Studio Code -ohjelmistolle etälaskentaistuntoon, luo tai muokkaa $HOME/.ssh/config-tiedostoa ja lisää seuraava lohko.", - "VSCodeRemotePasswordTitle": "Visual Studio Code SSH-etäsalasana", - "Validation": { - "EnterValidSessionName": "Syötä kelvollinen istunnon nimi", - "SessionNameAlreadyExist": "Istunnon nimi on jo olemassa", - "SessionNameRequired": "Istunnon nimi vaaditaan", - "SluggedStrings": "Slugged-merkkijonot (>3 merkkiä)", - "SessionNameTooLong64": "Anna enintään 64 merkkiä.", - "PleaseFollowSessionNameRule": "Kirjoita vähintään 4 kirjaimen, numeroiden, '.', '_' ja '-' yhdistelmä." - }, - "XRDPconnection": "RDP-yhteys", - "applauncher": { - "App": "App", - "AppMustBeRun": "Käynnistä vain, kun sovellus on jo käynnissä", - "AppMustBeRunDialog": "Tätä sovellusta voi käyttää vain, jos se on jo käynnissä päätelaitteen kautta. Jos näin ei ole, sinut ohjataan virhesivulle, joka ilmestyy, kun sovellus ei ole käynnissä.", - "ConfirmAndRun": "Tarkistin ja aloitan", - "NoExistingConnectionExample": "Ei yhteyttä Kopioitava esimerkki.", - "Prepared": "Valmisteltu", - "SSHConnectionExampleClipboardCopy": "SSH-yhteys Esimerkki on kopioitu leikepöydälle." - }, - "core": "ydin", - "exportCSV": "viedä CSV", - "launcher": { - "AIAccelerator": "AI-kiihdyttämö", - "Accelerator": "Kiihdytin", - "AddingKernelToSocketQueue": "Ytimen lisääminen socket-jonoon...", - "AllocateNode": "Cluster-tila", - "Architecture": "Arkkitehtuuri", - "Base": "Base", - "BatchMode": "Erä", - "BatchModeConfig": "Erätila Konfigurointi", - "CPU": "CPU", - "ChooseEnvironment": "Valitse ympäristö", - "ClusterMode": "Cluster-tila", - "ClusterSize": "Klusterin koko", - "ConfirmAndLaunch": "Vahvista ja käynnistä", - "Container": "Kontti", - "Core": "Ydin", - "CurrentResourceGroup": "Nykyinen resurssiryhmä", - "CustomAllocation": "Mukautettu jako", - "CustomResourceApplied": "Mukautettua resurssia sovelletaan", - "DescAIAccelerator": "

AI-kiihdyttimet (GPU:t tai NPU:t) soveltuvat hyvin koneoppimiseen liittyviin matriisi-/vektorilaskentoihin. Tekoälykiihdyttimet nopeuttavat harjoittelu- ja päättelyalgoritmeja suuruusluokkaa, mikä lyhentää ajoaikoja viikoista päiviin.

", - "DescCPU": "

Suoritin suorittaa perusaritmeettiset, loogiset, ohjaus- ja I/O-operaatiot (input/output), jotka on määritelty ohjeissa.

Suuren suorituskyvyn laskentatehtävissä useat suoritinyksiköt ovat hyödyllisiä, mutta ohjelmakoodi on kirjoitettava siten, että se voi käyttää useita suoritinyksiköitä.

Kerroinyksiköt ovat hyödyllisiä.", - "DescFolderAlias": "

Jos täytät tämän syötteen, kansion nimi muuttuu aliakseksi, kun se liitetään.

Absoluuttiset polut liitetään '/'-kenttään, muut ovat /home/työ -kentän aliaksia

Ei aliaksia saa käyttää samoin kuin järjestelmäkansioita.

Tarkista lopullinen polku, joka tulostuu alla olevaan kenttään 'Asennetut kansiot'.

Jos haluat nähdä tämän ikkunan uudestaan, napsauta kuvaketta 'Polku ja alias'

vieressä.", - "DescMemory": "

Tietokoneen muisti on väliaikainen tallennusalue.

Se sisältää tietoja ja ohjeita, joita keskusyksikkö (CPU) tarvitsee.

Käytettäessä näytönohjainta koneoppimisen työmäärässä on muistiin varattava vähintään kaksi kertaa enemmän muistia kuin näytönohjain. Muuten GPU:n joutokäyntiaika kasvaa, mikä johtaa suorituskyvyn heikkenemiseen.

", - "DescMultiNode": "

Sessiota ajettaessa yksi hallittu solmu ja yksi tai useampi työläissolmu on jaettu useisiin fyysisiin solmuihin tai virtuaalikoneisiin.

Kaikki nämä solmut on jaettu useisiin fyysisiin solmuihin tai virtuaalikoneisiin.", - "DescOpenMPOptimization": "

Tämä arvo määrittää rinnakkaisalueilla käytettävien säikeiden määrän asettamalla sisäisen nthreads-var-ohjausmuuttujan alkuarvon.

Backend.AI asettaa tämän arvon yhtä suureksi kuin suorittimen ytimien määrä, mikä kiihdyttää tyypillisiä suurteholaskennan työtehtäviä. Joissakin monisäikeisissä työmäärissä käytetään kuitenkin useita OpenMP:tä käyttäviä prosesseja samanaikaisesti, mikä johtaa epänormaalin suureen säikeiden määrään ja merkittävään suorituskyvyn heikkenemiseen. Tässä tapauksessa säädä tämä arvo arvoon 1 tai 2.

", - "DescSession": "

Sessio on laskentaympäristön yksikkö, joka luodaan määritellyn ympäristön ja resurssien mukaan.

Jos tämä arvo on suurempi kuin 1, luodaan useita edellä mainittua resurssijoukkoa vastaavia sessioita.

Jos resursseja ei ole riittävästi käytettävissä, sessioiden luomista koskevat pyynnöt, joita ei voida luoda, asetetaan odotusjonoon.

", - "DescSetEnv": "

Jos asetat oletusympäristömuuttujan konttiin ja asetat samannimisen ympäristömuuttujan myös Backend.AI:ssa, Backend.AI:ssa asetettu arvo on etusijalla.

Jokainen syöttöarvo alustetaan istunnon käynnistämisen jälkeen.
Ympäristömuuttujat siirretään vain, jos sekä muuttuja että arvo eivät ole tyhjiä.

", - "DescSetPreOpenPort": "'Preopen Ports' viittaa tiettyyn sisäiseen konttiporttiin, joka sallii verkkolaitteen tai -tietokoneen ulkoisista laitteista tai tietokoneista tulevat yhteydet.", - "DescSharedMemory": "

Jakomuisti on muistia, jota useat ohjelmat voivat käyttää samanaikaisesti, jotta ne voivat kommunikoida keskenään tai välttää turhia kopioita.

Monitehoisten suorittimien tai monisäikeisten työtaakkojen kannalta jaettu muisti on tärkeää, koska sitä käytetään säikeiden väliseen kommunikointiin. Syväoppimisen työtehtävissä ja monisäikeistystä käyttävissä suurteholaskennan työtehtävissä suosittelemme asettamaan tämän arvon 1 Gt:ksi tai suuremmaksi.

", - "DescSingleNode": "

Sessiota ajettaessa hallittu solmu ja työläissolmut on sijoitettu yhteen fyysiseen solmuun tai virtuaalikoneeseen.

", - "DuplicatedSessionName": "Kaksinkertainen istunnon nimi ei ole sallittu", - "EnvConfigWillDisappear": "Kaikki tallentamattomat ympäristömuuttujat ja -arvot häviävät.", - "EnvironmentVariable": "Muuttuva", - "EnvironmentVariableConfigurationDone": "Ympäristömuuttuja määritetty onnistuneesti.", - "EnvironmentVariablePaneTitle": "Asetettavat ympäristömuuttujat (valinnainen)", - "EnvironmentVariableTitle": "Etusijajärjestys: kontti vs. Backend.AI:n sisäiset muuttujat", - "EnvironmentVariableValue": "Arvo", - "Environments": "Ympäristöt", - "FailedToConnectCoordinator": "Yhteyden muodostaminen sovelluksen hallintaan epäonnistui. Tarkista verkkoyhteys ja palomuurin asetukset.", - "FolderAlias": "Polku ja alias", - "FolderAliasOverlapping": "Peitenimet menevät päällekkäin muiden jo olemassa olevien nimien kanssa.", - "FolderToMount": "Liitettävä kansio", - "FolderToMountList": "Liitettävä kansio", - "GPUSlot": "Slot", - "HPCOptimization": "Korkean suorituskyvyn tietojenkäsittelyn optimoinnit", - "HomeDirectoryDeletionDialog": "Istunnon kotihakemisto poistetaan automaattisesti, kun istunto päättyy.", - "ImageDoesNotProvideModelPath": "Säiliön kuva ei anna mallipolkua. Se on muutettava.", - "InferenceMode": "Päättely", - "InfiniteTime": "Infinite", - "InteractiveMode": "Interaktiivinen", - "Launch": "Laukaisu", - "LaunchConfirmationDialog": "Jos haluat säilyttää koodisi ja tietosi tai jakaa ne muiden yhteistyökumppaneiden kanssa, luo tallennuskansio tietojen ja tallennuksen sivupalkissa ja kiinnitä kansio, kun käynnistät resurssin, ja pidä se siellä.", - "LaunchSessionWithAccessKey": "Käynnistetään istunto pääsyavaimen puolesta", - "ManualImageName": "Kuvan nimi (manuaalinen)", - "Memory": "Muisti", - "MinMemory": "Tällä hetkellä valitun ajoympäristön vähimmäismuistikapasiteetti on {{size}}iB.", - "ModelStorage": "Malli Varastointi", - "ModelStorageToMount": "Mallivarasto asennettavaksi", - "MountedFolders": "Asennetut kansiot", - "MultiNode": "Multi Node", - "MustSpecifyVersion": "Ympäristö ja versio on määritettävä.", - "NoActiveKeypair": "Ei aktiivista avainparia", - "NoAvailableFolderToMount": "Liitettävää kansiota ei ole saatavilla.", - "NoDescriptionFound": "Kuvausta ei löytynyt.", - "NoEnvConfigured": "Ylimääräistä ympäristömuuttujaa ei ole määritetty", - "NoFolderMounted": "Tallennuskansiota ei ole asennettu", - "NoPreOpenPortsConfigured": "Ei muita esiavattuja portteja määritetty", - "NoSuitablePreset": "Ei sopivaa esiasetusta", - "Node": "Solmu", - "NotEnoughOwnershipInfo": "Omistajatiedot eivät riitä", - "NotEnoughResource": "Resurssit eivät riitä", - "NumOpenBLASthreads": "OpenBLAS-säikeiden määrä", - "NumOpenMPthreads": "OpenMP-säikeiden määrä", - "OpenMPOptimization": "OpenMP/OpenBLAS-optimointi", - "OwnerAccessKey": "Omistajan käyttöoikeusavain", - "OwnerEmail": "Omistajan sähköpostiosoite", - "OwnerGroup": "Omistajaryhmä", - "OwnerResourceGroup": "Omistajan resurssiryhmä", - "PleaseWaitInitializing": "Odota alustuksen aikana...", - "PortsTitleWithRange": "Portin arvo (välillä 1024 ~ 65535)", - "PreOpenPortConfigurationDone": "Preopen-portit määritetty onnistuneesti.", - "PreOpenPortPanelTitle": "Asetettavat esiavattavat portit (valinnainen)", - "PreOpenPortRange": "Esiavattuja portteja on saatavilla vain 1024-65535.", - "PreOpenPortTitle": "Esiavoimet satamat", - "PrePortConfigWillDisappear": "Kaikki tallentamattomat esiavatut portit häviävät.", - "Project": "Hanke", - "ProxyConfiguratorNotResponding": "Proxy-konfiguraattori ei vastaa.", - "ProxyNotReady": "Proxy ei ole vielä valmis. Tarkista välityspalvelimen asetukset tarkemmin.", - "Requirements": "Vaatimukset", - "ResetStartTime": "Nollaa alkamisaika.", - "ResourceAllocation": "Resurssien jakaminen", - "ResourceGroup": "Resurssiryhmä", - "ResourceMonitorToggle": "Katso resurssimonitori", - "ScheduleTime": "Aikatauluaika (valinnainen)", - "SelectResourceGroup": "Valitse resurssiryhmä", - "SessionAlreadyExists": "Istunnon nimi on jo olemassa", - "SessionNameAllowCondition": "Istunnon nimessä tulisi olla 4-64 aakkosta/numeroa ilman välilyöntejä.", - "SessionNameOptional": "Istunnon nimi (valinnainen)", - "SessionStartTime": "Istunto alkaa:", - "SessionType": "Istunnon tyyppi", - "Sessions": "Istunnot", - "SetEnvironmentVariable": "Ympäristömuuttuja (valinnainen)", - "SetPreopenPorts": "Esiavattavat portit (valinnainen)", - "SetSessionOwner": "Istunnon omistaja", - "SettingUpProxyForApp": "Sovelluksen välityspalvelimen määrittäminen...", - "SharedMemory": "Jaettu muisti", - "SharedMemoryAbbr": "SHMEM", - "SharedMemorySettingIsReduced": "Jaetun muistin asetusta pienennetään alle jaetun muistin.", - "SingleNode": "Yksi solmu", - "Start": "Aloita", - "StartImportedNotebook": "Aloita tuotu muistikirja", - "StartModelServing": "Aloita mallin tarjoilu", - "StartNewSession": "Aloita uusi istunto", - "StartUpCommand": "Käynnistyskomento", - "SwitchOpenMPoptimization": "Käytä automaattista OpenMP-optimointia", - "TitleSession": "Istunto (Backend.AI)", - "TotalAllocation": "Kokonaismääräraha", - "UserResourceLimit": "Käyttäjän resurssirajoitus", - "Version": "Versio", - "sessionStillPreparing": "Istuntoa valmistellaan edelleen. Kun istunto on alkanut, käynnistä sovellus napauttamalla sovelluskuvaketta.", - "PreOpenPortMaxCountLimit": "Voit määrittää enintään {{count}} ennalta avattuja portteja.", - "PreOpenPortRangeGuide": "Syötä useita arvoja joko pilkulla (,) tai välilyönnillä erotettuina.", - "preopen": "avataan etukäteen", - "FolderAliasInvalid": "Vain aakkosnumeeriset merkit, alaviiva (_), kauttaviiva (/) ja viiva (-) ovat sallittuja.", - "Network": "Verkko", - "Enable": "ota käyttöön", - "StartTimeMustBeInTheFuture": "Alkamisajan on oltava nykyisen kellonajan jälkeen.", - "PreOpenPortMaxCountLimit_plural": "__NOT_TRANSLATED__", - "EnqueueComputeSessionWarning": "__NOT_TRANSLATED__", - "SessionName": "__NOT_TRANSLATED__", - "ResetFormConfirm": "__NOT_TRANSLATED__", - "TemplateAndHistory": "__NOT_TRANSLATED__", - "ScheduleTimeSimple": "__NOT_TRANSLATED__", - "ResourceAllocationPerContainer": "Resurssien jakaminen konttia kohti", - "NumberOfContainer": "Säiliön numero", - "EnterEnvironmentVariable": "Syötä muuttujan nimi", - "EnvironmentVariableNamePatternError": "Muuttujan nimen on alettava kirjaimella tai alleviivauksella, ja se voi sisältää vain kirjaimia, numeroita ja alleviivauksia.", - "EnvironmentVariableDuplicateName": "Muuttujan nimi, joka on jo olemassa." - }, - "ExpiresAfter": "Jäljellä oleva aika", - "CPU": "CPU", - "MEM": "Muisti", - "GPU": "GPU", - "GPU(MEM)": "GPU (muisti)" + "update": { + "NewWebUIVersionAvailable": "__NOT_TRANSLATED__" }, "settings": { - "ATOMsupport": "ATOM", - "AllowAgentSideRegistration": "Salli agenttipuolen rekisteröinti", - "CUDAGPUdisabledByFGPUsupport": "Ei käytössä, koska järjestelmä käyttää Fractional GPU -lisäosaa.", - "CUDAGPUsupport": "CUDA GPU-tuki", - "Config": "Config", - "ConfigPerJobSchduler": "Ajastimen asetukset", - "ConfigPerJobSchdulerDescription": "Aikatauluttaja-asetuksen arvot ovat oletusarvoja, joita käytetään, kun kussakin resurssiryhmässä ei ole aikatauluttaja-asetusta. Jos resurssiryhmäkohtainen asetus on olemassa, tätä arvoa ei oteta huomioon.", - "DescATOMsupport": "Käytä Rebellions ATOM-kiihdytintä", - "DescAllowAgentSideRegistration": "Salli agentin rekisteröityä managerille.
Käytä vain, jos Backend.AI-klusteria hallinnoidaan suojatussa paikassa.", - "DescCUDAGPUsupport": "NVIDIA CUDA GPU -tuki.
Vaatii Backend.AI CUDA Pluginin.", - "DescFractionalGPU": "Käytä Fractional GPU -ominaisuutta GPU-virtualisoinnin kanssa.", - "DescIPUsupport": "Käytä GraphCore IPU -kiihdytintä", - "DescImagePullBehavior": "Määrittää ehdot uusien kuvien automaattiselle lataamiselle, kun uusi versio on rekisteröity rekisteriin. Jos asetusta ei ole, uusia kuvia ei ladata automaattisesti.", - "DescROCMGPUsupport": "AMD ROCm GPU -tuki.
Vaatii Backend.AI ROCm Pluginin.", - "DescRegisterNewImagesFromRepo": "Rekisteröi uudet ympäristöt arkistosta.", - "DescTPU": "Käytä TPU-kiihdytintä.", - "DescUseCLIonGUI": "Backend.AI CLI:n tarjoaminen GUI-sovelluksessa/webissä. Edellyttää Backend.AI CLI -kuvaa.", - "DescUseGUIonWeb": "Backend.AI GUI:n tarjoaminen verkkopalveluna. Edellyttää Backend.AI Web UI -kuvaa.", - "DescWarboysupport": "Käytä Furiosa Warboy -tukea", - "EnterpriseFeatures": "Yrityksen ominaisuudet", - "EnvConfigWillDisappear": "Kaikki tallentamattomat ympäristömuuttujat ja -arvot häviävät.", - "FifoOnly": "Tällä hetkellä muutokset ovat mahdollisia vain silloin, kun aikatauluttaja on FIFO.", - "FractionalGPU": "Murto-osa GPU", - "GUI": "GUI", - "IPUsupport": "IPU", - "Image": "Kuva", - "ImagePullBehavior": "Kuvan automaattinen asennus / päivityssääntö", - "InputRequired": "Tämä kenttä on pakollinen.", - "InvalidValue": "Laita oikea syöttöarvo.", - "MTUDescription": "Suurin lähetysyksikkö, suurimman paketin koko, jonka verkkoprotokolla voi lähettää.", - "NoteAboutFixedSetup": "Huomautus: Alla olevat asetukset otetaan automaattisesti käyttöön asennusympäristön ja tilan mukaan.", - "OutOfRange": "Alueen ulkopuolella.", - "OverlayNetwork": "Päällekkäisverkko", - "OverlayNetworkConfiguration": "Määritys, jota käytetään päällekkäisverkkoja luotaessa.", - "OverlayNetworkSettings": "Päällekkäisverkon asetukset", - "OverlayNetworkSettingsDescription": "Päällekkäisverkko on tietokoneverkko, joka on kerrostettu toisen verkon päälle. Päällekkäisverkko luo hajautetun verkon useiden Backend.AI-managerin Docker-daemon-isäntien välille.", - "Plugins": "Liitännäiset", - "ROCMGPUsupport": "ROCm GPU-tuki", - "RegisterNewImagesFromRepo": "Rekisteröi uudet kuvat arkistosta", - "Require2003orAbove": "Vaatii Backend.AI 20.03 tai uudemman version.", - "Require2009orAbove": "Vaatii Backend.AI 20.09 tai uudemman version.", - "RequireATOMPlugin": "Vaatii Backend.AI ATOM Pluginin.", - "RequireFGPUPlugin": "Vaatii Backend.AI Virtual CUDA API Layer -lisäosan.", - "RequireIPUPlugin": "Vaatii Backend.AI IPU -liitännäisen.", - "RequireTPUPlugin": "Edellyttää Google Cloudin resurssisolmuja, joissa Cloud TPU on käytössä / sidottu.", - "RequireWarboyPlugin": "Vaatii Backend.AI Warboy -lisäosan.", - "Scaling": "Skaalaus", - "Scheduler": "Aikatauluttaja", - "SchedulerConfiguration": "Työnsuunnittelijakohtainen konfigurointi.", - "SchedulerOptions": "Aikataulun asetukset", - "SchedulerRequired": "Tarvitaan aikatauluttaja.", - "SessionCreationRetries": "Istunnon luomisen uusintayritykset", - "SessionCreationRetriesDescription": "Jos istunnon luominen epäonnistuu, istunnon luomista yritetään uudelleen tässä määritetyllä arvolla. Jos istuntoa ei voida luoda kokeilujen kuluessa, pyyntö jätetään huomiotta ja Backend.AI käsittelee seuraavan pyynnön.", - "TPU": "TPU", - "UseCLIonGUI": "Backend.AI CLI:n käyttö GUI:ssa", - "UseGUIonWeb": "Backend.AI GUI:n käyttö Webissä", - "Warboysupport": "Warboy", + "InvalidValue": "__NOT_TRANSLATED__", "image": { - "digest": "Digest", - "none": "Ei ole", - "tag": "Tag" - } - }, - "sidepanel": { - "BackgroundTasks": "Tehtävien suorittaminen", - "NoBackgroundTask": "Ei tehtävää.", - "NoNotification": "Ei ilmoitusta.", - "Notification": "Ilmoitus", - "Running": "Juoksu..." - }, - "signup": { - "E-mail": "Sähköposti", - "EmailInputRequired": "Sähköpostiosoite vaaditaan.", - "EmailSent": "Lähetetty sähköposti", - "EmailVerificationFailed": "Sähköpostivarmennus epäonnistui", - "EmailVerificationFailedMessage": "Emme pysty vahvistamaan sähköpostiosoitettasi. Tunnuksesi voi olla virheellinen tai vanhentunut. Kirjoita sähköpostiosoitteesi ja napsauta Lähetä-painiketta saadaksesi uuden vahvistuskoodin.", - "EmailVerified": "Sähköposti vahvistettu", - "EmailVerifiedMessage": "Sähköpostisi on vahvistettu! Nyt voit kirjautua tilillesi.", - "InvalidEmail": "Virheellinen sähköpostiosoite", - "InvitationToken": "Kutsumerkki", - "Password": "Salasana", - "PasswordAgain": "Salasana (uudelleen)", - "PasswordInputRequired": "Salasana vaaditaan.", - "PasswordInvalid": "Käytä vähintään 8 merkkiä, joissa on kirjaimia, numeroita ja symboleja.", - "PasswordNotMatched": "Salasanat eivät vastanneet toisiaan. Kokeile uudelleen.", - "PolicyAgreement_1": "Olen lukenut ja hyväksyn", - "PolicyAgreement_2": " ja", - "PolicyAgreement_3": ".", - "PrivacyPolicy": "Tietosuojakäytäntö", - "Processing": "Käsittely...", - "RequestAgreementTermsOfService": "Lue käyttöehdot ja hyväksy ne jatkaaksesi.", - "SendEmail": "Lähetä vahvistussähköposti", - "SendError": "Sähköpostin lähettämisen aikana tapahtui virhe", - "Signup": "Rekisteröityminen", - "SignupBETA": "Rekisteröityminen (vain beta-kutsu)", - "SignupSucceeded": "Onnistunut rekisteröityminen.", - "TermsOfService": "Palveluehdot", - "ThankYou": "Kiitos!", - "TokenInputRequired": "Token tarvitaan.", - "UserName": "Käyttäjänimi", - "VerificationError": "Varmennusvirhe tapahtui", - "VerificationMessage": "Vahvistussähköposti lähetetään sähköpostiosoitteeseesi. Lue ja noudata sähköpostiviestissä annettuja ohjeita, ennen kuin kirjaudut tilillesi." - }, - "statistics": { - "1Day": "1 päivä", - "1Week": "1 viikko", - "CPUDesc": "Laskenta-istunnoille varattujen suorittimen ytimien määrä.", - "GPUDesc": "Laskentasessioille varattujen GPU-yksiköiden määrä. Jos Fractional GPU -ominaisuus on käytössä, se ei välttämättä vastaa fysiikan GPU:ta.", - "IOReadDesc": "Tämä laskenta-istunnosta luetun datan määrä. (Ulkoisesti asennetuista laitteista, kuten tietokansioista, luetun datan määrää ei lasketa mukaan.)", - "IOWriteDesc": "Laskenta-istunnosta kirjoitetun datan määrä. (Ulkoisesti asennetuista laitteista, kuten tietokansioista, kirjoitetun datan määrää ei oteta huomioon.)", - "MemoryDesc": "Laskenta-istunnoille varatun muistin määrä.", - "SelectPeriod": "Valitse ajanjakso", - "SessionsDesc": "Luotujen laskenta-istuntojen määrä.", - "UsageHistory": "Käyttöhistoria", - "UsageHistoryDesc": "Käyttöhistoria-välilehdeltä voit tarkistaa yksinkertaiset tilastotiedot laskenta-istuntojen käytöstä graafin avulla. Voit tarkistaa käyttöhistoriatilastot päivän tai viikon ajalta valitsemalla käyttöjakson vasemmassa yläkulmassa olevasta Valitse ajanjakso -valikosta. Näytettävät kohteet ovat seuraavat.", - "UsageHistoryNote": "Tässä esitetty käyttöhistoria perustuu päättyneisiin laskenta-istuntoihin. Myöskään viikon käyttöhistoriaa ei välttämättä näytetä käyttäjille, joiden tili on luotu enintään viikon ajan." - }, - "storageHost": { - "BeCarefulToSetProjectResourcePolicy": "Resurssikäytännön muuttaminen voi vaikuttaa kaikkiin projekteihin, jotka käyttävät kyseistä projektin resurssikäytäntöä, joten käytä sitä varoen.", - "BeCarefulToSetUserResourcePolicy": "Resurssikäytännön muuttaminen voi vaikuttaa kaikkiin käyttäjiin, jotka käyttävät kyseistä resurssikäytäntöä, joten käytä sitä varoen.", - "DoYouWantToUseDefaultValue": "Haluatko käyttää oletusarvoa?", - "ForProject": "Hanketta varten", - "ForUser": "Käyttäjälle", - "HardLimit": "Kova raja", - "MaxFolderSize": "Kansioiden enimmäiskoko", - "QuotaDoesNotSupported": "Tämä tallennustietopohja ei tue kiintiöitä.", - "QuotaSettings": "Kiintiöasetukset", - "ResourcePolicy": "Resurssipolitiikka", - "ResourcePolicySettings": "Resurssikäytännön asetukset", - "ResourcePolicySuccessfullyCreated": "Resurssikäytäntö luotu onnistuneesti", - "ResourcePolicySuccessfullyUpdated": "Resurssipolitiikka päivitetty onnistuneesti", - "SelectProjectOrUserFirst": "Valitse ensin projekti tai käyttäjä", - "Total": "Yhteensä", - "UnsetResourcePolicy": "Epäsäännöllinen resurssipolitiikka", - "Usage": "Käyttö", - "Used": "Käytetty", - "quotaSettings": { - "AddQuotaConfigs": "Lisää kiintiöasetuksia", - "AllowNumberAndDot": "Sallii vain positiiviset luvut ja .(piste)", - "ClickSettingButton": "Ei kiintiöasetuksia. Jos haluat asettaa kiintiöasetukset, napsauta alla olevaa painiketta.", - "ConfirmUnsetCustomQuota": "Oletko varma, että haluat poistaa asetukset?\nJos poistat määrityksen, tämän käyttäjän tai projektin kiintiö käyttää oletusarvoa.", - "QuotaScopeId": "Kiintiön laajuuden ID", - "QuotaScopeSuccessfullyUpdated": "Kiintiön laajuus päivitetty onnistuneesti", - "QuotaSettings": "Kiintiöasetukset", - "SelectDomain": "Valitse verkkotunnus", - "SelectFirst": "Valitse ensin projekti tai käyttäjä vasemmassa yläkulmassa olevasta valintakentästä.", - "SelectProject": "Valitse projekti", - "SelectUser": "Etsi ja valitse Käyttäjä", - "UnsetCustomSettings": "Mukautettujen asetusten poistaminen" - } + "digest": "__NOT_TRANSLATED__", + "tag": "__NOT_TRANSLATED__", + "none": "__NOT_TRANSLATED__" + }, + "Image": "__NOT_TRANSLATED__", + "RegisterNewImagesFromRepo": "__NOT_TRANSLATED__", + "DescRegisterNewImagesFromRepo": "__NOT_TRANSLATED__", + "ImagePullBehavior": "__NOT_TRANSLATED__", + "DescImagePullBehavior": "__NOT_TRANSLATED__", + "Require2003orAbove": "__NOT_TRANSLATED__", + "GUI": "__NOT_TRANSLATED__", + "UseCLIonGUI": "__NOT_TRANSLATED__", + "DescUseCLIonGUI": "__NOT_TRANSLATED__", + "UseGUIonWeb": "__NOT_TRANSLATED__", + "DescUseGUIonWeb": "__NOT_TRANSLATED__", + "Scaling": "__NOT_TRANSLATED__", + "Plugins": "__NOT_TRANSLATED__", + "NoteAboutFixedSetup": "__NOT_TRANSLATED__", + "AllowAgentSideRegistration": "__NOT_TRANSLATED__", + "DescAllowAgentSideRegistration": "__NOT_TRANSLATED__", + "OverlayNetwork": "__NOT_TRANSLATED__", + "OverlayNetworkConfiguration": "__NOT_TRANSLATED__", + "Config": "__NOT_TRANSLATED__", + "CUDAGPUsupport": "__NOT_TRANSLATED__", + "DescCUDAGPUsupport": "__NOT_TRANSLATED__", + "CUDAGPUdisabledByFGPUsupport": "__NOT_TRANSLATED__", + "ROCMGPUsupport": "__NOT_TRANSLATED__", + "DescROCMGPUsupport": "__NOT_TRANSLATED__", + "Scheduler": "__NOT_TRANSLATED__", + "SchedulerConfiguration": "__NOT_TRANSLATED__", + "Require2009orAbove": "__NOT_TRANSLATED__", + "EnterpriseFeatures": "__NOT_TRANSLATED__", + "FractionalGPU": "__NOT_TRANSLATED__", + "DescFractionalGPU": "__NOT_TRANSLATED__", + "RequireFGPUPlugin": "__NOT_TRANSLATED__", + "TPU": "__NOT_TRANSLATED__", + "DescTPU": "__NOT_TRANSLATED__", + "RequireTPUPlugin": "__NOT_TRANSLATED__", + "IPUsupport": "__NOT_TRANSLATED__", + "DescIPUsupport": "__NOT_TRANSLATED__", + "RequireIPUPlugin": "__NOT_TRANSLATED__", + "ATOMsupport": "__NOT_TRANSLATED__", + "DescATOMsupport": "__NOT_TRANSLATED__", + "RequireATOMPlugin": "__NOT_TRANSLATED__", + "Warboysupport": "__NOT_TRANSLATED__", + "DescWarboysupport": "__NOT_TRANSLATED__", + "RequireWarboyPlugin": "__NOT_TRANSLATED__", + "ConfigPerJobSchduler": "__NOT_TRANSLATED__", + "SchedulerRequired": "__NOT_TRANSLATED__", + "SchedulerOptions": "__NOT_TRANSLATED__", + "SessionCreationRetries": "__NOT_TRANSLATED__", + "InputRequired": "__NOT_TRANSLATED__", + "OverlayNetworkSettings": "__NOT_TRANSLATED__", + "EnvConfigWillDisappear": "__NOT_TRANSLATED__", + "ConfigPerJobSchdulerDescription": "__NOT_TRANSLATED__", + "SessionCreationRetriesDescription": "__NOT_TRANSLATED__", + "FifoOnly": "__NOT_TRANSLATED__", + "OverlayNetworkSettingsDescription": "__NOT_TRANSLATED__", + "MTUDescription": "__NOT_TRANSLATED__", + "OutOfRange": "__NOT_TRANSLATED__" }, - "totp": { - "ConfirmTotpRemovalBody": "Oletko varma, ettet halua käyttää kaksitekijätodennusta?", - "InvalidTotpCode": "Virheellinen OTP", - "OTP": "Kertasalasana", - "RemoveTotpSetupCompleted": "2FA pois käytöstä", - "ScanQRToEnable": "Skannaa QR-koodi todennuslaitteellasi aloittaaksesi kaksitekijätodennuksen käyttöönoton.", - "TotpSetupCompleted": "Käytössä 2FA", - "TotpSetupNotAvailable": "Kaksitekijätodennusta ei voi ottaa käyttöön.", - "TurnOffTotp": "Ota kaksitekijätodennus pois käytöstä", - "TypeInAuthKey": "Vaihtoehtoisesti voit kirjoittaa alla olevan todennuskoodin manuaalisesti." + "inputLimit": { + "4to64chars": "__NOT_TRANSLATED__" }, - "update": { - "NewWebUIVersionAvailable": "Uusi versio on saatavilla:" + "usersettings": { + "SessionTerminationDialog": "__NOT_TRANSLATED__", + "InvalidPortNumber": "__NOT_TRANSLATED__", + "BootstrapScriptUpdated": "__NOT_TRANSLATED__", + "DescScriptCreated": "__NOT_TRANSLATED__", + "DescNewUserConfigFileCreated": "__NOT_TRANSLATED__", + "DescLetUserUpdateScriptWithNonEmptyValue": "__NOT_TRANSLATED__", + "DescScriptUpdated": "__NOT_TRANSLATED__", + "DescScriptDeleted": "__NOT_TRANSLATED__", + "DescScriptAllDeleted": "__NOT_TRANSLATED__", + "NoExistingSSHKeypair": "__NOT_TRANSLATED__", + "SSHKeypairEnterManuallyFinished": "__NOT_TRANSLATED__", + "SSHKeyClipboardCopy": "__NOT_TRANSLATED__", + "Preferences": "__NOT_TRANSLATED__", + "DesktopNotification": "__NOT_TRANSLATED__", + "DescDesktopNotification": "__NOT_TRANSLATED__", + "UseCompactSidebar": "__NOT_TRANSLATED__", + "DescUseCompactSidebar": "__NOT_TRANSLATED__", + "Language": "__NOT_TRANSLATED__", + "DescLanguage": "__NOT_TRANSLATED__", + "KeepLoginSessionInformation": "__NOT_TRANSLATED__", + "DescKeepLoginSessionInformation": "__NOT_TRANSLATED__", + "PreferredSSHPort": "__NOT_TRANSLATED__", + "DescPreferredSSHPort": "__NOT_TRANSLATED__", + "SSHKeypairManagement": "__NOT_TRANSLATED__", + "DescSSHKeypairManagement": "__NOT_TRANSLATED__", + "AutomaticUpdateCheck": "__NOT_TRANSLATED__", + "DescAutomaticUpdateCheck": "__NOT_TRANSLATED__", + "BetaFeatures": "__NOT_TRANSLATED__", + "DescBetaFeatures": "__NOT_TRANSLATED__", + "AutoLogout": "__NOT_TRANSLATED__", + "DescAutoLogout": "__NOT_TRANSLATED__", + "DescNoBetaFeatures": "__NOT_TRANSLATED__", + "ShellEnvironments": "__NOT_TRANSLATED__", + "EditBootstrapScript": "__NOT_TRANSLATED__", + "EditUserConfigScript": "__NOT_TRANSLATED__", + "PackageInstallation": "__NOT_TRANSLATED__", + "BootstrapScriptDescription": "__NOT_TRANSLATED__", + "Edit_ShellScriptTitle_1": "__NOT_TRANSLATED__", + "Edit_ShellScriptTitle_2": "__NOT_TRANSLATED__", + "ConfigFilename": "__NOT_TRANSLATED__", + "DialogDiscardOrSave": "__NOT_TRANSLATED__", + "DialogNoSaveNoPreserve": "__NOT_TRANSLATED__", + "CurrentSSHPublicKey": "__NOT_TRANSLATED__", + "SSHKeypairGeneration": "__NOT_TRANSLATED__", + "PublicKey": "__NOT_TRANSLATED__", + "PrivateKey": "__NOT_TRANSLATED__", + "SSHKeypairGenerationWarning": "__NOT_TRANSLATED__", + "ClearSSHKeypairInput": "__NOT_TRANSLATED__", + "SSHKeypairEnterManually": "__NOT_TRANSLATED__", + "General": "__NOT_TRANSLATED__", + "Logs": "__NOT_TRANSLATED__" }, - "usagepanel": { - "CpuUsedTime": "CPU:n käytetty aika", - "DiskUsed": "Levyn käyttö", - "GpuUsedTime": "GPU:n käyttöaika", - "NumSessions": "Istuntojen määrä", - "StatisticsForThisMonth": "Tämän kuukauden tilastot", - "TrafficUsed": "Liikenteen käyttö", - "UsedTime": "Käytetty aika" + "sidepanel": { + "Notification": "__NOT_TRANSLATED__", + "NoNotification": "__NOT_TRANSLATED__", + "BackgroundTasks": "__NOT_TRANSLATED__", + "Running": "__NOT_TRANSLATED__", + "NoBackgroundTask": "__NOT_TRANSLATED__" }, - "usersettings": { - "AutoLogout": "Automaattinen uloskirjautuminen", - "AutomaticUpdateCheck": "Automaattinen päivityksen tarkistus", - "BetaFeatures": "Beta-ominaisuudet", - "BootstrapScriptDescription": "Bootstrap-skripti suoritetaan vain kerran istunnon luomisen jälkeen.", - "BootstrapScriptUpdated": "Bootstrap-skripti päivitetty.", - "ClearSSHKeypairInput": "Kirjoitettu SSH-avainpari poistetaan. Haluatko varmasti jatkaa?", - "ConfigFilename": "Konfigurointitiedoston nimi", - "CurrentSSHPublicKey": "Nykyinen julkinen avain:", - "DescAutoLogout": "Kirjaudu ulos automaattisesti, jos kaikki kirjautuneet sivut suljetaan, lukuun ottamatta sovellusten (esim. jupyter notebook, verkkopääte jne.) istunnon luomia sivuja.", - "DescAutomaticUpdateCheck": "Ilmoita, kun uusi webui-versio julkaistaan.
Jos Internet on epävakaa tai offline, tämä vaihtoehto kytkeytyy automaattisesti pois päältä. Voit vaihtaa tätä kytkintä käynnistääksesi automaattisen päivityksen tarkistuksen uudelleen.", - "DescBetaFeatures": "Käytä web-käyttöliittymän beta-ominaisuuksia.
Beta-ominaisuudet voivat olla epävakaita. Joitakin beta-ominaisuuksia ei ehkä hyväksytä viralliseksi ominaisuudeksi.", - "DescDesktopNotification": "Ota työpöytäilmoitukset käyttöön tai poista ne käytöstä.
Jos se on päällä, Backend.AI käyttää myös käyttöjärjestelmän sisäänrakennettua ilmoitusjärjestelmää. Tämän vaihtoehdon kytkeminen pois päältä ei vaikuta ilmoituksiin web-käyttöliittymässä.", - "DescKeepLoginSessionInformation": "Anna webui-sovelluksen säilyttää nykyisen kirjautumisistunnon tiedot seuraavalla kerralla.
Jos vaihtoehto on pois päältä, kirjautumistiedot tyhjennetään jokaisen uloskirjautumisen yhteydessä.", - "DescLanguage": "Aseta käyttöliittymän kieli.", - "DescLetUserUpdateScriptWithNonEmptyValue": "Päivitä skripti ei-tyhjällä arvolla.", - "DescNewUserConfigFileCreated": "Uusi User config-tiedosto voidaan luoda ei-tyhjillä tiedoilla.", - "DescNoBetaFeatures": "Beta-ominaisuutta ei ole nyt saatavilla :)", - "DescPreferredSSHPort": "Käytä tätä arvoa SSH/SFTP-porttina, jos mahdollista.
Jos portti on jo käytössä, määritä SSH/SFTP:lle toinen satunnainen portti. Jätä tyhjäksi, jos haluat määrittää portin automaattisesti.", - "DescSSHKeypairManagement": "Vaihda SSH-avainparia satunnaisesti generoimalla tai syöttämällä se suoraan.", - "DescScriptAllDeleted": "Kaikki luodut käyttäjäkonfiguraatioskriptit poistettiin.", - "DescScriptCreated": "Käyttäjän konfigurointiskripti luotu. Tätä sovelletaan vain uusiin istuntoihin.", - "DescScriptDeleted": "Käyttäjän konfigurointiskripti poistettu :", - "DescScriptUpdated": "Käyttäjän konfigurointiskripti päivitetty. Tätä sovelletaan vain uusiin istuntoihin.", - "DescUseCompactSidebar": "Kompakti sivupalkki antaa sinulle enemmän työtilaa.
Jos tämä vaihtoehto on päällä, kompaktista sivupalkista tulee alustava käyttöliittymä käynnistyksen yhteydessä.", - "DesktopNotification": "Työpöydän ilmoitus", - "DialogDiscardOrSave": "Nykyinen tiedosto ja skripti muutetaan tallentamatta, Haluatko jatkaa?", - "DialogNoSaveNoPreserve": "Muutokset menetetään, jos et tallenna niitä.", - "EditBootstrapScript": "Muokkaa Bootstrap-skriptiä", - "EditUserConfigScript": "Muokkaa käyttäjän konfiguraatiokomentosarjaa", - "Edit_ShellScriptTitle_1": "Muokkaa", - "Edit_ShellScriptTitle_2": " komentosarjan komentosarja", - "General": "Yleistä", - "InvalidPortNumber": "Portin numeron on oltava positiivinen numero välillä 1025~65534.", - "KeepLoginSessionInformation": "Pidä kirjautumisistunnon tiedot uloskirjautumisen aikana", - "Language": "Kieli", - "Logs": "Lokit", - "NoExistingSSHKeypair": "Ei kopioitavaa SSH-avainparia. Saadaksesi SSH-avainparin, paina Generate-painiketta.", - "PackageInstallation": "Paketin asennus", - "Preferences": "Asetukset", - "PreferredSSHPort": "Suositeltava SSH-portti", - "PrivateKey": "Yksityinen avain", - "PublicKey": "Julkinen avain", - "SSHKeyClipboardCopy": "SSH-avain on kopioitu leikepöydälle.", - "SSHKeypairEnterManually": "SSH-avainpari", - "SSHKeypairEnterManuallyFinished": "SSH-avainpari on rekisteröity onnistuneesti.", - "SSHKeypairGeneration": "SSH-avainparin luominen", - "SSHKeypairGenerationWarning": "Et voi saada yksityistä avainta uudelleen. Tallenna tarvittaessa paikalliselle levylle.", - "SSHKeypairManagement": "SSH-avainparin hallinta", - "SessionTerminationDialog": "Istunnon lopettamista ei voi peruuttaa. Haluatko jatkaa istunnon lopettamista?", - "ShellEnvironments": "Shell-ympäristöt", - "UseCompactSidebar": "Käytä kompakti sivupalkki oletusarvoisesti" + "license": { + "Perpetual": "__NOT_TRANSLATED__", + "Subscription": "__NOT_TRANSLATED__", + "OpenSource": "__NOT_TRANSLATED__" }, - "webTerminalUsageGuide": { - "CopyGuide": "Edistynyt verkkopäätteen käyttö: Kopioi terminaalin sisältö", - "CopyGuideFour": "Voit ottaa hiiren vierityksen uudelleen käyttöön painamalla Ctrl + B ja kirjoittamalla :set -g mouse on ja painamalla Enter.", - "CopyGuideOne": "Paina Ctrl + B -näppäintä siirtyäksesi tmux-ohjaustilaan.", - "CopyGuideThree": "Nyt voit kopioida tekstiä terminaalista.", - "CopyGuideTwo": "Kirjoita :set -g mouse off ja paina Enter-näppäintä.", - "LearnMore": "Lue lisää >" + "statistics": { + "UsageHistory": "__NOT_TRANSLATED__", + "1Day": "__NOT_TRANSLATED__", + "1Week": "__NOT_TRANSLATED__", + "UsageHistoryNote": "__NOT_TRANSLATED__", + "UsageHistoryDesc": "__NOT_TRANSLATED__", + "SessionsDesc": "__NOT_TRANSLATED__", + "CPUDesc": "__NOT_TRANSLATED__", + "MemoryDesc": "__NOT_TRANSLATED__", + "GPUDesc": "__NOT_TRANSLATED__", + "IOReadDesc": "__NOT_TRANSLATED__", + "IOWriteDesc": "__NOT_TRANSLATED__", + "SelectPeriod": "__NOT_TRANSLATED__" }, - "webui": { - "AdminOnlyPage": "Sinulla ei ole lupaa käyttää tätä sivua.
Klikkaa alla olevaa painiketta ohjataksesi yhteenvetosivulle.", - "CleanUpLoginSession": "Siivoa kirjautumisistunto...", - "CleanUpNow": "Siivoa nyt...", - "DescNOTFOUND": "Valitettavasti etsimääsi sivua ei löytynyt.", - "NOTFOUND": "

Oops!
Sivua ei löydy...

", - "UNAUTHORIZEDACCESS": "Luvaton pääsy", - "YouAreOffline": "Olet nyt offline-tilassa", - "YouAreOnline": "Olet nyt verkossa", - "menu": { - "AIAccelerator": "AI-kiihdyttämö", - "AboutBackendAI": "Tietoja Backend.AI:sta", - "Administration": "Hallinto", - "AgentSummary": "Agentin yhteenveto", - "Cancel": "Peruuta", - "ChangePassword": "Vaihda salasana", - "ComputationResources": "Laskentaresurssit", - "Configurations": "Kokoonpanot", - "Data&Storage": "Data & varastointi", - "Environments": "Ympäristöt", - "Environments&Presets": "Ympäristöt & esiasetukset", - "Experiments": "Kokeet", - "FastTrack": "FastTrack", - "FullName": "Koko nimi", - "FullNameInvalid": "Koko nimi saa olla enintään 64 merkkiä", - "FullnameUpdated": "Koko nimi on päivitetty onnistuneesti.", - "Help": "Apua", - "Import&Run": "Tuo ja suorita", - "Information": "Tiedot", - "InputOriginalPassword": "Syötä alkuperäinen salasana", - "InvalidPasswordMessage": "Tarvitaan vähintään 1 aakkosmerkki, 1 numero ja 1 erikoismerkki, joissa on vähintään 8 merkkiä.", - "LeaveService": "Jätä palvelu", - "LogOut": "Kirjaudu ulos", - "Logs": "Lokit", - "LogsErrors": "Lokit / virheet", - "Maintenance": "Huolto", - "MyAccount": "Oma tili", - "MyAccountInformation": "Tilini tiedot", - "NewPassword": "Uusi salasana", - "NewPasswordAgain": "Uusi salasana (taas)", - "NewPasswordCannotBeSame": "Kirjoita salasana, joka poikkeaa nykyisestä salasanastasi.", - "NewPasswordMismatch": "Kaksi uutta salasanaa ei täsmää.", - "Notifications": "Ilmoitukset", - "OriginalPassword": "Alkuperäinen salasana", - "PasswordChangePlace": "Napsauta yläpalkin henkilö-kuvaketta ja siirry \"Oma tili\" -valikkoon.", - "PasswordMismatch": "Salasana ei täsmää", - "PasswordUpdated": "Salasana on päivitetty onnistuneesti.", - "Pipeline": "Putkisto (Beta)", - "PipelineJob": "Pipeline Job (Beta)", - "PleaseChangeYourPassword": "Vaihda salasanasi.", - "PleaseConfirmYourPassword": "Vahvista salasanasi", - "Preferences": "Asetukset", - "PrivacyPolicy": "Tietosuojakäytäntö", - "Project": "Hanke", - "Resources": "Resurssit", - "Serving": "Palvelevat", - "Sessions": "Istunnot", - "Settings": "Asetukset", - "Settings&Logs": "Asetukset & lokit", - "SetupTotp": "2FA-asetus", - "Statistics": "Tilastot", - "Summary": "Yhteenveto", - "Tasks": "Tehtävät", - "TermsOfService": "Käyttöehdot", - "TotpActivated": "2FA käytössä", - "Update": "Päivitys", - "UserCredentials&Policies": "Käyttäjien valtakirjat ja käytännöt", - "Users": "Käyttäjät", - "WelcomeMessage": "Tervetuloa,", - "WelcomeMessage_2": " .", - "YouMushChangeYourPassword": "On suositeltavaa vaihtaa salasana säännöllisesti turvallisuussyistä. Koska salasanasi viimeisimmästä vaihtamisesta on kulunut tietty aika, sinun on vaihdettava se, jotta voit jatkaa palvelun käyttöä." - } + "language": { + "OSDefault": "__NOT_TRANSLATED__", + "English": "__NOT_TRANSLATED__", + "Korean": "__NOT_TRANSLATED__", + "Brazilian": "__NOT_TRANSLATED__", + "Chinese": "__NOT_TRANSLATED__", + "Chinese (Simplified)": "__NOT_TRANSLATED__", + "French": "__NOT_TRANSLATED__", + "Finnish": "__NOT_TRANSLATED__", + "German": "__NOT_TRANSLATED__", + "Greek": "__NOT_TRANSLATED__", + "Indonesian": "__NOT_TRANSLATED__", + "Italian": "__NOT_TRANSLATED__", + "Japanese": "__NOT_TRANSLATED__", + "Mongolian": "__NOT_TRANSLATED__", + "Polish": "__NOT_TRANSLATED__", + "Portuguese": "__NOT_TRANSLATED__", + "Russian": "__NOT_TRANSLATED__", + "Spanish": "__NOT_TRANSLATED__", + "Turkish": "__NOT_TRANSLATED__", + "Vietnamese": "__NOT_TRANSLATED__", + "Language": "__NOT_TRANSLATED__" } } diff --git a/resources/i18n/fr.json b/resources/i18n/fr.json index 5f1202ee68..ccdcf70d06 100644 --- a/resources/i18n/fr.json +++ b/resources/i18n/fr.json @@ -61,7 +61,8 @@ "YouMushChangeYourPassword": "Il est recommandé de modifier périodiquement votre mot de passe pour des raisons de sécurité. Étant donné qu'un certain temps s'est écoulé depuis la dernière modification de votre mot de passe, vous devez le modifier pour pouvoir continuer à utiliser le service.", "NewPasswordCannotBeSame": "Veuillez saisir un mot de passe différent de votre mot de passe actuel.", "PleaseConfirmYourPassword": "Veuillez confirmer votre mot de passe", - "FastTrack": "FastTrack" + "FastTrack": "FastTrack", + "Data&Model": "" }, "YouAreOffline": "Vous êtes maintenant hors ligne", "YouAreOnline": "Vous êtes maintenant en ligne", @@ -240,17 +241,18 @@ "FolderAliasInvalid": "Seuls les caractères alphanumériques, le trait de soulignement (_), la barre oblique (/) et le tiret (-) sont autorisés.", "PreOpenPortMaxCountLimit": "Vous pouvez définir jusqu'à {{count}} ports pré-ouverts.", "StartTimeMustBeInTheFuture": "L'heure de début doit être postérieure à l'heure actuelle.", - "PreOpenPortMaxCountLimit_plural": "__NOT_TRANSLATED__", - "EnqueueComputeSessionWarning": "__NOT_TRANSLATED__", - "SessionName": "__NOT_TRANSLATED__", - "ResetFormConfirm": "__NOT_TRANSLATED__", - "TemplateAndHistory": "__NOT_TRANSLATED__", - "ScheduleTimeSimple": "__NOT_TRANSLATED__", + "PreOpenPortMaxCountLimit_plural": "", + "EnqueueComputeSessionWarning": "", + "SessionName": "", + "ResetFormConfirm": "", + "TemplateAndHistory": "", + "ScheduleTimeSimple": "", "ResourceAllocationPerContainer": "Allocation de ressources par conteneur", "NumberOfContainer": "Nombre de conteneurs", "EnterEnvironmentVariable": "Saisir le nom de la variable", "EnvironmentVariableNamePatternError": "Le nom de la variable doit commencer par une lettre ou un trait de soulignement et ne peut contenir que des lettres, des chiffres et des traits de soulignement.", - "EnvironmentVariableDuplicateName": "Un nom de variable qui existe déjà." + "EnvironmentVariableDuplicateName": "Un nom de variable qui existe déjà.", + "Template": "Modèle de session" }, "Preparing": "En train de préparer...", "PreparingSession": "Séance de préparation...", @@ -399,7 +401,9 @@ "Reset": "Réinitialisation", "EnterManually": "Saisie manuelle", "Unset": "Non défini", - "OK": "OK" + "OK": "OK", + "Download": "Télécharger", + "Clone": "Clone" }, "agent": { "Endpoint": "Point de terminaison", @@ -443,7 +447,7 @@ "Enabled": "Activée", "StorageProxies": "Stockages", "None": "Aucun", - "Image": "__NOT_TRANSLATED__" + "Image": "" }, "credential": { "Permission": "Autorisation", @@ -521,7 +525,7 @@ "KeySeccessfullyDeleted": "La paire de clés est supprimée successivement.", "SignoutSeccessfullyFinished": "La signature est terminée en toute sécurité", "ModifyUserDetail": "Modifier les détails de l'utilisateur", - "EnableSudoSession": "__NOT_TRANSLATED__" + "EnableSudoSession": "" }, "data": { "Folders": "Dossiers", @@ -687,7 +691,11 @@ "Used": "Utilisé", "Pipeline": "Dossiers du pipeline", "DialogDataFolder": "Dossiers dédiés aux pipelines qui sont automatiquement créés lors de la création de pipelines dans FastTrack.", - "SearchByName": "Rechercher par nom" + "SearchByName": "Rechercher par nom", + "ModelStore": "", + "New": "__NOT_TRANSLATED__", + "Add": "Ajouter", + "CloningIsOnlyPossibleSameHost": "Actuellement, le clonage n'est possible que sur le même hôte." }, "dialog": { "warning": { @@ -1438,5 +1446,32 @@ "reloadPage": "Recharger la page", "resetErrorBoundary": "Réinitialisation de la limite d'erreur", "displayOnlyDevEnv": "Ce bloc d'erreur n'est affiché que dans l'environnement de développement WebUI." + }, + "modelStore": { + "Description": "Description", + "Model": "Modèle", + "FilterByName": "Filtrer par nom", + "ServiceDetails": "Détails des services", + "Metadata": "Métadonnées", + "ModelPath": "Chemin du modèle", + "SearchModels": "Rechercher des modèles", + "MinResource": "Ressource minimale", + "LastModified": "Dernière modification", + "Created": "Créé", + "Version": "Version", + "Author": "Auteur", + "MaxRetries": "Nombre maximal de tentatives", + "Path": "Chemin", + "HealthCheck": "Bilan de santé", + "Port": "Port", + "StartCommand": "Démarrer la commande", + "PreStartActions": "Actions préalables au démarrage", + "Framework": "Le cadre", + "Category": "Catégories", + "Label": "Étiquette", + "Task": "Tâche", + "CloneAsFolder": "Cloner en tant que dossier", + "CloneSuccess": "La demande de clone a été envoyée avec succès.", + "CloneInfo": "Il sera cloné en tant que dossier de votre type d'utilisateur." } } diff --git a/resources/i18n/id.json b/resources/i18n/id.json index 96a2c5d79a..fee7ba1be4 100644 --- a/resources/i18n/id.json +++ b/resources/i18n/id.json @@ -61,7 +61,8 @@ "YouMushChangeYourPassword": "Disarankan untuk mengubah kata sandi Anda secara berkala untuk alasan keamanan. Karena sejumlah waktu telah berlalu sejak terakhir kali Anda mengubah kata sandi, Anda harus mengubahnya agar dapat terus menggunakan layanan ini.", "NewPasswordCannotBeSame": "Masukkan kata sandi yang berbeda dari kata sandi Anda saat ini.", "PleaseConfirmYourPassword": "Harap konfirmasi kata sandi Anda", - "FastTrack": "FastTrack" + "FastTrack": "FastTrack", + "Data&Model": "" }, "YouAreOffline": "Anda sekarang offline", "YouAreOnline": "Anda sekarang online", @@ -240,17 +241,18 @@ "FolderAliasInvalid": "Hanya karakter alfanumerik, garis bawah (_), garis miring (/), dan tanda hubung (-) yang diperbolehkan.", "PreOpenPortMaxCountLimit": "Anda dapat mengatur hingga {{count}} port yang telah dibuka sebelumnya.", "StartTimeMustBeInTheFuture": "Waktu mulai harus setelah waktu saat ini.", - "PreOpenPortMaxCountLimit_0": "__NOT_TRANSLATED__", - "EnqueueComputeSessionWarning": "__NOT_TRANSLATED__", - "SessionName": "__NOT_TRANSLATED__", - "ResetFormConfirm": "__NOT_TRANSLATED__", - "TemplateAndHistory": "__NOT_TRANSLATED__", - "ScheduleTimeSimple": "__NOT_TRANSLATED__", + "PreOpenPortMaxCountLimit_0": "", + "EnqueueComputeSessionWarning": "", + "SessionName": "", + "ResetFormConfirm": "", + "TemplateAndHistory": "", + "ScheduleTimeSimple": "", "ResourceAllocationPerContainer": "Alokasi Sumber Daya Per Kontainer", "NumberOfContainer": "Jumlah kontainer", "EnterEnvironmentVariable": "Masukkan nama variabel", "EnvironmentVariableNamePatternError": "Nama variabel harus dimulai dengan huruf atau garis bawah, dan hanya boleh terdiri dari huruf, angka, dan garis bawah.", - "EnvironmentVariableDuplicateName": "Nama variabel yang sudah ada." + "EnvironmentVariableDuplicateName": "Nama variabel yang sudah ada.", + "Template": "Templat Sesi" }, "Preparing": "Mempersiapkan...", "PreparingSession": "Mempersiapkan sesi...", @@ -399,7 +401,9 @@ "Reset": "Atur Ulang", "EnterManually": "Masukkan Secara Manual", "Unset": "Tidak diatur", - "OK": "BAIKLAH." + "OK": "BAIKLAH.", + "Download": "Unduh", + "Clone": "Clone" }, "agent": { "Endpoint": "Titik akhir", @@ -443,7 +447,7 @@ "Enabled": "Diaktifkan", "StorageProxies": "Penyimpanan", "None": "Tidak ada", - "Image": "__NOT_TRANSLATED__" + "Image": "" }, "credential": { "Permission": "Izin", @@ -521,7 +525,7 @@ "KeySeccessfullyDeleted": "KeyPair dihapus dengan aman.", "SignoutSeccessfullyFinished": "Keluar dengan aman selesai", "ModifyUserDetail": "Ubah Detail Pengguna", - "EnableSudoSession": "__NOT_TRANSLATED__" + "EnableSudoSession": "" }, "data": { "Folders": "Folder", @@ -687,7 +691,11 @@ "Used": "Digunakan", "Pipeline": "Folder Pipa", "DialogDataFolder": "Folder khusus pipeline yang secara otomatis dibuat saat membuat pipeline di FastTrack.", - "SearchByName": "Cari berdasarkan nama" + "SearchByName": "Cari berdasarkan nama", + "ModelStore": "", + "New": "__NOT_TRANSLATED__", + "Add": "Menambahkan", + "CloningIsOnlyPossibleSameHost": "Saat ini, kloning hanya dapat dilakukan pada host yang sama." }, "dialog": { "warning": { @@ -1438,5 +1446,32 @@ "reloadPage": "Muat ulang halaman", "resetErrorBoundary": "Setel Ulang Batas Kesalahan", "displayOnlyDevEnv": "Blok kesalahan ini hanya ditampilkan di lingkungan pengembangan WebUI." + }, + "modelStore": { + "Description": "Keterangan", + "Model": "Model", + "FilterByName": "Filter Berdasarkan Nama", + "ServiceDetails": "Detail Layanan", + "Metadata": "Metadata", + "ModelPath": "Jalur Model", + "SearchModels": "Model Pencarian", + "MinResource": "Sumber Daya Minimal", + "LastModified": "Terakhir diubah", + "Created": "Dibuat", + "Version": "Versi: kapan", + "Author": "Pengarang", + "MaxRetries": "Percobaan Ulang Maks", + "Path": "Jalur", + "HealthCheck": "Cek kesehatan", + "Port": "Pelabuhan", + "StartCommand": "Mulai Perintah", + "PreStartActions": "Tindakan Pra Mulai", + "Framework": "Kerangka kerja", + "Category": "Kategori", + "Label": "Label", + "Task": "Tugas", + "CloneAsFolder": "Mengkloning sebagai Folder", + "CloneSuccess": "Permintaan kloning telah berhasil dikirim.", + "CloneInfo": "Ini akan dikloning sebagai folder tipe pengguna Anda." } } diff --git a/resources/i18n/it.json b/resources/i18n/it.json index d2fd1e3436..c33db838e1 100644 --- a/resources/i18n/it.json +++ b/resources/i18n/it.json @@ -61,7 +61,8 @@ "PasswordChangePlace": "Fare clic sull'icona della persona nella barra superiore e accedere al menu \"Il mio account\".", "Notifications": "Notifiche", "Tasks": "Compiti", - "FastTrack": "FastTrack" + "FastTrack": "FastTrack", + "Data&Model": "" }, "YouAreOffline": "Ora sei offline", "YouAreOnline": "Ora sei online", @@ -240,17 +241,18 @@ "FolderAliasInvalid": "Sono consentiti solo caratteri alfanumerici, carattere di sottolineatura (_), barra (/) e trattino (-).", "PreOpenPortMaxCountLimit": "È possibile impostare fino a {{count}} porte pre-aperte.", "StartTimeMustBeInTheFuture": "L'ora di inizio deve essere successiva all'ora corrente.", - "PreOpenPortMaxCountLimit_plural": "__NOT_TRANSLATED__", - "EnqueueComputeSessionWarning": "__NOT_TRANSLATED__", - "SessionName": "__NOT_TRANSLATED__", - "ResetFormConfirm": "__NOT_TRANSLATED__", - "TemplateAndHistory": "__NOT_TRANSLATED__", - "ScheduleTimeSimple": "__NOT_TRANSLATED__", + "PreOpenPortMaxCountLimit_plural": "", + "EnqueueComputeSessionWarning": "", + "SessionName": "", + "ResetFormConfirm": "", + "TemplateAndHistory": "", + "ScheduleTimeSimple": "", "ResourceAllocationPerContainer": "Allocazione delle risorse per contenitore", "NumberOfContainer": "Numero di contenitori", "EnterEnvironmentVariable": "Inserire il nome della variabile", "EnvironmentVariableNamePatternError": "Il nome della variabile deve iniziare con una lettera o un trattino basso e può contenere solo lettere, numeri e trattini bassi.", - "EnvironmentVariableDuplicateName": "Un nome di variabile già esistente." + "EnvironmentVariableDuplicateName": "Un nome di variabile già esistente.", + "Template": "Modello di sessione" }, "Preparing": "Preparazione...", "PreparingSession": "Preparazione della sessione...", @@ -399,7 +401,9 @@ "Unset": "Non impostato", "OK": "OK", "Commit": "Impegno", - "EnterManually": "Inserire manualmente" + "EnterManually": "Inserire manualmente", + "Download": "Scarica", + "Clone": "Clone" }, "agent": { "Endpoint": "Endpoint", @@ -443,7 +447,7 @@ "Enabled": "Abilitato", "StorageProxies": "Depositi", "None": "Nessuno", - "Image": "__NOT_TRANSLATED__" + "Image": "" }, "credential": { "Permission": "Autorizzazione", @@ -521,7 +525,7 @@ "SignoutSeccessfullyFinished": "Il signout è terminato in modo sicuro", "Status": "Stato", "NoUserToDisplay": "Nessun utente da visualizzare", - "EnableSudoSession": "__NOT_TRANSLATED__" + "EnableSudoSession": "" }, "data": { "Folders": "cartelle", @@ -687,7 +691,11 @@ "Pipeline": "Cartelle della pipeline", "DialogDataFolder": "Cartelle dedicate alle pipeline che vengono create automaticamente quando si creano le pipeline in FastTrack.", "DialogModelFolder": "È possibile servire e gestire i modelli.", - "SearchByName": "Ricerca per nome" + "SearchByName": "Ricerca per nome", + "ModelStore": "", + "New": "__NOT_TRANSLATED__", + "Add": "Aggiungi", + "CloningIsOnlyPossibleSameHost": "Attualmente la clonazione è possibile solo sullo stesso host." }, "dialog": { "warning": { @@ -1438,5 +1446,32 @@ "OpenVSCodeRemote": "Aprire il codice locale di Visual Studio", "inputLimit": { "4to64chars": "(4~64 caratteri)" + }, + "modelStore": { + "Description": "Descrizione", + "Model": "Modello", + "FilterByName": "Filtra per nome", + "ServiceDetails": "Dettagli del servizio", + "Metadata": "Metadati", + "ModelPath": "Percorso del modello", + "SearchModels": "Cerca modelli", + "MinResource": "Risorsa minima", + "LastModified": "Ultima modifica", + "Created": "Creato", + "Version": "Versione", + "Author": "Autore", + "MaxRetries": "Numero massimo di tentativi", + "Path": "Sentiero", + "HealthCheck": "Controllo della salute", + "Port": "Porta", + "StartCommand": "Avvia comando", + "PreStartActions": "Azioni pre-avvio", + "Framework": "Struttura", + "Category": "Categorie", + "Label": "Etichetta", + "Task": "Compito", + "CloneAsFolder": "Clonare come cartella", + "CloneSuccess": "La richiesta di clonazione è stata inviata con successo.", + "CloneInfo": "Verrà clonata come cartella del tipo di utente." } } diff --git a/resources/i18n/ja.json b/resources/i18n/ja.json index 16a046eefa..cc050827bf 100644 --- a/resources/i18n/ja.json +++ b/resources/i18n/ja.json @@ -61,7 +61,8 @@ "PasswordChangePlace": "トップバーの人物アイコンをクリックして「ユーザー情報の変更」メニューに移動してください。", "Notifications": "お知らせ", "Tasks": "作業", - "FastTrack": "FastTrack" + "FastTrack": "FastTrack", + "Data&Model": "" }, "YouAreOffline": "あなたは今オフラインです", "YouAreOnline": "あなたは今オンラインです", @@ -240,17 +241,18 @@ "FolderAliasInvalid": "英語の大文字と小文字、数字、アンダースコア(_)、スラッシュ(/)、ダッシュ(-)のみを入力できます。", "PreOpenPortMaxCountLimit": "count}}までプレオープンポートを設定できる。", "StartTimeMustBeInTheFuture": "開始時刻は現在時刻より後でなければならない。", - "PreOpenPortMaxCountLimit_0": "__NOT_TRANSLATED__", - "EnqueueComputeSessionWarning": "__NOT_TRANSLATED__", - "SessionName": "__NOT_TRANSLATED__", - "ResetFormConfirm": "__NOT_TRANSLATED__", - "TemplateAndHistory": "__NOT_TRANSLATED__", - "ScheduleTimeSimple": "__NOT_TRANSLATED__", + "PreOpenPortMaxCountLimit_0": "", + "EnqueueComputeSessionWarning": "", + "SessionName": "", + "ResetFormConfirm": "", + "TemplateAndHistory": "", + "ScheduleTimeSimple": "", "ResourceAllocationPerContainer": "コンテナあたりのリソース割り当て", "NumberOfContainer": "コンテナ数", "EnterEnvironmentVariable": "変数名の入力", "EnvironmentVariableNamePatternError": "変数名は文字またはアンダースコアで始まり、文字、数字、アンダースコアのみを含むことができます。", - "EnvironmentVariableDuplicateName": "既に存在する変数名です。" + "EnvironmentVariableDuplicateName": "既に存在する変数名です。", + "Template": "セッションテンプレート" }, "Preparing": "準備...", "PreparingSession": "セッションの準備...", @@ -399,7 +401,9 @@ "Unset": "初期化", "OK": "確認", "Commit": "コミットする", - "EnterManually": "直接入力する" + "EnterManually": "直接入力する", + "Download": "ダウンロード", + "Clone": "クローン" }, "agent": { "Endpoint": "終点", @@ -443,7 +447,7 @@ "Enabled": "有効", "StorageProxies": "ストレージ", "None": "なし", - "Image": "__NOT_TRANSLATED__" + "Image": "" }, "credential": { "Permission": "許可", @@ -521,7 +525,7 @@ "SignoutSeccessfullyFinished": "ユーザーアカウントが正常に削除されました。", "Status": "状態", "NoUserToDisplay": "ユーザー情報がありません。", - "EnableSudoSession": "__NOT_TRANSLATED__" + "EnableSudoSession": "" }, "data": { "Folders": "フォルダー", @@ -687,7 +691,11 @@ "Pipeline": "パイプラインフォルダ", "DialogDataFolder": "FastTrackでパイプライン作成時に自動的に生成されるパイプライン専用フォルダ。", "DialogModelFolder": "モデルを選択して実行したり、モデルを管理することができます。", - "SearchByName": "名前で検索" + "SearchByName": "名前で検索", + "ModelStore": "", + "New": "__NOT_TRANSLATED__", + "Add": "追加", + "CloningIsOnlyPossibleSameHost": "現在、クローン作成は同じホスト上でのみ可能です。" }, "dialog": { "warning": { @@ -1438,5 +1446,32 @@ "OpenVSCodeRemote": "ローカルVisual Studio Codeを開く", "inputLimit": { "4to64chars": "(4~64文字)" + }, + "modelStore": { + "Description": "説明", + "Model": "モデル", + "FilterByName": "名前でフィルタリングする", + "ServiceDetails": "サービス内容", + "Metadata": "メタデータ", + "ModelPath": "モデルパス", + "SearchModels": "モデルの検索", + "MinResource": "最小リソース", + "LastModified": "最終更新日", + "Created": "作成した", + "Version": "バージョン", + "Author": "著者", + "MaxRetries": "最大再試行回数", + "Path": "パス", + "HealthCheck": "健康診断", + "Port": "ポート", + "StartCommand": "開始コマンド", + "PreStartActions": "開始前のアクション", + "Framework": "フレームワーク", + "Category": "カテゴリー", + "Label": "ラベル", + "Task": "タスク", + "CloneAsFolder": "フォルダとしてクローン", + "CloneSuccess": "クローン要求は正常に送信された。", + "CloneInfo": "ユーザータイプのフォルダとしてクローンされます。" } } diff --git a/resources/i18n/ko.json b/resources/i18n/ko.json index 7840ab98c9..cfed4995a4 100644 --- a/resources/i18n/ko.json +++ b/resources/i18n/ko.json @@ -61,7 +61,8 @@ "NewPasswordCannotBeSame": "기존 비밀번호와 다른 새 비밀번호를 입력해주세요.", "Notifications": "알림", "Tasks": "작업", - "FastTrack": "FastTrack" + "FastTrack": "FastTrack", + "Data&Model": "데이터 & 모델" }, "YouAreOffline": "오프라인 상태가 되었습니다", "YouAreOnline": "온라인 상태가 되었습니다", @@ -247,7 +248,7 @@ "TemplateAndHistory": "템플릿 및 최근기록", "ResetFormConfirm": "입력한 사항을 모두 초기화하시겠습니까?", "StartTimeMustBeInTheFuture": "시작 시간은 현재 시간 이후여야 합니다.", - "PreOpenPortMaxCountLimit_0": "__NOT_TRANSLATED__", + "PreOpenPortMaxCountLimit_0": "", "NumberOfContainer": "컨테이너 개수", "EnterEnvironmentVariable": "변수 이름 입력해주세요.", "EnvironmentVariableNamePatternError": "변수 이름은 문자 또는 밑줄로 시작해야 하며 문자, 숫자, 밑줄만 포함할 수 있습니다.", @@ -447,7 +448,9 @@ "Commit": "커밋하기", "Reset": "초기화", "Unset": "초기화", - "OK": "확인" + "OK": "확인", + "Download": "다운로드", + "Clone": "복사" }, "agent": { "Endpoint": "엔드포인트", @@ -769,7 +772,11 @@ "HostDetails": "선택한 스토리지 호스트의 가용량 정보를 보여줍니다.", "ProjectFolder": "프로젝트 폴더", "Pipeline": "파이프라인 폴더", - "DialogDataFolder": "FastTrack에서 파이프라인 생성 시 자동으로 생성되는 파이프라인 전용 폴더." + "DialogDataFolder": "FastTrack에서 파이프라인 생성 시 자동으로 생성되는 파이프라인 전용 폴더.", + "ModelStore": "모델 스토어", + "New": "__NOT_TRANSLATED__", + "Add": "추가", + "CloningIsOnlyPossibleSameHost": "현재 폴더 복사는 동일한 호스트간에만 가능합니다." }, "dialog": { "warning": { @@ -1439,5 +1446,33 @@ "reloadPage": "페이지 새로고침", "resetErrorBoundary": "ErrorBoundary 초기화", "displayOnlyDevEnv": "이 에러 블록은 WebUI 개발 환경에서만 표시됩니다." + }, + "modelStore": { + "Description": "설명", + "Model": "모델", + "FilterByName": "이름으로 필터링", + "ServiceDetails": "서비스 내용", + "Metadata": "메타데이터", + "ModelPath": "모델 경로", + "SearchModels": "모델 검색", + "MinResource": "최소 리소스", + "LastModified": "마지막 수정", + "Created": "생성", + "Version": "버전", + "Author": "작가", + "MaxRetries": "최대 재시도 횟수", + "Path": "길", + "HealthCheck": "건강 체크", + "Port": "포트", + "StartCommand": "시작 명령", + "PreStartActions": "시작 전 작업", + "Framework": "프레임워크", + "category": "카테고리", + "Category": "카테고리", + "Label": "레이블", + "Task": "작업", + "CloneAsFolder": "새 폴더로 복사", + "CloneSuccess": "복사 요청이 성공적으로 보내졌습니다.", + "CloneInfo": "새로운 사용자 폴더로 복사됩니다." } } diff --git a/resources/i18n/mn.json b/resources/i18n/mn.json index 7baf98efc1..4f67d7c94c 100644 --- a/resources/i18n/mn.json +++ b/resources/i18n/mn.json @@ -61,7 +61,8 @@ "YouMushChangeYourPassword": "Аюулгүй байдлын үүднээс нууц үгээ үе үе өөрчлөхийг зөвлөж байна. \nТа нууц үгээ хамгийн сүүлд сольсноос хойш тодорхой хугацаа өнгөрсөн тул үйлчилгээгээ үргэлжлүүлэн ашиглахын тулд үүнийг өөрчлөх шаардлагатай.", "NewPasswordCannotBeSame": "Таны одоогийн нууц үгээс өөр нууц үг оруулна уу.", "PleaseConfirmYourPassword": "Нууц үгээ баталгаажуулна уу", - "FastTrack": "FastTrack" + "FastTrack": "FastTrack", + "Data&Model": "" }, "YouAreOffline": "Та одоо офлайн байна", "YouAreOnline": "Та одоо онлайн байна", @@ -239,18 +240,19 @@ "Enable": "Идэвхжүүлэх", "FolderAliasInvalid": "Зөвхөн үсэг, тоон тэмдэгт, доогуур зураас (_), ташуу зураас (/), зураас (-) ашиглахыг зөвшөөрнө.", "StartTimeMustBeInTheFuture": "Эхлэх цаг нь одоогийн цагаас хойш байх ёстой.", - "PreOpenPortMaxCountLimit": "__NOT_TRANSLATED__", - "PreOpenPortMaxCountLimit_plural": "__NOT_TRANSLATED__", - "EnqueueComputeSessionWarning": "__NOT_TRANSLATED__", - "SessionName": "__NOT_TRANSLATED__", - "ResetFormConfirm": "__NOT_TRANSLATED__", - "TemplateAndHistory": "__NOT_TRANSLATED__", - "ScheduleTimeSimple": "__NOT_TRANSLATED__", + "PreOpenPortMaxCountLimit": "", + "PreOpenPortMaxCountLimit_plural": "", + "EnqueueComputeSessionWarning": "", + "SessionName": "", + "ResetFormConfirm": "", + "TemplateAndHistory": "", + "ScheduleTimeSimple": "", "ResourceAllocationPerContainer": "Нэг контейнерт нөөцийн хуваарилалт", "NumberOfContainer": "Савны тоо", "EnterEnvironmentVariable": "Хувьсагчийн нэрийг оруулна уу", "EnvironmentVariableNamePatternError": "Хувьсагчийн нэр үсэг эсвэл доогуур зураасаар эхлэх ёстой бөгөөд зөвхөн үсэг, тоо, доогуур зураас агуулсан байж болно.", - "EnvironmentVariableDuplicateName": "Энэ хувьсагчийн нэр аль хэдийн байна." + "EnvironmentVariableDuplicateName": "Энэ хувьсагчийн нэр аль хэдийн байна.", + "Template": "Сеанс загвар" }, "Preparing": "Бэлтгэж байна ...", "PreparingSession": "Session бэлтгэж байна ...", @@ -399,7 +401,9 @@ "Reset": "Дахин тохируулах", "EnterManually": "Гараар оруулна уу", "Unset": "Тохируулаагүй", - "OK": "БОЛЖ БАЙНА УУ" + "OK": "БОЛЖ БАЙНА УУ", + "Download": "Татаж авах", + "Clone": "Клон" }, "agent": { "Endpoint": "Төгсгөлийн цэг", @@ -443,7 +447,7 @@ "Enabled": "Идэвхжсэн", "StorageProxies": "Хадгалах сан", "None": "Байхгүй", - "Image": "__NOT_TRANSLATED__" + "Image": "" }, "credential": { "Permission": "Зөвшөөрөл", @@ -521,7 +525,7 @@ "KeySeccessfullyDeleted": "KeyPair амжилттай устгагдсан.", "SignoutSeccessfullyFinished": "Гарах ажиллагаа амжилттай дууслаа", "ModifyUserDetail": "Хэрэглэгчийн мэдээллийг өөрчлөх", - "EnableSudoSession": "__NOT_TRANSLATED__" + "EnableSudoSession": "" }, "data": { "Folders": "Фолдерууд", @@ -687,7 +691,11 @@ "Used": "Ашигласан", "Pipeline": "Дамжуулах хоолойн хавтас", "DialogDataFolder": "FastTrack-д дамжуулах шугам үүсгэх үед автоматаар үүсгэгддэг дамжуулах хоолойд зориулагдсан фолдерууд.", - "SearchByName": "Нэрээр нь хайх" + "SearchByName": "Нэрээр нь хайх", + "ModelStore": "", + "New": "__NOT_TRANSLATED__", + "Add": "Нэмэх", + "CloningIsOnlyPossibleSameHost": "Одоогоор зөвхөн нэг хост дээр клон хийх боломжтой." }, "dialog": { "warning": { @@ -779,7 +787,7 @@ "SharedMemory": "Хуваалцсан санах ой (GB)", "Deleted": "Нөөцийн урьдчилсан тохируулгыг амжилттай устгалаа.", "NoResourcePresetToDisplay": "Харуулах нөөцийн урьдчилсан тохиргоо байхгүй", - "SHMEMShouldBeSmallerThanMemory": "__NOT_TRANSLATED__" + "SHMEMShouldBeSmallerThanMemory": "" }, "usersettings": { "General": "Ерөнхий", @@ -916,7 +924,7 @@ "RegistrySuccessfullyModified": "Бүртгэл амжилттай өөрчлөгдсөн.", "ModifyRegistry": "Бүртгэлийг өөрчлөх", "NoRegistryToDisplay": "Харуулах бүртгэл байхгүй", - "ConfirmNoUserName": "__NOT_TRANSLATED__" + "ConfirmNoUserName": "" }, "resourceGroup": { "ResourceGroups": "Нөөцийн бүлгүүд", @@ -1438,5 +1446,32 @@ "reloadPage": "Хуудсыг дахин ачаална уу", "resetErrorBoundary": "Алдааны хил хязгаарыг дахин тохируулах", "displayOnlyDevEnv": "Энэ алдааны блок нь зөвхөн WebUI хөгжүүлэлтийн орчинд харагдана." + }, + "modelStore": { + "Description": "Тодорхойлолт", + "Model": "Загвар", + "FilterByName": "Нэрээр нь шүүх", + "ServiceDetails": "Үйлчилгээний дэлгэрэнгүй мэдээлэл", + "Metadata": "Мета өгөгдөл", + "ModelPath": "Загварын зам", + "SearchModels": "Загвар хайх", + "MinResource": "Хамгийн бага нөөц", + "LastModified": "Сүүлд өөрчилсөн", + "Created": "Үүсгэсэн", + "Version": "Хувилбар", + "Author": "Зохиогч", + "MaxRetries": "Макс дахин оролдоно", + "Path": "Зам", + "HealthCheck": "Эрүүл мэндийн үзлэг", + "Port": "Порт", + "StartCommand": "Эхлэх тушаал", + "PreStartActions": "Эхлэхийн өмнөх үйлдлүүд", + "Framework": "Хүрээ", + "Category": "ангилал", + "Label": "Шошго", + "Task": "Даалгавар", + "CloneAsFolder": "Хавтас болгон хуваах", + "CloneSuccess": "Хувилах хүсэлтийг амжилттай илгээлээ.", + "CloneInfo": "Үүнийг таны хэрэглэгчийн төрлийн хавтас болгон хувилах болно." } } diff --git a/resources/i18n/ms.json b/resources/i18n/ms.json index a700f59968..dda1faad22 100644 --- a/resources/i18n/ms.json +++ b/resources/i18n/ms.json @@ -61,7 +61,8 @@ "PasswordChangePlace": "Klik ikon orang pada bar atas dan pergi ke menu \"Akaun Saya\".", "Notifications": "Pemberitahuan", "Tasks": "Tugasan", - "FastTrack": "FastTrack" + "FastTrack": "FastTrack", + "Data&Model": "" }, "YouAreOffline": "Anda kini berada di luar talian", "YouAreOnline": "Anda kini dalam talian", @@ -239,17 +240,18 @@ "Enable": "Dayakan", "FolderAliasInvalid": "Hanya aksara abjad angka, garis bawah (_), garis miring (/), dan sempang (-) dibenarkan.", "StartTimeMustBeInTheFuture": "Masa mula mestilah selepas masa semasa.", - "PreOpenPortMaxCountLimit_0": "__NOT_TRANSLATED__", - "EnqueueComputeSessionWarning": "__NOT_TRANSLATED__", - "SessionName": "__NOT_TRANSLATED__", - "ResetFormConfirm": "__NOT_TRANSLATED__", - "TemplateAndHistory": "__NOT_TRANSLATED__", - "ScheduleTimeSimple": "__NOT_TRANSLATED__", + "PreOpenPortMaxCountLimit_0": "", + "EnqueueComputeSessionWarning": "", + "SessionName": "", + "ResetFormConfirm": "", + "TemplateAndHistory": "", + "ScheduleTimeSimple": "", "ResourceAllocationPerContainer": "Peruntukan Sumber Setiap Bekas", "NumberOfContainer": "Bilangan bekas", "EnterEnvironmentVariable": "Masukkan nama Pembolehubah", "EnvironmentVariableNamePatternError": "Nama pembolehubah mesti bermula dengan huruf atau garis bawah, dan hanya boleh mengandungi huruf, nombor dan garis bawah.", - "EnvironmentVariableDuplicateName": "Nama pembolehubah ini sudah wujud." + "EnvironmentVariableDuplicateName": "Nama pembolehubah ini sudah wujud.", + "Template": "Templat Sesi" }, "Preparing": "Menyiapkan ...", "PreparingSession": "Menyiapkan sesi ...", @@ -398,7 +400,9 @@ "Unset": "Tidak ditetapkan", "OK": "okey", "Commit": "komited", - "EnterManually": "Masukkan Secara Manual" + "EnterManually": "Masukkan Secara Manual", + "Download": "Muat turun", + "Clone": "Klon" }, "agent": { "Endpoint": "Titik Akhir", @@ -442,7 +446,7 @@ "Enabled": "Diaktifkan", "StorageProxies": "Stor", "None": "tiada", - "Image": "__NOT_TRANSLATED__" + "Image": "" }, "credential": { "Permission": "Kebenaran", @@ -520,7 +524,7 @@ "SignoutSeccessfullyFinished": "Log keluar telah selesai dengan selamat", "Status": "Status", "NoUserToDisplay": "Tiada Pengguna untuk dipaparkan", - "EnableSudoSession": "__NOT_TRANSLATED__" + "EnableSudoSession": "" }, "data": { "Folders": "Folder", @@ -686,7 +690,11 @@ "Pipeline": "Folder Saluran Paip", "DialogDataFolder": "Folder khusus saluran paip yang dibuat secara automatik apabila membuat saluran paip dalam FastTrack.", "DialogModelFolder": "Anda boleh berkhidmat dan mengurus model.", - "SearchByName": "Cari mengikut nama" + "SearchByName": "Cari mengikut nama", + "ModelStore": "", + "New": "__NOT_TRANSLATED__", + "Add": "Tambah", + "CloningIsOnlyPossibleSameHost": "Pada masa ini, pengklonan hanya boleh dilakukan pada hos yang sama." }, "dialog": { "warning": { @@ -778,7 +786,7 @@ "SharedMemory": "Memori bersama (GB)", "NoResourcePresetToDisplay": "Tiada Pratetap Sumber untuk dipaparkan", "Deleted": "Pratetap sumber berjaya dipadamkan.", - "SHMEMShouldBeSmallerThanMemory": "__NOT_TRANSLATED__" + "SHMEMShouldBeSmallerThanMemory": "" }, "usersettings": { "General": "Am", @@ -915,7 +923,7 @@ "RegistrySuccessfullyModified": "Pendaftaran berjaya diubah suai.", "NoRegistryToDisplay": "Tiada Pendaftaran untuk dipaparkan", "ModifyRegistry": "Ubah suai Pendaftaran", - "ConfirmNoUserName": "__NOT_TRANSLATED__" + "ConfirmNoUserName": "" }, "resourceGroup": { "ResourceGroups": "Kumpulan Sumber", @@ -1437,5 +1445,32 @@ "OpenVSCodeRemote": "Buka Kod Visual Studio tempatan", "inputLimit": { "4to64chars": "(4~64 aksara)" + }, + "modelStore": { + "Description": "Penerangan", + "Model": "Model", + "FilterByName": "Tapis Mengikut Nama", + "ServiceDetails": "Butiran Perkhidmatan", + "Metadata": "Metadata", + "ModelPath": "Laluan Model", + "SearchModels": "Cari Model", + "MinResource": "Sumber Min", + "LastModified": "Terakhir Diubah Suai", + "Created": "Dicipta", + "Version": "Versi", + "Author": "Pengarang", + "MaxRetries": "Max Cuba Semula", + "Path": "Laluan", + "HealthCheck": "Pemeriksaan kesihatan", + "Port": "Pelabuhan", + "StartCommand": "Mulakan Perintah", + "PreStartActions": "Tindakan Pra Mula", + "Framework": "Rangka kerja", + "Category": "kategori", + "Label": "Label", + "Task": "Tugasan", + "CloneAsFolder": "Klon sebagai Folder", + "CloneSuccess": "Permintaan klon telah berjaya dihantar.", + "CloneInfo": "Ia akan diklonkan sebagai folder jenis pengguna anda." } } diff --git a/resources/i18n/pl.json b/resources/i18n/pl.json index c7e67f464e..6522fa8d2d 100644 --- a/resources/i18n/pl.json +++ b/resources/i18n/pl.json @@ -61,7 +61,8 @@ "PasswordChangePlace": "Kliknij ikonę osoby na górnym pasku i przejdź do menu \"Moje konto\".", "Notifications": "Powiadomienia", "Tasks": "Zadania", - "FastTrack": "FastTrack" + "FastTrack": "FastTrack", + "Data&Model": "" }, "YouAreOffline": "Jesteś teraz offline", "YouAreOnline": "Jesteś teraz online", @@ -240,19 +241,20 @@ "FolderAliasInvalid": "Dozwolone są tylko znaki alfanumeryczne, podkreślenie (_), ukośnik (/) i myślnik (-).", "PreOpenPortMaxCountLimit": "Można ustawić do {{count}} wstępnie otwartych portów.", "StartTimeMustBeInTheFuture": "Czas rozpoczęcia musi być po czasie bieżącym.", - "PreOpenPortMaxCountLimit_0": "__NOT_TRANSLATED__", - "PreOpenPortMaxCountLimit_1": "__NOT_TRANSLATED__", - "PreOpenPortMaxCountLimit_2": "__NOT_TRANSLATED__", - "EnqueueComputeSessionWarning": "__NOT_TRANSLATED__", - "SessionName": "__NOT_TRANSLATED__", - "ResetFormConfirm": "__NOT_TRANSLATED__", - "TemplateAndHistory": "__NOT_TRANSLATED__", - "ScheduleTimeSimple": "__NOT_TRANSLATED__", + "PreOpenPortMaxCountLimit_0": "", + "PreOpenPortMaxCountLimit_1": "", + "PreOpenPortMaxCountLimit_2": "", + "EnqueueComputeSessionWarning": "", + "SessionName": "", + "ResetFormConfirm": "", + "TemplateAndHistory": "", + "ScheduleTimeSimple": "", "ResourceAllocationPerContainer": "Alokacja zasobów na kontener", "NumberOfContainer": "Liczba pojemników", "EnterEnvironmentVariable": "Wprowadź nazwę zmiennej", "EnvironmentVariableNamePatternError": "Nazwa zmiennej musi zaczynać się od litery lub podkreślenia i może zawierać tylko litery, cyfry i podkreślenia.", - "EnvironmentVariableDuplicateName": "Nazwa zmiennej, która już istnieje." + "EnvironmentVariableDuplicateName": "Nazwa zmiennej, która już istnieje.", + "Template": "Szablon sesji" }, "Preparing": "Przygotowuję...", "PreparingSession": "Przygotowuję sesję...", @@ -401,7 +403,9 @@ "Unset": "Nieustawiony", "OK": "OK", "Commit": "Zobowiązanie", - "EnterManually": "Wprowadź ręcznie" + "EnterManually": "Wprowadź ręcznie", + "Download": "Pobierz", + "Clone": "Klon" }, "agent": { "Endpoint": "Punkt końcowy", @@ -445,7 +449,7 @@ "Enabled": "Włączone", "StorageProxies": "Magazyny", "None": "Brak", - "Image": "__NOT_TRANSLATED__" + "Image": "" }, "credential": { "Permission": "Pozwolenie", @@ -523,7 +527,7 @@ "SignoutSeccessfullyFinished": "Wylogowanie zostało pomyślnie zakończone", "Status": "Status", "NoUserToDisplay": "Brak użytkowników do wyświetlenia", - "EnableSudoSession": "__NOT_TRANSLATED__" + "EnableSudoSession": "" }, "data": { "Folders": "Lornetka składana", @@ -689,7 +693,11 @@ "Pipeline": "Foldery rurociągów", "DialogDataFolder": "Dedykowane potokom foldery, które są automatycznie tworzone podczas tworzenia potoków w FastTrack.", "DialogModelFolder": "Możesz obsługiwać modele i zarządzać nimi.", - "SearchByName": "Szukaj według nazwy" + "SearchByName": "Szukaj według nazwy", + "ModelStore": "", + "New": "__NOT_TRANSLATED__", + "Add": "Dodaj", + "CloningIsOnlyPossibleSameHost": "Obecnie klonowanie jest możliwe tylko na tym samym hoście." }, "dialog": { "warning": { @@ -1440,5 +1448,32 @@ "OpenVSCodeRemote": "Otwórz lokalny kod Visual Studio", "inputLimit": { "4to64chars": "(4~64 znaki)" + }, + "modelStore": { + "Description": "Opis", + "Model": "Model", + "FilterByName": "Filtruj według nazwy", + "ServiceDetails": "Szczegóły usługi", + "Metadata": "Metadane", + "ModelPath": "Ścieżka modelu", + "SearchModels": "Wyszukaj modele", + "MinResource": "Minimalny zasób", + "LastModified": "Ostatnio zmodyfikowany", + "Created": "Utworzony", + "Version": "Wersja", + "Author": "Autor", + "MaxRetries": "Maksymalna liczba ponownych prób", + "Path": "Ścieżka", + "HealthCheck": "Kontrola zdrowia", + "Port": "Port", + "StartCommand": "Uruchom polecenie", + "PreStartActions": "Działania przed rozpoczęciem", + "Framework": "Ramy", + "Category": "Kategoria", + "Label": "Etykieta", + "Task": "Zadanie", + "CloneAsFolder": "Sklonuj jako Folder", + "CloneSuccess": "Żądanie klonowania zostało wysłane pomyślnie.", + "CloneInfo": "Zostanie on sklonowany jako folder typu użytkownika." } } diff --git a/resources/i18n/pt-BR.json b/resources/i18n/pt-BR.json index 4ecf3b740f..c6c943cb1f 100644 --- a/resources/i18n/pt-BR.json +++ b/resources/i18n/pt-BR.json @@ -61,7 +61,8 @@ "PasswordChangePlace": "Clique no ícone da pessoa na barra superior e aceda ao menu \"A minha conta\".", "Notifications": "Notificações", "Tasks": "Tarefas", - "FastTrack": "FastTrack" + "FastTrack": "FastTrack", + "Data&Model": "" }, "YouAreOffline": "Agora você está offline", "YouAreOnline": "Agora você está online", @@ -240,17 +241,18 @@ "FolderAliasInvalid": "Somente caracteres alfanuméricos, sublinhado (_), barra (/) e traço (-) são permitidos.", "PreOpenPortMaxCountLimit": "Pode definir até {{count}} portas pré-abertas.", "StartTimeMustBeInTheFuture": "A hora de início deve ser posterior à hora atual.", - "PreOpenPortMaxCountLimit_plural": "__NOT_TRANSLATED__", - "EnqueueComputeSessionWarning": "__NOT_TRANSLATED__", - "SessionName": "__NOT_TRANSLATED__", - "ResetFormConfirm": "__NOT_TRANSLATED__", - "TemplateAndHistory": "__NOT_TRANSLATED__", - "ScheduleTimeSimple": "__NOT_TRANSLATED__", + "PreOpenPortMaxCountLimit_plural": "", + "EnqueueComputeSessionWarning": "", + "SessionName": "", + "ResetFormConfirm": "", + "TemplateAndHistory": "", + "ScheduleTimeSimple": "", "ResourceAllocationPerContainer": "Atribuição de recursos por contentor", "NumberOfContainer": "Número de contentores", "EnterEnvironmentVariable": "Introduzir o nome da variável", "EnvironmentVariableNamePatternError": "O nome da variável deve começar com uma letra ou um sublinhado e só pode conter letras, números e sublinhados.", - "EnvironmentVariableDuplicateName": "Um nome de variável que já existe." + "EnvironmentVariableDuplicateName": "Um nome de variável que já existe.", + "Template": "Modelo de sessão" }, "Preparing": "Preparando...", "PreparingSession": "Preparando sessão ...", @@ -399,7 +401,9 @@ "Unset": "Não definido", "OK": "OK", "Commit": "Compromisso", - "EnterManually": "Introduzir manualmente" + "EnterManually": "Introduzir manualmente", + "Download": "Descarregar", + "Clone": "Clone" }, "agent": { "Endpoint": "Endpoint", @@ -443,7 +447,7 @@ "Enabled": "Habilitado", "StorageProxies": "Armazéns", "None": "Nenhum", - "Image": "__NOT_TRANSLATED__" + "Image": "" }, "credential": { "Permission": "Permissão", @@ -521,7 +525,7 @@ "SignoutSeccessfullyFinished": "O registo foi concluído com êxito", "Status": "Estado", "NoUserToDisplay": "Nenhum utilizador a apresentar", - "EnableSudoSession": "__NOT_TRANSLATED__" + "EnableSudoSession": "" }, "data": { "Folders": "Pastas", @@ -687,7 +691,11 @@ "Pipeline": "Pastas de pipelines", "DialogDataFolder": "Pastas dedicadas ao pipeline que são criadas automaticamente ao criar pipelines no FastTrack.", "DialogModelFolder": "Pode servir e gerir modelos.", - "SearchByName": "Procura por nome" + "SearchByName": "Procura por nome", + "ModelStore": "", + "New": "__NOT_TRANSLATED__", + "Add": "Adicionar", + "CloningIsOnlyPossibleSameHost": "Atualmente, a clonagem só é possível no mesmo host." }, "dialog": { "warning": { @@ -1438,5 +1446,32 @@ "OpenVSCodeRemote": "Abrir o código local do Visual Studio", "inputLimit": { "4to64chars": "(4~64 caracteres)" + }, + "modelStore": { + "Description": "Descrição", + "Model": "Modelo", + "FilterByName": "Filtrar por nome", + "ServiceDetails": "Detalhes do serviço", + "Metadata": "Metadados", + "ModelPath": "Caminho do modelo", + "SearchModels": "Pesquisar modelos", + "MinResource": "Recurso mínimo", + "LastModified": "Última modificação", + "Created": "Criada", + "Version": "Versão", + "Author": "Autor", + "MaxRetries": "Máximo de tentativas", + "Path": "Caminho", + "HealthCheck": "Exame de saúde", + "Port": "Porta", + "StartCommand": "Comando Iniciar", + "PreStartActions": "Ações pré-início", + "Framework": "Enquadramento", + "Category": "Categoria", + "Label": "Etiqueta", + "Task": "Tarefa", + "CloneAsFolder": "Clonar como Pasta", + "CloneSuccess": "O pedido de clone foi enviado com sucesso.", + "CloneInfo": "Será clonada como a pasta do seu tipo de utilizador." } } diff --git a/resources/i18n/pt.json b/resources/i18n/pt.json index ddbae3ef12..ae1aed9674 100644 --- a/resources/i18n/pt.json +++ b/resources/i18n/pt.json @@ -61,7 +61,8 @@ "PasswordChangePlace": "Clique no ícone da pessoa na barra superior e aceda ao menu \"A minha conta\".", "Notifications": "Notificações", "Tasks": "Tarefas", - "FastTrack": "FastTrack" + "FastTrack": "FastTrack", + "Data&Model": "" }, "YouAreOffline": "Agora você está offline", "YouAreOnline": "Agora você está online", @@ -240,17 +241,18 @@ "FolderAliasInvalid": "Somente caracteres alfanuméricos, sublinhado (_), barra (/) e traço (-) são permitidos.", "PreOpenPortMaxCountLimit": "Pode definir até {{count}} portas pré-abertas.", "StartTimeMustBeInTheFuture": "A hora de início deve ser posterior à hora atual.", - "PreOpenPortMaxCountLimit_plural": "__NOT_TRANSLATED__", - "EnqueueComputeSessionWarning": "__NOT_TRANSLATED__", - "SessionName": "__NOT_TRANSLATED__", - "ResetFormConfirm": "__NOT_TRANSLATED__", - "TemplateAndHistory": "__NOT_TRANSLATED__", - "ScheduleTimeSimple": "__NOT_TRANSLATED__", + "PreOpenPortMaxCountLimit_plural": "", + "EnqueueComputeSessionWarning": "", + "SessionName": "", + "ResetFormConfirm": "", + "TemplateAndHistory": "", + "ScheduleTimeSimple": "", "ResourceAllocationPerContainer": "Atribuição de recursos por contentor", "NumberOfContainer": "Número de contentores", "EnterEnvironmentVariable": "Introduzir o nome da variável", "EnvironmentVariableNamePatternError": "O nome da variável deve começar com uma letra ou um sublinhado e só pode conter letras, números e sublinhados.", - "EnvironmentVariableDuplicateName": "Um nome de variável que já existe." + "EnvironmentVariableDuplicateName": "Um nome de variável que já existe.", + "Template": "Modelo de sessão" }, "Preparing": "Preparando...", "PreparingSession": "Preparando sessão ...", @@ -399,7 +401,9 @@ "Unset": "Não definido", "OK": "OK", "Commit": "Compromisso", - "EnterManually": "Introduzir manualmente" + "EnterManually": "Introduzir manualmente", + "Download": "Descarregar", + "Clone": "Clone" }, "agent": { "Endpoint": "Endpoint", @@ -443,7 +447,7 @@ "Enabled": "Habilitado", "StorageProxies": "Armazéns", "None": "Nenhum", - "Image": "__NOT_TRANSLATED__" + "Image": "" }, "credential": { "Permission": "Permissão", @@ -521,7 +525,7 @@ "SignoutSeccessfullyFinished": "O registo foi concluído com êxito", "Status": "Estado", "NoUserToDisplay": "Nenhum utilizador a apresentar", - "EnableSudoSession": "__NOT_TRANSLATED__" + "EnableSudoSession": "" }, "data": { "Folders": "Pastas", @@ -687,7 +691,11 @@ "Pipeline": "Pastas de pipelines", "DialogDataFolder": "Pastas dedicadas ao pipeline que são criadas automaticamente ao criar pipelines no FastTrack.", "DialogModelFolder": "Pode servir e gerir modelos.", - "SearchByName": "Procura por nome" + "SearchByName": "Procura por nome", + "ModelStore": "", + "New": "__NOT_TRANSLATED__", + "Add": "Adicionar", + "CloningIsOnlyPossibleSameHost": "Atualmente, a clonagem só é possível no mesmo host." }, "dialog": { "warning": { @@ -1438,5 +1446,32 @@ "OpenVSCodeRemote": "Abrir o código local do Visual Studio", "inputLimit": { "4to64chars": "(4~64 caracteres)" + }, + "modelStore": { + "Description": "Descrição", + "Model": "Modelo", + "FilterByName": "Filtrar por nome", + "ServiceDetails": "Detalhes do serviço", + "Metadata": "Metadados", + "ModelPath": "Caminho do modelo", + "SearchModels": "Pesquisar modelos", + "MinResource": "Recurso mínimo", + "LastModified": "Última modificação", + "Created": "Criada", + "Version": "Versão", + "Author": "Autor", + "MaxRetries": "Máximo de tentativas", + "Path": "Caminho", + "HealthCheck": "Exame de saúde", + "Port": "Porta", + "StartCommand": "Comando Iniciar", + "PreStartActions": "Ações pré-início", + "Framework": "Enquadramento", + "Category": "Categoria", + "Label": "Etiqueta", + "Task": "Tarefa", + "CloneAsFolder": "Clonar como Pasta", + "CloneSuccess": "O pedido de clone foi enviado com sucesso.", + "CloneInfo": "Será clonada como a pasta do seu tipo de utilizador." } } diff --git a/resources/i18n/ru.json b/resources/i18n/ru.json index f5291295fe..b5c805d566 100644 --- a/resources/i18n/ru.json +++ b/resources/i18n/ru.json @@ -61,7 +61,8 @@ "YouMushChangeYourPassword": "В целях безопасности рекомендуется периодически менять пароль. Поскольку с момента последней смены пароля прошло определенное время, для продолжения использования сервиса необходимо его сменить.", "NewPasswordCannotBeSame": "Пожалуйста, введите пароль, отличный от Вашего текущего пароля.", "PleaseConfirmYourPassword": "Пожалуйста, подтвердите свой пароль", - "FastTrack": "FastTrack" + "FastTrack": "FastTrack", + "Data&Model": "" }, "YouAreOffline": "Вы сейчас не в сети", "YouAreOnline": "Вы сейчас в сети", @@ -240,19 +241,20 @@ "FolderAliasInvalid": "Разрешены только буквенно-цифровые символы, подчеркивание (_), косая черта (/) и тире (-).", "PreOpenPortMaxCountLimit": "Можно задать до {{count}} предварительно открытых портов.", "StartTimeMustBeInTheFuture": "Время начала должно быть после текущего времени.", - "PreOpenPortMaxCountLimit_0": "__NOT_TRANSLATED__", - "PreOpenPortMaxCountLimit_1": "__NOT_TRANSLATED__", - "PreOpenPortMaxCountLimit_2": "__NOT_TRANSLATED__", - "EnqueueComputeSessionWarning": "__NOT_TRANSLATED__", - "SessionName": "__NOT_TRANSLATED__", - "ResetFormConfirm": "__NOT_TRANSLATED__", - "TemplateAndHistory": "__NOT_TRANSLATED__", - "ScheduleTimeSimple": "__NOT_TRANSLATED__", + "PreOpenPortMaxCountLimit_0": "", + "PreOpenPortMaxCountLimit_1": "", + "PreOpenPortMaxCountLimit_2": "", + "EnqueueComputeSessionWarning": "", + "SessionName": "", + "ResetFormConfirm": "", + "TemplateAndHistory": "", + "ScheduleTimeSimple": "", "ResourceAllocationPerContainer": "Распределение ресурсов на контейнер", "NumberOfContainer": "Количество контейнеров", "EnterEnvironmentVariable": "Введите имя переменной", "EnvironmentVariableNamePatternError": "Имя переменной должно начинаться с буквы или символа подчеркивания и может содержать только буквы, цифры и символы подчеркивания.", - "EnvironmentVariableDuplicateName": "Имя переменной, которая уже существует." + "EnvironmentVariableDuplicateName": "Имя переменной, которая уже существует.", + "Template": "Шаблон сессии" }, "Preparing": "Подготовка ...", "PreparingSession": "Подготовка сеанса ...", @@ -401,7 +403,9 @@ "Reset": "Перезагрузить", "EnterManually": "Ввести вручную", "Unset": "Unset", - "OK": "OK" + "OK": "OK", + "Download": "Скачать", + "Clone": "Клон" }, "agent": { "Endpoint": "Конечная точка", @@ -445,7 +449,7 @@ "Enabled": "Включено", "StorageProxies": "Хранилища данных", "None": "Нет", - "Image": "__NOT_TRANSLATED__" + "Image": "" }, "credential": { "Permission": "Разрешение", @@ -523,7 +527,7 @@ "KeySeccessfullyDeleted": "Пара ключей удалена без последствий.", "SignoutSeccessfullyFinished": "Выход из системы завершен", "ModifyUserDetail": "Изменение сведений о пользователе", - "EnableSudoSession": "__NOT_TRANSLATED__" + "EnableSudoSession": "" }, "data": { "Folders": "Папки", @@ -689,7 +693,11 @@ "Used": "Используется", "Pipeline": "Трубопроводные папки", "DialogDataFolder": "Специальные папки для трубопроводов, которые автоматически создаются при создании трубопроводов в FastTrack.", - "SearchByName": "Поиск по имени" + "SearchByName": "Поиск по имени", + "ModelStore": "", + "New": "__NOT_TRANSLATED__", + "Add": "Добавить", + "CloningIsOnlyPossibleSameHost": "В настоящее время клонирование возможно только на том же хосте." }, "dialog": { "warning": { @@ -1440,5 +1448,32 @@ "reloadPage": "Перезагрузить страницу", "resetErrorBoundary": "Сброс границы ошибки", "displayOnlyDevEnv": "Данный блок ошибок отображается только в среде разработки WebUI." + }, + "modelStore": { + "Description": "Описание", + "Model": "Модель", + "FilterByName": "Фильтровать по имени", + "ServiceDetails": "Детали услуги", + "Metadata": "Метаданные", + "ModelPath": "Путь модели", + "SearchModels": "Поиск моделей", + "MinResource": "Минимальный ресурс", + "LastModified": "Последнее изменение", + "Created": "Созданный", + "Version": "Версия", + "Author": "Автор", + "MaxRetries": "Макс. повторов", + "Path": "Путь", + "HealthCheck": "Проверка здоровья", + "Port": "Порт", + "StartCommand": "Запустить команду", + "PreStartActions": "Предстартовые действия", + "Framework": "Рамка", + "Category": "Категория", + "Label": "Этикетка", + "Task": "Задание", + "CloneAsFolder": "клонировать как папку", + "CloneSuccess": "Запрос на клонирование успешно отправлен.", + "CloneInfo": "Она будет клонирована как папка вашего типа пользователя." } } diff --git a/resources/i18n/tr.json b/resources/i18n/tr.json index 82016bb46c..50a47c0d7e 100644 --- a/resources/i18n/tr.json +++ b/resources/i18n/tr.json @@ -61,7 +61,8 @@ "PasswordChangePlace": "Üst çubuktaki kişi simgesine tıklayın ve \"Hesabım\" menüsüne gidin.", "Notifications": "Bildirimler", "Tasks": "Görevler", - "FastTrack": "FastTrack" + "FastTrack": "FastTrack", + "Data&Model": "" }, "YouAreOffline": "Şu anda çevrimdışısın", "YouAreOnline": "artık çevrimiçisin", @@ -240,17 +241,18 @@ "FolderAliasInvalid": "Yalnızca alfasayısal karakterlere, alt çizgiye (_), eğik çizgiye (/) ve kısa çizgiye (-) izin verilir.", "PreOpenPortMaxCountLimit": "En fazla {{sayı}} ön açık bağlantı noktası ayarlayabilirsiniz.", "StartTimeMustBeInTheFuture": "Başlangıç zamanı geçerli saatten sonra olmalıdır.", - "PreOpenPortMaxCountLimit_plural": "__NOT_TRANSLATED__", - "EnqueueComputeSessionWarning": "__NOT_TRANSLATED__", - "SessionName": "__NOT_TRANSLATED__", - "ResetFormConfirm": "__NOT_TRANSLATED__", - "TemplateAndHistory": "__NOT_TRANSLATED__", - "ScheduleTimeSimple": "__NOT_TRANSLATED__", + "PreOpenPortMaxCountLimit_plural": "", + "EnqueueComputeSessionWarning": "", + "SessionName": "", + "ResetFormConfirm": "", + "TemplateAndHistory": "", + "ScheduleTimeSimple": "", "ResourceAllocationPerContainer": "Konteyner Başına Kaynak Tahsisi", "NumberOfContainer": "Konteyner sayısı", "EnterEnvironmentVariable": "Değişken adını girin", "EnvironmentVariableNamePatternError": "Değişken adı bir harf veya alt çizgi ile başlamalıdır ve yalnızca harfler, sayılar ve alt çizgiler içerebilir.", - "EnvironmentVariableDuplicateName": "Zaten var olan bir değişken adı." + "EnvironmentVariableDuplicateName": "Zaten var olan bir değişken adı.", + "Template": "Oturum Şablonu" }, "Preparing": "hazırlanıyor...", "PreparingSession": "Oturum hazırlanıyor...", @@ -399,7 +401,9 @@ "Unset": "Ayarlanmamış", "OK": "TAMAM.", "Commit": "Taahhüt", - "EnterManually": "Manuel Olarak Girin" + "EnterManually": "Manuel Olarak Girin", + "Download": "İndir", + "Clone": "Klon" }, "agent": { "Endpoint": "uç nokta", @@ -443,7 +447,7 @@ "Enabled": "Etkin", "StorageProxies": "Depolar", "None": "Hiçbiri", - "Image": "__NOT_TRANSLATED__" + "Image": "" }, "credential": { "Permission": "izin", @@ -521,7 +525,7 @@ "SignoutSeccessfullyFinished": "Çıkış işlemi başarıyla tamamlandı", "Status": "Durum", "NoUserToDisplay": "Görüntülenecek Kullanıcı Yok", - "EnableSudoSession": "__NOT_TRANSLATED__" + "EnableSudoSession": "" }, "data": { "Folders": "klasörler", @@ -687,7 +691,11 @@ "Pipeline": "Boru Hattı Klasörleri", "DialogDataFolder": "FastTrack'te boru hatları oluşturulurken otomatik olarak oluşturulan boru hattına özel klasörler.", "DialogModelFolder": "Modellere hizmet verebilir ve yönetebilirsiniz.", - "SearchByName": "Ada göre ara" + "SearchByName": "Ada göre ara", + "ModelStore": "", + "New": "__NOT_TRANSLATED__", + "Add": "Ekle", + "CloningIsOnlyPossibleSameHost": "Şu anda klonlama yalnızca aynı ana bilgisayarda mümkündür." }, "dialog": { "warning": { @@ -1438,5 +1446,32 @@ "OpenVSCodeRemote": "Yerel Visual Studio Kodunu açın", "inputLimit": { "4to64chars": "(4~64 karakter)" + }, + "modelStore": { + "Description": "Tanım", + "Model": "Modeli", + "FilterByName": "Ada Göre Filtrele", + "ServiceDetails": "Hizmet Detayları", + "Metadata": "Meta veriler", + "ModelPath": "Model Yolu", + "SearchModels": "Modelleri Ara", + "MinResource": "Minimum Kaynak", + "LastModified": "Son düzenleme", + "Created": "Oluşturuldu", + "Version": "Sürüm", + "Author": "Yazar", + "MaxRetries": "Maksimum Yeniden Deneme Sayısı", + "Path": "Yol", + "HealthCheck": "Sağlık kontrolü", + "Port": "Liman", + "StartCommand": "Komutu Başlat", + "PreStartActions": "Başlangıç ​​Öncesi Eylemler", + "Framework": "Çerçeve", + "Category": "Kategori", + "Label": "Etiket", + "Task": "Görev", + "CloneAsFolder": "Klasör olarak klonla", + "CloneSuccess": "Klonlama isteği başarıyla gönderildi.", + "CloneInfo": "Kullanıcı tipi klasörünüz olarak klonlanacaktır." } } diff --git a/resources/i18n/vi.json b/resources/i18n/vi.json index 7d748c08bd..86ef5600cf 100644 --- a/resources/i18n/vi.json +++ b/resources/i18n/vi.json @@ -61,7 +61,8 @@ "PasswordChangePlace": "Nhấp vào biểu tượng hình người ở thanh trên cùng và chuyển đến menu \"Tài khoản của tôi\".", "Notifications": "Thông báo", "Tasks": "Nhiệm vụ", - "FastTrack": "FastTrack" + "FastTrack": "FastTrack", + "Data&Model": "" }, "YouAreOffline": "Bạn hiện đang ngoại tuyến", "YouAreOnline": "Bạn hiện đang trực tuyến", @@ -239,17 +240,18 @@ "Enable": "Cho phép", "FolderAliasInvalid": "Chỉ cho phép các ký tự chữ và số, dấu gạch dưới (_), dấu gạch chéo (/) và dấu gạch ngang (-).", "StartTimeMustBeInTheFuture": "Thời gian bắt đầu phải sau thời gian hiện tại.", - "PreOpenPortMaxCountLimit_0": "__NOT_TRANSLATED__", - "EnqueueComputeSessionWarning": "__NOT_TRANSLATED__", - "SessionName": "__NOT_TRANSLATED__", - "ResetFormConfirm": "__NOT_TRANSLATED__", - "TemplateAndHistory": "__NOT_TRANSLATED__", - "ScheduleTimeSimple": "__NOT_TRANSLATED__", + "PreOpenPortMaxCountLimit_0": "", + "EnqueueComputeSessionWarning": "", + "SessionName": "", + "ResetFormConfirm": "", + "TemplateAndHistory": "", + "ScheduleTimeSimple": "", "ResourceAllocationPerContainer": "Phân bổ tài nguyên trên mỗi vùng chứa", "NumberOfContainer": "Số lượng thùng chứa", "EnterEnvironmentVariable": "Nhập tên biến", "EnvironmentVariableNamePatternError": "Tên biến phải bắt đầu bằng một chữ cái hoặc dấu gạch dưới và chỉ có thể chứa các chữ cái, số và dấu gạch dưới.", - "EnvironmentVariableDuplicateName": "Tên biến này đã tồn tại." + "EnvironmentVariableDuplicateName": "Tên biến này đã tồn tại.", + "Template": "Mẫu phiên" }, "Preparing": "Đang chuẩn bị ...", "PreparingSession": "Đang chuẩn bị phiên ...", @@ -398,7 +400,9 @@ "Unset": "Bỏ đặt", "OK": "ĐƯỢC RỒI", "Commit": "Làm", - "EnterManually": "Nhập thủ công" + "EnterManually": "Nhập thủ công", + "Download": "Tải xuống", + "Clone": "Dòng vô tính" }, "agent": { "Endpoint": "Điểm cuối", @@ -442,7 +446,7 @@ "Enabled": "Đã bật", "StorageProxies": "Kho lưu trữ", "None": "Không có", - "Image": "__NOT_TRANSLATED__" + "Image": "" }, "credential": { "Permission": "Sự cho phép", @@ -520,7 +524,7 @@ "SignoutSeccessfullyFinished": "Đăng xuất đã hoàn tất thành công", "Status": "Trạng thái", "NoUserToDisplay": "Không có người dùng để hiển thị", - "EnableSudoSession": "__NOT_TRANSLATED__" + "EnableSudoSession": "" }, "data": { "Folders": "Thư mục", @@ -686,7 +690,11 @@ "Pipeline": "Thư mục đường ống", "DialogDataFolder": "Các thư mục dành riêng cho đường dẫn được tạo tự động khi tạo đường dẫn trong FastTrack.", "DialogModelFolder": "Bạn có thể phục vụ và quản lý các mô hình.", - "SearchByName": "Tìm kiếm theo tên" + "SearchByName": "Tìm kiếm theo tên", + "ModelStore": "", + "New": "__NOT_TRANSLATED__", + "Add": "Thêm vào", + "CloningIsOnlyPossibleSameHost": "Hiện tại, việc nhân bản chỉ có thể thực hiện được trên cùng một máy chủ." }, "dialog": { "warning": { @@ -778,7 +786,7 @@ "SharedMemory": "Bộ nhớ dùng chung (GB)", "NoResourcePresetToDisplay": "Không có cài đặt trước tài nguyên nào để hiển thị", "Deleted": "Cài đặt trước tài nguyên đã được xóa thành công.", - "SHMEMShouldBeSmallerThanMemory": "__NOT_TRANSLATED__" + "SHMEMShouldBeSmallerThanMemory": "" }, "usersettings": { "General": "Chung", @@ -915,7 +923,7 @@ "RegistrySuccessfullyModified": "Đã sửa đổi sổ đăng ký thành công.", "NoRegistryToDisplay": "Không có đăng ký để hiển thị", "ModifyRegistry": "Sửa đổi sổ đăng ký", - "ConfirmNoUserName": "__NOT_TRANSLATED__" + "ConfirmNoUserName": "" }, "resourceGroup": { "ResourceGroups": "Nhóm tài nguyên", @@ -1437,5 +1445,32 @@ "OpenVSCodeRemote": "Mở mã Visual Studio cục bộ", "inputLimit": { "4to64chars": "(4~64 ký tự)" + }, + "modelStore": { + "Description": "Sự miêu tả", + "Model": "Người mẫu", + "FilterByName": "Lọc theo tên", + "ServiceDetails": "Chi tiết dịch vụ", + "Metadata": "metadata", + "ModelPath": "Đường dẫn mẫu", + "SearchModels": "Tìm kiếm mô hình", + "MinResource": "Tài nguyên tối thiểu", + "LastModified": "Sửa đổi lần cuối", + "Created": "Tạo", + "Version": "Phiên bản", + "Author": "Tác giả", + "MaxRetries": "Số lần thử lại tối đa", + "Path": "Con đường", + "HealthCheck": "Kiểm tra sức khỏe", + "Port": "Hải cảng", + "StartCommand": "Bắt đầu lệnh", + "PreStartActions": "Hành động trước khi bắt đầu", + "Framework": "Khung", + "Category": "Loại", + "Label": "Nhãn", + "Task": "Nhiệm vụ", + "CloneAsFolder": "Sao chép dưới dạng Thư mục", + "CloneSuccess": "Yêu cầu nhân bản đã được gửi thành công.", + "CloneInfo": "Nó sẽ được sao chép thành thư mục loại người dùng của bạn." } } diff --git a/resources/i18n/zh-CN.json b/resources/i18n/zh-CN.json index f42603e632..bc16e82577 100644 --- a/resources/i18n/zh-CN.json +++ b/resources/i18n/zh-CN.json @@ -61,7 +61,8 @@ "PasswordChangePlace": "点击顶部栏上的个人图标,进入 \"我的账户 \"菜单。", "Notifications": "通知", "Tasks": "任务", - "FastTrack": "FastTrack" + "FastTrack": "FastTrack", + "Data&Model": "" }, "YouAreOffline": "您现在离线", "YouAreOnline": "您现在在线", @@ -240,17 +241,18 @@ "FolderAliasInvalid": "只能输入大小写字母、数字、下划线 (_)、斜线 (/) 和破折号 (-)。", "PreOpenPortMaxCountLimit": "您最多可以设置 {{count}} 个预开放端口。", "StartTimeMustBeInTheFuture": "开始时间必须在当前时间之后。", - "PreOpenPortMaxCountLimit_0": "__NOT_TRANSLATED__", - "EnqueueComputeSessionWarning": "__NOT_TRANSLATED__", - "SessionName": "__NOT_TRANSLATED__", - "ResetFormConfirm": "__NOT_TRANSLATED__", - "TemplateAndHistory": "__NOT_TRANSLATED__", - "ScheduleTimeSimple": "__NOT_TRANSLATED__", + "PreOpenPortMaxCountLimit_0": "", + "EnqueueComputeSessionWarning": "", + "SessionName": "", + "ResetFormConfirm": "", + "TemplateAndHistory": "", + "ScheduleTimeSimple": "", "ResourceAllocationPerContainer": "每个集装箱的资源分配", "NumberOfContainer": "集装箱数量", "EnterEnvironmentVariable": "输入变量名称", "EnvironmentVariableNamePatternError": "变量名必须以字母或下划线开头,且只能包含字母、数字和下划线。", - "EnvironmentVariableDuplicateName": "已经存在的变量名。" + "EnvironmentVariableDuplicateName": "已经存在的变量名。", + "Template": "会议模板" }, "Preparing": "正在准备...", "PreparingSession": "正在准备会议...", @@ -399,7 +401,9 @@ "Unset": "未设置", "OK": "好的", "Commit": "承诺", - "EnterManually": "手动输入" + "EnterManually": "手动输入", + "Download": "下载", + "Clone": "克隆" }, "agent": { "Endpoint": "端点", @@ -443,7 +447,7 @@ "Enabled": "启用", "StorageProxies": "存储", "None": "无", - "Image": "__NOT_TRANSLATED__" + "Image": "" }, "credential": { "Permission": "允许", @@ -521,7 +525,7 @@ "SignoutSeccessfullyFinished": "签出已顺利完成", "Status": "现状", "NoUserToDisplay": "无用户显示", - "EnableSudoSession": "__NOT_TRANSLATED__" + "EnableSudoSession": "" }, "data": { "Folders": "文件夹", @@ -687,7 +691,11 @@ "Pipeline": "管道文件夹", "DialogDataFolder": "在 FastTrack 中创建管道时自动创建的管道专用文件夹。", "DialogModelFolder": "您可以服务和管理模型。", - "SearchByName": "按名称搜索" + "SearchByName": "按名称搜索", + "ModelStore": "", + "New": "__NOT_TRANSLATED__", + "Add": "添加", + "CloningIsOnlyPossibleSameHost": "目前,克隆只能在同一主机上进行。" }, "dialog": { "warning": { @@ -1438,5 +1446,32 @@ "OpenVSCodeRemote": "打开本地 Visual Studio 代码", "inputLimit": { "4to64chars": "(4 至 64 个字符)" + }, + "modelStore": { + "Description": "描述", + "Model": "模型", + "FilterByName": "按名称过滤", + "ServiceDetails": "服务详情", + "Metadata": "元数据", + "ModelPath": "模型路径", + "SearchModels": "搜索型号", + "MinResource": "最小资源", + "LastModified": "上一次更改", + "Created": "已创建", + "Version": "版本", + "Author": "作者", + "MaxRetries": "最大重试次数", + "Path": "小路", + "HealthCheck": "健康检查", + "Port": "港口", + "StartCommand": "启动命令", + "PreStartActions": "开始前的行动", + "Framework": "框架", + "Category": "类别", + "Label": "标签", + "Task": "任务", + "CloneAsFolder": "克隆为文件夹", + "CloneSuccess": "克隆请求已成功发送。", + "CloneInfo": "它将被克隆为用户类型文件夹。" } } diff --git a/resources/i18n/zh-TW.json b/resources/i18n/zh-TW.json index 6f3c701a70..9d30e8d4ce 100644 --- a/resources/i18n/zh-TW.json +++ b/resources/i18n/zh-TW.json @@ -61,7 +61,8 @@ "PasswordChangePlace": "点击顶部栏上的个人图标,进入 \"我的账户 \"菜单。", "Notifications": "通知", "Tasks": "任务", - "FastTrack": "FastTrack" + "FastTrack": "FastTrack", + "Data&Model": "" }, "YouAreOffline": "您現在離線", "YouAreOnline": "您現在在線", @@ -240,17 +241,18 @@ "FolderAliasInvalid": "只能輸入大小寫字母、數字、底線 (_)、斜線 (/) 和破折號 (-)。", "PreOpenPortMaxCountLimit": "您最多可以设置 {{count}} 个预开放端口。", "StartTimeMustBeInTheFuture": "开始时间必须在当前时间之后。", - "PreOpenPortMaxCountLimit_0": "__NOT_TRANSLATED__", - "EnqueueComputeSessionWarning": "__NOT_TRANSLATED__", - "SessionName": "__NOT_TRANSLATED__", - "ResetFormConfirm": "__NOT_TRANSLATED__", - "TemplateAndHistory": "__NOT_TRANSLATED__", - "ScheduleTimeSimple": "__NOT_TRANSLATED__", + "PreOpenPortMaxCountLimit_0": "", + "EnqueueComputeSessionWarning": "", + "SessionName": "", + "ResetFormConfirm": "", + "TemplateAndHistory": "", + "ScheduleTimeSimple": "", "ResourceAllocationPerContainer": "每个集装箱的资源分配", "NumberOfContainer": "集装箱数量", "EnterEnvironmentVariable": "输入变量名称", "EnvironmentVariableNamePatternError": "变量名必须以字母或下划线开头,且只能包含字母、数字和下划线。", - "EnvironmentVariableDuplicateName": "已经存在的变量名。" + "EnvironmentVariableDuplicateName": "已经存在的变量名。", + "Template": "会议模板" }, "Preparing": "正在準備...", "PreparingSession": "正在準備會議...", @@ -399,7 +401,9 @@ "Unset": "未设置", "OK": "好的", "Commit": "承诺", - "EnterManually": "手动输入" + "EnterManually": "手动输入", + "Download": "下载", + "Clone": "克隆" }, "agent": { "Endpoint": "端點", @@ -443,7 +447,7 @@ "Enabled": "啟用", "StorageProxies": "存儲", "None": "无", - "Image": "__NOT_TRANSLATED__" + "Image": "" }, "credential": { "Permission": "允許", @@ -521,7 +525,7 @@ "SignoutSeccessfullyFinished": "签出已顺利完成", "Status": "现状", "NoUserToDisplay": "无用户显示", - "EnableSudoSession": "__NOT_TRANSLATED__" + "EnableSudoSession": "" }, "data": { "Folders": "文件夾", @@ -687,7 +691,11 @@ "Pipeline": "管道文件夹", "DialogDataFolder": "在 FastTrack 中创建管道时自动创建的管道专用文件夹。", "DialogModelFolder": "您可以服务和管理模型。", - "SearchByName": "按名稱搜尋" + "SearchByName": "按名稱搜尋", + "ModelStore": "", + "New": "__NOT_TRANSLATED__", + "Add": "添加", + "CloningIsOnlyPossibleSameHost": "目前,克隆只能在同一主機上進行。" }, "dialog": { "warning": { @@ -1438,5 +1446,32 @@ "OpenVSCodeRemote": "打开本地 Visual Studio 代码", "inputLimit": { "4to64chars": "(4 至 64 个字符)" + }, + "modelStore": { + "Description": "描述", + "Model": "模型", + "FilterByName": "按名稱過濾", + "ServiceDetails": "服務詳情", + "Metadata": "元數據", + "ModelPath": "模型路徑", + "SearchModels": "搜尋型號", + "MinResource": "最小資源", + "LastModified": "上一次更改", + "Created": "已創建", + "Version": "版本", + "Author": "作者", + "MaxRetries": "最大重試次數", + "Path": "小路", + "HealthCheck": "健康檢查", + "Port": "港口", + "StartCommand": "啟動命令", + "PreStartActions": "開始前的行動", + "Framework": "框架", + "Category": "类别", + "Label": "标签", + "Task": "任务", + "CloneAsFolder": "克隆为文件夹", + "CloneSuccess": "克隆请求已成功发送。", + "CloneInfo": "它将被克隆为用户类型文件夹。" } } diff --git a/src/components/backend-ai-data-view.ts b/src/components/backend-ai-data-view.ts index 24a43c7892..52ab777646 100644 --- a/src/components/backend-ai-data-view.ts +++ b/src/components/backend-ai-data-view.ts @@ -60,6 +60,7 @@ export default class BackendAIData extends BackendAIPage { @property({ type: Boolean }) is_admin = false; @property({ type: Boolean }) enableStorageProxy = false; @property({ type: Boolean }) enableInferenceWorkload = false; + @property({ type: Boolean }) supportModelStore = false; @property({ type: Boolean }) authenticated = false; @property({ type: String }) vhost = ''; @property({ type: String }) selectedVhost = ''; @@ -323,6 +324,15 @@ export default class BackendAIData extends BackendAIPage { > ` : html``} + ${this.supportModelStore + ? html` + + ` + : html``} - ${_t('data.NewFolder')} + ${_t('data.Add')}
@@ -392,6 +402,13 @@ export default class BackendAIData extends BackendAIPage {
` : html``} + @@ -871,6 +888,9 @@ export default class BackendAIData extends BackendAIPage { globalThis.backendaiclient.supports('storage-proxy'); this.enableInferenceWorkload = globalThis.backendaiclient.supports('inference-workload'); + this.supportModelStore = + globalThis.backendaiclient.supports('model-store') && + globalThis.backendaiclient._config.supportModelStore; if (this.enableInferenceWorkload && !this.usageModes.includes('Model')) { this.usageModes.push('Model'); } diff --git a/src/components/backend-ai-login.ts b/src/components/backend-ai-login.ts index 4f91cb4306..700f46ce84 100644 --- a/src/components/backend-ai-login.ts +++ b/src/components/backend-ai-login.ts @@ -137,6 +137,7 @@ export default class BackendAILogin extends BackendAIPage { @property({ type: Number }) maxCountForPreopenPorts = 10; @property({ type: Boolean }) allowCustomResourceAllocation = true; @property({ type: Boolean }) isDirectorySizeVisible = true; + @property({ type: Boolean }) supportModelStore = false; @property({ type: String }) eduAppNamePrefix; private _enableContainerCommit = false; private _enablePipeline = false; @@ -862,6 +863,13 @@ export default class BackendAILogin extends BackendAIPage { defaultValue: '', value: generalConfig?.eduAppNamePrefix, } as ConfigValueObject) as string; + + // Enable model store support + this.supportModelStore = this._getConfigValueByExists(generalConfig, { + valueType: 'boolean', + defaultValue: false, + value: generalConfig?.supportModelStore, + } as ConfigValueObject) as boolean; } /** @@ -1833,6 +1841,8 @@ export default class BackendAILogin extends BackendAIPage { this.allowCustomResourceAllocation; globalThis.backendaiclient._config.isDirectorySizeVisible = this.isDirectorySizeVisible; + globalThis.backendaiclient._config.supportModelStore = + this.supportModelStore; globalThis.backendaiclient.ready = true; if ( this.endpoints.indexOf( diff --git a/src/components/backend-ai-storage-list.ts b/src/components/backend-ai-storage-list.ts index fc152d9460..d39acf456f 100644 --- a/src/components/backend-ai-storage-list.ts +++ b/src/components/backend-ai-storage-list.ts @@ -238,7 +238,7 @@ export default class BackendAiStorageList extends BackendAIPage { css` vaadin-grid { border: 0 !important; - height: calc(100vh - 229px); + height: calc(100vh - 460px); } vaadin-grid.folderlist { @@ -1537,14 +1537,14 @@ export default class BackendAiStorageList extends BackendAIPage { for (const textfield of Array.from(textfields)) { this._addInputValidator(textfield); } - if (['automount', 'model'].includes(this.storageType)) { + if (['data', 'automount', 'model'].includes(this.storageType)) { ( this.shadowRoot?.querySelector('vaadin-grid.folderlist') as HTMLElement - ).style.height = 'calc(100vh - 230px)'; + ).style.height = 'calc(100vh - 464px)'; } else { ( this.shadowRoot?.querySelector('vaadin-grid.folderlist') as HTMLElement - ).style.height = 'calc(100vh - 185px)'; + ).style.height = 'calc(100vh - 420px)'; } document.addEventListener('backend-ai-group-changed', (e) => this._refreshFolderList(true, 'group-changed'), diff --git a/src/components/backend-ai-webui.ts b/src/components/backend-ai-webui.ts index d6f357e502..c1da73f8b1 100644 --- a/src/components/backend-ai-webui.ts +++ b/src/components/backend-ai-webui.ts @@ -1485,7 +1485,7 @@ export default class BackendAIWebUI extends connect(store)(LitElement) { class="${this.blockedMenuItem.includes('data') ? 'hidden' : ''}" > - ${_t('webui.menu.Data&Storage')} + ${_t('webui.menu.Data&Model')} ${ this._usePipeline @@ -1833,7 +1833,11 @@ export default class BackendAIWebUI extends connect(store)(LitElement) {
Lablup Inc. +<<<<<<< HEAD + 24.03.0-alpha.3.231130 +======= 24.03.0-alpha.3.5815 +>>>>>>> main