[i18n] g global namespace (#1843)

* Batch move global scope i18n to g. namespace

* Minor fix

* Update locale

* Update locales [skip ci]

* More moves

* Regroup icon/color

* nit

* Fix component test

---------

Co-authored-by: github-actions <github-actions@github.com>
This commit is contained in:
Chenlei Hu
2024-12-07 19:07:03 -08:00
committed by GitHub
parent a76159e9a0
commit b6038128cb
40 changed files with 414 additions and 360 deletions

View File

@@ -22,7 +22,7 @@
</span> </span>
<div v-if="imageBroken" class="broken-image-placeholder"> <div v-if="imageBroken" class="broken-image-placeholder">
<i class="pi pi-image"></i> <i class="pi pi-image"></i>
<span>{{ $t('imageFailedToLoad') }}</span> <span>{{ $t('g.imageFailedToLoad') }}</span>
</div> </div>
</template> </template>

View File

@@ -1,8 +1,8 @@
<template> <template>
<Dialog v-model:visible="visible" :header="$t('customizeFolder')"> <Dialog v-model:visible="visible" :header="$t('g.customizeFolder')">
<div class="p-fluid"> <div class="p-fluid">
<div class="field icon-field"> <div class="field icon-field">
<label for="icon">{{ $t('icon') }}</label> <label for="icon">{{ $t('g.icon') }}</label>
<SelectButton <SelectButton
v-model="selectedIcon" v-model="selectedIcon"
:options="iconOptions" :options="iconOptions"
@@ -19,7 +19,7 @@
</div> </div>
<Divider /> <Divider />
<div class="field color-field"> <div class="field color-field">
<label for="color">{{ $t('color') }}</label> <label for="color">{{ $t('g.color') }}</label>
<div class="color-picker-container"> <div class="color-picker-container">
<SelectButton <SelectButton
v-model="selectedColor" v-model="selectedColor"
@@ -41,7 +41,7 @@
v-else v-else
class="pi pi-palette" class="pi pi-palette"
:style="{ fontSize: '1.2rem' }" :style="{ fontSize: '1.2rem' }"
v-tooltip="$t('customColor')" v-tooltip="$t('g.customColor')"
></i> ></i>
</template> </template>
</SelectButton> </SelectButton>
@@ -54,13 +54,13 @@
</div> </div>
<template #footer> <template #footer>
<Button <Button
:label="$t('reset')" :label="$t('g.reset')"
icon="pi pi-refresh" icon="pi pi-refresh"
@click="resetCustomization" @click="resetCustomization"
class="p-button-text" class="p-button-text"
/> />
<Button <Button
:label="$t('confirm')" :label="$t('g.confirm')"
icon="pi pi-check" icon="pi pi-check"
@click="confirmCustomization" @click="confirmCustomization"
autofocus autofocus
@@ -100,24 +100,24 @@ const visible = computed({
const nodeBookmarkStore = useNodeBookmarkStore() const nodeBookmarkStore = useNodeBookmarkStore()
const iconOptions = [ const iconOptions = [
{ name: t('bookmark'), value: nodeBookmarkStore.defaultBookmarkIcon }, { name: t('icon.bookmark'), value: nodeBookmarkStore.defaultBookmarkIcon },
{ name: t('folder'), value: 'pi-folder' }, { name: t('icon.folder'), value: 'pi-folder' },
{ name: t('star'), value: 'pi-star' }, { name: t('icon.star'), value: 'pi-star' },
{ name: t('heart'), value: 'pi-heart' }, { name: t('icon.heart'), value: 'pi-heart' },
{ name: t('file'), value: 'pi-file' }, { name: t('icon.file'), value: 'pi-file' },
{ name: t('inbox'), value: 'pi-inbox' }, { name: t('icon.inbox'), value: 'pi-inbox' },
{ name: t('box'), value: 'pi-box' }, { name: t('icon.box'), value: 'pi-box' },
{ name: t('briefcase'), value: 'pi-briefcase' } { name: t('icon.briefcase'), value: 'pi-briefcase' }
] ]
const colorOptions = [ const colorOptions = [
{ name: t('default'), value: nodeBookmarkStore.defaultBookmarkColor }, { name: t('color.default'), value: nodeBookmarkStore.defaultBookmarkColor },
{ name: t('blue'), value: '#007bff' }, { name: t('color.blue'), value: '#007bff' },
{ name: t('green'), value: '#28a745' }, { name: t('color.green'), value: '#28a745' },
{ name: t('red'), value: '#dc3545' }, { name: t('color.red'), value: '#dc3545' },
{ name: t('pink'), value: '#e83e8c' }, { name: t('color.pink'), value: '#e83e8c' },
{ name: t('yellow'), value: '#ffc107' }, { name: t('color.yellow'), value: '#ffc107' },
{ name: t('custom'), value: 'custom' } { name: t('color.custom'), value: 'custom' }
] ]
const defaultIcon = iconOptions.find( const defaultIcon = iconOptions.find(
@@ -157,7 +157,7 @@ const resetCustomization = () => {
selectedColor.value = defaultColor selectedColor.value = defaultColor
} else if (!colorOption) { } else if (!colorOption) {
customColor.value = props.initialColor.replace('#', '') customColor.value = props.initialColor.replace('#', '')
selectedColor.value = { name: 'Custom', value: 'custom' } selectedColor.value = { name: t('color.custom'), value: 'custom' }
} else { } else {
selectedColor.value = colorOption selectedColor.value = colorOption
} }

View File

@@ -14,7 +14,7 @@
<div class="file-action"> <div class="file-action">
<Button <Button
class="file-action-button" class="file-action-button"
:label="$t('download') + ' (' + fileSize + ')'" :label="$t('g.download') + ' (' + fileSize + ')'"
size="small" size="small"
outlined outlined
:disabled="props.error" :disabled="props.error"

View File

@@ -12,7 +12,7 @@
<div class="file-action"> <div class="file-action">
<Button <Button
class="file-action-button" class="file-action-button"
:label="$t('download') + ' (' + fileSize + ')'" :label="$t('g.download') + ' (' + fileSize + ')'"
size="small" size="small"
outlined outlined
:disabled="props.error" :disabled="props.error"

View File

@@ -1,7 +1,7 @@
<template> <template>
<div class="system-stats"> <div class="system-stats">
<div class="mb-6"> <div class="mb-6">
<h2 class="text-2xl font-semibold mb-4">{{ $t('systemInfo') }}</h2> <h2 class="text-2xl font-semibold mb-4">{{ $t('g.systemInfo') }}</h2>
<div class="grid grid-cols-2 gap-2"> <div class="grid grid-cols-2 gap-2">
<template v-for="col in systemColumns" :key="col.field"> <template v-for="col in systemColumns" :key="col.field">
<div class="font-medium">{{ col.header }}</div> <div class="font-medium">{{ col.header }}</div>
@@ -13,7 +13,7 @@
<Divider /> <Divider />
<div> <div>
<h2 class="text-2xl font-semibold mb-4">{{ $t('devices') }}</h2> <h2 class="text-2xl font-semibold mb-4">{{ $t('g.devices') }}</h2>
<TabView v-if="props.stats.devices.length > 1"> <TabView v-if="props.stats.devices.length > 1">
<TabPanel <TabPanel
v-for="device in props.stats.devices" v-for="device in props.stats.devices"

View File

@@ -130,13 +130,13 @@ const deleteCommand = async (node: RenderedTreeExplorerNode) => {
const menuItems = computed<MenuItem[]>(() => const menuItems = computed<MenuItem[]>(() =>
[ [
{ {
label: t('rename'), label: t('g.rename'),
icon: 'pi pi-file-edit', icon: 'pi pi-file-edit',
command: () => renameCommand(menuTargetNode.value), command: () => renameCommand(menuTargetNode.value),
visible: menuTargetNode.value?.handleRename !== undefined visible: menuTargetNode.value?.handleRename !== undefined
}, },
{ {
label: t('delete'), label: t('g.delete'),
icon: 'pi pi-trash', icon: 'pi pi-trash',
command: () => deleteCommand(menuTargetNode.value), command: () => deleteCommand(menuTargetNode.value),
visible: menuTargetNode.value?.handleDelete !== undefined, visible: menuTargetNode.value?.handleDelete !== undefined,

View File

@@ -128,7 +128,7 @@ describe('TreeExplorerTreeNode', () => {
expect(handleRenameMock).toHaveBeenCalledOnce() expect(handleRenameMock).toHaveBeenCalledOnce()
expect(addToastSpy).toHaveBeenCalledWith({ expect(addToastSpy).toHaveBeenCalledWith({
severity: 'error', severity: 'error',
summary: 'error', summary: 'g.error',
detail: 'Rename failed', detail: 'Rename failed',
life: 3000 life: 3000
}) })

View File

@@ -6,7 +6,7 @@
</ul> </ul>
<div class="flex gap-4 justify-end"> <div class="flex gap-4 justify-end">
<Button <Button
:label="$t('cancel')" :label="$t('g.cancel')"
icon="pi pi-undo" icon="pi pi-undo"
severity="secondary" severity="secondary"
@click="onCancel" @click="onCancel"
@@ -14,26 +14,26 @@
/> />
<Button <Button
v-if="type === 'delete'" v-if="type === 'delete'"
:label="$t('delete')" :label="$t('g.delete')"
severity="danger" severity="danger"
@click="onConfirm" @click="onConfirm"
icon="pi pi-trash" icon="pi pi-trash"
/> />
<Button <Button
v-else-if="type === 'overwrite'" v-else-if="type === 'overwrite'"
:label="$t('overwrite')" :label="$t('g.overwrite')"
severity="warn" severity="warn"
@click="onConfirm" @click="onConfirm"
icon="pi pi-save" icon="pi pi-save"
/> />
<template v-else-if="type === 'dirtyClose'"> <template v-else-if="type === 'dirtyClose'">
<Button <Button
:label="$t('no')" :label="$t('g.no')"
severity="secondary" severity="secondary"
@click="onDeny" @click="onDeny"
icon="pi pi-times" icon="pi pi-times"
/> />
<Button :label="$t('save')" @click="onConfirm" icon="pi pi-save" /> <Button :label="$t('g.save')" @click="onConfirm" icon="pi pi-save" />
</template> </template>
<Button <Button
v-else-if="type === 'reinstall'" v-else-if="type === 'reinstall'"
@@ -45,7 +45,7 @@
<!-- Invalid - just show a close button. --> <!-- Invalid - just show a close button. -->
<Button <Button
v-else v-else
:label="$t('close')" :label="$t('g.close')"
severity="primary" severity="primary"
@click="onCancel" @click="onCancel"
icon="pi pi-times" icon="pi pi-times"

View File

@@ -7,7 +7,7 @@
<div class="comfy-error-report"> <div class="comfy-error-report">
<Button <Button
v-show="!reportOpen" v-show="!reportOpen"
:label="$t('showReport')" :label="$t('g.showReport')"
@click="showReport" @click="showReport"
text text
/> />
@@ -28,7 +28,7 @@
/> />
<Button <Button
v-if="reportOpen" v-if="reportOpen"
:label="$t('copyToClipboard')" :label="$t('g.copyToClipboard')"
icon="pi pi-copy" icon="pi pi-copy"
@click="copyReportToClipboard" @click="copyReportToClipboard"
/> />

View File

@@ -10,7 +10,7 @@
/> />
<label>{{ message }}</label> <label>{{ message }}</label>
</FloatLabel> </FloatLabel>
<Button @click="onConfirm">{{ $t('confirm') }}</Button> <Button @click="onConfirm">{{ $t('g.confirm') }}</Button>
</div> </div>
</template> </template>

View File

@@ -5,7 +5,7 @@
class="settings-search-box w-full mb-2" class="settings-search-box w-full mb-2"
v-model:modelValue="searchQuery" v-model:modelValue="searchQuery"
@search="handleSearch" @search="handleSearch"
:placeholder="$t('searchSettings') + '...'" :placeholder="$t('g.searchSettings') + '...'"
/> />
<Listbox <Listbox
v-model="activeCategory" v-model="activeCategory"

View File

@@ -1,7 +1,7 @@
<template> <template>
<Button <Button
@click="openGitHubIssues" @click="openGitHubIssues"
:label="$t('findIssues')" :label="$t('g.findIssues')"
severity="secondary" severity="secondary"
icon="pi pi-github" icon="pi pi-github"
> >

View File

@@ -1,11 +1,11 @@
<template> <template>
<Button <Button
@click="reportIssue" @click="reportIssue"
:label="$t('reportIssue')" :label="$t('g.reportIssue')"
:severity="submitted ? 'success' : 'secondary'" :severity="submitted ? 'success' : 'secondary'"
:icon="icon" :icon="icon"
:disabled="submitted" :disabled="submitted"
v-tooltip="$t('reportIssueTooltip')" v-tooltip="$t('g.reportIssueTooltip')"
> >
</Button> </Button>
</template> </template>
@@ -41,7 +41,7 @@ const reportIssue = async () => {
submitted.value = true submitted.value = true
toast.add({ toast.add({
severity: 'success', severity: 'success',
summary: t('reportSent'), summary: t('g.reportSent'),
life: 3000 life: 3000
}) })
} finally { } finally {

View File

@@ -1,6 +1,6 @@
<template> <template>
<PanelTemplate value="About" class="about-container"> <PanelTemplate value="About" class="about-container">
<h2 class="text-2xl font-bold mb-2">{{ $t('about') }}</h2> <h2 class="text-2xl font-bold mb-2">{{ $t('g.about') }}</h2>
<div class="space-y-2"> <div class="space-y-2">
<a <a
v-for="badge in aboutPanelStore.badges" v-for="badge in aboutPanelStore.badges"

View File

@@ -7,7 +7,9 @@
pt:text="w-full" pt:text="w-full"
> >
<div class="flex items-center justify-between"> <div class="flex items-center justify-between">
<div>{{ $t('currentUser') }}: {{ userStore.currentUser?.username }}</div> <div>
{{ $t('g.currentUser') }}: {{ userStore.currentUser?.username }}
</div>
<Button icon="pi pi-sign-out" @click="logout" text /> <Button icon="pi pi-sign-out" @click="logout" text />
</div> </div>
</Message> </Message>

View File

@@ -3,7 +3,7 @@
<template #header> <template #header>
<SearchBox <SearchBox
v-model="filters['global'].value" v-model="filters['global'].value"
:placeholder="$t('searchExtensions') + '...'" :placeholder="$t('g.searchExtensions') + '...'"
/> />
<Message v-if="hasChanges" severity="info" pt:text="w-full"> <Message v-if="hasChanges" severity="info" pt:text="w-full">
<ul> <ul>
@@ -16,7 +16,7 @@
</ul> </ul>
<div class="flex justify-end"> <div class="flex justify-end">
<Button <Button
:label="$t('reloadToApplyChanges')" :label="$t('g.reloadToApplyChanges')"
@click="applyChanges" @click="applyChanges"
outlined outlined
severity="danger" severity="danger"
@@ -30,7 +30,7 @@
size="small" size="small"
:filters="filters" :filters="filters"
> >
<Column field="name" :header="$t('extensionName')" sortable></Column> <Column field="name" :header="$t('g.extensionName')" sortable></Column>
<Column <Column
:pt="{ :pt="{
bodyCell: 'flex items-center justify-end' bodyCell: 'flex items-center justify-end'

View File

@@ -6,7 +6,7 @@
:closable="true" :closable="true"
@close="handleClose" @close="handleClose"
> >
{{ $t('firstTimeUIMessage') }} {{ $t('g.firstTimeUIMessage') }}
</Message> </Message>
</template> </template>

View File

@@ -3,7 +3,7 @@
<template #header> <template #header>
<SearchBox <SearchBox
v-model="filters['global'].value" v-model="filters['global'].value"
:placeholder="$t('searchKeybindings') + '...'" :placeholder="$t('g.searchKeybindings') + '...'"
/> />
</template> </template>
@@ -102,8 +102,8 @@
</Dialog> </Dialog>
<Button <Button
class="mt-4" class="mt-4"
:label="$t('reset')" :label="$t('g.reset')"
v-tooltip="$t('resetKeybindingsTooltip')" v-tooltip="$t('g.resetKeybindingsTooltip')"
icon="pi pi-trash" icon="pi pi-trash"
severity="danger" severity="danger"
fluid fluid

View File

@@ -6,10 +6,10 @@
@update:formValue="updateSettingValue" @update:formValue="updateSettingValue"
> >
<template #name-prefix> <template #name-prefix>
<Tag v-if="setting.experimental" :value="$t('experimental')" /> <Tag v-if="setting.experimental" :value="$t('g.experimental')" />
<Tag <Tag
v-if="setting.deprecated" v-if="setting.deprecated"
:value="$t('deprecated')" :value="$t('g.deprecated')"
severity="danger" severity="danger"
/> />
</template> </template>

View File

@@ -10,8 +10,8 @@
<NoResultsPlaceholder <NoResultsPlaceholder
v-else v-else
icon="pi pi-search" icon="pi pi-search"
:title="$t('noResultsFound')" :title="$t('g.noResultsFound')"
:message="$t('searchFailedMessage')" :message="$t('g.searchFailedMessage')"
/> />
</template> </template>

View File

@@ -2,7 +2,7 @@
<div> <div>
<h2 class="px-4"> <h2 class="px-4">
<i class="pi pi-cog"></i> <i class="pi pi-cog"></i>
<span>{{ $t('settings') }}</span> <span>{{ $t('g.settings') }}</span>
</h2> </h2>
</div> </div>
</template> </template>

View File

@@ -62,7 +62,7 @@
<div> <div>
<label class="text-neutral-200 font-medium"> <label class="text-neutral-200 font-medium">
{{ $t('install.customNodes') }} {{ $t('install.customNodes') }}
<Tag severity="secondary"> {{ $t('comingSoon') }}... </Tag> <Tag severity="secondary"> {{ $t('g.comingSoon') }}... </Tag>
</label> </label>
<p class="text-sm text-neutral-400 my-1"> <p class="text-sm text-neutral-400 my-1">
{{ $t('install.customNodesDescription') }} {{ $t('install.customNodesDescription') }}

View File

@@ -105,7 +105,7 @@ const suggestions = ref<ComfyNodeDefImpl[]>([])
const hoveredSuggestion = ref<ComfyNodeDefImpl | null>(null) const hoveredSuggestion = ref<ComfyNodeDefImpl | null>(null)
const currentQuery = ref('') const currentQuery = ref('')
const placeholder = computed(() => { const placeholder = computed(() => {
return props.filters.length === 0 ? t('searchNodes') + '...' : '' return props.filters.length === 0 ? t('g.searchNodes') + '...' : ''
}) })
const nodeDefStore = useNodeDefStore() const nodeDefStore = useNodeDefStore()

View File

@@ -16,7 +16,7 @@
/> />
</div> </div>
<div class="_footer"> <div class="_footer">
<Button type="button" :label="$t('add')" @click="submit"></Button> <Button type="button" :label="$t('g.add')" @click="submit"></Button>
</div> </div>
</template> </template>

View File

@@ -25,12 +25,12 @@
<div class="option-badges"> <div class="option-badges">
<Tag <Tag
v-if="nodeDef.experimental" v-if="nodeDef.experimental"
:value="$t('experimental')" :value="$t('g.experimental')"
severity="primary" severity="primary"
/> />
<Tag <Tag
v-if="nodeDef.deprecated" v-if="nodeDef.deprecated"
:value="$t('deprecated')" :value="$t('g.deprecated')"
severity="danger" severity="danger"
/> />
<Tag <Tag

View File

@@ -3,7 +3,7 @@
icon="pi pi-cog" icon="pi pi-cog"
class="comfy-settings-btn" class="comfy-settings-btn"
@click="showSetting" @click="showSetting"
:tooltip="$t('settings')" :tooltip="$t('g.settings')"
/> />
</template> </template>

View File

@@ -9,21 +9,21 @@
@click="modelStore.loadModelFolders" @click="modelStore.loadModelFolders"
severity="secondary" severity="secondary"
text text
v-tooltip.bottom="$t('refresh')" v-tooltip.bottom="$t('g.refresh')"
/> />
<Button <Button
icon="pi pi-cloud-download" icon="pi pi-cloud-download"
@click="modelStore.loadModels" @click="modelStore.loadModels"
severity="secondary" severity="secondary"
text text
v-tooltip.bottom="$t('loadAllFolders')" v-tooltip.bottom="$t('g.loadAllFolders')"
/> />
</template> </template>
<template #header> <template #header>
<SearchBox <SearchBox
class="model-lib-search-box p-2 2xl:p-4" class="model-lib-search-box p-2 2xl:p-4"
v-model:modelValue="searchQuery" v-model:modelValue="searchQuery"
:placeholder="$t('searchModels') + '...'" :placeholder="$t('g.searchModels') + '...'"
@search="handleSearch" @search="handleSearch"
/> />
</template> </template>

View File

@@ -10,7 +10,7 @@
text text
severity="secondary" severity="secondary"
@click="nodeBookmarkTreeExplorerRef?.addNewBookmarkFolder()" @click="nodeBookmarkTreeExplorerRef?.addNewBookmarkFolder()"
v-tooltip.bottom="$t('newFolder')" v-tooltip.bottom="$t('g.newFolder')"
/> />
<Button <Button
class="sort-button" class="sort-button"
@@ -28,7 +28,7 @@
@search="handleSearch" @search="handleSearch"
@show-filter="($event) => searchFilter.toggle($event)" @show-filter="($event) => searchFilter.toggle($event)"
@remove-filter="onRemoveFilter" @remove-filter="onRemoveFilter"
:placeholder="$t('searchNodes') + '...'" :placeholder="$t('g.searchNodes') + '...'"
filter-icon="pi pi-filter" filter-icon="pi pi-filter"
:filters :filters
/> />

View File

@@ -75,8 +75,8 @@
<div v-else> <div v-else>
<NoResultsPlaceholder <NoResultsPlaceholder
icon="pi pi-info-circle" icon="pi pi-info-circle"
:title="$t('noTasksFound')" :title="$t('g.noTasksFound')"
:message="$t('noTasksFoundMessage')" :message="$t('g.noTasksFoundMessage')"
/> />
</div> </div>
</template> </template>
@@ -241,19 +241,19 @@ const menuTargetTask = ref<TaskItemImpl | null>(null)
const menuTargetNode = ref<ComfyNode | null>(null) const menuTargetNode = ref<ComfyNode | null>(null)
const menuItems = computed<MenuItem[]>(() => [ const menuItems = computed<MenuItem[]>(() => [
{ {
label: t('delete'), label: t('g.delete'),
icon: 'pi pi-trash', icon: 'pi pi-trash',
command: () => menuTargetTask.value && removeTask(menuTargetTask.value), command: () => menuTargetTask.value && removeTask(menuTargetTask.value),
disabled: isExpanded.value || isInFolderView.value disabled: isExpanded.value || isInFolderView.value
}, },
{ {
label: t('loadWorkflow'), label: t('g.loadWorkflow'),
icon: 'pi pi-file-export', icon: 'pi pi-file-export',
command: () => menuTargetTask.value?.loadWorkflow(app), command: () => menuTargetTask.value?.loadWorkflow(app),
disabled: !menuTargetTask.value?.workflow disabled: !menuTargetTask.value?.workflow
}, },
{ {
label: t('goToNode'), label: t('g.goToNode'),
icon: 'pi pi-arrow-circle-right', icon: 'pi pi-arrow-circle-right',
command: () => app.goToNode(menuTargetNode.value?.id), command: () => app.goToNode(menuTargetNode.value?.id),
visible: !!menuTargetNode.value visible: !!menuTargetNode.value

View File

@@ -31,7 +31,7 @@
class="workflows-search-box p-2 2xl:p-4" class="workflows-search-box p-2 2xl:p-4"
v-model:modelValue="searchQuery" v-model:modelValue="searchQuery"
@search="handleSearch" @search="handleSearch"
:placeholder="$t('searchWorkflows') + '...'" :placeholder="$t('g.searchWorkflows') + '...'"
/> />
</template> </template>
<template #body> <template #body>
@@ -116,8 +116,8 @@
<NoResultsPlaceholder <NoResultsPlaceholder
v-else v-else
icon="pi pi-folder" icon="pi pi-folder"
:title="$t('empty')" :title="$t('g.empty')"
:message="$t('noWorkflowsFound')" :message="$t('g.noWorkflowsFound')"
/> />
</div> </div>
</div> </div>
@@ -278,7 +278,7 @@ const renderTreeNode = (
contextMenuItems: (node: TreeExplorerNode<ComfyWorkflow>) => { contextMenuItems: (node: TreeExplorerNode<ComfyWorkflow>) => {
return [ return [
{ {
label: t('insert'), label: t('g.insert'),
icon: 'pi pi-file-export', icon: 'pi pi-file-export',
command: () => { command: () => {
const workflow = node.data const workflow = node.data

View File

@@ -93,7 +93,7 @@ const extraMenuItems = (
menuTargetNode: RenderedTreeExplorerNode<ComfyNodeDefImpl> menuTargetNode: RenderedTreeExplorerNode<ComfyNodeDefImpl>
) => [ ) => [
{ {
label: t('newFolder'), label: t('g.newFolder'),
icon: 'pi pi-folder-plus', icon: 'pi pi-folder-plus',
command: () => { command: () => {
addNewBookmarkFolder(menuTargetNode) addNewBookmarkFolder(menuTargetNode)
@@ -101,7 +101,7 @@ const extraMenuItems = (
visible: !menuTargetNode?.leaf visible: !menuTargetNode?.leaf
}, },
{ {
label: t('customize'), label: t('g.customize'),
icon: 'pi pi-palette', icon: 'pi pi-palette',
command: () => { command: () => {
const customization = const customization =

View File

@@ -4,12 +4,12 @@
<template #before-label> <template #before-label>
<Tag <Tag
v-if="nodeDef.experimental" v-if="nodeDef.experimental"
:value="$t('experimental')" :value="$t('g.experimental')"
severity="primary" severity="primary"
/> />
<Tag <Tag
v-if="nodeDef.deprecated" v-if="nodeDef.deprecated"
:value="$t('deprecated')" :value="$t('g.deprecated')"
severity="danger" severity="danger"
/> />
</template> </template>

View File

@@ -1,7 +1,7 @@
<template> <template>
<video controls width="100%" height="100%"> <video controls width="100%" height="100%">
<source :src="url" :type="htmlVideoType" /> <source :src="url" :type="htmlVideoType" />
{{ $t('videoFailedToLoad') }} {{ $t('g.videoFailedToLoad') }}
</video> </video>
</template> </template>

View File

@@ -8,7 +8,7 @@ export const useLogsTerminalTab = (): BottomPanelExtension => {
const { t } = useI18n() const { t } = useI18n()
return { return {
id: 'logs-terminal', id: 'logs-terminal',
title: t('logs'), title: t('g.logs'),
component: markRaw(LogsTerminal), component: markRaw(LogsTerminal),
type: 'vue' type: 'vue'
} }
@@ -18,7 +18,7 @@ export const useCommandTerminalTab = (): BottomPanelExtension => {
const { t } = useI18n() const { t } = useI18n()
return { return {
id: 'command-terminal', id: 'command-terminal',
title: t('terminal'), title: t('g.terminal'),
component: markRaw(CommandTerminal), component: markRaw(CommandTerminal),
type: 'vue' type: 'vue'
} }

View File

@@ -8,7 +8,7 @@ export function useErrorHandling() {
const toastErrorHandler = (error: any) => { const toastErrorHandler = (error: any) => {
toast.add({ toast.add({
severity: 'error', severity: 'error',
summary: t('error'), summary: t('g.error'),
detail: error.message, detail: error.message,
life: 3000 life: 3000
}) })

View File

@@ -1,4 +1,85 @@
{ {
"g": {
"currentUser": "Current user",
"empty": "Empty",
"noWorkflowsFound": "No workflows found.",
"comingSoon": "Coming Soon",
"firstTimeUIMessage": "This is the first time you use the new UI. Choose \"Menu > Use New Menu > Disabled\" to restore the old UI.",
"download": "Download",
"loadAllFolders": "Load All Folders",
"refresh": "Refresh",
"terminal": "Terminal",
"logs": "Logs",
"videoFailedToLoad": "Video failed to load",
"extensionName": "Extension Name",
"reloadToApplyChanges": "Reload to apply changes",
"insert": "Insert",
"systemInfo": "System Info",
"devices": "Devices",
"about": "About",
"add": "Add",
"confirm": "Confirm",
"reset": "Reset",
"resetKeybindingsTooltip": "Reset keybindings to default",
"customizeFolder": "Customize Folder",
"icon": "Icon",
"color": "Color",
"error": "Error",
"loading": "Loading",
"findIssues": "Find Issues",
"reportIssue": "Send Report",
"reportIssueTooltip": "Submit the error report to Comfy Org",
"reportSent": "Report Submitted",
"copyToClipboard": "Copy to Clipboard",
"openNewIssue": "Open New Issue",
"showReport": "Show Report",
"imageFailedToLoad": "Image failed to load",
"reconnecting": "Reconnecting",
"reconnected": "Reconnected",
"delete": "Delete",
"rename": "Rename",
"save": "Save",
"no": "No",
"cancel": "Cancel",
"close": "Close",
"overwrite": "Overwrite",
"customize": "Customize",
"experimental": "BETA",
"deprecated": "DEPR",
"loadWorkflow": "Load Workflow",
"goToNode": "Go to Node",
"settings": "Settings",
"searchWorkflows": "Search Workflows",
"searchSettings": "Search Settings",
"searchNodes": "Search Nodes",
"searchModels": "Search Models",
"searchKeybindings": "Search Keybindings",
"searchExtensions": "Search Extensions",
"noResultsFound": "No Results Found",
"searchFailedMessage": "We couldn't find any settings matching your search. Try adjusting your search terms.",
"noTasksFound": "No Tasks Found",
"noTasksFoundMessage": "There are no tasks in the queue.",
"newFolder": "New Folder"
},
"color": {
"default": "Default",
"blue": "Blue",
"green": "Green",
"red": "Red",
"pink": "Pink",
"yellow": "Yellow",
"custom": "Custom"
},
"icon": {
"bookmark": "Bookmark",
"folder": "Folder",
"star": "Star",
"heart": "Heart",
"file": "File",
"inbox": "Inbox",
"box": "Box",
"briefcase": "Briefcase"
},
"welcome": { "welcome": {
"title": "Welcome to ComfyUI", "title": "Welcome to ComfyUI",
"getStarted": "Get Started" "getStarted": "Get Started"
@@ -87,63 +168,6 @@
"revertChanges": "Revert Changes", "revertChanges": "Revert Changes",
"restart": "Restart" "restart": "Restart"
}, },
"currentUser": "Current user",
"empty": "Empty",
"noWorkflowsFound": "No workflows found.",
"comingSoon": "Coming Soon",
"firstTimeUIMessage": "This is the first time you use the new UI. Choose \"Menu > Use New Menu > Disabled\" to restore the old UI.",
"download": "Download",
"loadAllFolders": "Load All Folders",
"refresh": "Refresh",
"terminal": "Terminal",
"logs": "Logs",
"videoFailedToLoad": "Video failed to load",
"extensionName": "Extension Name",
"reloadToApplyChanges": "Reload to apply changes",
"insert": "Insert",
"systemInfo": "System Info",
"devices": "Devices",
"about": "About",
"add": "Add",
"confirm": "Confirm",
"reset": "Reset",
"resetKeybindingsTooltip": "Reset keybindings to default",
"customizeFolder": "Customize Folder",
"icon": "Icon",
"color": "Color",
"bookmark": "Bookmark",
"folder": "Folder",
"star": "Star",
"heart": "Heart",
"file": "File",
"inbox": "Inbox",
"box": "Box",
"briefcase": "Briefcase",
"error": "Error",
"loading": "Loading",
"findIssues": "Find Issues",
"reportIssue": "Send Report",
"reportIssueTooltip": "Submit the error report to Comfy Org",
"reportSent": "Report Submitted",
"copyToClipboard": "Copy to Clipboard",
"openNewIssue": "Open New Issue",
"showReport": "Show Report",
"imageFailedToLoad": "Image failed to load",
"reconnecting": "Reconnecting",
"reconnected": "Reconnected",
"delete": "Delete",
"rename": "Rename",
"save": "Save",
"no": "No",
"cancel": "Cancel",
"close": "Close",
"overwrite": "Overwrite",
"customize": "Customize",
"experimental": "BETA",
"deprecated": "DEPR",
"loadWorkflow": "Load Workflow",
"goToNode": "Go to Node",
"settings": "Settings",
"settingsDialog": { "settingsDialog": {
"Comfy-Desktop_AutoUpdate": { "Comfy-Desktop_AutoUpdate": {
"name": "Automatically check for updates" "name": "Automatically check for updates"
@@ -428,17 +452,6 @@
"name": "Always snap to grid" "name": "Always snap to grid"
} }
}, },
"searchWorkflows": "Search Workflows",
"searchSettings": "Search Settings",
"searchNodes": "Search Nodes",
"searchModels": "Search Models",
"searchKeybindings": "Search Keybindings",
"searchExtensions": "Search Extensions",
"noResultsFound": "No Results Found",
"searchFailedMessage": "We couldn't find any settings matching your search. Try adjusting your search terms.",
"noTasksFound": "No Tasks Found",
"noTasksFoundMessage": "There are no tasks in the queue.",
"newFolder": "New Folder",
"sideToolbar": { "sideToolbar": {
"themeToggle": "Toggle Theme", "themeToggle": "Toggle Theme",
"logout": "Logout", "logout": "Logout",

View File

@@ -1,26 +1,17 @@
{ {
"about": "情報", "color": {
"add": "追加", "blue": "",
"bookmark": "ブックマーク", "custom": "カスタム",
"box": "ボックス", "default": "デフォルト",
"briefcase": "ブリーフケース", "green": "",
"cancel": "キャンセル", "pink": "ピンク",
"close": "閉じる", "red": "",
"color": "色", "yellow": "色"
"comingSoon": "近日公開", },
"confirm": "確認",
"copyToClipboard": "クリップボードにコピー",
"currentUser": "現在のユーザー",
"customize": "カスタマイズ",
"customizeFolder": "フォルダーをカスタマイズ",
"delete": "削除",
"deprecated": "非推奨",
"desktopMenu": { "desktopMenu": {
"confirmReinstall": "これにより、extra_models_config.yamlファイルがクリアされ、再インストールが開始されます。本当によろしいですか", "confirmReinstall": "これにより、extra_models_config.yamlファイルがクリアされ、再インストールが開始されます。本当によろしいですか",
"reinstall": "再インストール" "reinstall": "再インストール"
}, },
"devices": "デバイス",
"download": "ダウンロード",
"downloadGit": { "downloadGit": {
"gitWebsite": "Gitをダウンロード", "gitWebsite": "Gitをダウンロード",
"instructions": "お使いのオペレーティングシステムに最新バージョンをダウンロードしてインストールしてください。以下の「Gitをダウンロード」ボタンをクリックすると、git-scm.comのダウンロードページが開きます。", "instructions": "お使いのオペレーティングシステムに最新バージョンをダウンロードしてインストールしてください。以下の「Gitをダウンロード」ボタンをクリックすると、git-scm.comのダウンロードページが開きます。",
@@ -37,15 +28,68 @@
"paused": "一時停止", "paused": "一時停止",
"resume": "ダウンロードを再開" "resume": "ダウンロードを再開"
}, },
"empty": "表示する項目がありません", "g": {
"error": "エラー", "about": "情報",
"experimental": "ベータ", "add": "追加",
"extensionName": "拡張機能名", "cancel": "キャンセル",
"file": "ファイル", "close": "閉じる",
"findIssues": "問題を探す", "color": "",
"firstTimeUIMessage": "あなたはこの新しいUIを初めて使用します。もし以前のUIに戻したい場合は、\"メニュー > 新しいメニューを使用 > Disabled\"を選択してください。", "comingSoon": "近日公開",
"folder": "フォルダー", "confirm": "確認",
"goToNode": "ノードへ移動", "copyToClipboard": "クリップボードにコピー",
"currentUser": "現在のユーザー",
"customize": "カスタマイズ",
"customizeFolder": "フォルダーをカスタマイズ",
"delete": "削除",
"deprecated": "非推奨",
"devices": "デバイス",
"download": "ダウンロード",
"empty": "空",
"error": "エラー",
"experimental": "ベータ",
"extensionName": "拡張機能名",
"findIssues": "問題を見つける",
"firstTimeUIMessage": "新しいUIを初めて使用しています。「メニュー > 新しいメニューを使用 > 無効」を選択して古いUIに戻してください。",
"goToNode": "ノードに移動",
"icon": "アイコン",
"imageFailedToLoad": "画像の読み込みに失敗しました",
"insert": "挿入",
"loadAllFolders": "すべてのフォルダーを読み込む",
"loadWorkflow": "ワークフローを読み込む",
"loading": "読み込み中",
"logs": "ログ",
"newFolder": "新しいフォルダー",
"no": "いいえ",
"noResultsFound": "結果が見つかりません",
"noTasksFound": "タスクが見つかりません",
"noTasksFoundMessage": "キューにタスクがありません。",
"noWorkflowsFound": "ワークフローが見つかりません。",
"openNewIssue": "新しい問題を開く",
"overwrite": "上書き",
"reconnected": "再接続されました",
"reconnecting": "再接続中",
"refresh": "更新",
"reloadToApplyChanges": "変更を適用するには再読み込みしてください",
"rename": "名前を変更",
"reportIssue": "報告する",
"reportIssueTooltip": "エラーレポートをComfy Orgに送信",
"reportSent": "レポートが送信されました",
"reset": "リセット",
"resetKeybindingsTooltip": "キーバインディングをデフォルトにリセット",
"save": "保存",
"searchExtensions": "拡張機能を検索",
"searchFailedMessage": "検索に一致する設定が見つかりませんでした。検索用語を調整してみてください。",
"searchKeybindings": "キーバインディングを検索",
"searchModels": "モデルを検索",
"searchNodes": "ノードを検索",
"searchSettings": "設定を検索",
"searchWorkflows": "ワークフローを検索",
"settings": "設定",
"showReport": "レポートを表示",
"systemInfo": "システム情報",
"terminal": "ターミナル",
"videoFailedToLoad": "ビデオの読み込みに失敗しました"
},
"graphCanvasMenu": { "graphCanvasMenu": {
"fitView": "ビューに合わせる", "fitView": "ビューに合わせる",
"panMode": "パンモード", "panMode": "パンモード",
@@ -55,11 +99,16 @@
"zoomIn": "拡大", "zoomIn": "拡大",
"zoomOut": "縮小" "zoomOut": "縮小"
}, },
"heart": "ハート", "icon": {
"icon": "アイコン", "bookmark": "ブックマーク",
"imageFailedToLoad": "画像の読み込みに失敗しました", "box": "ボックス",
"inbox": "受信箱", "briefcase": "ブリーフケース",
"insert": "挿入", "file": "ファイル",
"folder": "フォルダー",
"heart": "ハート",
"inbox": "受信トレイ",
"star": "星"
},
"install": { "install": {
"appDataLocationTooltip": "ComfyUIのアプリデータディレクトリ。保存内容:\n- ログ\n- サーバー設定", "appDataLocationTooltip": "ComfyUIのアプリデータディレクトリ。保存内容:\n- ログ\n- サーバー設定",
"appPathLocationTooltip": "ComfyUIのアプリ資産ディレクトリ。ComfyUIのコードとアセットを保存します", "appPathLocationTooltip": "ComfyUIのアプリ資産ディレクトリ。ComfyUIのコードとアセットを保存します",
@@ -100,10 +149,6 @@
}, },
"systemLocations": "システムの場所" "systemLocations": "システムの場所"
}, },
"loadAllFolders": "すべてのフォルダーを読み込む",
"loadWorkflow": "ワークフローを読み込む",
"loading": "読み込み中",
"logs": "ログ",
"menu": { "menu": {
"autoQueue": "自動キュー", "autoQueue": "自動キュー",
"batchCount": "バッチ数", "batchCount": "バッチ数",
@@ -191,12 +236,6 @@
"Zoom In": "ズームイン", "Zoom In": "ズームイン",
"Zoom Out": "ズームアウト" "Zoom Out": "ズームアウト"
}, },
"newFolder": "新しいフォルダー",
"no": "いいえ",
"noResultsFound": "結果が見つかりませんでした",
"noTasksFound": "タスクが見つかりませんでした",
"noTasksFoundMessage": "キューにタスクがありません。",
"noWorkflowsFound": "ワークフローが見つかりませんでした。",
"nodeCategories": { "nodeCategories": {
"3d_models": "3Dモデル", "3d_models": "3Dモデル",
"DevTools": "デブツール", "DevTools": "デブツール",
@@ -1060,26 +1099,6 @@
}, },
"title": "お使いのデバイスはサポートされていません" "title": "お使いのデバイスはサポートされていません"
}, },
"openNewIssue": "新しいIssueを開く",
"overwrite": "上書き",
"reconnected": "再接続しました",
"reconnecting": "再接続中",
"refresh": "更新",
"reloadToApplyChanges": "変更を適用するには再読み込みしてください",
"rename": "名前を変更",
"reportIssue": "レポートを送信",
"reportIssueTooltip": "エラーレポートをComfy Orgに送信",
"reportSent": "レポートを送信しました",
"reset": "リセット",
"resetKeybindingsTooltip": "キーバインドをデフォルトに戻す",
"save": "保存",
"searchExtensions": "拡張機能を検索",
"searchFailedMessage": "検索条件に一致する設定が見つかりませんでした。条件を変更して再試行してください。",
"searchKeybindings": "キーバインドを検索",
"searchModels": "モデルを検索",
"searchNodes": "ノードを検索",
"searchSettings": "設定を検索",
"searchWorkflows": "ワークフローを検索",
"serverConfig": { "serverConfig": {
"modifiedConfigs": "以下のサーバー設定を変更しました。変更を適用するには再起動してください。", "modifiedConfigs": "以下のサーバー設定を変更しました。変更を適用するには再起動してください。",
"restart": "再起動", "restart": "再起動",
@@ -1213,7 +1232,6 @@
"reinstall": "再インストール", "reinstall": "再インストール",
"reportIssue": "問題を報告" "reportIssue": "問題を報告"
}, },
"settings": "設定",
"settingsCategories": { "settingsCategories": {
"About": "情報", "About": "情報",
"Appearance": "外観", "Appearance": "外観",
@@ -1539,7 +1557,6 @@
"name": "常にグリッドにスナップ" "name": "常にグリッドにスナップ"
} }
}, },
"showReport": "レポートを表示",
"sideToolbar": { "sideToolbar": {
"browseTemplates": "サンプルテンプレートを表示", "browseTemplates": "サンプルテンプレートを表示",
"downloads": "ダウンロード", "downloads": "ダウンロード",
@@ -1583,8 +1600,6 @@
}, },
"workflows": "ワークフロー" "workflows": "ワークフロー"
}, },
"star": "スター",
"systemInfo": "システム情報",
"tabMenu": { "tabMenu": {
"closeOtherTabs": "他のタブを閉じる", "closeOtherTabs": "他のタブを閉じる",
"closeTab": "タブを閉じる", "closeTab": "タブを閉じる",
@@ -1601,7 +1616,6 @@
}, },
"title": "テンプレートを利用して開始" "title": "テンプレートを利用して開始"
}, },
"terminal": "ターミナル",
"userSelect": { "userSelect": {
"enterUsername": "ユーザー名を入力してください", "enterUsername": "ユーザー名を入力してください",
"existingUser": "既存のユーザー", "existingUser": "既存のユーザー",
@@ -1609,7 +1623,6 @@
"next": "次へ", "next": "次へ",
"selectUser": "ユーザーを選択" "selectUser": "ユーザーを選択"
}, },
"videoFailedToLoad": "ビデオの読み込みに失敗しました",
"welcome": { "welcome": {
"getStarted": "はじめる", "getStarted": "はじめる",
"title": "ComfyUIへようこそ" "title": "ComfyUIへようこそ"

View File

@@ -1,26 +1,17 @@
{ {
"about": "О", "color": {
"add": "Добавить", "blue": "Синий",
"bookmark": "Закладка", "custom": "Пользовательский",
"box": "Ящик", "default": "По умолчанию",
"briefcase": "Чемодан", "green": "Зеленый",
"cancel": "Отмена", "pink": "Розовый",
"close": "Закрыть", "red": "Красный",
"color": "Цвет", "yellow": "Желтый"
"comingSoon": "Скоро", },
"confirm": "Подтвердить",
"copyToClipboard": "Копировать в буфер обмена",
"currentUser": "Текущий пользователь",
"customize": "Настроить",
"customizeFolder": "Настроить папку",
"delete": "Удалить",
"deprecated": "УСТАР",
"desktopMenu": { "desktopMenu": {
"confirmReinstall": "Это очистит ваш файл extra_models_config.yaml и начнет установку заново. Вы уверены?", "confirmReinstall": "Это очистит ваш файл extra_models_config.yaml и начнет установку заново. Вы уверены?",
"reinstall": "Переустановить" "reinstall": "Переустановить"
}, },
"devices": "Устройства",
"download": "Скачать",
"downloadGit": { "downloadGit": {
"gitWebsite": "Скачать git", "gitWebsite": "Скачать git",
"instructions": "Пожалуйста, скачайте и установите последнюю версию для вашей операционной системы. Кнопка 'Скачать git' ниже открывает страницу загрузок git-scm.com.", "instructions": "Пожалуйста, скачайте и установите последнюю версию для вашей операционной системы. Кнопка 'Скачать git' ниже открывает страницу загрузок git-scm.com.",
@@ -37,15 +28,68 @@
"paused": "Приостановлено", "paused": "Приостановлено",
"resume": "Возобновить загрузку" "resume": "Возобновить загрузку"
}, },
"empty": "Пусто", "g": {
"error": "Ошибка", "about": "О программе",
"experimental": "БЕТА", "add": "Добавить",
"extensionName": "Название расширения", "cancel": "Отмена",
"file": "Файл", "close": "Закрыть",
"findIssues": "Найти Issue", "color": "Цвет",
"firstTimeUIMessage": "Это первый раз, когда вы используете новый интерфейс. Выберите \"Меню > Использовать новое меню > Disabled\", чтобы восстановить старый интерфейс.", "comingSoon": "Скоро будет",
"folder": апка", "confirm": одтвердить",
"goToNode": "Перейти к узлу", "copyToClipboard": "Скопировать в буфер обмена",
"currentUser": "Текущий пользователь",
"customize": "Настроить",
"customizeFolder": "Настроить папку",
"delete": "Удалить",
"deprecated": "УСТАРЕЛО",
"devices": "Устройства",
"download": "Скачать",
"empty": "Пусто",
"error": "Ошибка",
"experimental": "БЕТА",
"extensionName": "Имя расширения",
"findIssues": "Найти проблемы",
"firstTimeUIMessage": "Вы впервые используете новый интерфейс. Выберите \"Меню > Использовать новое меню > Отключено\", чтобы восстановить старый интерфейс.",
"goToNode": "Перейти к узлу",
"icon": "Иконка",
"imageFailedToLoad": "Не удалось загрузить изображение",
"insert": "Вставить",
"loadAllFolders": "Загрузить все папки",
"loadWorkflow": "Загрузить рабочий процесс",
"loading": "Загрузка",
"logs": "Журналы",
"newFolder": "Новая папка",
"no": "Нет",
"noResultsFound": "Результатов не найдено",
"noTasksFound": "Задачи не найдены",
"noTasksFoundMessage": "В очереди нет задач.",
"noWorkflowsFound": "Рабочие процессы не найдены.",
"openNewIssue": "Открыть новую проблему",
"overwrite": "Перезаписать",
"reconnected": "Переподключено",
"reconnecting": "Переподключение",
"refresh": "Обновить",
"reloadToApplyChanges": "Перезагрузите, чтобы применить изменения",
"rename": "Переименовать",
"reportIssue": "Отправить отчет",
"reportIssueTooltip": "Отправить отчет об ошибке в Comfy Org",
"reportSent": "Отчет отправлен",
"reset": "Сбросить",
"resetKeybindingsTooltip": "Сбросить сочетания клавиш к умолчанию",
"save": "Сохранить",
"searchExtensions": "Поиск расширений",
"searchFailedMessage": "Мы не смогли найти настройки, соответствующие вашему запросу. Попробуйте изменить поисковые термины.",
"searchKeybindings": "Поиск сочетаний клавиш",
"searchModels": "Поиск моделей",
"searchNodes": "Поиск узлов",
"searchSettings": "Поиск настроек",
"searchWorkflows": "Поиск рабочих процессов",
"settings": "Настройки",
"showReport": "Показать отчет",
"systemInfo": "Информация о системе",
"terminal": "Терминал",
"videoFailedToLoad": "Не удалось загрузить видео"
},
"graphCanvasMenu": { "graphCanvasMenu": {
"fitView": "Подгонять под выделенные", "fitView": "Подгонять под выделенные",
"panMode": "Режим панорамирования", "panMode": "Режим панорамирования",
@@ -55,11 +99,16 @@
"zoomIn": "Увеличить", "zoomIn": "Увеличить",
"zoomOut": "Уменьшить" "zoomOut": "Уменьшить"
}, },
"heart": "Сердце", "icon": {
"icon": "Иконка", "bookmark": "Закладка",
"imageFailedToLoad": "Изображение не удалось загрузить", "box": "Коробка",
"inbox": "Входящие", "briefcase": "Портфель",
"insert": "Вставить", "file": "Файл",
"folder": "Папка",
"heart": "Сердце",
"inbox": "Входящие",
"star": "Звезда"
},
"install": { "install": {
"appDataLocationTooltip": "Директория данных приложения ComfyUI. Хранит:\n- Логи\n- Конфигурации сервера", "appDataLocationTooltip": "Директория данных приложения ComfyUI. Хранит:\n- Логи\n- Конфигурации сервера",
"appPathLocationTooltip": "Директория активов приложения ComfyUI. Хранит код и активы ComfyUI", "appPathLocationTooltip": "Директория активов приложения ComfyUI. Хранит код и активы ComfyUI",
@@ -100,10 +149,6 @@
}, },
"systemLocations": "Системные места" "systemLocations": "Системные места"
}, },
"loadAllFolders": "Загрузить все папки",
"loadWorkflow": "Загрузить рабочий процесс",
"loading": "Загрузка",
"logs": "Логи",
"menu": { "menu": {
"autoQueue": "Автоочередь", "autoQueue": "Автоочередь",
"batchCount": "Количество пакетов", "batchCount": "Количество пакетов",
@@ -191,12 +236,6 @@
"Zoom In": "Увеличить", "Zoom In": "Увеличить",
"Zoom Out": "Уменьшить" "Zoom Out": "Уменьшить"
}, },
"newFolder": "Новая папка",
"no": "Нет",
"noResultsFound": "Ничего не найдено",
"noTasksFound": "Задачи не найдены",
"noTasksFoundMessage": "В очереди нет задач.",
"noWorkflowsFound": "Рабочие процессы не найдены.",
"nodeCategories": { "nodeCategories": {
"3d_models": "3d_модели", "3d_models": "3d_модели",
"DevTools": "Инструменты_разработчика", "DevTools": "Инструменты_разработчика",
@@ -1060,26 +1099,6 @@
}, },
"title": "Ваше устройство не поддерживается" "title": "Ваше устройство не поддерживается"
}, },
"openNewIssue": "Открыть новый Issue",
"overwrite": "Перезаписать",
"reconnected": "Переподключено",
"reconnecting": "Переподключение",
"refresh": "Обновить",
"reloadToApplyChanges": "Перезагрузите, чтобы применить изменения",
"rename": "Переименовать",
"reportIssue": "Отправить отчет",
"reportIssueTooltip": "Отправить отчет об ошибке в Comfy Org",
"reportSent": "Отчет отправлен",
"reset": "Сбросить",
"resetKeybindingsTooltip": "Сбросить сочетания клавиш по умолчанию",
"save": "Сохранить",
"searchExtensions": "Поиск расширений",
"searchFailedMessage": "Не удалось найти ни одной настройки, соответствующей вашему запросу. Попробуйте скорректировать поисковый запрос.",
"searchKeybindings": "Поиск сочетаний клавиш",
"searchModels": "Поиск моделей",
"searchNodes": "Поиск узлов",
"searchSettings": "Поиск настроек",
"searchWorkflows": "Поиск рабочих процессов",
"serverConfig": { "serverConfig": {
"modifiedConfigs": "Вы изменили следующие конфигурации сервера. Перезапустите, чтобы применить изменения.", "modifiedConfigs": "Вы изменили следующие конфигурации сервера. Перезапустите, чтобы применить изменения.",
"restart": "Перезапустить", "restart": "Перезапустить",
@@ -1213,7 +1232,6 @@
"reinstall": "Переустановить", "reinstall": "Переустановить",
"reportIssue": "Сообщить о проблеме" "reportIssue": "Сообщить о проблеме"
}, },
"settings": "Настройки",
"settingsCategories": { "settingsCategories": {
"About": "О программе", "About": "О программе",
"Appearance": "Внешний вид", "Appearance": "Внешний вид",
@@ -1539,7 +1557,6 @@
"name": "Всегда привязываться к сетке" "name": "Всегда привязываться к сетке"
} }
}, },
"showReport": "Показать отчёт",
"sideToolbar": { "sideToolbar": {
"browseTemplates": "Просмотреть примеры шаблонов", "browseTemplates": "Просмотреть примеры шаблонов",
"downloads": "Загрузки", "downloads": "Загрузки",
@@ -1583,8 +1600,6 @@
}, },
"workflows": "Рабочие процессы" "workflows": "Рабочие процессы"
}, },
"star": "Звёздочка",
"systemInfo": "Информация о системе",
"tabMenu": { "tabMenu": {
"closeOtherTabs": "Закрыть другие вкладки", "closeOtherTabs": "Закрыть другие вкладки",
"closeTab": "Закрыть вкладку", "closeTab": "Закрыть вкладку",
@@ -1601,7 +1616,6 @@
}, },
"title": "Начните работу с шаблона" "title": "Начните работу с шаблона"
}, },
"terminal": "Терминал",
"userSelect": { "userSelect": {
"enterUsername": "Введите имя пользователя", "enterUsername": "Введите имя пользователя",
"existingUser": "Существующий пользователь", "existingUser": "Существующий пользователь",
@@ -1609,7 +1623,6 @@
"next": "Далее", "next": "Далее",
"selectUser": "Выберите пользователя" "selectUser": "Выберите пользователя"
}, },
"videoFailedToLoad": "Видео не удалось загрузить",
"welcome": { "welcome": {
"getStarted": "Начать", "getStarted": "Начать",
"title": "Добро пожаловать в ComfyUI" "title": "Добро пожаловать в ComfyUI"

View File

@@ -1,26 +1,17 @@
{ {
"about": "关于", "color": {
"add": "添加", "blue": "蓝色",
"bookmark": "书签", "custom": "自定义",
"box": "盒子", "default": "默认",
"briefcase": "公文包", "green": "绿色",
"cancel": "取消", "pink": "粉色",
"close": "关闭", "red": "红色",
"color": "色", "yellow": "色"
"comingSoon": "敬请期待", },
"confirm": "确认",
"copyToClipboard": "复制到剪贴板",
"currentUser": "当前用户",
"customize": "定制",
"customizeFolder": "定制文件夹",
"delete": "删除",
"deprecated": "弃用",
"desktopMenu": { "desktopMenu": {
"confirmReinstall": "这将清除您的 extra_models_config.yaml 文件,并重新开始安装。您确定吗?", "confirmReinstall": "这将清除您的 extra_models_config.yaml 文件,并重新开始安装。您确定吗?",
"reinstall": "重新安装" "reinstall": "重新安装"
}, },
"devices": "设备",
"download": "下载",
"downloadGit": { "downloadGit": {
"gitWebsite": "下载 git", "gitWebsite": "下载 git",
"instructions": "请下载并安装适合您操作系统的最新版本。下面的下载 git 按钮将打开 git-scm.com 下载页面。", "instructions": "请下载并安装适合您操作系统的最新版本。下面的下载 git 按钮将打开 git-scm.com 下载页面。",
@@ -37,15 +28,68 @@
"paused": "已暂停", "paused": "已暂停",
"resume": "恢复下载" "resume": "恢复下载"
}, },
"empty": "空", "g": {
"error": "错误", "about": "关于",
"experimental": "BETA", "add": "添加",
"extensionName": "扩展名称", "cancel": "取消",
"file": "文件", "close": "关闭",
"findIssues": "查找 Issue", "color": "颜色",
"firstTimeUIMessage": "这是您第一次使用新界面。选择“菜单 > 使用新菜单 > Disabled”以恢复旧界面。", "comingSoon": "即将推出",
"folder": "文件夹", "confirm": "确认",
"goToNode": "前往节点", "copyToClipboard": "复制到剪贴板",
"currentUser": "当前用户",
"customize": "自定义",
"customizeFolder": "自定义文件夹",
"delete": "删除",
"deprecated": "已弃用",
"devices": "设备",
"download": "下载",
"empty": "空",
"error": "错误",
"experimental": "测试版",
"extensionName": "扩展名称",
"findIssues": "查找问题",
"firstTimeUIMessage": "这是您第一次使用新界面。选择 \"菜单 > 使用新菜单 > 禁用\" 来恢复旧界面。",
"goToNode": "转到节点",
"icon": "图标",
"imageFailedToLoad": "图像加载失败",
"insert": "插入",
"loadAllFolders": "加载所有文件夹",
"loadWorkflow": "加载工作流",
"loading": "加载中",
"logs": "日志",
"newFolder": "新文件夹",
"no": "否",
"noResultsFound": "未找到结果",
"noTasksFound": "未找到任务",
"noTasksFoundMessage": "队列中没有任务。",
"noWorkflowsFound": "未找到工作流。",
"openNewIssue": "打开新问题",
"overwrite": "覆盖",
"reconnected": "已重新连接",
"reconnecting": "重新连接中",
"refresh": "刷新",
"reloadToApplyChanges": "重新加载以应用更改",
"rename": "重命名",
"reportIssue": "发送报告",
"reportIssueTooltip": "向 Comfy Org 提交错误报告",
"reportSent": "报告已提交",
"reset": "重置",
"resetKeybindingsTooltip": "将快捷键重置为默认",
"save": "保存",
"searchExtensions": "搜索扩展",
"searchFailedMessage": "我们找不到任何与您的搜索匹配的设置。请尝试调整您的搜索词。",
"searchKeybindings": "搜索快捷键",
"searchModels": "搜索模型",
"searchNodes": "搜索节点",
"searchSettings": "搜索设置",
"searchWorkflows": "搜索工作流",
"settings": "设置",
"showReport": "显示报告",
"systemInfo": "系统信息",
"terminal": "终端",
"videoFailedToLoad": "视频加载失败"
},
"graphCanvasMenu": { "graphCanvasMenu": {
"fitView": "适应视图", "fitView": "适应视图",
"panMode": "平移模式", "panMode": "平移模式",
@@ -55,11 +99,16 @@
"zoomIn": "放大", "zoomIn": "放大",
"zoomOut": "缩小" "zoomOut": "缩小"
}, },
"heart": "心", "icon": {
"icon": "图标", "bookmark": "书签",
"imageFailedToLoad": "图像加载失败", "box": "盒子",
"inbox": "收件箱", "briefcase": "公文包",
"insert": "插入", "file": "文件",
"folder": "文件夹",
"heart": "心",
"inbox": "收件箱",
"star": "星星"
},
"install": { "install": {
"appDataLocationTooltip": "ComfyUI 的应用数据目录。存储:\n- 日志\n- 服务器配置", "appDataLocationTooltip": "ComfyUI 的应用数据目录。存储:\n- 日志\n- 服务器配置",
"appPathLocationTooltip": "ComfyUI 的应用资产目录。存储 ComfyUI 代码和资产", "appPathLocationTooltip": "ComfyUI 的应用资产目录。存储 ComfyUI 代码和资产",
@@ -100,10 +149,6 @@
}, },
"systemLocations": "系统位置" "systemLocations": "系统位置"
}, },
"loadAllFolders": "加载所有文件夹",
"loadWorkflow": "加载工作流",
"loading": "加载中",
"logs": "日志",
"menu": { "menu": {
"autoQueue": "自动执行", "autoQueue": "自动执行",
"batchCount": "批次数量", "batchCount": "批次数量",
@@ -191,12 +236,6 @@
"Zoom In": "放大", "Zoom In": "放大",
"Zoom Out": "缩小" "Zoom Out": "缩小"
}, },
"newFolder": "新建文件夹",
"no": "不",
"noResultsFound": "未找到结果",
"noTasksFound": "未找到任务",
"noTasksFoundMessage": "队列中没有任务。",
"noWorkflowsFound": "未找到工作流",
"nodeCategories": { "nodeCategories": {
"3d_models": "3D模型", "3d_models": "3D模型",
"DevTools": "开发工具", "DevTools": "开发工具",
@@ -1060,26 +1099,6 @@
}, },
"title": "您的设备不受支持" "title": "您的设备不受支持"
}, },
"openNewIssue": "开启新 Issue",
"overwrite": "覆盖",
"reconnected": "已重新连接",
"reconnecting": "重新连接中",
"refresh": "刷新",
"reloadToApplyChanges": "重新加载以应用更改",
"rename": "重命名",
"reportIssue": "发送报告",
"reportIssueTooltip": "将错误报告提交给 Comfy 组织",
"reportSent": "报告已提交",
"reset": "重置",
"resetKeybindingsTooltip": "重置键位",
"save": "保存",
"searchExtensions": "搜索插件",
"searchFailedMessage": "我们找不到与您的搜索匹配的任何设置。请尝试调整搜索条件。",
"searchKeybindings": "搜索键位",
"searchModels": "搜索模型",
"searchNodes": "搜索节点",
"searchSettings": "搜索设置",
"searchWorkflows": "搜索工作流",
"serverConfig": { "serverConfig": {
"modifiedConfigs": "您已修改以下服务器配置。重启以应用更改。", "modifiedConfigs": "您已修改以下服务器配置。重启以应用更改。",
"restart": "重启", "restart": "重启",
@@ -1213,7 +1232,6 @@
"reinstall": "重新安装", "reinstall": "重新安装",
"reportIssue": "报告问题" "reportIssue": "报告问题"
}, },
"settings": "设置",
"settingsCategories": { "settingsCategories": {
"About": "关于", "About": "关于",
"Appearance": "外观", "Appearance": "外观",
@@ -1539,7 +1557,6 @@
"name": "始终吸附到网格" "name": "始终吸附到网格"
} }
}, },
"showReport": "显示报告",
"sideToolbar": { "sideToolbar": {
"browseTemplates": "浏览示例模板", "browseTemplates": "浏览示例模板",
"downloads": "下载", "downloads": "下载",
@@ -1583,8 +1600,6 @@
}, },
"workflows": "工作流" "workflows": "工作流"
}, },
"star": "星星",
"systemInfo": "系统信息",
"tabMenu": { "tabMenu": {
"closeOtherTabs": "关闭其他标签", "closeOtherTabs": "关闭其他标签",
"closeTab": "关闭标签", "closeTab": "关闭标签",
@@ -1601,7 +1616,6 @@
}, },
"title": "从模板开始" "title": "从模板开始"
}, },
"terminal": "终端",
"userSelect": { "userSelect": {
"enterUsername": "输入用户名", "enterUsername": "输入用户名",
"existingUser": "已有用户", "existingUser": "已有用户",
@@ -1609,7 +1623,6 @@
"next": "下一步", "next": "下一步",
"selectUser": "选择用户" "selectUser": "选择用户"
}, },
"videoFailedToLoad": "视频加载失败",
"welcome": { "welcome": {
"getStarted": "开始使用", "getStarted": "开始使用",
"title": "欢迎使用 ComfyUI" "title": "欢迎使用 ComfyUI"

View File

@@ -123,7 +123,7 @@ const onStatus = (e: CustomEvent<StatusWsMessageStatus>) => {
const reconnectingMessage: ToastMessageOptions = { const reconnectingMessage: ToastMessageOptions = {
severity: 'error', severity: 'error',
summary: t('reconnecting') summary: t('g.reconnecting')
} }
const onReconnecting = () => { const onReconnecting = () => {
@@ -135,7 +135,7 @@ const onReconnected = () => {
toast.remove(reconnectingMessage) toast.remove(reconnectingMessage)
toast.add({ toast.add({
severity: 'success', severity: 'success',
summary: t('reconnected'), summary: t('g.reconnected'),
life: 2000 life: 2000
}) })
} }