diff --git a/packages/backend.ai-ui/package.json b/packages/backend.ai-ui/package.json index 98b26fd7c1..55da303801 100644 --- a/packages/backend.ai-ui/package.json +++ b/packages/backend.ai-ui/package.json @@ -65,7 +65,8 @@ "react-dom": "^19.0.0", "react-i18next": "^15.4.1", "react-relay": "^20.1.0", - "relay-runtime": "^20.1.0" + "relay-runtime": "^20.1.0", + "react-router-dom": "^6.30.0" }, "dependencies": { "@dnd-kit/core": "^6.1.0", diff --git a/packages/backend.ai-ui/src/components/BAIBackButton.tsx b/packages/backend.ai-ui/src/components/BAIBackButton.tsx new file mode 100644 index 0000000000..dec0d04c1b --- /dev/null +++ b/packages/backend.ai-ui/src/components/BAIBackButton.tsx @@ -0,0 +1,21 @@ +import { Button } from 'antd'; +import { ArrowLeft } from 'lucide-react'; +import { NavigateOptions, To, useNavigate } from 'react-router-dom'; + +export interface BAIBackButtonProps { + to: To; + options?: NavigateOptions; +} + +const BAIBackButton = ({ to, options }: BAIBackButtonProps) => { + const navigate = useNavigate(); + return ( + + ); + }, + }, + { + title: t('comp:BAIArtifactRevisionTable.Size'), + dataIndex: 'size', + key: 'size', + width: '15%', + render: (size: number) => { + if (!size) return N/A; + return ( + + {convertToDecimalUnit(size, 'auto')?.displayValue} + + ); + }, + }, + { + title: t('comp:BAIArtifactTable.Updated'), + dataIndex: 'updatedAt', + key: 'updatedAt', + width: '15%', + render: (updated_at: string) => ( + + {dayjs(updated_at).fromNow()} + + ), + }, + ]; + + return ( + + rowKey={(record) => record.id} + resizable + columns={filterOutEmpty(columns)} + dataSource={artifactRevision} + scroll={{ x: 'max-content' }} + {...tableProps} + > + ); +}; + +export default BAIArtifactRevisionTable; diff --git a/packages/backend.ai-ui/src/components/fragments/BAIArtifactTable.tsx b/packages/backend.ai-ui/src/components/fragments/BAIArtifactTable.tsx new file mode 100644 index 0000000000..8c9fae0488 --- /dev/null +++ b/packages/backend.ai-ui/src/components/fragments/BAIArtifactTable.tsx @@ -0,0 +1,246 @@ +import { + BAIArtifactTableArtifactFragment$data, + BAIArtifactTableArtifactFragment$key, +} from '../../__generated__/BAIArtifactTableArtifactFragment.graphql'; +import { + convertToDecimalUnit, + filterOutEmpty, + filterOutNullAndUndefined, + toLocalId, +} from '../../helper'; +import BAIFlex from '../BAIFlex'; +import BAILink from '../BAILink'; +import BAITag from '../BAITag'; +import BAIText from '../BAIText'; +import { BAITable, BAITableProps } from '../Table'; +import { SyncOutlined } from '@ant-design/icons'; +import { + Button, + TableColumnsType, + Tag, + theme, + Tooltip, + Typography, +} from 'antd'; +import dayjs from 'dayjs'; +import relativeTime from 'dayjs/plugin/relativeTime'; +import _ from 'lodash'; +import { Package, Container, Brain, Download } from 'lucide-react'; +import { useTranslation } from 'react-i18next'; +import { graphql, useFragment } from 'react-relay'; + +dayjs.extend(relativeTime); + +export const getStatusColor = (status: string) => { + switch (status.toLowerCase()) { + case 'pulling': + return 'processing'; + case 'verifying': + return 'warning'; + case 'available': + return 'default'; + case 'failed': + return 'error'; + default: + return 'default'; + } +}; + +export const getStatusIcon = (status: string) => { + switch (status.toLowerCase()) { + case 'pulling': + case 'verifying': + return ; + default: + return null; + } +}; + +export const getTypeColor = (type: string) => { + switch (type) { + case 'model': + return 'blue'; + case 'package': + return 'green'; + case 'image': + return 'orange'; + default: + return 'default'; + } +}; + +export const getTypeIcon = (type: string, size: number = 16) => { + const colorMap = { + model: '#1677ff', + package: '#52c41a', + image: '#fa8c16', + }; + + switch (type.toLowerCase()) { + case 'model': + return ; + case 'package': + return ; + case 'image': + return ; + default: + return null; + } +}; + +export type Artifact = NonNullable< + NonNullable[number] +>; + +export interface BAIArtifactTableProps + extends Omit, 'dataSource' | 'columns' | 'rowKey'> { + artifactFragment: BAIArtifactTableArtifactFragment$key; + onClickPull: (artifactId: string, revisionId: string) => void; +} + +const BAIArtifactRevisionTable = ({ + artifactFragment, + onClickPull, + ...tableProps +}: BAIArtifactTableProps) => { + const { token } = theme.useToken(); + // const navigate = useNavigate(); + const { t } = useTranslation(); + + const artifact = useFragment( + graphql` + fragment BAIArtifactTableArtifactFragment on Artifact + @relay(plural: true) { + id + name + description + updatedAt + type + latestVersion: revisions( + first: 1 + orderBy: { field: VERSION, direction: DESC } + ) { + edges { + node { + id + version + size + status + } + } + } + } + `, + artifactFragment, + ); + + const columns: TableColumnsType = [ + { + title: t('comp:BAIArtifactRevisionTable.Name'), + dataIndex: 'name', + key: 'name', + render: (name: string, record: Artifact) => { + return ( + + + + {name} + + + {getTypeIcon(record.type, 14)}  + {record.type.toUpperCase()} + + + {record.description && ( + + {record.description} + + )} + + ); + }, + width: '45%', + }, + { + title: t('comp:BAIArtifactRevisionTable.LatestVersion'), + key: 'latest_version', + render: (_value, record: Artifact) => { + const latestVersion = record.latestVersion?.edges[0]?.node; + + if (!latestVersion || _.isEmpty(latestVersion)) + return N/A; + + return ( + + {latestVersion.version} + + {latestVersion.status.toUpperCase()} + {latestVersion.status === 'SCANNED' ? ( + + } + /> + ); +}; + +export default BAIPullingArtifactRevisionAlert; diff --git a/packages/backend.ai-ui/src/components/fragments/index.ts b/packages/backend.ai-ui/src/components/fragments/index.ts index 48cc6f6c6d..02df2211c6 100644 --- a/packages/backend.ai-ui/src/components/fragments/index.ts +++ b/packages/backend.ai-ui/src/components/fragments/index.ts @@ -1,3 +1,16 @@ export { default as BAISessionTypeTag } from './BAISessionTypeTag'; export { default as BAISessionAgentIds } from './BAISessionAgentIds'; export type { BAISessionTypeTagProps } from './BAISessionTypeTag'; +export { default as BAIArtifactRevisionTable } from './BAIArtifactRevisionTable'; +export type { BAIArtifactRevisionTableProps } from './BAIArtifactRevisionTable'; +export { default as BAIArtifactTable } from './BAIArtifactTable'; +export type { BAIArtifactTableProps } from './BAIArtifactTable'; +export { default as BAIImportArtifactModal } from './BAIImportArtifactModal'; +export type { + BAIImportArtifactModalProps, + BAIImportArtifactModalArtifactFragmentKey, + BAIImportArtifactModalArtifactRevisionFragmentKey, +} from './BAIImportArtifactModal'; + +export { default as BAIPullingArtifactRevisionAlert } from './BAIPullingArtifactRevisionAlert'; +export type { BAIPullingArtifactRevisionAlertProps } from './BAIPullingArtifactRevisionAlert'; diff --git a/packages/backend.ai-ui/src/components/index.ts b/packages/backend.ai-ui/src/components/index.ts index 0987272e36..61c194ce03 100644 --- a/packages/backend.ai-ui/src/components/index.ts +++ b/packages/backend.ai-ui/src/components/index.ts @@ -35,7 +35,10 @@ export { default as BAIUnmountAfterClose } from './BAIUnmountAfterClose'; export { default as BAIAlertIconWithTooltip } from './BAIAlertIconWithTooltip'; export { default as BAILink } from './BAILink'; export type { BAILinkProps } from './BAILink'; - +export { default as BAIBackButton } from './BAIBackButton'; +export type { BAIBackButtonProps } from './BAIBackButton'; +export { default as BAIText } from './BAIText'; +export type { BAITextProps } from './BAIText'; export * from './Table'; export * from './fragments'; export * from './provider'; diff --git a/packages/backend.ai-ui/src/locale/de.json b/packages/backend.ai-ui/src/locale/de.json index bebe122e8a..681976a0cd 100644 --- a/packages/backend.ai-ui/src/locale/de.json +++ b/packages/backend.ai-ui/src/locale/de.json @@ -1,67 +1,92 @@ { "$schema": "../../i18n.schema.json", - "comp:BAITestButton": { - "Test": "test" + "comp:BAIArtifactRevisionTable": { + "Action": "Aktion", + "LatestVersion": "Neueste Version", + "Name": "Name", + "Size": "Größe", + "Status": "Status", + "Updated": "Aktualisiert", + "Version": "Version" }, - "comp:PaginationInfoText": { - "Total": "{{start}} - {{end}} von {{total}} Elementen" + "comp:BAIArtifactTable": { + "Action": "Aktion", + "PullLatestVersion": "Die neueste Version ziehen", + "Size": "Größe", + "Updated": "Aktualisiert", + "Version": "Version" }, - "error": { - "UnknownError": "Ein unbekannter Fehler ist aufgetreten. \nBitte versuchen Sie es erneut." + "comp:BAIImportArtifactModal": { + "Description": "Beschreibung", + "Name": "Name", + "Pull": "Ziehen", + "PullArtifact": "Artefakt ziehen", + "PulledVersionsAreExcluded": "Ziehversionen sind ausgeschlossen.", + "Source": "Quelle", + "Type": "Typ" }, - "general": { - "NSelected": "{{count}} ausgewählt", - "button": { - "Delete": "Löschen", - "Create": "Erstellen", - "Upload": "Hochladen", - "CopyAll": "Alle kopieren" - } + "comp:BAIPropertyFilter": { + "PlaceHolder": "Suche", + "ResetFilter": "Filter zurücksetzen" + }, + "comp:BAISessionAgentIds": { + "Agent": "Agent" + }, + "comp:BAIStatistic": { + "Unlimited": "Unbegrenzt" + }, + "comp:BAITable": { + "SearchTableColumn": "Suchtabellenspalten", + "SelectColumnToDisplay": "Wählen Sie Spalten aus, um angezeigt zu werden", + "SettingTable": "Tabelleneinstellungen" + }, + "comp:BAITestButton": { + "Test": "test" }, "comp:FileExplorer": { - "SelectedItemsDeletedSuccessfully": "Ausgewählte Dateien und Ordner wurden erfolgreich gelöscht.", - "DeleteSelectedItemsDialog": "Bestätigung löschen", + "ChangeFileExtension": "Dateierweiterung ändern", + "ChangeFileExtensionDesc": "Das Ändern der Dateierweiterung kann dazu führen, dass die Datei unbrauchbar oder falsch geöffnet wird. \nMöchten Sie fortfahren?", + "Controls": "Kontrollen", + "CreateANewFolder": "Erstellen Sie einen neuen Ordner", + "CreatedAt": "Erstellt at", "DeleteSelectedItemDesc": "Löschte Dateien und Ordner können nicht wiederhergestellt werden. \nMöchten Sie fortfahren?", + "DeleteSelectedItemsDialog": "Bestätigung löschen", + "DownloadStarted": "Die Datei \"{{fileName}}\" wurde gestartet.", + "DragAndDropDesc": "Ziehen Sie Dateien in diesen Bereich zum Hochladen.", + "DuplicatedFiles": "Überschreibung der Bestätigung", + "DuplicatedFilesDesc": "Die Datei oder der Ordner mit demselben Namen existieren bereits. \nMöchten Sie überschreiben?", "FolderCreatedSuccessfully": "Ordner erfolgreich erstellt.", - "CreateANewFolder": "Erstellen Sie einen neuen Ordner", "FolderName": "Ordner Name", - "PleaseEnterAFolderName": "Bitte geben Sie den Ordneramen ein.", "MaxFolderNameLength": "Der Ordnername muss 255 Zeichen oder weniger betragen.", + "ModifiedAt": "Modifiziert bei", "Name": "Name", + "PleaseEnterAFolderName": "Bitte geben Sie den Ordneramen ein.", + "RenameSuccess": "Der Name wurde erfolgreich geändert.", + "SelectedItemsDeletedSuccessfully": "Ausgewählte Dateien und Ordner wurden erfolgreich gelöscht.", "Size": "Größe", - "CreatedAt": "Erstellt at", - "ModifiedAt": "Modifiziert bei", - "Controls": "Kontrollen", "UploadFiles": "Dateien hochladen", "UploadFolder": "Ordner hochladen", - "DownloadStarted": "Die Datei \"{{fileName}}\" wurde gestartet.", "error": { - "FileNameRequired": "Bitte geben Sie einen Datei- oder Ordnernamen ein.", - "DuplicatedName": "Dieser Name ist bereits verwendet. \nBitte geben Sie einen anderen Namen ein." - }, - "DuplicatedFilesDesc": "Die Datei oder der Ordner mit demselben Namen existieren bereits. \nMöchten Sie überschreiben?", - "DuplicatedFiles": "Überschreibung der Bestätigung", - "DragAndDropDesc": "Ziehen Sie Dateien in diesen Bereich zum Hochladen.", - "ChangeFileExtensionDesc": "Das Ändern der Dateierweiterung kann dazu führen, dass die Datei unbrauchbar oder falsch geöffnet wird. \nMöchten Sie fortfahren?", - "ChangeFileExtension": "Dateierweiterung ändern", - "RenameSuccess": "Der Name wurde erfolgreich geändert." - }, - "comp:BAITable": { - "SettingTable": "Tabelleneinstellungen", - "SelectColumnToDisplay": "Wählen Sie Spalten aus, um angezeigt zu werden", - "SearchTableColumn": "Suchtabellenspalten" - }, - "comp:BAIPropertyFilter": { - "PlaceHolder": "Suche", - "ResetFilter": "Filter zurücksetzen" - }, - "comp:BAISessionAgentIds": { - "Agent": "Agent" + "DuplicatedName": "Dieser Name ist bereits verwendet. \nBitte geben Sie einen anderen Namen ein.", + "FileNameRequired": "Bitte geben Sie einen Datei- oder Ordnernamen ein." + } }, - "comp:BAIStatistic": { - "Unlimited": "Unbegrenzt" + "comp:PaginationInfoText": { + "Total": "{{start}} - {{end}} von {{total}} Elementen" }, "comp:ResourceStatistics": { "NoResourcesData": "Keine Ressourcendaten verfügbar" + }, + "error": { + "UnknownError": "Ein unbekannter Fehler ist aufgetreten. \nBitte versuchen Sie es erneut." + }, + "general": { + "NSelected": "{{count}} ausgewählt", + "button": { + "CopyAll": "Alle kopieren", + "Create": "Erstellen", + "Delete": "Löschen", + "Upload": "Hochladen" + } } } diff --git a/packages/backend.ai-ui/src/locale/el.json b/packages/backend.ai-ui/src/locale/el.json index 753329c584..03a62ca717 100644 --- a/packages/backend.ai-ui/src/locale/el.json +++ b/packages/backend.ai-ui/src/locale/el.json @@ -1,67 +1,92 @@ { "$schema": "../../i18n.schema.json", - "comp:BAITestButton": { - "Test": "δοκιμή" + "comp:BAIArtifactRevisionTable": { + "Action": "Δράση", + "LatestVersion": "Τελευταία έκδοση", + "Name": "Ονομα", + "Size": "Μέγεθος", + "Status": "Κατάσταση", + "Updated": "Ενημερωμένος", + "Version": "Εκδοχή" }, - "comp:PaginationInfoText": { - "Total": "{{start}} - {{end}} των στοιχείων {{total}}" + "comp:BAIArtifactTable": { + "Action": "Δράση", + "PullLatestVersion": "Τραβήξτε την τελευταία έκδοση", + "Size": "Μέγεθος", + "Updated": "Ενημερωμένος", + "Version": "Εκδοχή" }, - "error": { - "UnknownError": "Παρουσιάστηκε ένα άγνωστο σφάλμα. \nΔοκιμάστε ξανά." + "comp:BAIImportArtifactModal": { + "Description": "Περιγραφή", + "Name": "Ονομα", + "Pull": "Τραβήξτε", + "PullArtifact": "Τραβήξτε το τεχνούργημα", + "PulledVersionsAreExcluded": "Οι εκδόσεις που τραβήχτηκαν εξαιρούνται.", + "Source": "Πηγή", + "Type": "Τύπος" }, - "general": { - "NSelected": "{{count}} Επιλεγμένη", - "button": { - "Delete": "Διαγράφω", - "Create": "Δημιουργώ", - "Upload": "Μεταφορτώσω", - "CopyAll": "Αντιγράψτε όλα" - } + "comp:BAIPropertyFilter": { + "PlaceHolder": "Αναζήτηση", + "ResetFilter": "Επαναφορά φίλτρων" + }, + "comp:BAISessionAgentIds": { + "Agent": "Μέσο" + }, + "comp:BAIStatistic": { + "Unlimited": "Απεριόριστος" + }, + "comp:BAITable": { + "SearchTableColumn": "Στήλες πίνακα αναζήτησης", + "SelectColumnToDisplay": "Επιλέξτε στήλες για εμφάνιση", + "SettingTable": "Ρυθμίσεις πίνακα" + }, + "comp:BAITestButton": { + "Test": "δοκιμή" }, "comp:FileExplorer": { - "SelectedItemsDeletedSuccessfully": "Επιλεγμένα αρχεία και φακέλους έχουν διαγραφεί με επιτυχία.", - "DeleteSelectedItemsDialog": "Διαγραφή επιβεβαίωσης", + "ChangeFileExtension": "Αλλαγή επέκτασης αρχείου", + "ChangeFileExtensionDesc": "Η αλλαγή της επέκτασης του αρχείου μπορεί να προκαλέσει λανθασμένα το αρχείο. \nΘέλετε να προχωρήσετε;", + "Controls": "Χειριστήρια", + "CreateANewFolder": "Δημιουργήστε ένα νέο φάκελο", + "CreatedAt": "Δημιουργήθηκε στο", "DeleteSelectedItemDesc": "Τα διαγραμμένα αρχεία και οι φάκελοι δεν μπορούν να αποκατασταθούν. \nΘέλετε να προχωρήσετε;", + "DeleteSelectedItemsDialog": "Διαγραφή επιβεβαίωσης", + "DownloadStarted": "Αρχείο \"{{fileName}}\" Η λήψη έχει ξεκινήσει.", + "DragAndDropDesc": "Σύρετε και αποθέστε αρχεία σε αυτήν την περιοχή για μεταφόρτωση.", + "DuplicatedFiles": "Αντιπροσώπηση επιβεβαίωσης", + "DuplicatedFilesDesc": "Το αρχείο ή ο φάκελος με το ίδιο όνομα υπάρχει ήδη. \nΘέλετε να αντικαταστήσετε;", "FolderCreatedSuccessfully": "Ο φάκελος δημιούργησε με επιτυχία.", - "CreateANewFolder": "Δημιουργήστε ένα νέο φάκελο", "FolderName": "Όνομα φακέλου", - "PleaseEnterAFolderName": "Εισαγάγετε το όνομα του φακέλου.", "MaxFolderNameLength": "Το όνομα του φακέλου πρέπει να είναι 255 χαρακτήρες ή λιγότερο.", + "ModifiedAt": "Τροποποιημένος", "Name": "Ονομα", + "PleaseEnterAFolderName": "Εισαγάγετε το όνομα του φακέλου.", + "RenameSuccess": "Το όνομα έχει αλλάξει με επιτυχία.", + "SelectedItemsDeletedSuccessfully": "Επιλεγμένα αρχεία και φακέλους έχουν διαγραφεί με επιτυχία.", "Size": "Μέγεθος", - "CreatedAt": "Δημιουργήθηκε στο", - "ModifiedAt": "Τροποποιημένος", - "Controls": "Χειριστήρια", "UploadFiles": "Μεταφόρτωση αρχείων", "UploadFolder": "Μεταφορτωμένος φάκελος", - "DownloadStarted": "Αρχείο \"{{fileName}}\" Η λήψη έχει ξεκινήσει.", "error": { - "FileNameRequired": "Εισαγάγετε ένα αρχείο ή ένα όνομα φακέλου.", - "DuplicatedName": "Αυτό το όνομα χρησιμοποιείται ήδη. \nΕισαγάγετε ένα διαφορετικό όνομα." - }, - "DuplicatedFilesDesc": "Το αρχείο ή ο φάκελος με το ίδιο όνομα υπάρχει ήδη. \nΘέλετε να αντικαταστήσετε;", - "DuplicatedFiles": "Αντιπροσώπηση επιβεβαίωσης", - "DragAndDropDesc": "Σύρετε και αποθέστε αρχεία σε αυτήν την περιοχή για μεταφόρτωση.", - "ChangeFileExtensionDesc": "Η αλλαγή της επέκτασης του αρχείου μπορεί να προκαλέσει λανθασμένα το αρχείο. \nΘέλετε να προχωρήσετε;", - "ChangeFileExtension": "Αλλαγή επέκτασης αρχείου", - "RenameSuccess": "Το όνομα έχει αλλάξει με επιτυχία." - }, - "comp:BAITable": { - "SelectColumnToDisplay": "Επιλέξτε στήλες για εμφάνιση", - "SearchTableColumn": "Στήλες πίνακα αναζήτησης", - "SettingTable": "Ρυθμίσεις πίνακα" - }, - "comp:BAIPropertyFilter": { - "PlaceHolder": "Αναζήτηση", - "ResetFilter": "Επαναφορά φίλτρων" - }, - "comp:BAISessionAgentIds": { - "Agent": "Μέσο" + "DuplicatedName": "Αυτό το όνομα χρησιμοποιείται ήδη. \nΕισαγάγετε ένα διαφορετικό όνομα.", + "FileNameRequired": "Εισαγάγετε ένα αρχείο ή ένα όνομα φακέλου." + } }, - "comp:BAIStatistic": { - "Unlimited": "Απεριόριστος" + "comp:PaginationInfoText": { + "Total": "{{start}} - {{end}} των στοιχείων {{total}}" }, "comp:ResourceStatistics": { "NoResourcesData": "Δεν υπάρχουν διαθέσιμα δεδομένα πόρων" + }, + "error": { + "UnknownError": "Παρουσιάστηκε ένα άγνωστο σφάλμα. \nΔοκιμάστε ξανά." + }, + "general": { + "NSelected": "{{count}} Επιλεγμένη", + "button": { + "CopyAll": "Αντιγράψτε όλα", + "Create": "Δημιουργώ", + "Delete": "Διαγράφω", + "Upload": "Μεταφορτώσω" + } } } diff --git a/packages/backend.ai-ui/src/locale/en.json b/packages/backend.ai-ui/src/locale/en.json index a4d94a311a..502a08d5c5 100644 --- a/packages/backend.ai-ui/src/locale/en.json +++ b/packages/backend.ai-ui/src/locale/en.json @@ -1,67 +1,92 @@ { "$schema": "../../i18n.schema.json", - "comp:BAITestButton": { - "Test": "Test" + "comp:BAIArtifactRevisionTable": { + "Action": "Action", + "LatestVersion": "Latest Version", + "Name": "Name", + "Size": "Size", + "Status": "Status", + "Updated": "Updated", + "Version": "Version" }, - "comp:PaginationInfoText": { - "Total": "{{start}} - {{end}} of {{total}} items" + "comp:BAIArtifactTable": { + "Action": "Action", + "PullLatestVersion": "Pull latest version", + "Size": "Size", + "Updated": "Updated", + "Version": "Version" }, - "error": { - "UnknownError": "An unknown error occurred. Please try again." + "comp:BAIImportArtifactModal": { + "Description": "Description", + "Name": "Name", + "Pull": "Pull", + "PullArtifact": "Pull Artifact", + "PulledVersionsAreExcluded": "Pulled versions are excluded.", + "Source": "Source", + "Type": "Type" }, - "general": { - "NSelected": "{{count}} selected", - "button": { - "Delete": "Delete", - "Create": "Create", - "Upload": "Upload", - "CopyAll": "Copy All" - } + "comp:BAIPropertyFilter": { + "PlaceHolder": "Search", + "ResetFilter": "Reset filters" + }, + "comp:BAISessionAgentIds": { + "Agent": "Agent" + }, + "comp:BAIStatistic": { + "Unlimited": "Unlimited" + }, + "comp:BAITable": { + "SearchTableColumn": "Search table columns", + "SelectColumnToDisplay": "Select columns to display", + "SettingTable": "Table Settings" + }, + "comp:BAITestButton": { + "Test": "Test" }, "comp:FileExplorer": { - "SelectedItemsDeletedSuccessfully": "Selected files and folders have been deleted successfully.", - "DeleteSelectedItemsDialog": "Delete Confirmation", + "ChangeFileExtension": "Change File Extension", + "ChangeFileExtensionDesc": "Changing the file extension may cause the file to become unusable or open incorrectly. Do you want to proceed?", + "Controls": "Controls", + "CreateANewFolder": "Create a new folder", + "CreatedAt": "Created At", "DeleteSelectedItemDesc": "Deleted files and folders cannot be restored. Do you want to proceed?", + "DeleteSelectedItemsDialog": "Delete Confirmation", + "DownloadStarted": "File \"{{fileName}}\" download has started.", + "DragAndDropDesc": "Drag and drop files to this area to upload.", + "DuplicatedFiles": "Overwrite Confirmation", + "DuplicatedFilesDesc": "The file or folder with the same name already exists. Do you want to overwrite?", "FolderCreatedSuccessfully": "Folder created successfully.", - "CreateANewFolder": "Create a new folder", "FolderName": "Folder Name", - "PleaseEnterAFolderName": "Please enter the folder name.", "MaxFolderNameLength": "Folder name must be 255 characters or less.", + "ModifiedAt": "Modified At", "Name": "Name", + "PleaseEnterAFolderName": "Please enter the folder name.", + "RenameSuccess": "The name has been successfully changed.", + "SelectedItemsDeletedSuccessfully": "Selected files and folders have been deleted successfully.", "Size": "Size", - "CreatedAt": "Created At", - "ModifiedAt": "Modified At", - "Controls": "Controls", "UploadFiles": "Upload Files", "UploadFolder": "Upload Folder", - "DownloadStarted": "File \"{{fileName}}\" download has started.", "error": { - "FileNameRequired": "Please enter a file or folder name.", - "DuplicatedName": "This name is already in use. Please enter a different name." - }, - "DuplicatedFilesDesc": "The file or folder with the same name already exists. Do you want to overwrite?", - "DuplicatedFiles": "Overwrite Confirmation", - "DragAndDropDesc": "Drag and drop files to this area to upload.", - "ChangeFileExtensionDesc": "Changing the file extension may cause the file to become unusable or open incorrectly. Do you want to proceed?", - "ChangeFileExtension": "Change File Extension", - "RenameSuccess": "The name has been successfully changed." - }, - "comp:BAITable": { - "SettingTable": "Table Settings", - "SelectColumnToDisplay": "Select columns to display", - "SearchTableColumn": "Search table columns" - }, - "comp:BAIPropertyFilter": { - "PlaceHolder": "Search", - "ResetFilter": "Reset filters" - }, - "comp:BAISessionAgentIds": { - "Agent": "Agent" + "DuplicatedName": "This name is already in use. Please enter a different name.", + "FileNameRequired": "Please enter a file or folder name." + } }, - "comp:BAIStatistic": { - "Unlimited": "Unlimited" + "comp:PaginationInfoText": { + "Total": "{{start}} - {{end}} of {{total}} items" }, "comp:ResourceStatistics": { "NoResourcesData": "No resource data available" + }, + "error": { + "UnknownError": "An unknown error occurred. Please try again." + }, + "general": { + "NSelected": "{{count}} selected", + "button": { + "CopyAll": "Copy All", + "Create": "Create", + "Delete": "Delete", + "Upload": "Upload" + } } } diff --git a/packages/backend.ai-ui/src/locale/es.json b/packages/backend.ai-ui/src/locale/es.json index d4ec38e85e..6091e9811c 100644 --- a/packages/backend.ai-ui/src/locale/es.json +++ b/packages/backend.ai-ui/src/locale/es.json @@ -1,67 +1,92 @@ { "$schema": "../../i18n.schema.json", - "comp:BAITestButton": { - "Test": "prueba" + "comp:BAIArtifactRevisionTable": { + "Action": "Acción", + "LatestVersion": "Última versión", + "Name": "Nombre", + "Size": "Tamaño", + "Status": "Estado", + "Updated": "Actualizado", + "Version": "Versión" }, - "comp:PaginationInfoText": { - "Total": "{{start}} - {{end}} de {{total}} elementos" + "comp:BAIArtifactTable": { + "Action": "Acción", + "PullLatestVersion": "Tire de la última versión", + "Size": "Tamaño", + "Updated": "Actualizado", + "Version": "Versión" }, - "error": { - "UnknownError": "Ocurrió un error desconocido. \nPor favor intente de nuevo." + "comp:BAIImportArtifactModal": { + "Description": "Descripción", + "Name": "Nombre", + "Pull": "Jalar", + "PullArtifact": "Artefacto", + "PulledVersionsAreExcluded": "Se excluyen las versiones extraídas.", + "Source": "Fuente", + "Type": "Tipo" }, - "general": { - "NSelected": "{{count}} seleccionado", - "button": { - "Delete": "Borrar", - "Create": "Crear", - "Upload": "Subir", - "CopyAll": "Copiar todo" - } + "comp:BAIPropertyFilter": { + "PlaceHolder": "Buscar en", + "ResetFilter": "Restablecer filtros" + }, + "comp:BAISessionAgentIds": { + "Agent": "Agente" + }, + "comp:BAIStatistic": { + "Unlimited": "Ilimitado" + }, + "comp:BAITable": { + "SearchTableColumn": "Columnas de la tabla de búsqueda", + "SelectColumnToDisplay": "Seleccionar columnas para mostrar", + "SettingTable": "Configuración de tabla" + }, + "comp:BAITestButton": { + "Test": "prueba" }, "comp:FileExplorer": { - "SelectedItemsDeletedSuccessfully": "Los archivos y carpetas seleccionados se han eliminado correctamente.", - "DeleteSelectedItemsDialog": "Eliminar confirmación", + "ChangeFileExtension": "Cambiar la extensión del archivo", + "ChangeFileExtensionDesc": "Cambiar la extensión del archivo puede hacer que el archivo se vuelva inutilizable o se abra incorrectamente. \n¿Quieres continuar?", + "Controls": "Control", + "CreateANewFolder": "Crea una nueva carpeta", + "CreatedAt": "Creado a", "DeleteSelectedItemDesc": "Los archivos y carpetas eliminados no se pueden restaurar. \n¿Quieres continuar?", + "DeleteSelectedItemsDialog": "Eliminar confirmación", + "DownloadStarted": "El archivo \"{{fileName}}\" ha comenzado.", + "DragAndDropDesc": "Arrastre y suelte archivos a esta área para cargar.", + "DuplicatedFiles": "Confirmación de sobrescribencia", + "DuplicatedFilesDesc": "El archivo o carpeta con el mismo nombre ya existe. \n¿Quieres sobrescribir?", "FolderCreatedSuccessfully": "Carpeta creada con éxito.", - "CreateANewFolder": "Crea una nueva carpeta", "FolderName": "Nombre de carpeta", - "PleaseEnterAFolderName": "Ingrese el nombre de la carpeta.", "MaxFolderNameLength": "El nombre de la carpeta debe ser de 255 caracteres o menos.", + "ModifiedAt": "Modificado en", "Name": "Nombre", + "PleaseEnterAFolderName": "Ingrese el nombre de la carpeta.", + "RenameSuccess": "El nombre ha sido cambiado con éxito.", + "SelectedItemsDeletedSuccessfully": "Los archivos y carpetas seleccionados se han eliminado correctamente.", "Size": "Tamaño", - "CreatedAt": "Creado a", - "ModifiedAt": "Modificado en", - "Controls": "Control", "UploadFiles": "Cargar archivos", "UploadFolder": "Carpeta de carga", - "DownloadStarted": "El archivo \"{{fileName}}\" ha comenzado.", "error": { - "FileNameRequired": "Ingrese un nombre de archivo o carpeta.", - "DuplicatedName": "Este nombre ya está en uso. \nIngrese un nombre diferente." - }, - "DuplicatedFilesDesc": "El archivo o carpeta con el mismo nombre ya existe. \n¿Quieres sobrescribir?", - "DuplicatedFiles": "Confirmación de sobrescribencia", - "DragAndDropDesc": "Arrastre y suelte archivos a esta área para cargar.", - "ChangeFileExtensionDesc": "Cambiar la extensión del archivo puede hacer que el archivo se vuelva inutilizable o se abra incorrectamente. \n¿Quieres continuar?", - "ChangeFileExtension": "Cambiar la extensión del archivo", - "RenameSuccess": "El nombre ha sido cambiado con éxito." - }, - "comp:BAITable": { - "SettingTable": "Configuración de tabla", - "SelectColumnToDisplay": "Seleccionar columnas para mostrar", - "SearchTableColumn": "Columnas de la tabla de búsqueda" - }, - "comp:BAIPropertyFilter": { - "PlaceHolder": "Buscar en", - "ResetFilter": "Restablecer filtros" - }, - "comp:BAISessionAgentIds": { - "Agent": "Agente" + "DuplicatedName": "Este nombre ya está en uso. \nIngrese un nombre diferente.", + "FileNameRequired": "Ingrese un nombre de archivo o carpeta." + } }, - "comp:BAIStatistic": { - "Unlimited": "Ilimitado" + "comp:PaginationInfoText": { + "Total": "{{start}} - {{end}} de {{total}} elementos" }, "comp:ResourceStatistics": { "NoResourcesData": "No hay datos de recursos disponibles" + }, + "error": { + "UnknownError": "Ocurrió un error desconocido. \nPor favor intente de nuevo." + }, + "general": { + "NSelected": "{{count}} seleccionado", + "button": { + "CopyAll": "Copiar todo", + "Create": "Crear", + "Delete": "Borrar", + "Upload": "Subir" + } } } diff --git a/packages/backend.ai-ui/src/locale/fi.json b/packages/backend.ai-ui/src/locale/fi.json index 3a43425e75..c8faa225ab 100644 --- a/packages/backend.ai-ui/src/locale/fi.json +++ b/packages/backend.ai-ui/src/locale/fi.json @@ -1,67 +1,92 @@ { "$schema": "../../i18n.schema.json", - "comp:BAITestButton": { - "Test": "testi" + "comp:BAIArtifactRevisionTable": { + "Action": "Toiminta", + "LatestVersion": "Uusin versio", + "Name": "Nimi", + "Size": "Koko", + "Status": "Status", + "Updated": "Päivitetty", + "Version": "Versio" }, - "comp:PaginationInfoText": { - "Total": "{{start}}–{{end}} yhteensä {{total}} kohteesta" + "comp:BAIArtifactTable": { + "Action": "Toiminta", + "PullLatestVersion": "Vedä uusin versio", + "Size": "Koko", + "Updated": "Päivitetty", + "Version": "Versio" }, - "error": { - "UnknownError": "Tapahtui tuntematon virhe. \nYritä uudelleen." + "comp:BAIImportArtifactModal": { + "Description": "Kuvaus", + "Name": "Nimi", + "Pull": "Vedä", + "PullArtifact": "Vetää artefakti", + "PulledVersionsAreExcluded": "Vedetyt versiot jätetään pois.", + "Source": "Lähde", + "Type": "Tyyppi" }, - "general": { - "NSelected": "{{count}} valittu", - "button": { - "Delete": "Poistaa", - "Create": "Luoda", - "Upload": "Ladata", - "CopyAll": "Kopioida kaikki" - } + "comp:BAIPropertyFilter": { + "PlaceHolder": "Etsi", + "ResetFilter": "Nollaa suodattimet" + }, + "comp:BAISessionAgentIds": { + "Agent": "Agentti" + }, + "comp:BAIStatistic": { + "Unlimited": "Rajoittamaton" + }, + "comp:BAITable": { + "SearchTableColumn": "Hakutaulukon sarakkeet", + "SelectColumnToDisplay": "Valitse näytettävä sarakkeet", + "SettingTable": "Taulukon asetukset" + }, + "comp:BAITestButton": { + "Test": "testi" }, "comp:FileExplorer": { - "SelectedItemsDeletedSuccessfully": "Valitut tiedostot ja kansiot on poistettu onnistuneesti.", - "DeleteSelectedItemsDialog": "Poista vahvistus", + "ChangeFileExtension": "Vaihda tiedoston laajennus", + "ChangeFileExtensionDesc": "Tiedoston laajennuksen muuttaminen voi aiheuttaa tiedoston käyttökelvottoman tai avoimen väärin. \nHaluatko edetä?", + "Controls": "Hallintalaitteet", + "CreateANewFolder": "Luo uusi kansio", + "CreatedAt": "Luotu jhk", "DeleteSelectedItemDesc": "Poistettuja tiedostoja ja kansioita ei voida palauttaa. \nHaluatko edetä?", + "DeleteSelectedItemsDialog": "Poista vahvistus", + "DownloadStarted": "Tiedosto \"{{fileName}}\" lataus on alkanut.", + "DragAndDropDesc": "Vedä ja pudota tiedostoja tälle alueelle ladataksesi.", + "DuplicatedFiles": "Korvata vahvistus", + "DuplicatedFilesDesc": "Tiedosto tai kansio, jolla on sama nimi, on jo olemassa. \nHaluatko korvata?", "FolderCreatedSuccessfully": "Kansio luotu onnistuneesti.", - "CreateANewFolder": "Luo uusi kansio", "FolderName": "Kansionimi", - "PleaseEnterAFolderName": "Anna kansionimi.", "MaxFolderNameLength": "Kansion nimen on oltava enintään 255 merkkiä.", + "ModifiedAt": "Muutettu", "Name": "Nimi", + "PleaseEnterAFolderName": "Anna kansionimi.", + "RenameSuccess": "Nimi on muutettu onnistuneesti.", + "SelectedItemsDeletedSuccessfully": "Valitut tiedostot ja kansiot on poistettu onnistuneesti.", "Size": "Koko", - "CreatedAt": "Luotu jhk", - "ModifiedAt": "Muutettu", - "Controls": "Hallintalaitteet", "UploadFiles": "Lähetä tiedostot", "UploadFolder": "Lataa kansio", - "DownloadStarted": "Tiedosto \"{{fileName}}\" lataus on alkanut.", "error": { - "FileNameRequired": "Anna tiedoston tai kansionimi.", - "DuplicatedName": "Tämä nimi on jo käytössä. \nAnna erilainen nimi." - }, - "DuplicatedFilesDesc": "Tiedosto tai kansio, jolla on sama nimi, on jo olemassa. \nHaluatko korvata?", - "DuplicatedFiles": "Korvata vahvistus", - "DragAndDropDesc": "Vedä ja pudota tiedostoja tälle alueelle ladataksesi.", - "ChangeFileExtensionDesc": "Tiedoston laajennuksen muuttaminen voi aiheuttaa tiedoston käyttökelvottoman tai avoimen väärin. \nHaluatko edetä?", - "ChangeFileExtension": "Vaihda tiedoston laajennus", - "RenameSuccess": "Nimi on muutettu onnistuneesti." - }, - "comp:BAITable": { - "SettingTable": "Taulukon asetukset", - "SelectColumnToDisplay": "Valitse näytettävä sarakkeet", - "SearchTableColumn": "Hakutaulukon sarakkeet" - }, - "comp:BAIPropertyFilter": { - "PlaceHolder": "Etsi", - "ResetFilter": "Nollaa suodattimet" - }, - "comp:BAISessionAgentIds": { - "Agent": "Agentti" + "DuplicatedName": "Tämä nimi on jo käytössä. \nAnna erilainen nimi.", + "FileNameRequired": "Anna tiedoston tai kansionimi." + } }, - "comp:BAIStatistic": { - "Unlimited": "Rajoittamaton" + "comp:PaginationInfoText": { + "Total": "{{start}}–{{end}} yhteensä {{total}} kohteesta" }, "comp:ResourceStatistics": { "NoResourcesData": "Resurssitietoja ei ole käytettävissä" + }, + "error": { + "UnknownError": "Tapahtui tuntematon virhe. \nYritä uudelleen." + }, + "general": { + "NSelected": "{{count}} valittu", + "button": { + "CopyAll": "Kopioida kaikki", + "Create": "Luoda", + "Delete": "Poistaa", + "Upload": "Ladata" + } } } diff --git a/packages/backend.ai-ui/src/locale/fr.json b/packages/backend.ai-ui/src/locale/fr.json index c0e903e3d6..d568022ab4 100644 --- a/packages/backend.ai-ui/src/locale/fr.json +++ b/packages/backend.ai-ui/src/locale/fr.json @@ -1,67 +1,92 @@ { "$schema": "../../i18n.schema.json", - "comp:BAITestButton": { - "Test": "test" + "comp:BAIArtifactRevisionTable": { + "Action": "Action", + "LatestVersion": "Dernière version", + "Name": "Nom", + "Size": "Taille", + "Status": "Statut", + "Updated": "Mis à jour", + "Version": "Version" }, - "comp:PaginationInfoText": { - "Total": "{{start}} - {{end}} des éléments {{total}}" + "comp:BAIArtifactTable": { + "Action": "Action", + "PullLatestVersion": "Tirez la dernière version", + "Size": "Taille", + "Updated": "Mis à jour", + "Version": "Version" }, - "error": { - "UnknownError": "Une erreur inconnue s'est produite. \nVeuillez réessayer." + "comp:BAIImportArtifactModal": { + "Description": "Description", + "Name": "Nom", + "Pull": "Tirer", + "PullArtifact": "Tirez l'artefact", + "PulledVersionsAreExcluded": "Les versions tirées sont exclues.", + "Source": "Source", + "Type": "Taper" }, - "general": { - "NSelected": "{{count}} sélectionné", - "button": { - "Delete": "Supprimer", - "Create": "Créer", - "Upload": "Télécharger", - "CopyAll": "Copier tout" - } + "comp:BAIPropertyFilter": { + "PlaceHolder": "Recherche", + "ResetFilter": "Réinitialiser les filtres" + }, + "comp:BAISessionAgentIds": { + "Agent": "Agent" + }, + "comp:BAIStatistic": { + "Unlimited": "Illimité" + }, + "comp:BAITable": { + "SearchTableColumn": "Colonnes de table de recherche", + "SelectColumnToDisplay": "Sélectionnez des colonnes à afficher", + "SettingTable": "Paramètres de la table" + }, + "comp:BAITestButton": { + "Test": "test" }, "comp:FileExplorer": { - "SelectedItemsDeletedSuccessfully": "Les fichiers et dossiers sélectionnés ont été supprimés avec succès.", - "DeleteSelectedItemsDialog": "Supprimer la confirmation", + "ChangeFileExtension": "Modifier l'extension du fichier", + "ChangeFileExtensionDesc": "La modification de l'extension du fichier peut faire en sorte que le fichier devienne inutilisable ou s'ouvre incorrectement. \nVoulez-vous continuer?", + "Controls": "Commandes", + "CreateANewFolder": "Créer un nouveau dossier", + "CreatedAt": "Créé à", "DeleteSelectedItemDesc": "Les fichiers et les dossiers supprimés ne peuvent pas être restaurés. \nVoulez-vous continuer?", + "DeleteSelectedItemsDialog": "Supprimer la confirmation", + "DownloadStarted": "Fichier \"{{fileName}}\" Le téléchargement a commencé.", + "DragAndDropDesc": "Faites glisser et déposez les fichiers dans cette zone pour télécharger.", + "DuplicatedFiles": "Écran de confirmation", + "DuplicatedFilesDesc": "Le fichier ou le dossier avec le même nom existe déjà. \nVoulez-vous écraser?", "FolderCreatedSuccessfully": "Dossier créé avec succès.", - "CreateANewFolder": "Créer un nouveau dossier", "FolderName": "Nom du dossier", - "PleaseEnterAFolderName": "Veuillez saisir le nom du dossier.", "MaxFolderNameLength": "Le nom du dossier doit comporter 255 caractères ou moins.", + "ModifiedAt": "Modifié à", "Name": "Nom", + "PleaseEnterAFolderName": "Veuillez saisir le nom du dossier.", + "RenameSuccess": "Le nom a été modifié avec succès.", + "SelectedItemsDeletedSuccessfully": "Les fichiers et dossiers sélectionnés ont été supprimés avec succès.", "Size": "Taille", - "CreatedAt": "Créé à", - "ModifiedAt": "Modifié à", - "Controls": "Commandes", "UploadFiles": "Télécharger des fichiers", "UploadFolder": "Dossier de téléchargement", - "DownloadStarted": "Fichier \"{{fileName}}\" Le téléchargement a commencé.", "error": { - "FileNameRequired": "Veuillez saisir un fichier ou un nom de dossier.", - "DuplicatedName": "Ce nom est déjà utilisé. \nVeuillez saisir un autre nom." - }, - "DuplicatedFilesDesc": "Le fichier ou le dossier avec le même nom existe déjà. \nVoulez-vous écraser?", - "DuplicatedFiles": "Écran de confirmation", - "DragAndDropDesc": "Faites glisser et déposez les fichiers dans cette zone pour télécharger.", - "ChangeFileExtensionDesc": "La modification de l'extension du fichier peut faire en sorte que le fichier devienne inutilisable ou s'ouvre incorrectement. \nVoulez-vous continuer?", - "ChangeFileExtension": "Modifier l'extension du fichier", - "RenameSuccess": "Le nom a été modifié avec succès." - }, - "comp:BAITable": { - "SelectColumnToDisplay": "Sélectionnez des colonnes à afficher", - "SettingTable": "Paramètres de la table", - "SearchTableColumn": "Colonnes de table de recherche" - }, - "comp:BAIPropertyFilter": { - "PlaceHolder": "Recherche", - "ResetFilter": "Réinitialiser les filtres" - }, - "comp:BAISessionAgentIds": { - "Agent": "Agent" + "DuplicatedName": "Ce nom est déjà utilisé. \nVeuillez saisir un autre nom.", + "FileNameRequired": "Veuillez saisir un fichier ou un nom de dossier." + } }, - "comp:BAIStatistic": { - "Unlimited": "Illimité" + "comp:PaginationInfoText": { + "Total": "{{start}} - {{end}} des éléments {{total}}" }, "comp:ResourceStatistics": { "NoResourcesData": "Aucune données de ressources disponibles" + }, + "error": { + "UnknownError": "Une erreur inconnue s'est produite. \nVeuillez réessayer." + }, + "general": { + "NSelected": "{{count}} sélectionné", + "button": { + "CopyAll": "Copier tout", + "Create": "Créer", + "Delete": "Supprimer", + "Upload": "Télécharger" + } } } diff --git a/packages/backend.ai-ui/src/locale/id.json b/packages/backend.ai-ui/src/locale/id.json index 2b370fae51..5c77f41e03 100644 --- a/packages/backend.ai-ui/src/locale/id.json +++ b/packages/backend.ai-ui/src/locale/id.json @@ -1,67 +1,92 @@ { "$schema": "../../i18n.schema.json", - "comp:BAITestButton": { - "Test": "tes" + "comp:BAIArtifactRevisionTable": { + "Action": "Tindakan", + "LatestVersion": "Versi Terbaru", + "Name": "Nama", + "Size": "Ukuran", + "Status": "Status", + "Updated": "Diperbarui", + "Version": "Versi" }, - "comp:PaginationInfoText": { - "Total": "{{start}} - {{end}} dari {{total}} item" + "comp:BAIArtifactTable": { + "Action": "Tindakan", + "PullLatestVersion": "Tarik versi terbaru", + "Size": "Ukuran", + "Updated": "Diperbarui", + "Version": "Versi" }, - "error": { - "UnknownError": "Terjadi kesalahan yang tidak diketahui. \nTolong coba lagi." + "comp:BAIImportArtifactModal": { + "Description": "Keterangan", + "Name": "Nama", + "Pull": "Menarik", + "PullArtifact": "Tarik artefak", + "PulledVersionsAreExcluded": "Versi yang ditarik dikecualikan.", + "Source": "Sumber", + "Type": "Jenis" }, - "general": { - "NSelected": "{{count}} dipilih", - "button": { - "Delete": "Menghapus", - "Create": "Membuat", - "Upload": "Mengunggah", - "CopyAll": "Salin semua" - } + "comp:BAIPropertyFilter": { + "PlaceHolder": "Pencarian", + "ResetFilter": "Setel ulang filter" + }, + "comp:BAISessionAgentIds": { + "Agent": "Agen" + }, + "comp:BAIStatistic": { + "Unlimited": "Tak terbatas" + }, + "comp:BAITable": { + "SearchTableColumn": "Kolom Tabel Cari", + "SelectColumnToDisplay": "Pilih kolom untuk ditampilkan", + "SettingTable": "Pengaturan Tabel" + }, + "comp:BAITestButton": { + "Test": "tes" }, "comp:FileExplorer": { - "SelectedItemsDeletedSuccessfully": "File dan folder yang dipilih telah berhasil dihapus.", - "DeleteSelectedItemsDialog": "Hapus Konfirmasi", + "ChangeFileExtension": "Ubah ekstensi file", + "ChangeFileExtensionDesc": "Mengubah ekstensi file dapat menyebabkan file menjadi tidak dapat digunakan atau dibuka secara tidak benar. \nApakah Anda ingin melanjutkan?", + "Controls": "Kontrol", + "CreateANewFolder": "Buat folder baru", + "CreatedAt": "Dibuat di", "DeleteSelectedItemDesc": "File dan folder yang dihapus tidak dapat dipulihkan. \nApakah Anda ingin melanjutkan?", + "DeleteSelectedItemsDialog": "Hapus Konfirmasi", + "DownloadStarted": "File \"{{fileName}}\" unduhan telah dimulai.", + "DragAndDropDesc": "Seret dan jatuhkan file ke area ini untuk diunggah.", + "DuplicatedFiles": "Timpa konfirmasi", + "DuplicatedFilesDesc": "File atau folder dengan nama yang sama sudah ada. \nApakah Anda ingin menimpa?", "FolderCreatedSuccessfully": "Folder berhasil dibuat.", - "CreateANewFolder": "Buat folder baru", "FolderName": "Nama folder", - "PleaseEnterAFolderName": "Harap masukkan nama folder.", "MaxFolderNameLength": "Nama folder harus 255 karakter atau kurang.", + "ModifiedAt": "Dimodifikasi di", "Name": "Nama", + "PleaseEnterAFolderName": "Harap masukkan nama folder.", + "RenameSuccess": "Namanya telah berhasil diubah.", + "SelectedItemsDeletedSuccessfully": "File dan folder yang dipilih telah berhasil dihapus.", "Size": "Ukuran", - "CreatedAt": "Dibuat di", - "ModifiedAt": "Dimodifikasi di", - "Controls": "Kontrol", "UploadFiles": "Unggah file", "UploadFolder": "Unggah folder", - "DownloadStarted": "File \"{{fileName}}\" unduhan telah dimulai.", "error": { - "FileNameRequired": "Harap masukkan file atau nama folder.", - "DuplicatedName": "Nama ini sudah digunakan. \nHarap masukkan nama yang berbeda." - }, - "DuplicatedFilesDesc": "File atau folder dengan nama yang sama sudah ada. \nApakah Anda ingin menimpa?", - "DuplicatedFiles": "Timpa konfirmasi", - "DragAndDropDesc": "Seret dan jatuhkan file ke area ini untuk diunggah.", - "ChangeFileExtensionDesc": "Mengubah ekstensi file dapat menyebabkan file menjadi tidak dapat digunakan atau dibuka secara tidak benar. \nApakah Anda ingin melanjutkan?", - "ChangeFileExtension": "Ubah ekstensi file", - "RenameSuccess": "Namanya telah berhasil diubah." - }, - "comp:BAITable": { - "SelectColumnToDisplay": "Pilih kolom untuk ditampilkan", - "SettingTable": "Pengaturan Tabel", - "SearchTableColumn": "Kolom Tabel Cari" - }, - "comp:BAIPropertyFilter": { - "PlaceHolder": "Pencarian", - "ResetFilter": "Setel ulang filter" - }, - "comp:BAISessionAgentIds": { - "Agent": "Agen" + "DuplicatedName": "Nama ini sudah digunakan. \nHarap masukkan nama yang berbeda.", + "FileNameRequired": "Harap masukkan file atau nama folder." + } }, - "comp:BAIStatistic": { - "Unlimited": "Tak terbatas" + "comp:PaginationInfoText": { + "Total": "{{start}} - {{end}} dari {{total}} item" }, "comp:ResourceStatistics": { "NoResourcesData": "Tidak ada data sumber daya yang tersedia" + }, + "error": { + "UnknownError": "Terjadi kesalahan yang tidak diketahui. \nTolong coba lagi." + }, + "general": { + "NSelected": "{{count}} dipilih", + "button": { + "CopyAll": "Salin semua", + "Create": "Membuat", + "Delete": "Menghapus", + "Upload": "Mengunggah" + } } } diff --git a/packages/backend.ai-ui/src/locale/it.json b/packages/backend.ai-ui/src/locale/it.json index ff573552bb..efac5ec4d9 100644 --- a/packages/backend.ai-ui/src/locale/it.json +++ b/packages/backend.ai-ui/src/locale/it.json @@ -1,67 +1,92 @@ { "$schema": "../../i18n.schema.json", - "comp:BAITestButton": { - "Test": "test" + "comp:BAIArtifactRevisionTable": { + "Action": "Azione", + "LatestVersion": "Ultima versione", + "Name": "Nome", + "Size": "Misurare", + "Status": "Stato", + "Updated": "Aggiornato", + "Version": "Versione" }, - "comp:PaginationInfoText": { - "Total": "{{start}} - {{end}} di {{total}} elementi" + "comp:BAIArtifactTable": { + "Action": "Azione", + "PullLatestVersion": "Estrarre l'ultima versione", + "Size": "Misurare", + "Updated": "Aggiornato", + "Version": "Versione" }, - "error": { - "UnknownError": "Si è verificato un errore sconosciuto. \nPer favore riprova." + "comp:BAIImportArtifactModal": { + "Description": "Descrizione", + "Name": "Nome", + "Pull": "Tiro", + "PullArtifact": "Tirare artefatto", + "PulledVersionsAreExcluded": "Le versioni tirate sono escluse.", + "Source": "Fonte", + "Type": "Tipo" }, - "general": { - "NSelected": "{{count}} selezionato", - "button": { - "Delete": "Eliminare", - "Create": "Creare", - "Upload": "Caricamento", - "CopyAll": "Copia tutto" - } + "comp:BAIPropertyFilter": { + "PlaceHolder": "Ricerca", + "ResetFilter": "Reimposta i filtri" + }, + "comp:BAISessionAgentIds": { + "Agent": "Agente" + }, + "comp:BAIStatistic": { + "Unlimited": "Illimitato" + }, + "comp:BAITable": { + "SearchTableColumn": "Colonne della tabella di ricerca", + "SelectColumnToDisplay": "Seleziona le colonne da visualizzare", + "SettingTable": "Impostazioni della tabella" + }, + "comp:BAITestButton": { + "Test": "test" }, "comp:FileExplorer": { - "SelectedItemsDeletedSuccessfully": "I file e le cartelle selezionati sono stati eliminati correttamente.", - "DeleteSelectedItemsDialog": "Elimina la conferma", + "ChangeFileExtension": "Modificare l'estensione del file", + "ChangeFileExtensionDesc": "La modifica dell'estensione del file può far sì che il file diventi inutilizzabile o si aprirà in modo errato. \nVuoi procedere?", + "Controls": "Controlli", + "CreateANewFolder": "Crea una nuova cartella", + "CreatedAt": "Creato a", "DeleteSelectedItemDesc": "I file e le cartelle cancellati non possono essere ripristinati. \nVuoi procedere?", + "DeleteSelectedItemsDialog": "Elimina la conferma", + "DownloadStarted": "File \"{{fileName}}\" è stato avviato il download.", + "DragAndDropDesc": "Trascina i file in quest'area da caricare.", + "DuplicatedFiles": "Sovrascrivere la conferma", + "DuplicatedFilesDesc": "Il file o la cartella con lo stesso nome esiste già. \nVuoi sovrascrivere?", "FolderCreatedSuccessfully": "Cartella creata correttamente.", - "CreateANewFolder": "Crea una nuova cartella", "FolderName": "Nome della cartella", - "PleaseEnterAFolderName": "Immettere il nome della cartella.", "MaxFolderNameLength": "Il nome della cartella deve essere di 255 caratteri o meno.", + "ModifiedAt": "Modificato a", "Name": "Nome", + "PleaseEnterAFolderName": "Immettere il nome della cartella.", + "RenameSuccess": "Il nome è stato cambiato con successo.", + "SelectedItemsDeletedSuccessfully": "I file e le cartelle selezionati sono stati eliminati correttamente.", "Size": "Misurare", - "CreatedAt": "Creato a", - "ModifiedAt": "Modificato a", - "Controls": "Controlli", "UploadFiles": "Carica file", "UploadFolder": "Caricamento Carica", - "DownloadStarted": "File \"{{fileName}}\" è stato avviato il download.", "error": { - "FileNameRequired": "Immettere un nome di file o cartella.", - "DuplicatedName": "Questo nome è già in uso. \nSi prega di inserire un nome diverso." - }, - "DuplicatedFilesDesc": "Il file o la cartella con lo stesso nome esiste già. \nVuoi sovrascrivere?", - "DuplicatedFiles": "Sovrascrivere la conferma", - "DragAndDropDesc": "Trascina i file in quest'area da caricare.", - "ChangeFileExtensionDesc": "La modifica dell'estensione del file può far sì che il file diventi inutilizzabile o si aprirà in modo errato. \nVuoi procedere?", - "ChangeFileExtension": "Modificare l'estensione del file", - "RenameSuccess": "Il nome è stato cambiato con successo." - }, - "comp:BAITable": { - "SettingTable": "Impostazioni della tabella", - "SelectColumnToDisplay": "Seleziona le colonne da visualizzare", - "SearchTableColumn": "Colonne della tabella di ricerca" - }, - "comp:BAIPropertyFilter": { - "PlaceHolder": "Ricerca", - "ResetFilter": "Reimposta i filtri" - }, - "comp:BAISessionAgentIds": { - "Agent": "Agente" + "DuplicatedName": "Questo nome è già in uso. \nSi prega di inserire un nome diverso.", + "FileNameRequired": "Immettere un nome di file o cartella." + } }, - "comp:BAIStatistic": { - "Unlimited": "Illimitato" + "comp:PaginationInfoText": { + "Total": "{{start}} - {{end}} di {{total}} elementi" }, "comp:ResourceStatistics": { "NoResourcesData": "Nessun dati sulle risorse disponibili" + }, + "error": { + "UnknownError": "Si è verificato un errore sconosciuto. \nPer favore riprova." + }, + "general": { + "NSelected": "{{count}} selezionato", + "button": { + "CopyAll": "Copia tutto", + "Create": "Creare", + "Delete": "Eliminare", + "Upload": "Caricamento" + } } } diff --git a/packages/backend.ai-ui/src/locale/ja.json b/packages/backend.ai-ui/src/locale/ja.json index d87760c1dd..bb3e0ab145 100644 --- a/packages/backend.ai-ui/src/locale/ja.json +++ b/packages/backend.ai-ui/src/locale/ja.json @@ -1,67 +1,92 @@ { "$schema": "../../i18n.schema.json", - "comp:BAITestButton": { - "Test": "テスト" + "comp:BAIArtifactRevisionTable": { + "Action": "アクション", + "LatestVersion": "最新バージョン", + "Name": "名前", + "Size": "サイズ", + "Status": "状態", + "Updated": "更新", + "Version": "バージョン" }, - "comp:PaginationInfoText": { - "Total": "{{start}} - {{end}} of {{total}}アイテム" + "comp:BAIArtifactTable": { + "Action": "アクション", + "PullLatestVersion": "最新バージョンをプルします", + "Size": "サイズ", + "Updated": "更新", + "Version": "バージョン" }, - "error": { - "UnknownError": "不明なエラーが発生しました。\nもう一度やり直してください。" + "comp:BAIImportArtifactModal": { + "Description": "説明", + "Name": "名前", + "Pull": "引く", + "PullArtifact": "アーティファクトを引っ張ります", + "PulledVersionsAreExcluded": "プルバージョンは除外されます。", + "Source": "ソース", + "Type": "タイプ" }, - "general": { - "NSelected": "{{count}}選択", - "button": { - "Delete": "消去", - "Create": "作成する", - "Upload": "アップロード", - "CopyAll": "すべてをコピーします" - } + "comp:BAIPropertyFilter": { + "PlaceHolder": "検索", + "ResetFilter": "フィルターをリセットする" + }, + "comp:BAISessionAgentIds": { + "Agent": "エージェント" + }, + "comp:BAIStatistic": { + "Unlimited": "無制限" + }, + "comp:BAITable": { + "SearchTableColumn": "テーブル列を検索します", + "SelectColumnToDisplay": "表示する列を選択します", + "SettingTable": "テーブル設定" + }, + "comp:BAITestButton": { + "Test": "テスト" }, "comp:FileExplorer": { - "SelectedItemsDeletedSuccessfully": "選択したファイルとフォルダーは正常に削除されました。", - "DeleteSelectedItemsDialog": "確認を削除します", + "ChangeFileExtension": "ファイル拡張子を変更します", + "ChangeFileExtensionDesc": "ファイル拡張子を変更すると、ファイルが使用できなくなったり、誤って開いたりすることがあります。\n先に進みたいですか?", + "Controls": "コントロール", + "CreateANewFolder": "新しいフォルダーを作成します", + "CreatedAt": "で作成されました", "DeleteSelectedItemDesc": "削除されたファイルとフォルダーを復元できません。\n先に進みたいですか?", + "DeleteSelectedItemsDialog": "確認を削除します", + "DownloadStarted": "ファイル \"{{fileName}}\"ダウンロードが開始されました。", + "DragAndDropDesc": "このエリアにファイルをドラッグアンドドロップしてアップロードします。", + "DuplicatedFiles": "確認の上書き", + "DuplicatedFilesDesc": "同じ名前のファイルまたはフォルダーはすでに存在しています。\n上書きしますか?", "FolderCreatedSuccessfully": "フォルダーは正常に作成されました。", - "CreateANewFolder": "新しいフォルダーを作成します", "FolderName": "フォルダー名", - "PleaseEnterAFolderName": "フォルダー名を入力してください。", "MaxFolderNameLength": "フォルダー名は255文字以下でなければなりません。", + "ModifiedAt": "で変更されました", "Name": "名前", + "PleaseEnterAFolderName": "フォルダー名を入力してください。", + "RenameSuccess": "名前は正常に変更されました。", + "SelectedItemsDeletedSuccessfully": "選択したファイルとフォルダーは正常に削除されました。", "Size": "サイズ", - "CreatedAt": "で作成されました", - "ModifiedAt": "で変更されました", - "Controls": "コントロール", "UploadFiles": "ファイルをアップロードします", "UploadFolder": "フォルダーをアップロードします", - "DownloadStarted": "ファイル \"{{fileName}}\"ダウンロードが開始されました。", "error": { - "FileNameRequired": "ファイルまたはフォルダー名を入力してください。", - "DuplicatedName": "この名前はすでに使用されています。\n別の名前を入力してください。" - }, - "DuplicatedFilesDesc": "同じ名前のファイルまたはフォルダーはすでに存在しています。\n上書きしますか?", - "DuplicatedFiles": "確認の上書き", - "DragAndDropDesc": "このエリアにファイルをドラッグアンドドロップしてアップロードします。", - "ChangeFileExtensionDesc": "ファイル拡張子を変更すると、ファイルが使用できなくなったり、誤って開いたりすることがあります。\n先に進みたいですか?", - "ChangeFileExtension": "ファイル拡張子を変更します", - "RenameSuccess": "名前は正常に変更されました。" - }, - "comp:BAITable": { - "SelectColumnToDisplay": "表示する列を選択します", - "SettingTable": "テーブル設定", - "SearchTableColumn": "テーブル列を検索します" - }, - "comp:BAIPropertyFilter": { - "PlaceHolder": "検索", - "ResetFilter": "フィルターをリセットする" - }, - "comp:BAISessionAgentIds": { - "Agent": "エージェント" + "DuplicatedName": "この名前はすでに使用されています。\n別の名前を入力してください。", + "FileNameRequired": "ファイルまたはフォルダー名を入力してください。" + } }, - "comp:BAIStatistic": { - "Unlimited": "無制限" + "comp:PaginationInfoText": { + "Total": "{{start}} - {{end}} of {{total}}アイテム" }, "comp:ResourceStatistics": { "NoResourcesData": "利用可能なリソースデータはありません" + }, + "error": { + "UnknownError": "不明なエラーが発生しました。\nもう一度やり直してください。" + }, + "general": { + "NSelected": "{{count}}選択", + "button": { + "CopyAll": "すべてをコピーします", + "Create": "作成する", + "Delete": "消去", + "Upload": "アップロード" + } } } diff --git a/packages/backend.ai-ui/src/locale/ko.json b/packages/backend.ai-ui/src/locale/ko.json index 767daf817d..d5709d33b8 100644 --- a/packages/backend.ai-ui/src/locale/ko.json +++ b/packages/backend.ai-ui/src/locale/ko.json @@ -1,67 +1,92 @@ { "$schema": "../../i18n.schema.json", - "comp:BAITestButton": { - "Test": "테스트" + "comp:BAIArtifactRevisionTable": { + "Action": "행동", + "LatestVersion": "최신 버전", + "Name": "이름", + "Size": "크기", + "Status": "상태", + "Updated": "업데이트", + "Version": "버전" }, - "comp:PaginationInfoText": { - "Total": "전체 {{total}}개 중 {{start}} - {{end}}" + "comp:BAIArtifactTable": { + "Action": "행동", + "PullLatestVersion": "최신 버전을 가져옵니다", + "Size": "크기", + "Updated": "업데이트", + "Version": "버전" }, - "error": { - "UnknownError": "알 수 없는 오류가 발생했습니다. 다시 시도해 주세요." + "comp:BAIImportArtifactModal": { + "Description": "설명", + "Name": "이름", + "Pull": "가져오기", + "PullArtifact": "아티팩트 가져오기", + "PulledVersionsAreExcluded": "가져온 버전들은 제외되었습니다.", + "Source": "소스", + "Type": "유형" }, - "general": { - "NSelected": "{{count}}개 선택됨", - "button": { - "Delete": "삭제", - "Create": "생성", - "Upload": "업로드", - "CopyAll": "모두 복사" - } + "comp:BAIPropertyFilter": { + "PlaceHolder": "검색", + "ResetFilter": "필터 초기화" + }, + "comp:BAISessionAgentIds": { + "Agent": "실행노드" + }, + "comp:BAIStatistic": { + "Unlimited": "제한없음" + }, + "comp:BAITable": { + "SearchTableColumn": "표시할 열 검색", + "SelectColumnToDisplay": "표시할 열 선택", + "SettingTable": "표 설정" + }, + "comp:BAITestButton": { + "Test": "테스트" }, "comp:FileExplorer": { - "SelectedItemsDeletedSuccessfully": "선택한 파일 및 폴더가 성공적으로 삭제되었습니다.", - "DeleteSelectedItemsDialog": "삭제 확인", + "ChangeFileExtension": "파일 확장자 변경", + "ChangeFileExtensionDesc": "파일 확장자를 변경하면 파일이 사용 불가능해지거나 올바르게 열리지 않을 수 있습니다. 계속하시겠습니까?", + "Controls": "제어", + "CreateANewFolder": "새 폴더 생성", + "CreatedAt": "생성일", "DeleteSelectedItemDesc": "삭제된 파일 및 폴더는 복구할 수 없습니다. 계속하시겠습니까?", + "DeleteSelectedItemsDialog": "삭제 확인", + "DownloadStarted": "파일 \"{{fileName}}\" 다운로드가 시작되었습니다.", + "DragAndDropDesc": "파일을 이곳에 드래그하여 업로드하세요.", + "DuplicatedFiles": "덮어쓰기 확인", + "DuplicatedFilesDesc": "업로드 하려는 파일 또는 폴더가 이미 존재합니다. 덮어쓰시겠습니까?", "FolderCreatedSuccessfully": "폴더가 성공적으로 생성되었습니다.", - "CreateANewFolder": "새 폴더 생성", "FolderName": "폴더 이름", - "PleaseEnterAFolderName": "폴더 이름을 입력해 주세요.", "MaxFolderNameLength": "폴더 이름은 255자 이내여야 합니다.", + "ModifiedAt": "수정일", "Name": "이름", + "PleaseEnterAFolderName": "폴더 이름을 입력해 주세요.", + "RenameSuccess": "이름이 성공적으로 변경되었습니다.", + "SelectedItemsDeletedSuccessfully": "선택한 파일 및 폴더가 성공적으로 삭제되었습니다.", "Size": "크기", - "CreatedAt": "생성일", - "ModifiedAt": "수정일", - "Controls": "제어", "UploadFiles": "파일 업로드", "UploadFolder": "폴더 업로드", - "DownloadStarted": "파일 \"{{fileName}}\" 다운로드가 시작되었습니다.", "error": { - "FileNameRequired": "파일 또는 폴더 이름을 입력해주세요.", - "DuplicatedName": "중복된 이름이 있습니다. 다른 이름을 입력해주세요." - }, - "DuplicatedFilesDesc": "업로드 하려는 파일 또는 폴더가 이미 존재합니다. 덮어쓰시겠습니까?", - "DuplicatedFiles": "덮어쓰기 확인", - "DragAndDropDesc": "파일을 이곳에 드래그하여 업로드하세요.", - "ChangeFileExtensionDesc": "파일 확장자를 변경하면 파일이 사용 불가능해지거나 올바르게 열리지 않을 수 있습니다. 계속하시겠습니까?", - "ChangeFileExtension": "파일 확장자 변경", - "RenameSuccess": "이름이 성공적으로 변경되었습니다." - }, - "comp:BAITable": { - "SettingTable": "표 설정", - "SelectColumnToDisplay": "표시할 열 선택", - "SearchTableColumn": "표시할 열 검색" - }, - "comp:BAIPropertyFilter": { - "PlaceHolder": "검색", - "ResetFilter": "필터 초기화" - }, - "comp:BAISessionAgentIds": { - "Agent": "실행노드" + "DuplicatedName": "중복된 이름이 있습니다. 다른 이름을 입력해주세요.", + "FileNameRequired": "파일 또는 폴더 이름을 입력해주세요." + } }, - "comp:BAIStatistic": { - "Unlimited": "제한없음" + "comp:PaginationInfoText": { + "Total": "전체 {{total}}개 중 {{start}} - {{end}}" }, "comp:ResourceStatistics": { "NoResourcesData": "표시할 리소스 데이터가 없습니다" + }, + "error": { + "UnknownError": "알 수 없는 오류가 발생했습니다. 다시 시도해 주세요." + }, + "general": { + "NSelected": "{{count}}개 선택됨", + "button": { + "CopyAll": "모두 복사", + "Create": "생성", + "Delete": "삭제", + "Upload": "업로드" + } } } diff --git a/packages/backend.ai-ui/src/locale/mn.json b/packages/backend.ai-ui/src/locale/mn.json index 7689879b5e..6d286cad36 100644 --- a/packages/backend.ai-ui/src/locale/mn.json +++ b/packages/backend.ai-ui/src/locale/mn.json @@ -1,67 +1,92 @@ { "$schema": "../../i18n.schema.json", - "comp:BAITestButton": { - "Test": "турших" + "comp:BAIArtifactRevisionTable": { + "Action": "Үйл ажиллагаа", + "LatestVersion": "Хамгийн сүүлийн үеийн хувилбар", + "Name": "Нэр", + "Size": "Хэмжээ", + "Status": "Байдал", + "Updated": "Шинэчилсэн цаг нь", + "Version": "Таамаглал" }, - "comp:PaginationInfoText": { - "Total": "{{start}} - {{{end}} {{total}}}} зүйл" + "comp:BAIArtifactTable": { + "Action": "Үйл ажиллагаа", + "PullLatestVersion": "Хамгийн сүүлийн хувилбарыг татах", + "Size": "Хэмжээ", + "Updated": "Шинэчилсэн цаг нь", + "Version": "Таамаглал" }, - "error": { - "UnknownError": "Үл мэдэгдэх алдаа гарлаа. \nДахин оролдоно уу." + "comp:BAIImportArtifactModal": { + "Description": "Тодорхойлолт / төрөл анги", + "Name": "Нэр", + "Pull": "Татах", + "PullArtifact": "Олдворыг татах", + "PulledVersionsAreExcluded": "Татсан хувилбарыг хассан болно.", + "Source": "Язгуур", + "Type": "Маяг" }, - "general": { - "NSelected": "{{count}} сонгогдсон", - "button": { - "Delete": "Эдгээх", - "Create": "Шуүгиан дэгдээх", - "Upload": "Байршуулах", - "CopyAll": "Бүгдийг хуулбарлах" - } + "comp:BAIPropertyFilter": { + "PlaceHolder": "Хайх", + "ResetFilter": "Шүүлтүүрийг дахин тохируулах" + }, + "comp:BAISessionAgentIds": { + "Agent": "Агент" + }, + "comp:BAIStatistic": { + "Unlimited": "Хязгааргүй" + }, + "comp:BAITable": { + "SearchTableColumn": "Хүснэгтийн баганыг хайх", + "SelectColumnToDisplay": "Дэлгэцийн баганыг сонгоно уу", + "SettingTable": "Хүснэгтийн тохиргоо" + }, + "comp:BAITestButton": { + "Test": "турших" }, "comp:FileExplorer": { - "SelectedItemsDeletedSuccessfully": "Сонгосон файлууд болон хавтасыг амжилттай устгасан байна.", - "DeleteSelectedItemsDialog": "Баталгаажуулалтыг устгах", + "ChangeFileExtension": "Файлын өргөтгөлийг өөрчлөх", + "ChangeFileExtensionDesc": "Файлын өргөтгөлийг өөрчлөх нь файлыг ашиглах боломжгүй эсвэл буруу нээхэд хүргэж болзошгүй юм. \nТа үргэлжлүүлэхийг хүсч байна уу?", + "Controls": "Удирдлага", + "CreateANewFolder": "Шинэ хавтас үүсгэх", + "CreatedAt": "Бүтэмж дээр бүтсэн", "DeleteSelectedItemDesc": "Устгасан файлууд, хавтасыг сэргээх боломжгүй байна. \nТа үргэлжлүүлэхийг хүсч байна уу?", + "DeleteSelectedItemsDialog": "Баталгаажуулалтыг устгах", + "DownloadStarted": "Файл \"{{fileName}} нь\" Татаж авах ажил эхэллээ.", + "DragAndDropDesc": "Байршуулахын тулд энэ газарт файлуудыг чирч, буулгана уу.", + "DuplicatedFiles": "Баталгаажуулалтыг дарж бичих", + "DuplicatedFilesDesc": "Ижил нэртэй файл эсвэл хавтас аль хэдийн байна. \nТа дарж бичихийг хүсч байна уу?", "FolderCreatedSuccessfully": "Амжилтанд амжилттай бүтээгдсэн.", - "CreateANewFolder": "Шинэ хавтас үүсгэх", "FolderName": "Хөдөлгөөний нэр", - "PleaseEnterAFolderName": "Фолдерын нэрийг оруулна уу.", "MaxFolderNameLength": "Фолдерын нэр 255 тэмдэгт буюу түүнээс бага тэмдэгт байх ёстой.", + "ModifiedAt": "Өөрчлөгдсөн", "Name": "Нэр", + "PleaseEnterAFolderName": "Фолдерын нэрийг оруулна уу.", + "RenameSuccess": "Энэ нэр амжилттай өөрчлөгдсөн байна.", + "SelectedItemsDeletedSuccessfully": "Сонгосон файлууд болон хавтасыг амжилттай устгасан байна.", "Size": "Хэмжээ", - "CreatedAt": "Бүтэмж дээр бүтсэн", - "ModifiedAt": "Өөрчлөгдсөн", - "Controls": "Удирдлага", "UploadFiles": "Файл байршуулах", "UploadFolder": "Фолдерыг байршуулах", - "DownloadStarted": "Файл \"{{fileName}} нь\" Татаж авах ажил эхэллээ.", "error": { - "FileNameRequired": "Файл эсвэл хавтасны нэрийг оруулна уу.", - "DuplicatedName": "Энэ нэр аль хэдийн ашиглагдаж байна. \nӨөр нэр оруулна уу." - }, - "DuplicatedFilesDesc": "Ижил нэртэй файл эсвэл хавтас аль хэдийн байна. \nТа дарж бичихийг хүсч байна уу?", - "DuplicatedFiles": "Баталгаажуулалтыг дарж бичих", - "DragAndDropDesc": "Байршуулахын тулд энэ газарт файлуудыг чирч, буулгана уу.", - "ChangeFileExtensionDesc": "Файлын өргөтгөлийг өөрчлөх нь файлыг ашиглах боломжгүй эсвэл буруу нээхэд хүргэж болзошгүй юм. \nТа үргэлжлүүлэхийг хүсч байна уу?", - "ChangeFileExtension": "Файлын өргөтгөлийг өөрчлөх", - "RenameSuccess": "Энэ нэр амжилттай өөрчлөгдсөн байна." - }, - "comp:BAITable": { - "SettingTable": "Хүснэгтийн тохиргоо", - "SelectColumnToDisplay": "Дэлгэцийн баганыг сонгоно уу", - "SearchTableColumn": "Хүснэгтийн баганыг хайх" - }, - "comp:BAIPropertyFilter": { - "PlaceHolder": "Хайх", - "ResetFilter": "Шүүлтүүрийг дахин тохируулах" - }, - "comp:BAISessionAgentIds": { - "Agent": "Агент" + "DuplicatedName": "Энэ нэр аль хэдийн ашиглагдаж байна. \nӨөр нэр оруулна уу.", + "FileNameRequired": "Файл эсвэл хавтасны нэрийг оруулна уу." + } }, - "comp:BAIStatistic": { - "Unlimited": "Хязгааргүй" + "comp:PaginationInfoText": { + "Total": "{{start}} - {{{end}} {{total}}}} зүйл" }, "comp:ResourceStatistics": { "NoResourcesData": "Нөөцийн мэдээлэл байхгүй байна" + }, + "error": { + "UnknownError": "Үл мэдэгдэх алдаа гарлаа. \nДахин оролдоно уу." + }, + "general": { + "NSelected": "{{count}} сонгогдсон", + "button": { + "CopyAll": "Бүгдийг хуулбарлах", + "Create": "Шуүгиан дэгдээх", + "Delete": "Эдгээх", + "Upload": "Байршуулах" + } } } diff --git a/packages/backend.ai-ui/src/locale/ms.json b/packages/backend.ai-ui/src/locale/ms.json index c7aa5c0d13..8c92c1161f 100644 --- a/packages/backend.ai-ui/src/locale/ms.json +++ b/packages/backend.ai-ui/src/locale/ms.json @@ -1,67 +1,92 @@ { "$schema": "../../i18n.schema.json", - "comp:BAITestButton": { - "Test": "ujian" + "comp:BAIArtifactRevisionTable": { + "Action": "Tindakan", + "LatestVersion": "Versi terkini", + "Name": "Nama", + "Size": "Saiz", + "Status": "Status", + "Updated": "Dikemas kini", + "Version": "Versi" }, - "comp:PaginationInfoText": { - "Total": "{{start}} - {{end}} dari {{total}} item" + "comp:BAIArtifactTable": { + "Action": "Tindakan", + "PullLatestVersion": "Tarik versi terkini", + "Size": "Saiz", + "Updated": "Dikemas kini", + "Version": "Versi" }, - "error": { - "UnknownError": "Kesalahan yang tidak diketahui berlaku. \nSila cuba lagi." + "comp:BAIImportArtifactModal": { + "Description": "Penerangan", + "Name": "Nama", + "Pull": "Tarik", + "PullArtifact": "Tarik artifak", + "PulledVersionsAreExcluded": "Versi yang ditarik dikecualikan.", + "Source": "Sumber", + "Type": "Jenis" }, - "general": { - "NSelected": "{{count}} dipilih", - "button": { - "Delete": "Padam", - "Create": "Buat", - "Upload": "Muat naik", - "CopyAll": "Salin semua" - } + "comp:BAIPropertyFilter": { + "PlaceHolder": "Cari", + "ResetFilter": "Tetapkan semula penapis" + }, + "comp:BAISessionAgentIds": { + "Agent": "Ejen" + }, + "comp:BAIStatistic": { + "Unlimited": "Tidak terhad" + }, + "comp:BAITable": { + "SearchTableColumn": "Lajur jadual carian", + "SelectColumnToDisplay": "Pilih lajur untuk dipaparkan", + "SettingTable": "Tetapan Jadual" + }, + "comp:BAITestButton": { + "Test": "ujian" }, "comp:FileExplorer": { - "SelectedItemsDeletedSuccessfully": "Fail dan folder terpilih telah dihapuskan dengan jayanya.", - "DeleteSelectedItemsDialog": "Padam pengesahan", + "ChangeFileExtension": "Tukar Sambungan Fail", + "ChangeFileExtensionDesc": "Menukar sambungan fail boleh menyebabkan fail menjadi tidak dapat digunakan atau dibuka dengan tidak betul. \nAdakah anda mahu meneruskan?", + "Controls": "Kawalan", + "CreateANewFolder": "Buat folder baru", + "CreatedAt": "Dicipta di", "DeleteSelectedItemDesc": "Fail dan folder yang dipadam tidak boleh dipulihkan. \nAdakah anda mahu meneruskan?", + "DeleteSelectedItemsDialog": "Padam pengesahan", + "DownloadStarted": "Fail \"{{fileName}}\" Muat turun telah bermula.", + "DragAndDropDesc": "Seret dan lepaskan fail ke kawasan ini untuk dimuat naik.", + "DuplicatedFiles": "Pengesahan Pengesahan", + "DuplicatedFilesDesc": "Fail atau folder dengan nama yang sama sudah ada. \nAdakah anda mahu menimpa?", "FolderCreatedSuccessfully": "Folder dibuat dengan jayanya.", - "CreateANewFolder": "Buat folder baru", "FolderName": "Nama folder", - "PleaseEnterAFolderName": "Sila masukkan nama folder.", "MaxFolderNameLength": "Nama folder mestilah 255 aksara atau kurang.", + "ModifiedAt": "Diubahsuai di", "Name": "Nama", + "PleaseEnterAFolderName": "Sila masukkan nama folder.", + "RenameSuccess": "Nama telah berjaya diubah.", + "SelectedItemsDeletedSuccessfully": "Fail dan folder terpilih telah dihapuskan dengan jayanya.", "Size": "Saiz", - "CreatedAt": "Dicipta di", - "ModifiedAt": "Diubahsuai di", - "Controls": "Kawalan", "UploadFiles": "Memuat naik fail", "UploadFolder": "Muat naik folder", - "DownloadStarted": "Fail \"{{fileName}}\" Muat turun telah bermula.", "error": { - "FileNameRequired": "Sila masukkan fail atau nama folder.", - "DuplicatedName": "Nama ini sudah digunakan. \nSila masukkan nama yang berbeza." - }, - "DuplicatedFilesDesc": "Fail atau folder dengan nama yang sama sudah ada. \nAdakah anda mahu menimpa?", - "DuplicatedFiles": "Pengesahan Pengesahan", - "DragAndDropDesc": "Seret dan lepaskan fail ke kawasan ini untuk dimuat naik.", - "ChangeFileExtensionDesc": "Menukar sambungan fail boleh menyebabkan fail menjadi tidak dapat digunakan atau dibuka dengan tidak betul. \nAdakah anda mahu meneruskan?", - "ChangeFileExtension": "Tukar Sambungan Fail", - "RenameSuccess": "Nama telah berjaya diubah." - }, - "comp:BAITable": { - "SettingTable": "Tetapan Jadual", - "SelectColumnToDisplay": "Pilih lajur untuk dipaparkan", - "SearchTableColumn": "Lajur jadual carian" - }, - "comp:BAIPropertyFilter": { - "PlaceHolder": "Cari", - "ResetFilter": "Tetapkan semula penapis" - }, - "comp:BAISessionAgentIds": { - "Agent": "Ejen" + "DuplicatedName": "Nama ini sudah digunakan. \nSila masukkan nama yang berbeza.", + "FileNameRequired": "Sila masukkan fail atau nama folder." + } }, - "comp:BAIStatistic": { - "Unlimited": "Tidak terhad" + "comp:PaginationInfoText": { + "Total": "{{start}} - {{end}} dari {{total}} item" }, "comp:ResourceStatistics": { "NoResourcesData": "Tiada data sumber tersedia" + }, + "error": { + "UnknownError": "Kesalahan yang tidak diketahui berlaku. \nSila cuba lagi." + }, + "general": { + "NSelected": "{{count}} dipilih", + "button": { + "CopyAll": "Salin semua", + "Create": "Buat", + "Delete": "Padam", + "Upload": "Muat naik" + } } } diff --git a/packages/backend.ai-ui/src/locale/pl.json b/packages/backend.ai-ui/src/locale/pl.json index 93a69478ae..45e0a42157 100644 --- a/packages/backend.ai-ui/src/locale/pl.json +++ b/packages/backend.ai-ui/src/locale/pl.json @@ -1,67 +1,92 @@ { "$schema": "../../i18n.schema.json", - "comp:BAITestButton": { - "Test": "test" + "comp:BAIArtifactRevisionTable": { + "Action": "Działanie", + "LatestVersion": "Najnowsza wersja", + "Name": "Nazwa", + "Size": "Rozmiar", + "Status": "Status", + "Updated": "Zaktualizowane", + "Version": "Wersja" }, - "comp:PaginationInfoText": { - "Total": "{{start}} - {{end}} z {{total}}" + "comp:BAIArtifactTable": { + "Action": "Działanie", + "PullLatestVersion": "Wyciągnij najnowszą wersję", + "Size": "Rozmiar", + "Updated": "Zaktualizowane", + "Version": "Wersja" }, - "error": { - "UnknownError": "Wystąpił nieznany błąd. \nSpróbuj ponownie." + "comp:BAIImportArtifactModal": { + "Description": "Opis", + "Name": "Nazwa", + "Pull": "Ciągnąć", + "PullArtifact": "Wyciągnij artefakt", + "PulledVersionsAreExcluded": "Wyciągnięte wersje są wykluczone.", + "Source": "Źródło", + "Type": "Typ" }, - "general": { - "NSelected": "{{count}}", - "button": { - "Delete": "Usuwać", - "Create": "Tworzyć", - "Upload": "Wgrywać", - "CopyAll": "Kopiuj wszystko" - } + "comp:BAIPropertyFilter": { + "PlaceHolder": "Wyszukiwanie", + "ResetFilter": "Zresetuj filtry" + }, + "comp:BAISessionAgentIds": { + "Agent": "Agent" + }, + "comp:BAIStatistic": { + "Unlimited": "Nieograniczony" + }, + "comp:BAITable": { + "SearchTableColumn": "Wyszukaj kolumny tabeli", + "SelectColumnToDisplay": "Wybierz kolumny do wyświetlenia", + "SettingTable": "Ustawienia tabeli" + }, + "comp:BAITestButton": { + "Test": "test" }, "comp:FileExplorer": { - "SelectedItemsDeletedSuccessfully": "Wybrane pliki i foldery zostały pomyślnie usunięte.", - "DeleteSelectedItemsDialog": "Usuń potwierdzenie", + "ChangeFileExtension": "Zmień rozszerzenie pliku", + "ChangeFileExtensionDesc": "Zmiana rozszerzenia pliku może spowodować, że plik staje się bezużyteczny lub nieprawidłowo otwierać. \nChcesz kontynuować?", + "Controls": "Sterownica", + "CreateANewFolder": "Utwórz nowy folder", + "CreatedAt": "Utworzony w", "DeleteSelectedItemDesc": "Usuniętych plików i folderów nie można przywrócić. \nChcesz kontynuować?", + "DeleteSelectedItemsDialog": "Usuń potwierdzenie", + "DownloadStarted": "Plik „{{fileName}}” rozpoczęło się pobieranie.", + "DragAndDropDesc": "Przeciągnij i upuść pliki do tego obszaru, aby przesłać.", + "DuplicatedFiles": "Nadpisz potwierdzenie", + "DuplicatedFilesDesc": "Plik lub folder o tej samej nazwie już istnieje. \nChcesz zastąpić?", "FolderCreatedSuccessfully": "Folder utworzony pomyślnie.", - "CreateANewFolder": "Utwórz nowy folder", "FolderName": "Nazwa folderu", - "PleaseEnterAFolderName": "Wprowadź nazwę folderu.", "MaxFolderNameLength": "Nazwa folderu musi mieć 255 znaków lub mniej.", + "ModifiedAt": "Zmodyfikowany przy", "Name": "Nazwa", + "PleaseEnterAFolderName": "Wprowadź nazwę folderu.", + "RenameSuccess": "Nazwa została pomyślnie zmieniona.", + "SelectedItemsDeletedSuccessfully": "Wybrane pliki i foldery zostały pomyślnie usunięte.", "Size": "Rozmiar", - "CreatedAt": "Utworzony w", - "ModifiedAt": "Zmodyfikowany przy", - "Controls": "Sterownica", "UploadFiles": "Prześlij pliki", "UploadFolder": "Folder przesyłania", - "DownloadStarted": "Plik „{{fileName}}” rozpoczęło się pobieranie.", "error": { - "FileNameRequired": "Wprowadź nazwę pliku lub folderu.", - "DuplicatedName": "Ta nazwa jest już używana. \nWprowadź inną nazwę." - }, - "DuplicatedFilesDesc": "Plik lub folder o tej samej nazwie już istnieje. \nChcesz zastąpić?", - "DuplicatedFiles": "Nadpisz potwierdzenie", - "DragAndDropDesc": "Przeciągnij i upuść pliki do tego obszaru, aby przesłać.", - "ChangeFileExtensionDesc": "Zmiana rozszerzenia pliku może spowodować, że plik staje się bezużyteczny lub nieprawidłowo otwierać. \nChcesz kontynuować?", - "ChangeFileExtension": "Zmień rozszerzenie pliku", - "RenameSuccess": "Nazwa została pomyślnie zmieniona." - }, - "comp:BAITable": { - "SettingTable": "Ustawienia tabeli", - "SelectColumnToDisplay": "Wybierz kolumny do wyświetlenia", - "SearchTableColumn": "Wyszukaj kolumny tabeli" - }, - "comp:BAIPropertyFilter": { - "PlaceHolder": "Wyszukiwanie", - "ResetFilter": "Zresetuj filtry" - }, - "comp:BAISessionAgentIds": { - "Agent": "Agent" + "DuplicatedName": "Ta nazwa jest już używana. \nWprowadź inną nazwę.", + "FileNameRequired": "Wprowadź nazwę pliku lub folderu." + } }, - "comp:BAIStatistic": { - "Unlimited": "Nieograniczony" + "comp:PaginationInfoText": { + "Total": "{{start}} - {{end}} z {{total}}" }, "comp:ResourceStatistics": { "NoResourcesData": "Brak danych dotyczących zasobów" + }, + "error": { + "UnknownError": "Wystąpił nieznany błąd. \nSpróbuj ponownie." + }, + "general": { + "NSelected": "{{count}}", + "button": { + "CopyAll": "Kopiuj wszystko", + "Create": "Tworzyć", + "Delete": "Usuwać", + "Upload": "Wgrywać" + } } } diff --git a/packages/backend.ai-ui/src/locale/pt-BR.json b/packages/backend.ai-ui/src/locale/pt-BR.json index ba850e6e5b..a1c128aa73 100644 --- a/packages/backend.ai-ui/src/locale/pt-BR.json +++ b/packages/backend.ai-ui/src/locale/pt-BR.json @@ -1,67 +1,92 @@ { "$schema": "../../i18n.schema.json", - "comp:BAITestButton": { - "Test": "teste" + "comp:BAIArtifactRevisionTable": { + "Action": "Ação", + "LatestVersion": "Versão mais recente", + "Name": "Nome", + "Size": "Tamanho", + "Status": "Status", + "Updated": "Atualizado", + "Version": "Versão" }, - "comp:PaginationInfoText": { - "Total": "{{start}} - {{end}} de {{total}} itens" + "comp:BAIArtifactTable": { + "Action": "Ação", + "PullLatestVersion": "Puxe a versão mais recente", + "Size": "Tamanho", + "Updated": "Atualizado", + "Version": "Versão" }, - "error": { - "UnknownError": "Ocorreu um erro desconhecido. \nPor favor, tente novamente." + "comp:BAIImportArtifactModal": { + "Description": "Descrição", + "Name": "Nome", + "Pull": "Puxar", + "PullArtifact": "Puxe artefato", + "PulledVersionsAreExcluded": "As versões puxadas são excluídas.", + "Source": "Fonte", + "Type": "Tipo" }, - "general": { - "NSelected": "{{count}} selecionado", - "button": { - "Delete": "Excluir", - "Create": "Criar", - "Upload": "Carregar", - "CopyAll": "Copie tudo" - } + "comp:BAIPropertyFilter": { + "PlaceHolder": "Pesquisar", + "ResetFilter": "Redefinir filtros" + }, + "comp:BAISessionAgentIds": { + "Agent": "Agente" + }, + "comp:BAIStatistic": { + "Unlimited": "Ilimitado" + }, + "comp:BAITable": { + "SearchTableColumn": "Pesquisar colunas da tabela", + "SelectColumnToDisplay": "Selecione colunas para exibir", + "SettingTable": "Configurações da tabela" + }, + "comp:BAITestButton": { + "Test": "teste" }, "comp:FileExplorer": { - "SelectedItemsDeletedSuccessfully": "Arquivos e pastas selecionados foram excluídos com sucesso.", - "DeleteSelectedItemsDialog": "Excluir confirmação", + "ChangeFileExtension": "Alterar a extensão do arquivo", + "ChangeFileExtensionDesc": "Alterar a extensão do arquivo pode fazer com que o arquivo se torne inutilizável ou aberto incorretamente. \nVocê quer prosseguir?", + "Controls": "Controles", + "CreateANewFolder": "Crie uma nova pasta", + "CreatedAt": "Criado em", "DeleteSelectedItemDesc": "Arquivos e pastas excluídas não podem ser restauradas. \nVocê quer prosseguir?", + "DeleteSelectedItemsDialog": "Excluir confirmação", + "DownloadStarted": "Arquivo \"{{fileName}}\" o download foi iniciado.", + "DragAndDropDesc": "Arraste e solte arquivos para esta área para fazer upload.", + "DuplicatedFiles": "Substituição de substituição", + "DuplicatedFilesDesc": "O arquivo ou pasta com o mesmo nome já existe. \nVocê quer substituir?", "FolderCreatedSuccessfully": "Pasta criada com sucesso.", - "CreateANewFolder": "Crie uma nova pasta", "FolderName": "Nome da pasta", - "PleaseEnterAFolderName": "Por favor, insira o nome da pasta.", "MaxFolderNameLength": "O nome da pasta deve ter 255 caracteres ou menos.", + "ModifiedAt": "Modificado em", "Name": "Nome", + "PleaseEnterAFolderName": "Por favor, insira o nome da pasta.", + "RenameSuccess": "O nome foi alterado com sucesso.", + "SelectedItemsDeletedSuccessfully": "Arquivos e pastas selecionados foram excluídos com sucesso.", "Size": "Tamanho", - "CreatedAt": "Criado em", - "ModifiedAt": "Modificado em", - "Controls": "Controles", "UploadFiles": "Faça o upload de arquivos", "UploadFolder": "Faça o upload da pasta", - "DownloadStarted": "Arquivo \"{{fileName}}\" o download foi iniciado.", "error": { - "FileNameRequired": "Por favor, insira um nome de arquivo ou pasta.", - "DuplicatedName": "Este nome já está em uso. \nPor favor, insira um nome diferente." - }, - "DuplicatedFilesDesc": "O arquivo ou pasta com o mesmo nome já existe. \nVocê quer substituir?", - "DuplicatedFiles": "Substituição de substituição", - "DragAndDropDesc": "Arraste e solte arquivos para esta área para fazer upload.", - "ChangeFileExtensionDesc": "Alterar a extensão do arquivo pode fazer com que o arquivo se torne inutilizável ou aberto incorretamente. \nVocê quer prosseguir?", - "ChangeFileExtension": "Alterar a extensão do arquivo", - "RenameSuccess": "O nome foi alterado com sucesso." - }, - "comp:BAITable": { - "SelectColumnToDisplay": "Selecione colunas para exibir", - "SettingTable": "Configurações da tabela", - "SearchTableColumn": "Pesquisar colunas da tabela" - }, - "comp:BAIPropertyFilter": { - "PlaceHolder": "Pesquisar", - "ResetFilter": "Redefinir filtros" - }, - "comp:BAISessionAgentIds": { - "Agent": "Agente" + "DuplicatedName": "Este nome já está em uso. \nPor favor, insira um nome diferente.", + "FileNameRequired": "Por favor, insira um nome de arquivo ou pasta." + } }, - "comp:BAIStatistic": { - "Unlimited": "Ilimitado" + "comp:PaginationInfoText": { + "Total": "{{start}} - {{end}} de {{total}} itens" }, "comp:ResourceStatistics": { "NoResourcesData": "Sem dados de recurso disponíveis" + }, + "error": { + "UnknownError": "Ocorreu um erro desconhecido. \nPor favor, tente novamente." + }, + "general": { + "NSelected": "{{count}} selecionado", + "button": { + "CopyAll": "Copie tudo", + "Create": "Criar", + "Delete": "Excluir", + "Upload": "Carregar" + } } } diff --git a/packages/backend.ai-ui/src/locale/pt.json b/packages/backend.ai-ui/src/locale/pt.json index ba850e6e5b..a1c128aa73 100644 --- a/packages/backend.ai-ui/src/locale/pt.json +++ b/packages/backend.ai-ui/src/locale/pt.json @@ -1,67 +1,92 @@ { "$schema": "../../i18n.schema.json", - "comp:BAITestButton": { - "Test": "teste" + "comp:BAIArtifactRevisionTable": { + "Action": "Ação", + "LatestVersion": "Versão mais recente", + "Name": "Nome", + "Size": "Tamanho", + "Status": "Status", + "Updated": "Atualizado", + "Version": "Versão" }, - "comp:PaginationInfoText": { - "Total": "{{start}} - {{end}} de {{total}} itens" + "comp:BAIArtifactTable": { + "Action": "Ação", + "PullLatestVersion": "Puxe a versão mais recente", + "Size": "Tamanho", + "Updated": "Atualizado", + "Version": "Versão" }, - "error": { - "UnknownError": "Ocorreu um erro desconhecido. \nPor favor, tente novamente." + "comp:BAIImportArtifactModal": { + "Description": "Descrição", + "Name": "Nome", + "Pull": "Puxar", + "PullArtifact": "Puxe artefato", + "PulledVersionsAreExcluded": "As versões puxadas são excluídas.", + "Source": "Fonte", + "Type": "Tipo" }, - "general": { - "NSelected": "{{count}} selecionado", - "button": { - "Delete": "Excluir", - "Create": "Criar", - "Upload": "Carregar", - "CopyAll": "Copie tudo" - } + "comp:BAIPropertyFilter": { + "PlaceHolder": "Pesquisar", + "ResetFilter": "Redefinir filtros" + }, + "comp:BAISessionAgentIds": { + "Agent": "Agente" + }, + "comp:BAIStatistic": { + "Unlimited": "Ilimitado" + }, + "comp:BAITable": { + "SearchTableColumn": "Pesquisar colunas da tabela", + "SelectColumnToDisplay": "Selecione colunas para exibir", + "SettingTable": "Configurações da tabela" + }, + "comp:BAITestButton": { + "Test": "teste" }, "comp:FileExplorer": { - "SelectedItemsDeletedSuccessfully": "Arquivos e pastas selecionados foram excluídos com sucesso.", - "DeleteSelectedItemsDialog": "Excluir confirmação", + "ChangeFileExtension": "Alterar a extensão do arquivo", + "ChangeFileExtensionDesc": "Alterar a extensão do arquivo pode fazer com que o arquivo se torne inutilizável ou aberto incorretamente. \nVocê quer prosseguir?", + "Controls": "Controles", + "CreateANewFolder": "Crie uma nova pasta", + "CreatedAt": "Criado em", "DeleteSelectedItemDesc": "Arquivos e pastas excluídas não podem ser restauradas. \nVocê quer prosseguir?", + "DeleteSelectedItemsDialog": "Excluir confirmação", + "DownloadStarted": "Arquivo \"{{fileName}}\" o download foi iniciado.", + "DragAndDropDesc": "Arraste e solte arquivos para esta área para fazer upload.", + "DuplicatedFiles": "Substituição de substituição", + "DuplicatedFilesDesc": "O arquivo ou pasta com o mesmo nome já existe. \nVocê quer substituir?", "FolderCreatedSuccessfully": "Pasta criada com sucesso.", - "CreateANewFolder": "Crie uma nova pasta", "FolderName": "Nome da pasta", - "PleaseEnterAFolderName": "Por favor, insira o nome da pasta.", "MaxFolderNameLength": "O nome da pasta deve ter 255 caracteres ou menos.", + "ModifiedAt": "Modificado em", "Name": "Nome", + "PleaseEnterAFolderName": "Por favor, insira o nome da pasta.", + "RenameSuccess": "O nome foi alterado com sucesso.", + "SelectedItemsDeletedSuccessfully": "Arquivos e pastas selecionados foram excluídos com sucesso.", "Size": "Tamanho", - "CreatedAt": "Criado em", - "ModifiedAt": "Modificado em", - "Controls": "Controles", "UploadFiles": "Faça o upload de arquivos", "UploadFolder": "Faça o upload da pasta", - "DownloadStarted": "Arquivo \"{{fileName}}\" o download foi iniciado.", "error": { - "FileNameRequired": "Por favor, insira um nome de arquivo ou pasta.", - "DuplicatedName": "Este nome já está em uso. \nPor favor, insira um nome diferente." - }, - "DuplicatedFilesDesc": "O arquivo ou pasta com o mesmo nome já existe. \nVocê quer substituir?", - "DuplicatedFiles": "Substituição de substituição", - "DragAndDropDesc": "Arraste e solte arquivos para esta área para fazer upload.", - "ChangeFileExtensionDesc": "Alterar a extensão do arquivo pode fazer com que o arquivo se torne inutilizável ou aberto incorretamente. \nVocê quer prosseguir?", - "ChangeFileExtension": "Alterar a extensão do arquivo", - "RenameSuccess": "O nome foi alterado com sucesso." - }, - "comp:BAITable": { - "SelectColumnToDisplay": "Selecione colunas para exibir", - "SettingTable": "Configurações da tabela", - "SearchTableColumn": "Pesquisar colunas da tabela" - }, - "comp:BAIPropertyFilter": { - "PlaceHolder": "Pesquisar", - "ResetFilter": "Redefinir filtros" - }, - "comp:BAISessionAgentIds": { - "Agent": "Agente" + "DuplicatedName": "Este nome já está em uso. \nPor favor, insira um nome diferente.", + "FileNameRequired": "Por favor, insira um nome de arquivo ou pasta." + } }, - "comp:BAIStatistic": { - "Unlimited": "Ilimitado" + "comp:PaginationInfoText": { + "Total": "{{start}} - {{end}} de {{total}} itens" }, "comp:ResourceStatistics": { "NoResourcesData": "Sem dados de recurso disponíveis" + }, + "error": { + "UnknownError": "Ocorreu um erro desconhecido. \nPor favor, tente novamente." + }, + "general": { + "NSelected": "{{count}} selecionado", + "button": { + "CopyAll": "Copie tudo", + "Create": "Criar", + "Delete": "Excluir", + "Upload": "Carregar" + } } } diff --git a/packages/backend.ai-ui/src/locale/ru.json b/packages/backend.ai-ui/src/locale/ru.json index 4b86fbf96e..b06c9aa1f5 100644 --- a/packages/backend.ai-ui/src/locale/ru.json +++ b/packages/backend.ai-ui/src/locale/ru.json @@ -1,67 +1,92 @@ { "$schema": "../../i18n.schema.json", - "comp:BAITestButton": { - "Test": "тест" + "comp:BAIArtifactRevisionTable": { + "Action": "Действие", + "LatestVersion": "Последняя версия", + "Name": "Имя", + "Size": "Размер", + "Status": "Статус", + "Updated": "Обновлено", + "Version": "Версия" }, - "comp:PaginationInfoText": { - "Total": "{{start}} - {{end}} of {{total}} элементы" + "comp:BAIArtifactTable": { + "Action": "Действие", + "PullLatestVersion": "Вытащите последнюю версию", + "Size": "Размер", + "Updated": "Обновлено", + "Version": "Версия" }, - "error": { - "UnknownError": "Произошла неизвестная ошибка. \nПожалуйста, попробуйте еще раз." + "comp:BAIImportArtifactModal": { + "Description": "Описание", + "Name": "Имя", + "Pull": "Тянуть", + "PullArtifact": "Вытащить артефакт", + "PulledVersionsAreExcluded": "Вытянутые версии исключены.", + "Source": "Источник", + "Type": "Тип" }, - "general": { - "NSelected": "{{count}} выбрал", - "button": { - "Delete": "Удалить", - "Create": "Создавать", - "Upload": "Загрузить", - "CopyAll": "Копировать все" - } + "comp:BAIPropertyFilter": { + "PlaceHolder": "Поиск", + "ResetFilter": "Сбросить фильтры" + }, + "comp:BAISessionAgentIds": { + "Agent": "Агент" + }, + "comp:BAIStatistic": { + "Unlimited": "Неограниченный" + }, + "comp:BAITable": { + "SearchTableColumn": "Поиск таблицы столбцов", + "SelectColumnToDisplay": "Выберите столбцы, чтобы отобразить", + "SettingTable": "Настройки таблицы" + }, + "comp:BAITestButton": { + "Test": "тест" }, "comp:FileExplorer": { - "SelectedItemsDeletedSuccessfully": "Выбранные файлы и папки были успешно удалены.", - "DeleteSelectedItemsDialog": "Удалить подтверждение", + "ChangeFileExtension": "Изменить расширение файла", + "ChangeFileExtensionDesc": "Изменение расширения файла может привести к тому, что файл станет непригодным для использования или неверно открытым. \nВы хотите продолжить?", + "Controls": "Управление", + "CreateANewFolder": "Создать новую папку", + "CreatedAt": "Создан в", "DeleteSelectedItemDesc": "Удаленные файлы и папки не могут быть восстановлены. \nВы хотите продолжить?", + "DeleteSelectedItemsDialog": "Удалить подтверждение", + "DownloadStarted": "Файл \"{{fileName}}\" Загрузка началась.", + "DragAndDropDesc": "Перетащите файлы в эту область, чтобы загрузить.", + "DuplicatedFiles": "Перезаписать подтверждение", + "DuplicatedFilesDesc": "Файл или папка с тем же именем уже существует. \nВы хотите перезаписать?", "FolderCreatedSuccessfully": "Папка создана успешно.", - "CreateANewFolder": "Создать новую папку", "FolderName": "Имя папки", - "PleaseEnterAFolderName": "Пожалуйста, введите имя папки.", "MaxFolderNameLength": "Имя папки должно быть 255 символов или меньше.", + "ModifiedAt": "Модифицирован в", "Name": "Имя", + "PleaseEnterAFolderName": "Пожалуйста, введите имя папки.", + "RenameSuccess": "Имя было успешно изменено.", + "SelectedItemsDeletedSuccessfully": "Выбранные файлы и папки были успешно удалены.", "Size": "Размер", - "CreatedAt": "Создан в", - "ModifiedAt": "Модифицирован в", - "Controls": "Управление", "UploadFiles": "Загрузить файлы", "UploadFolder": "Загрузить папку", - "DownloadStarted": "Файл \"{{fileName}}\" Загрузка началась.", "error": { - "FileNameRequired": "Пожалуйста, введите имя файла или папки.", - "DuplicatedName": "Это имя уже используется. \nПожалуйста, введите другое имя." - }, - "DuplicatedFilesDesc": "Файл или папка с тем же именем уже существует. \nВы хотите перезаписать?", - "DuplicatedFiles": "Перезаписать подтверждение", - "DragAndDropDesc": "Перетащите файлы в эту область, чтобы загрузить.", - "ChangeFileExtensionDesc": "Изменение расширения файла может привести к тому, что файл станет непригодным для использования или неверно открытым. \nВы хотите продолжить?", - "ChangeFileExtension": "Изменить расширение файла", - "RenameSuccess": "Имя было успешно изменено." - }, - "comp:BAITable": { - "SelectColumnToDisplay": "Выберите столбцы, чтобы отобразить", - "SettingTable": "Настройки таблицы", - "SearchTableColumn": "Поиск таблицы столбцов" - }, - "comp:BAIPropertyFilter": { - "PlaceHolder": "Поиск", - "ResetFilter": "Сбросить фильтры" - }, - "comp:BAISessionAgentIds": { - "Agent": "Агент" + "DuplicatedName": "Это имя уже используется. \nПожалуйста, введите другое имя.", + "FileNameRequired": "Пожалуйста, введите имя файла или папки." + } }, - "comp:BAIStatistic": { - "Unlimited": "Неограниченный" + "comp:PaginationInfoText": { + "Total": "{{start}} - {{end}} of {{total}} элементы" }, "comp:ResourceStatistics": { "NoResourcesData": "Недоступные данные о ресурсах" + }, + "error": { + "UnknownError": "Произошла неизвестная ошибка. \nПожалуйста, попробуйте еще раз." + }, + "general": { + "NSelected": "{{count}} выбрал", + "button": { + "CopyAll": "Копировать все", + "Create": "Создавать", + "Delete": "Удалить", + "Upload": "Загрузить" + } } } diff --git a/packages/backend.ai-ui/src/locale/th.json b/packages/backend.ai-ui/src/locale/th.json index 382e24d4bb..56516612a2 100644 --- a/packages/backend.ai-ui/src/locale/th.json +++ b/packages/backend.ai-ui/src/locale/th.json @@ -1,67 +1,92 @@ { "$schema": "../../i18n.schema.json", - "comp:BAITestButton": { - "Test": "ทดสอบ" + "comp:BAIArtifactRevisionTable": { + "Action": "การกระทำ", + "LatestVersion": "เวอร์ชันล่าสุด", + "Name": "ชื่อ", + "Size": "ขนาด", + "Status": "สถานะ", + "Updated": "อัปเดต", + "Version": "รุ่น" }, - "comp:PaginationInfoText": { - "Total": "{{start}} - {{end}} ของ {{total}} รายการ" + "comp:BAIArtifactTable": { + "Action": "การกระทำ", + "PullLatestVersion": "ดึงเวอร์ชันล่าสุด", + "Size": "ขนาด", + "Updated": "อัปเดต", + "Version": "รุ่น" }, - "error": { - "UnknownError": "เกิดข้อผิดพลาดที่ไม่รู้จัก \nโปรดลองอีกครั้ง" + "comp:BAIImportArtifactModal": { + "Description": "คำอธิบาย", + "Name": "ชื่อ", + "Pull": "ดึง", + "PullArtifact": "ดึงสิ่งประดิษฐ์", + "PulledVersionsAreExcluded": "ไม่รวมเวอร์ชันที่ดึงออกมา", + "Source": "แหล่งที่มา", + "Type": "พิมพ์" }, - "general": { - "NSelected": "{{count}} เลือก", - "button": { - "Delete": "ลบ", - "Create": "สร้าง", - "Upload": "อัพโหลด", - "CopyAll": "คัดลอกทั้งหมด" - } + "comp:BAIPropertyFilter": { + "PlaceHolder": "ค้นหา", + "ResetFilter": "รีเซ็ตตัวกรอง" + }, + "comp:BAISessionAgentIds": { + "Agent": "ตัวแทน" + }, + "comp:BAIStatistic": { + "Unlimited": "ไม่ จำกัด" + }, + "comp:BAITable": { + "SearchTableColumn": "คอลัมน์ตารางค้นหา", + "SelectColumnToDisplay": "เลือกคอลัมน์ที่จะแสดง", + "SettingTable": "การตั้งค่าตาราง" + }, + "comp:BAITestButton": { + "Test": "ทดสอบ" }, "comp:FileExplorer": { - "SelectedItemsDeletedSuccessfully": "ไฟล์และโฟลเดอร์ที่เลือกได้ถูกลบไปแล้วสำเร็จ", - "DeleteSelectedItemsDialog": "ลบการยืนยัน", + "ChangeFileExtension": "เปลี่ยนนามสกุลไฟล์", + "ChangeFileExtensionDesc": "การเปลี่ยนนามสกุลไฟล์อาจทำให้ไฟล์ไม่สามารถใช้งานได้หรือเปิดไม่ถูกต้อง \nคุณต้องการดำเนินการต่อหรือไม่?", + "Controls": "การควบคุม", + "CreateANewFolder": "สร้างโฟลเดอร์ใหม่", + "CreatedAt": "สร้างขึ้นที่", "DeleteSelectedItemDesc": "ไม่สามารถกู้คืนไฟล์และโฟลเดอร์ที่ถูกลบได้ \nคุณต้องการดำเนินการต่อหรือไม่?", + "DeleteSelectedItemsDialog": "ลบการยืนยัน", + "DownloadStarted": "การดาวน์โหลดไฟล์ \"{{fileName}}\" เริ่มต้นแล้ว", + "DragAndDropDesc": "ลากและวางไฟล์ไปยังพื้นที่นี้เพื่ออัปโหลด", + "DuplicatedFiles": "การยืนยันการเขียนทับ", + "DuplicatedFilesDesc": "ไฟล์หรือโฟลเดอร์ที่มีชื่อเดียวกันมีอยู่แล้ว \nคุณต้องการเขียนทับ?", "FolderCreatedSuccessfully": "โฟลเดอร์สร้างสำเร็จ", - "CreateANewFolder": "สร้างโฟลเดอร์ใหม่", "FolderName": "ชื่อโฟลเดอร์", - "PleaseEnterAFolderName": "กรุณากรอกชื่อโฟลเดอร์", "MaxFolderNameLength": "ชื่อโฟลเดอร์ต้องเป็น 255 อักขระหรือน้อยกว่า", + "ModifiedAt": "ดัดแปลงที่", "Name": "ชื่อ", + "PleaseEnterAFolderName": "กรุณากรอกชื่อโฟลเดอร์", + "RenameSuccess": "ชื่อได้รับการเปลี่ยนแปลงสำเร็จ", + "SelectedItemsDeletedSuccessfully": "ไฟล์และโฟลเดอร์ที่เลือกได้ถูกลบไปแล้วสำเร็จ", "Size": "ขนาด", - "CreatedAt": "สร้างขึ้นที่", - "ModifiedAt": "ดัดแปลงที่", - "Controls": "การควบคุม", "UploadFiles": "อัปโหลดไฟล์", "UploadFolder": "โฟลเดอร์อัปโหลด", - "DownloadStarted": "การดาวน์โหลดไฟล์ \"{{fileName}}\" เริ่มต้นแล้ว", "error": { - "FileNameRequired": "กรุณากรอกชื่อไฟล์หรือโฟลเดอร์", - "DuplicatedName": "ชื่อนี้มีการใช้งานแล้ว \nกรุณากรอกชื่ออื่น" - }, - "DuplicatedFilesDesc": "ไฟล์หรือโฟลเดอร์ที่มีชื่อเดียวกันมีอยู่แล้ว \nคุณต้องการเขียนทับ?", - "DuplicatedFiles": "การยืนยันการเขียนทับ", - "DragAndDropDesc": "ลากและวางไฟล์ไปยังพื้นที่นี้เพื่ออัปโหลด", - "ChangeFileExtensionDesc": "การเปลี่ยนนามสกุลไฟล์อาจทำให้ไฟล์ไม่สามารถใช้งานได้หรือเปิดไม่ถูกต้อง \nคุณต้องการดำเนินการต่อหรือไม่?", - "ChangeFileExtension": "เปลี่ยนนามสกุลไฟล์", - "RenameSuccess": "ชื่อได้รับการเปลี่ยนแปลงสำเร็จ" - }, - "comp:BAITable": { - "SettingTable": "การตั้งค่าตาราง", - "SelectColumnToDisplay": "เลือกคอลัมน์ที่จะแสดง", - "SearchTableColumn": "คอลัมน์ตารางค้นหา" - }, - "comp:BAIPropertyFilter": { - "PlaceHolder": "ค้นหา", - "ResetFilter": "รีเซ็ตตัวกรอง" - }, - "comp:BAISessionAgentIds": { - "Agent": "ตัวแทน" + "DuplicatedName": "ชื่อนี้มีการใช้งานแล้ว \nกรุณากรอกชื่ออื่น", + "FileNameRequired": "กรุณากรอกชื่อไฟล์หรือโฟลเดอร์" + } }, - "comp:BAIStatistic": { - "Unlimited": "ไม่ จำกัด" + "comp:PaginationInfoText": { + "Total": "{{start}} - {{end}} ของ {{total}} รายการ" }, "comp:ResourceStatistics": { "NoResourcesData": "ไม่มีข้อมูลทรัพยากร" + }, + "error": { + "UnknownError": "เกิดข้อผิดพลาดที่ไม่รู้จัก \nโปรดลองอีกครั้ง" + }, + "general": { + "NSelected": "{{count}} เลือก", + "button": { + "CopyAll": "คัดลอกทั้งหมด", + "Create": "สร้าง", + "Delete": "ลบ", + "Upload": "อัพโหลด" + } } } diff --git a/packages/backend.ai-ui/src/locale/tr.json b/packages/backend.ai-ui/src/locale/tr.json index b6b063734d..7c0b9edfeb 100644 --- a/packages/backend.ai-ui/src/locale/tr.json +++ b/packages/backend.ai-ui/src/locale/tr.json @@ -1,62 +1,87 @@ { "$schema": "../../i18n.schema.json", - "comp:BAITestButton": { - "Test": "test" + "comp:BAIArtifactRevisionTable": { + "Action": "Aksiyon", + "LatestVersion": "En son sürüm", + "Name": "İsim", + "Size": "Boyut", + "Status": "Durum", + "Updated": "Güncellenmiş", + "Version": "Versiyon" }, - "comp:PaginationInfoText": { - "Total": "{{start}} - {{end}} öğelerinin {{total}}" + "comp:BAIArtifactTable": { + "Action": "Aksiyon", + "PullLatestVersion": "En son sürümü çekin", + "Size": "Boyut", + "Updated": "Güncellenmiş", + "Version": "Versiyon" }, - "error": { - "UnknownError": "Bilinmeyen bir hata oluştu. \nLütfen tekrar deneyin." + "comp:BAIImportArtifactModal": { + "Description": "Tanım", + "Name": "İsim", + "Pull": "Çekmek", + "PullArtifact": "Artefakt çekmek", + "PulledVersionsAreExcluded": "Çekilen sürümler hariç tutulur.", + "Source": "Kaynak", + "Type": "Tip" }, - "general": { - "NSelected": "{{count}} seçildi", - "button": { - "Delete": "Silmek", - "Create": "Yaratmak", - "Upload": "Yüklemek", - "CopyAll": "Hepsini kopyala" - } + "comp:BAIPropertyFilter": { + "PlaceHolder": "Arama", + "ResetFilter": "Filtreleri sıfırla" + }, + "comp:BAISessionAgentIds": { + "Agent": "Ajan" + }, + "comp:BAIStatistic": { + "Unlimited": "Sınırsız" + }, + "comp:BAITable": { + "SearchTableColumn": "Arama Tablosu sütunları", + "SelectColumnToDisplay": "Görüntülemek için sütunları seçin", + "SettingTable": "Masa Ayarları" + }, + "comp:BAITestButton": { + "Test": "test" }, "comp:FileExplorer": { - "SelectedItemsDeletedSuccessfully": "Seçilen dosyalar ve klasörler başarıyla silindi.", - "DeleteSelectedItemsDialog": "Onay Sil", + "Controls": "Kontroller", + "CreateANewFolder": "Yeni bir klasör oluşturun", + "CreatedAt": "Yaratılmış", "DeleteSelectedItemDesc": "Silinen dosyalar ve klasörler geri yüklenemez. \nDevam etmek ister misin?", + "DeleteSelectedItemsDialog": "Onay Sil", + "DownloadStarted": "Dosya \"{{fileName}}\" indirme başlatıldı.", + "DragAndDropDesc": "Yüklemek için dosyaları bu alana sürükleyin ve bırakın.", + "DuplicatedFiles": "Üzerine Yazın Onay", + "DuplicatedFilesDesc": "Aynı ada sahip dosya veya klasör zaten mevcuttur. \nÜzerine yazmak ister misin?", "FolderCreatedSuccessfully": "Klasör başarıyla oluşturuldu.", - "CreateANewFolder": "Yeni bir klasör oluşturun", "FolderName": "Klasör adı", - "PleaseEnterAFolderName": "Lütfen klasör adını girin.", "MaxFolderNameLength": "Klasör adı 255 karakter veya daha az olmalıdır.", + "ModifiedAt": "Değiştirildi", "Name": "İsim", + "PleaseEnterAFolderName": "Lütfen klasör adını girin.", + "RenameSuccess": "İsim başarıyla değiştirildi.", + "SelectedItemsDeletedSuccessfully": "Seçilen dosyalar ve klasörler başarıyla silindi.", "Size": "Boyut", - "CreatedAt": "Yaratılmış", - "ModifiedAt": "Değiştirildi", - "Controls": "Kontroller", "UploadFiles": "Dosyaları Yükle", "UploadFolder": "Klasörü Yükle", - "DownloadStarted": "Dosya \"{{fileName}}\" indirme başlatıldı.", - "error": {}, - "DuplicatedFilesDesc": "Aynı ada sahip dosya veya klasör zaten mevcuttur. \nÜzerine yazmak ister misin?", - "DuplicatedFiles": "Üzerine Yazın Onay", - "DragAndDropDesc": "Yüklemek için dosyaları bu alana sürükleyin ve bırakın.", - "RenameSuccess": "İsim başarıyla değiştirildi." - }, - "comp:BAITable": { - "SettingTable": "Masa Ayarları", - "SelectColumnToDisplay": "Görüntülemek için sütunları seçin", - "SearchTableColumn": "Arama Tablosu sütunları" - }, - "comp:BAIPropertyFilter": { - "PlaceHolder": "Arama", - "ResetFilter": "Filtreleri sıfırla" - }, - "comp:BAISessionAgentIds": { - "Agent": "Ajan" + "error": {} }, - "comp:BAIStatistic": { - "Unlimited": "Sınırsız" + "comp:PaginationInfoText": { + "Total": "{{start}} - {{end}} öğelerinin {{total}}" }, "comp:ResourceStatistics": { "NoResourcesData": "Kaynak verisi yok" + }, + "error": { + "UnknownError": "Bilinmeyen bir hata oluştu. \nLütfen tekrar deneyin." + }, + "general": { + "NSelected": "{{count}} seçildi", + "button": { + "CopyAll": "Hepsini kopyala", + "Create": "Yaratmak", + "Delete": "Silmek", + "Upload": "Yüklemek" + } } } diff --git a/packages/backend.ai-ui/src/locale/vi.json b/packages/backend.ai-ui/src/locale/vi.json index 719d7cdb3b..c17ac96898 100644 --- a/packages/backend.ai-ui/src/locale/vi.json +++ b/packages/backend.ai-ui/src/locale/vi.json @@ -1,67 +1,92 @@ { "$schema": "../../i18n.schema.json", - "comp:BAITestButton": { - "Test": "kiểm tra" + "comp:BAIArtifactRevisionTable": { + "Action": "Hoạt động", + "LatestVersion": "Phiên bản mới nhất", + "Name": "Tên", + "Size": "Kích cỡ", + "Status": "Trạng thái", + "Updated": "Cập nhật", + "Version": "Phiên bản" }, - "comp:PaginationInfoText": { - "Total": "{{start}} - {{end}} của {{total}}" + "comp:BAIArtifactTable": { + "Action": "Hoạt động", + "PullLatestVersion": "Kéo phiên bản mới nhất", + "Size": "Kích cỡ", + "Updated": "Cập nhật", + "Version": "Phiên bản" }, - "error": { - "UnknownError": "Một lỗi không xác định xảy ra. \nHãy thử lại." + "comp:BAIImportArtifactModal": { + "Description": "Sự miêu tả", + "Name": "Tên", + "Pull": "Sự lôi kéo", + "PullArtifact": "Kéo tạo tác", + "PulledVersionsAreExcluded": "Các phiên bản kéo được loại trừ.", + "Source": "Nguồn", + "Type": "Kiểu" }, - "general": { - "NSelected": "{{count}} Đã chọn", - "button": { - "Delete": "Xóa bỏ", - "Create": "Tạo nên", - "Upload": "Tải lên", - "CopyAll": "Sao chép tất cả" - } + "comp:BAIPropertyFilter": { + "PlaceHolder": "Tìm kiếm", + "ResetFilter": "Đặt lại bộ lọc" + }, + "comp:BAISessionAgentIds": { + "Agent": "Đại lý" + }, + "comp:BAIStatistic": { + "Unlimited": "Không giới hạn" + }, + "comp:BAITable": { + "SearchTableColumn": "Các cột bảng tìm kiếm", + "SelectColumnToDisplay": "Chọn các cột để hiển thị", + "SettingTable": "Cài đặt bảng" + }, + "comp:BAITestButton": { + "Test": "kiểm tra" }, "comp:FileExplorer": { - "SelectedItemsDeletedSuccessfully": "Các tập tin và thư mục được chọn đã bị xóa thành công.", - "DeleteSelectedItemsDialog": "Xóa xác nhận", + "ChangeFileExtension": "Thay đổi phần mở rộng tệp", + "ChangeFileExtensionDesc": "Thay đổi tiện ích mở rộng tệp có thể khiến tệp trở nên không thể sử dụng hoặc mở không chính xác. \nBạn có muốn tiếp tục không?", + "Controls": "Kiểm soát", + "CreateANewFolder": "Tạo một thư mục mới", + "CreatedAt": "Được tạo ra tại", "DeleteSelectedItemDesc": "Các tệp và thư mục đã xóa không thể được khôi phục. \nBạn có muốn tiếp tục không?", + "DeleteSelectedItemsDialog": "Xóa xác nhận", + "DownloadStarted": "Tệp \"{{fileName}}\" đã bắt đầu.", + "DragAndDropDesc": "Kéo và thả các tập tin vào khu vực này để tải lên.", + "DuplicatedFiles": "Ghi đè xác nhận", + "DuplicatedFilesDesc": "Tệp hoặc thư mục có cùng tên đã tồn tại. \nBạn có muốn ghi đè lên?", "FolderCreatedSuccessfully": "Thư mục đã tạo thành công.", - "CreateANewFolder": "Tạo một thư mục mới", "FolderName": "Tên thư mục", - "PleaseEnterAFolderName": "Vui lòng nhập tên thư mục.", "MaxFolderNameLength": "Tên thư mục phải là 255 ký tự hoặc ít hơn.", + "ModifiedAt": "Sửa đổi tại", "Name": "Tên", + "PleaseEnterAFolderName": "Vui lòng nhập tên thư mục.", + "RenameSuccess": "Tên đã được thay đổi thành công.", + "SelectedItemsDeletedSuccessfully": "Các tập tin và thư mục được chọn đã bị xóa thành công.", "Size": "Kích cỡ", - "CreatedAt": "Được tạo ra tại", - "ModifiedAt": "Sửa đổi tại", - "Controls": "Kiểm soát", "UploadFiles": "Tải lên tệp", "UploadFolder": "Tải lên thư mục", - "DownloadStarted": "Tệp \"{{fileName}}\" đã bắt đầu.", "error": { - "FileNameRequired": "Vui lòng nhập tên tệp hoặc thư mục.", - "DuplicatedName": "Tên này đã được sử dụng. \nVui lòng nhập một tên khác." - }, - "DuplicatedFilesDesc": "Tệp hoặc thư mục có cùng tên đã tồn tại. \nBạn có muốn ghi đè lên?", - "DuplicatedFiles": "Ghi đè xác nhận", - "DragAndDropDesc": "Kéo và thả các tập tin vào khu vực này để tải lên.", - "ChangeFileExtensionDesc": "Thay đổi tiện ích mở rộng tệp có thể khiến tệp trở nên không thể sử dụng hoặc mở không chính xác. \nBạn có muốn tiếp tục không?", - "ChangeFileExtension": "Thay đổi phần mở rộng tệp", - "RenameSuccess": "Tên đã được thay đổi thành công." - }, - "comp:BAITable": { - "SettingTable": "Cài đặt bảng", - "SelectColumnToDisplay": "Chọn các cột để hiển thị", - "SearchTableColumn": "Các cột bảng tìm kiếm" - }, - "comp:BAIPropertyFilter": { - "PlaceHolder": "Tìm kiếm", - "ResetFilter": "Đặt lại bộ lọc" - }, - "comp:BAISessionAgentIds": { - "Agent": "Đại lý" + "DuplicatedName": "Tên này đã được sử dụng. \nVui lòng nhập một tên khác.", + "FileNameRequired": "Vui lòng nhập tên tệp hoặc thư mục." + } }, - "comp:BAIStatistic": { - "Unlimited": "Không giới hạn" + "comp:PaginationInfoText": { + "Total": "{{start}} - {{end}} của {{total}}" }, "comp:ResourceStatistics": { "NoResourcesData": "Không có dữ liệu tài nguyên" + }, + "error": { + "UnknownError": "Một lỗi không xác định xảy ra. \nHãy thử lại." + }, + "general": { + "NSelected": "{{count}} Đã chọn", + "button": { + "CopyAll": "Sao chép tất cả", + "Create": "Tạo nên", + "Delete": "Xóa bỏ", + "Upload": "Tải lên" + } } } diff --git a/packages/backend.ai-ui/src/locale/zh-CN.json b/packages/backend.ai-ui/src/locale/zh-CN.json index fd29cb6450..2de42f16db 100644 --- a/packages/backend.ai-ui/src/locale/zh-CN.json +++ b/packages/backend.ai-ui/src/locale/zh-CN.json @@ -1,67 +1,92 @@ { "$schema": "../../i18n.schema.json", - "comp:BAITestButton": { - "Test": "测试" + "comp:BAIArtifactRevisionTable": { + "Action": "行动", + "LatestVersion": "最新版本", + "Name": "姓名", + "Size": "尺寸", + "Status": "地位", + "Updated": "更新", + "Version": "版本" }, - "comp:PaginationInfoText": { - "Total": "{{start}} - {{end}} {{total}}项目" + "comp:BAIArtifactTable": { + "Action": "行动", + "PullLatestVersion": "拉最新版本", + "Size": "尺寸", + "Updated": "更新", + "Version": "版本" }, - "error": { - "UnknownError": "发生了未知错误。\n请重试。" + "comp:BAIImportArtifactModal": { + "Description": "描述", + "Name": "姓名", + "Pull": "拉", + "PullArtifact": "拉工子", + "PulledVersionsAreExcluded": "拉动版本被排除在外。", + "Source": "来源", + "Type": "类型" }, - "general": { - "NSelected": "{{count}}选择", - "button": { - "Delete": "删除", - "Create": "创造", - "Upload": "上传", - "CopyAll": "复制全部" - } + "comp:BAIPropertyFilter": { + "PlaceHolder": "搜索", + "ResetFilter": "重置过滤器" + }, + "comp:BAISessionAgentIds": { + "Agent": "代理人" + }, + "comp:BAIStatistic": { + "Unlimited": "无限" + }, + "comp:BAITable": { + "SearchTableColumn": "搜索表列", + "SelectColumnToDisplay": "选择要显示的列", + "SettingTable": "表设置" + }, + "comp:BAITestButton": { + "Test": "测试" }, "comp:FileExplorer": { - "SelectedItemsDeletedSuccessfully": "选定的文件和文件夹已成功删除。", - "DeleteSelectedItemsDialog": "删除确认", + "ChangeFileExtension": "更改文件扩展名", + "ChangeFileExtensionDesc": "更改文件扩展名可能会导致文件变得无法使用或不正确打开。\n你想继续吗?", + "Controls": "控件", + "CreateANewFolder": "创建一个新文件夹", + "CreatedAt": "创建在", "DeleteSelectedItemDesc": "删除的文件和文件夹无法恢复。\n你想继续吗?", + "DeleteSelectedItemsDialog": "删除确认", + "DownloadStarted": "文件“ {{fileName}}”下载已开始。", + "DragAndDropDesc": "将文件拖到此区域上传。", + "DuplicatedFiles": "覆盖确认", + "DuplicatedFilesDesc": "具有相同名称的文件或文件夹已经存在。\n你想覆盖吗?", "FolderCreatedSuccessfully": "文件夹成功创建了。", - "CreateANewFolder": "创建一个新文件夹", "FolderName": "文件夹名称", - "PleaseEnterAFolderName": "请输入文件夹名称。", "MaxFolderNameLength": "文件夹名称必须为255个字符或更小。", + "ModifiedAt": "修改为", "Name": "姓名", + "PleaseEnterAFolderName": "请输入文件夹名称。", + "RenameSuccess": "该名称已成功更改。", + "SelectedItemsDeletedSuccessfully": "选定的文件和文件夹已成功删除。", "Size": "尺寸", - "CreatedAt": "创建在", - "ModifiedAt": "修改为", - "Controls": "控件", "UploadFiles": "上传文件", "UploadFolder": "上传文件夹", - "DownloadStarted": "文件“ {{fileName}}”下载已开始。", "error": { - "FileNameRequired": "请输入文件或文件夹名称。", - "DuplicatedName": "此名称已经在使用中。\n请输入其他名称。" - }, - "DuplicatedFilesDesc": "具有相同名称的文件或文件夹已经存在。\n你想覆盖吗?", - "DuplicatedFiles": "覆盖确认", - "DragAndDropDesc": "将文件拖到此区域上传。", - "ChangeFileExtensionDesc": "更改文件扩展名可能会导致文件变得无法使用或不正确打开。\n你想继续吗?", - "ChangeFileExtension": "更改文件扩展名", - "RenameSuccess": "该名称已成功更改。" - }, - "comp:BAITable": { - "SettingTable": "表设置", - "SelectColumnToDisplay": "选择要显示的列", - "SearchTableColumn": "搜索表列" - }, - "comp:BAIPropertyFilter": { - "PlaceHolder": "搜索", - "ResetFilter": "重置过滤器" - }, - "comp:BAISessionAgentIds": { - "Agent": "代理人" + "DuplicatedName": "此名称已经在使用中。\n请输入其他名称。", + "FileNameRequired": "请输入文件或文件夹名称。" + } }, - "comp:BAIStatistic": { - "Unlimited": "无限" + "comp:PaginationInfoText": { + "Total": "{{start}} - {{end}} {{total}}项目" }, "comp:ResourceStatistics": { "NoResourcesData": "没有可用的资源数据" + }, + "error": { + "UnknownError": "发生了未知错误。\n请重试。" + }, + "general": { + "NSelected": "{{count}}选择", + "button": { + "CopyAll": "复制全部", + "Create": "创造", + "Delete": "删除", + "Upload": "上传" + } } } diff --git a/packages/backend.ai-ui/src/locale/zh-TW.json b/packages/backend.ai-ui/src/locale/zh-TW.json index b2c0db87ba..72dfdeaf3f 100644 --- a/packages/backend.ai-ui/src/locale/zh-TW.json +++ b/packages/backend.ai-ui/src/locale/zh-TW.json @@ -1,67 +1,92 @@ { "$schema": "../../i18n.schema.json", - "comp:BAITestButton": { - "Test": "測試" + "comp:BAIArtifactRevisionTable": { + "Action": "行動", + "LatestVersion": "最新版本", + "Name": "姓名", + "Size": "尺寸", + "Status": "地位", + "Updated": "更新", + "Version": "版本" }, - "comp:PaginationInfoText": { - "Total": "{{start}} - {{end}} {{total}}項目" + "comp:BAIArtifactTable": { + "Action": "行動", + "PullLatestVersion": "拉最新版本", + "Size": "尺寸", + "Updated": "更新", + "Version": "版本" }, - "error": { - "UnknownError": "發生了未知錯誤。請重試。" + "comp:BAIImportArtifactModal": { + "Description": "描述", + "Name": "姓名", + "Pull": "拉", + "PullArtifact": "拉工子", + "PulledVersionsAreExcluded": "拉動版本被排除在外。", + "Source": "來源", + "Type": "類型" }, - "general": { - "NSelected": "{{count}}選擇", - "button": { - "Delete": "刪除", - "Create": "創造", - "Upload": "上傳", - "CopyAll": "複製全部" - } + "comp:BAIPropertyFilter": { + "PlaceHolder": "搜索", + "ResetFilter": "重置過濾器" + }, + "comp:BAISessionAgentIds": { + "Agent": "代理人" + }, + "comp:BAIStatistic": { + "Unlimited": "無限" + }, + "comp:BAITable": { + "SearchTableColumn": "搜索表列", + "SelectColumnToDisplay": "選擇要顯示的列", + "SettingTable": "表設置" + }, + "comp:BAITestButton": { + "Test": "測試" }, "comp:FileExplorer": { - "SelectedItemsDeletedSuccessfully": "選定的文件和文件夾已成功刪除。", - "DeleteSelectedItemsDialog": "刪除確認", + "ChangeFileExtension": "更改文件擴展名", + "ChangeFileExtensionDesc": "更改文件擴展名可能會導致文件變得無法使用或不正確打開。你想繼續嗎?", + "Controls": "控件", + "CreateANewFolder": "創建一個新文件夾", + "CreatedAt": "創建在", "DeleteSelectedItemDesc": "刪除的文件和文件夾無法恢復。你想繼續嗎?", + "DeleteSelectedItemsDialog": "刪除確認", + "DownloadStarted": "文件“ {{fileName}}”下載已開始。", + "DragAndDropDesc": "將文件拖到此區域上傳。", + "DuplicatedFiles": "覆蓋確認", + "DuplicatedFilesDesc": "具有相同名稱的文件或文件夾已經存在。你想覆蓋嗎?", "FolderCreatedSuccessfully": "文件夾成功創建了。", - "CreateANewFolder": "創建一個新文件夾", "FolderName": "文件夾名稱", - "PleaseEnterAFolderName": "請輸入文件夾名稱。", "MaxFolderNameLength": "文件夾名稱必須為255個字符或更小。", + "ModifiedAt": "修改為", "Name": "姓名", + "PleaseEnterAFolderName": "請輸入文件夾名稱。", + "RenameSuccess": "該名稱已成功更改。", + "SelectedItemsDeletedSuccessfully": "選定的文件和文件夾已成功刪除。", "Size": "尺寸", - "CreatedAt": "創建在", - "ModifiedAt": "修改為", - "Controls": "控件", "UploadFiles": "上傳文件", "UploadFolder": "上傳文件夾", - "DownloadStarted": "文件“ {{fileName}}”下載已開始。", "error": { - "FileNameRequired": "請輸入文件或文件夾名稱。", - "DuplicatedName": "此名稱已經在使用中。請輸入其他名稱。" - }, - "DuplicatedFilesDesc": "具有相同名稱的文件或文件夾已經存在。你想覆蓋嗎?", - "DuplicatedFiles": "覆蓋確認", - "DragAndDropDesc": "將文件拖到此區域上傳。", - "ChangeFileExtensionDesc": "更改文件擴展名可能會導致文件變得無法使用或不正確打開。你想繼續嗎?", - "ChangeFileExtension": "更改文件擴展名", - "RenameSuccess": "該名稱已成功更改。" - }, - "comp:BAITable": { - "SettingTable": "表設置", - "SelectColumnToDisplay": "選擇要顯示的列", - "SearchTableColumn": "搜索表列" - }, - "comp:BAIPropertyFilter": { - "PlaceHolder": "搜索", - "ResetFilter": "重置過濾器" - }, - "comp:BAISessionAgentIds": { - "Agent": "代理人" + "DuplicatedName": "此名稱已經在使用中。請輸入其他名稱。", + "FileNameRequired": "請輸入文件或文件夾名稱。" + } }, - "comp:BAIStatistic": { - "Unlimited": "無限" + "comp:PaginationInfoText": { + "Total": "{{start}} - {{end}} {{total}}項目" }, "comp:ResourceStatistics": { "NoResourcesData": "沒有可用的資源數據" + }, + "error": { + "UnknownError": "發生了未知錯誤。請重試。" + }, + "general": { + "NSelected": "{{count}}選擇", + "button": { + "CopyAll": "複製全部", + "Create": "創造", + "Delete": "刪除", + "Upload": "上傳" + } } } diff --git a/packages/backend.ai-ui/vite.config.ts b/packages/backend.ai-ui/vite.config.ts index d2bdf093d5..e5a553fc5d 100644 --- a/packages/backend.ai-ui/vite.config.ts +++ b/packages/backend.ai-ui/vite.config.ts @@ -39,6 +39,7 @@ export default defineConfig(({ mode }) => { external: [ 'react', 'react-dom', + 'react-router-dom', 'i18next', 'react-i18next', 'relay-runtime', diff --git a/react/src/App.tsx b/react/src/App.tsx index f386915091..dbb34127b6 100644 --- a/react/src/App.tsx +++ b/react/src/App.tsx @@ -85,6 +85,9 @@ const ChatPage = React.lazy(() => import('./pages/ChatPage')); const AIAgentPage = React.lazy(() => import('./pages/AIAgentPage')); const ReservoirPage = React.lazy(() => import('./pages/ReservoirPage')); +const ReservoirArtifactDetailPage = React.lazy( + () => import('./pages/ReservoirArtifactDetailPage'), +); const SchedulerPage = React.lazy(() => import('./pages/SchedulerPage')); @@ -462,7 +465,7 @@ const router = createBrowserRouter([ }, { path: '/reservoir', - handle: { labelKey: 'Reservoir' }, + handle: { labelKey: 'webui.menu.Reservoir' }, children: [ { path: '', @@ -487,7 +490,7 @@ const router = createBrowserRouter([ element: ( }> - + ), diff --git a/react/src/components/MainLayout/WebUISider.tsx b/react/src/components/MainLayout/WebUISider.tsx index 001fb00909..4b88ec6301 100644 --- a/react/src/components/MainLayout/WebUISider.tsx +++ b/react/src/components/MainLayout/WebUISider.tsx @@ -287,7 +287,7 @@ const WebUISider: React.FC = (props) => { key: 'resource-policy', }, { - label: Reservoir, + label: {t('webui.menu.Reservoir')}, icon: , key: 'reservoir', }, diff --git a/react/src/components/ReservoirArtifactDetail.tsx b/react/src/components/ReservoirArtifactDetail.tsx deleted file mode 100644 index be4e9ed311..0000000000 --- a/react/src/components/ReservoirArtifactDetail.tsx +++ /dev/null @@ -1,382 +0,0 @@ -import type { ReservoirArtifact } from '../types/reservoir'; -import { - getStatusColor, - getStatusIcon, - getTypeColor, - getTypeIcon, -} from '../utils/reservoir'; -import BAIText from './BAIText'; -import { - Card, - Button, - Typography, - Descriptions, - Tag, - Space, - Table, - TableColumnsType, - Modal, - Select, - Progress, - Alert, - Divider, - theme, -} from 'antd'; -import { BAIFlex } from 'backend.ai-ui'; -import dayjs from 'dayjs'; -import relativeTime from 'dayjs/plugin/relativeTime'; -import { ArrowLeft, Download, Info, CheckCircle } from 'lucide-react'; -import React, { useState } from 'react'; -import { useNavigate } from 'react-router-dom'; - -dayjs.extend(relativeTime); - -const { Title, Text, Paragraph } = Typography; - -interface ReservoirArtifactDetailProps { - artifact: ReservoirArtifact; - onPull: (artifactId: string, version?: string) => void; -} - -const ReservoirArtifactDetail: React.FC = ({ - artifact, - onPull, -}) => { - const { token } = theme.useToken(); - const navigate = useNavigate(); - const [isPullModalVisible, setIsPullModalVisible] = useState(false); - const [selectedVersion, setSelectedVersion] = useState( - artifact.versions[0], - ); - const [isPulling, setIsPulling] = useState(false); - - const handlePull = () => { - setIsPulling(true); - onPull(artifact.id, selectedVersion); - setIsPullModalVisible(false); - - // Simulate pulling progress - setTimeout(() => { - setIsPulling(false); - }, 3000); - }; - - const renderPullingProgress = () => { - if (artifact.status === 'pulling' || isPulling) { - return ( - - - Downloading {artifact.name} version {selectedVersion}... - - - - } - type="info" - showIcon - style={{ marginBottom: token.marginMD }} - /> - ); - } - return null; - }; - - return ( -
- - - - - - {artifact.name} - - - {getTypeIcon(artifact.type, 18)} {artifact.type.toUpperCase()} - - - {artifact.status.toUpperCase()} - - - - - {renderPullingProgress()} - - } - onClick={() => setIsPullModalVisible(true)} - disabled={isPulling} - loading={isPulling} - > - {`Pull latest(v${artifact.versions[0]}) version`} - - ) : null - } - style={{ marginBottom: token.marginMD }} - > - - {artifact.name} - - - {' '} - {artifact.type.toUpperCase()} - - - - - {artifact.status.toUpperCase()} - - - - {artifact.size} - - - {artifact.sourceUrl ? ( - - {artifact.source || 'N/A'} - - ) : ( - artifact.source || 'N/A' - )} - - - {dayjs(artifact.updated_at).format('lll')} - - - - {artifact.description || 'No description available'} - - - - - - - {artifact.versions.length} version - {artifact.versions.length > 1 ? 's' : ''} available - - } - > - ({ - version, - size: artifact.size, - updated_at: artifact.updated_at, - checksum: artifact.checksums?.[version], - isInstalled: false, // default to false for legacy data - isPulling: false, // default to false for legacy data - })) - ).map((versionData, index) => ({ - ...versionData, - key: versionData.version, - isLatest: index === 0, - }))} - columns={ - [ - { - title: 'Version', - dataIndex: 'version', - key: 'version', - render: (version: string, record: any) => ( -
- - {version} - {record.isLatest && LATEST} - {record.isInstalled && ( - }> - INSTALLED - - )} - - {record.checksum && ( - - {/* SHA256: {record.checksum} */} - - )} -
- ), - width: '40%', - }, - { - title: 'Action', - key: 'action', - render: (_, record: any) => { - const getButtonText = () => { - if (record.isPulling) return 'Pulling'; - if (record.isInstalled) return 'Reinstall'; - return 'Pull'; - }; - - const getButtonType = () => { - if (record.isPulling) return 'default'; - if (record.isInstalled) return 'default'; - return 'primary'; - }; - - return ( - - ); - }, - width: '15%', - }, - { - title: 'Size', - dataIndex: 'size', - key: 'size', - render: (size: string) => {size}, - width: '20%', - }, - { - title: 'Updated', - dataIndex: 'updated_at', - key: 'updated_at', - render: (updated_at: string) => ( - - {dayjs(updated_at).format('lll')} - - ), - width: '25%', - }, - ] as TableColumnsType - } - pagination={false} - size="small" - /> - - - {artifact.dependencies && artifact.dependencies.length > 0 && ( - - - {artifact.dependencies.map((dep) => ( - - {dep} - - ))} - - - )} - - {artifact.tags && artifact.tags.length > 0 && ( - - - {artifact.tags.map((tag) => ( - - {tag} - - ))} - - - )} - - {artifact.status === 'available' && ( - setIsPullModalVisible(false)} - okText="Pull" - cancelText="Cancel" - okButtonProps={{ - loading: isPulling, - disabled: !selectedVersion, - }} - > - - - You are about to pull {artifact.name} to - your local repository. - - - Type: {artifact.type} -
- Size: {artifact.size} -
- Source: {artifact.source} -
- - } - type="info" - showIcon - icon={} - style={{ marginBottom: token.marginMD }} - /> - -
- Select Version: - -
-
- )} - - ); -}; - -export default ReservoirArtifactDetail; diff --git a/react/src/components/ReservoirArtifactList.tsx b/react/src/components/ReservoirArtifactList.tsx index 433c7e9774..029070ee62 100644 --- a/react/src/components/ReservoirArtifactList.tsx +++ b/react/src/components/ReservoirArtifactList.tsx @@ -1,290 +1,429 @@ -import type { ReservoirArtifact } from '../types/reservoir'; -import { - getStatusColor, - getStatusIcon, - getTypeColor, - getTypeIcon, -} from '../utils/reservoir'; -import BAIText from './BAIText'; -import { - Button, - Tag, - Typography, - Tooltip, - TableColumnsType, - theme, -} from 'antd'; -import { BAIFlex, BAITable } from 'backend.ai-ui'; -import dayjs from 'dayjs'; -import relativeTime from 'dayjs/plugin/relativeTime'; -import { Download } from 'lucide-react'; -import React from 'react'; -import { Link, useNavigate } from 'react-router-dom'; +// import BAILink from './BAILink'; +// import BAITag from './BAITag'; +// import BAIText from './BAIText'; +// import { +// Button, +// TableColumnsType, +// Tag, +// theme, +// Tooltip, +// Typography, +// } from 'antd'; +// import { +// BAIFlex, +// BAITable, +// BAITableProps, +// convertToDecimalUnit, +// filterOutEmpty, +// } from 'backend.ai-ui'; +// import dayjs from 'dayjs'; +// import relativeTime from 'dayjs/plugin/relativeTime'; +// import _ from 'lodash'; +// import { Download } from 'lucide-react'; +// import React from 'react'; +// import { useTranslation } from 'react-i18next'; +// import { graphql, useFragment } from 'react-relay'; +// import { useNavigate } from 'react-router-dom'; +// import { +// ReservoirArtifactList_artifactGroups$data, +// ReservoirArtifactList_artifactGroups$key, +// } from 'src/__generated__/ReservoirArtifactList_artifactGroups.graphql'; +// import { +// getStatusColor, +// getStatusIcon, +// getTypeIcon, +// } from 'src/utils/reservoir'; -dayjs.extend(relativeTime); +// dayjs.extend(relativeTime); -interface ReservoirArtifactListProps { - artifacts: ReservoirArtifact[]; - onPull: (artifactId: string, version?: string) => void; - type: 'all' | 'installed' | 'available'; - order?: string; - loading?: boolean; - rowSelection?: { - type: 'checkbox'; - preserveSelectedRowKeys?: boolean; - getCheckboxProps?: (record: ReservoirArtifact) => { disabled: boolean }; - onChange?: (selectedRowKeys: React.Key[]) => void; - selectedRowKeys?: React.Key[]; - }; - pagination?: { - pageSize: number; - current: number; - total: number; - showTotal?: (total: number) => React.ReactNode; - onChange?: (current: number, pageSize: number) => void; - }; - onChangeOrder?: (order: string) => void; -} +// export type ArtifactGroups = NonNullable< +// ReservoirArtifactList_artifactGroups$data[number] +// >; -const ReservoirArtifactList: React.FC = ({ - artifacts, - onPull, - type, - order, - loading = false, - rowSelection, - pagination, - onChangeOrder, -}) => { - const { token } = theme.useToken(); - const navigate = useNavigate(); +// interface ReservoirArtifactListProps +// extends Omit, 'dataSource' | 'columns'> { +// type: 'all' | 'installed' | 'available'; +// artifactGroupsFrgmt: ReservoirArtifactList_artifactGroups$key; +// onClickPull: (artifactId: string) => void; +// } - const columns: TableColumnsType = [ - { - title: 'Name', - dataIndex: 'name', - key: 'name', - render: (name: string, record: ReservoirArtifact) => ( - -
- - - {name} - +// const ReservoirArtifactList: React.FC = ({ +// artifactGroupsFrgmt, +// onClickPull, +// ...tableProps +// }) => { +// const { token } = theme.useToken(); +// const navigate = useNavigate(); +// const { t } = useTranslation(); - - {getTypeIcon(record.type, 14)} {record.type.toUpperCase()} - - - {record.description && ( - - {record.description} - - )} -
-
- ), - sorter: onChangeOrder ? true : false, - // sortOrder: - // order === 'name' ? 'ascend' : order === '-name' ? 'descend' : false, - // width: '35%', - }, - // { - // title: 'Controls', - // key: 'controls', - // render: (_, record: ReservoirArtifact) => ( - // - // <> - // + } + style={{ marginBottom: token.marginMD }} + > + + + {artifact?.name} + + + + {getTypeIcon(artifact?.type ?? '')}  + {artifact?.type.toUpperCase()} + + + + + {/* {convertToDecimalUnit(latestArtifact?.size, 'auto')?.displayValue} */} + + + + {artifact?.source ? ( + + {artifact.source.name || 'N/A'} + + ) : ( + 'N/A' + )} + + + + {artifact?.registry + ? `${artifact.registry.name}(${artifact.registry.url})` + : 'N/A'} + + + + {artifact?.updatedAt + ? dayjs(artifact?.updatedAt).format('lll') + : 'N/A'} + + + + {artifact?.description || 'No description available'} + + + + + + + + + { + setQuery({ filter: value ?? {} }, 'replaceIn'); + }} + filterProperties={[ + { + fixedOperator: 'eq', + propertyLabel: 'Status', + key: 'status', + type: 'enum', + options: [ + { + label: 'SCANNED', + value: 'SCANNED', + }, + { + label: 'PULLING', + value: 'PULLING', + }, + { + label: 'PULLED', + value: 'PULLED', + }, + { + label: 'VERIFYING', + value: 'VERIFYING', + }, + { + label: 'NEEDS_APPROVAL', + value: 'NEEDS_APPROVAL', + }, + { + label: 'FAILED', + value: 'FAILED', + }, + { + label: 'AVAILABLE', + value: 'AVAILABLE', + }, + { + label: 'REJECTED', + value: 'REJECTED', + }, + ], + }, + { + fixedOperator: 'contains', + propertyLabel: 'Version', + key: 'version', + type: 'string', + }, + { + propertyLabel: 'Artifact ID', + key: 'artifactId', + valueMode: 'scalar', + type: 'string', + }, + ]} + /> + {selectedRevisionIdList.length > 0 ? ( + + {selectedRevisionIdList.length} selected + +
- - } - /> - - */} handleStatisticCardClick('installed')} + onClick={() => handleStatisticCardClick('MODEL')} style={{ cursor: 'pointer', border: - queryParams.statusCategory === 'installed' + queryParams.filter === typeFilterGenerator('MODEL') ? `1px solid ${token.colorPrimary}` : `1px solid ${token.colorBorder}`, backgroundColor: - queryParams.statusCategory === 'installed' + queryParams.filter === typeFilterGenerator('MODEL') ? token.colorPrimaryBg : undefined, transition: 'all 0.2s ease', }} > } + title="MODEL" + value={0} + prefix={} valueStyle={{ color: - queryParams.statusCategory === 'installed' + queryParams.filter === typeFilterGenerator('MODEL') ? token.colorPrimary : undefined, }} @@ -668,27 +179,27 @@ const ReservoirPage: React.FC = () => { size="small" variant="borderless" hoverable - onClick={() => handleStatisticCardClick('available')} + onClick={() => handleStatisticCardClick('IMAGE')} style={{ cursor: 'pointer', border: - queryParams.statusCategory === 'available' + queryParams.filter === typeFilterGenerator('IMAGE') ? `1px solid ${token.colorPrimary}` : `1px solid ${token.colorBorder}`, backgroundColor: - queryParams.statusCategory === 'available' + queryParams.filter === typeFilterGenerator('IMAGE') ? token.colorPrimaryBg : undefined, transition: 'all 0.2s ease', }} > } + title="IMAGE" + value={0} + prefix={} valueStyle={{ color: - queryParams.statusCategory === 'available' + queryParams.filter === typeFilterGenerator('IMAGE') ? token.colorPrimary : undefined, }} @@ -700,120 +211,40 @@ const ReservoirPage: React.FC = () => { size="small" variant="borderless" hoverable - onClick={() => handleStatisticCardClick('pulling')} + onClick={() => handleStatisticCardClick('PACKAGE')} style={{ cursor: 'pointer', border: - queryParams.statusCategory === 'all' && - queryParams.filter === 'status == pulling' + queryParams.filter === typeFilterGenerator('PACKAGE') ? `1px solid ${token.colorPrimary}` : `1px solid ${token.colorBorder}`, backgroundColor: - queryParams.statusCategory === 'all' && - queryParams.filter === 'status == pulling' + queryParams.filter === typeFilterGenerator('PACKAGE') ? token.colorPrimaryBg : undefined, transition: 'all 0.2s ease', }} > } + title="PACKAGE" + value={0} + prefix={} valueStyle={{ color: - queryParams.statusCategory === 'all' && - queryParams.filter === 'status == pulling' + queryParams.filter === typeFilterGenerator('PACKAGE') ? token.colorPrimary : undefined, }} /> - - - } - precision={1} - valueStyle={{ color: token.colorTextSecondary }} - /> - - - - - } - suffix="(24h)" - valueStyle={{ - color: token.colorTextSecondary, - fontWeight: 'normal', - }} - /> - - - { - const storedQuery = queryMapRef.current[key] || { - queryParams: { - statusCategory: 'all', - }, - }; - setQuery({ ...storedQuery.queryParams }, 'replace'); - setTablePaginationOption( - storedQuery.tablePaginationOption || { current: 1 }, - ); - setSelectedArtifactList([]); - setCurTabKey(key as TabKey); - }} + activeTabKey={'artifacts'} tabList={[ { key: 'artifacts', - tab: ( - - Reservoir Artifacts - {(artifactCounts.all || 0) > 0 && ( - - )} - - ), - }, - { - key: 'audit', - tab: 'Audit Logs', + tab: t('reservoirPage.ReservoirArtifacts'), }, ]} styles={{ @@ -822,151 +253,124 @@ const ReservoirPage: React.FC = () => { }, }} > - {curTabKey === 'artifacts' ? ( - - - + + + { + setQuery({ filter: value ?? {} }, 'replaceIn'); }} - wrap="wrap" - > - { - setQuery({ statusCategory: e.target.value }, 'replaceIn'); - setTablePaginationOption({ current: 1 }); - setSelectedArtifactList([]); - }} - options={[ - { - label: 'All', - value: 'all', - }, - { - label: 'Installed', - value: 'installed', - }, - { - label: 'Available', - value: 'available', - }, - ]} - /> - { - setQuery({ filter: value }, 'replaceIn'); - setTablePaginationOption({ current: 1 }); - setSelectedArtifactList([]); - }} - /> - - - {selectedArtifactList.length > 0 && ( - <> - {t('general.NSelected', { - count: selectedArtifactList.length, - })} - -