mirror of
https://github.com/Comfy-Org/ComfyUI_frontend.git
synced 2026-04-05 20:10:07 +00:00
Compare commits
1 Commits
fix/codera
...
fix/codera
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
6db4c9bd47 |
2
global.d.ts
vendored
2
global.d.ts
vendored
@@ -35,7 +35,7 @@ interface Window {
|
||||
mixpanel_token?: string
|
||||
posthog_project_token?: string
|
||||
posthog_api_host?: string
|
||||
posthog_config?: Record<string, unknown>
|
||||
posthog_debug?: boolean
|
||||
require_whitelist?: boolean
|
||||
subscription_required?: boolean
|
||||
max_upload_size?: number
|
||||
|
||||
@@ -55,10 +55,7 @@ const config: KnipConfig = {
|
||||
// Agent review check config, not part of the build
|
||||
'.agents/checks/eslint.strict.config.js',
|
||||
// Loaded via @plugin directive in CSS, not detected by knip
|
||||
'packages/design-system/src/css/lucideStrokePlugin.js',
|
||||
// Pending integration in stacked PR (feat/storybook-color-picker)
|
||||
'src/components/ui/color-picker/ColorPickerSaturationValue.vue',
|
||||
'src/components/ui/color-picker/ColorPickerSlider.vue'
|
||||
'packages/design-system/src/css/lucideStrokePlugin.js'
|
||||
],
|
||||
compilers: {
|
||||
// https://github.com/webpro-nl/knip/issues/1008#issuecomment-3207756199
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@comfyorg/comfyui-frontend",
|
||||
"version": "1.42.3",
|
||||
"version": "1.42.2",
|
||||
"private": true,
|
||||
"description": "Official front-end implementation of ComfyUI",
|
||||
"homepage": "https://comfy.org",
|
||||
|
||||
@@ -48,24 +48,13 @@
|
||||
</div>
|
||||
</div>
|
||||
<HelpCenterPopups :is-small="isSmall" />
|
||||
<Suspense v-if="NightlySurveyController">
|
||||
<component :is="NightlySurveyController" />
|
||||
</Suspense>
|
||||
</nav>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { useResizeObserver } from '@vueuse/core'
|
||||
import { debounce } from 'es-toolkit/compat'
|
||||
import {
|
||||
computed,
|
||||
defineAsyncComponent,
|
||||
nextTick,
|
||||
onBeforeUnmount,
|
||||
onMounted,
|
||||
ref,
|
||||
watch
|
||||
} from 'vue'
|
||||
import { computed, nextTick, onBeforeUnmount, onMounted, ref, watch } from 'vue'
|
||||
import { useI18n } from 'vue-i18n'
|
||||
|
||||
import HelpCenterPopups from '@/components/helpcenter/HelpCenterPopups.vue'
|
||||
@@ -73,7 +62,7 @@ import ComfyMenuButton from '@/components/sidebar/ComfyMenuButton.vue'
|
||||
import SidebarBottomPanelToggleButton from '@/components/sidebar/SidebarBottomPanelToggleButton.vue'
|
||||
import SidebarSettingsButton from '@/components/sidebar/SidebarSettingsButton.vue'
|
||||
import SidebarShortcutsToggleButton from '@/components/sidebar/SidebarShortcutsToggleButton.vue'
|
||||
import { isCloud, isDesktop, isNightly } from '@/platform/distribution/types'
|
||||
import { isCloud } from '@/platform/distribution/types'
|
||||
import { useSettingStore } from '@/platform/settings/settingStore'
|
||||
import { useTelemetry } from '@/platform/telemetry'
|
||||
import { useCanvasStore } from '@/renderer/core/canvas/canvasStore'
|
||||
@@ -89,13 +78,6 @@ import SidebarIcon from './SidebarIcon.vue'
|
||||
import SidebarLogoutIcon from './SidebarLogoutIcon.vue'
|
||||
import SidebarTemplatesButton from './SidebarTemplatesButton.vue'
|
||||
|
||||
const NightlySurveyController =
|
||||
isNightly && !isCloud && !isDesktop
|
||||
? defineAsyncComponent(
|
||||
() => import('@/platform/surveys/NightlySurveyController.vue')
|
||||
)
|
||||
: undefined
|
||||
|
||||
const { t } = useI18n()
|
||||
const workspaceStore = useWorkspaceStore()
|
||||
const settingStore = useSettingStore()
|
||||
|
||||
@@ -90,7 +90,6 @@ import AssetsListItem from '@/platform/assets/components/AssetsListItem.vue'
|
||||
import type { OutputStackListItem } from '@/platform/assets/composables/useOutputStacks'
|
||||
import { getOutputAssetMetadata } from '@/platform/assets/schemas/assetMetadataSchema'
|
||||
import type { AssetItem } from '@/platform/assets/schemas/assetSchema'
|
||||
import { getAssetDisplayName } from '@/platform/assets/utils/assetMetadataUtils'
|
||||
import { iconForMediaType } from '@/platform/assets/utils/mediaIconUtil'
|
||||
import { useAssetsStore } from '@/stores/assetsStore'
|
||||
import {
|
||||
@@ -136,6 +135,10 @@ const listGridStyle = {
|
||||
gap: '0.5rem'
|
||||
}
|
||||
|
||||
function getAssetDisplayName(asset: AssetItem): string {
|
||||
return asset.display_name || asset.name
|
||||
}
|
||||
|
||||
function getAssetPrimaryText(asset: AssetItem): string {
|
||||
return truncateFilename(getAssetDisplayName(asset))
|
||||
}
|
||||
|
||||
@@ -236,7 +236,6 @@ import { useOutputStacks } from '@/platform/assets/composables/useOutputStacks'
|
||||
import type { OutputAssetMetadata } from '@/platform/assets/schemas/assetMetadataSchema'
|
||||
import { getOutputAssetMetadata } from '@/platform/assets/schemas/assetMetadataSchema'
|
||||
import type { AssetItem } from '@/platform/assets/schemas/assetSchema'
|
||||
import { getAssetDisplayName } from '@/platform/assets/utils/assetMetadataUtils'
|
||||
import type { MediaKind } from '@/platform/assets/schemas/mediaAssetSchema'
|
||||
import { resolveOutputAssetItems } from '@/platform/assets/utils/outputAssetUtil'
|
||||
import { isCloud } from '@/platform/distribution/types'
|
||||
@@ -570,7 +569,7 @@ const handleZoomClick = (asset: AssetItem) => {
|
||||
const dialogStore = useDialogStore()
|
||||
dialogStore.showDialog({
|
||||
key: 'asset-3d-viewer',
|
||||
title: getAssetDisplayName(asset),
|
||||
title: asset.display_name || asset.name,
|
||||
component: Load3dViewerContent,
|
||||
props: {
|
||||
modelUrl: asset.preview_url || ''
|
||||
|
||||
179
src/components/ui/chart/useChart.ts
Normal file
179
src/components/ui/chart/useChart.ts
Normal file
@@ -0,0 +1,179 @@
|
||||
import type { ChartData, ChartOptions, ChartType } from 'chart.js'
|
||||
import {
|
||||
BarController,
|
||||
BarElement,
|
||||
CategoryScale,
|
||||
Chart,
|
||||
Filler,
|
||||
Legend,
|
||||
LinearScale,
|
||||
LineController,
|
||||
LineElement,
|
||||
PointElement,
|
||||
Tooltip
|
||||
} from 'chart.js'
|
||||
import { merge } from 'es-toolkit'
|
||||
import { onBeforeUnmount, onMounted, ref, watch } from 'vue'
|
||||
|
||||
import type { Ref } from 'vue'
|
||||
|
||||
Chart.register(
|
||||
BarController,
|
||||
BarElement,
|
||||
CategoryScale,
|
||||
Filler,
|
||||
Legend,
|
||||
LinearScale,
|
||||
LineController,
|
||||
LineElement,
|
||||
PointElement,
|
||||
Tooltip
|
||||
)
|
||||
|
||||
function getCssVar(name: string): string {
|
||||
return getComputedStyle(document.documentElement)
|
||||
.getPropertyValue(name)
|
||||
.trim()
|
||||
}
|
||||
|
||||
function getDefaultOptions(type: ChartType): ChartOptions {
|
||||
const foreground = getCssVar('--color-base-foreground') || '#ffffff'
|
||||
const muted = getCssVar('--color-muted-foreground') || '#8a8a8a'
|
||||
|
||||
return {
|
||||
responsive: true,
|
||||
maintainAspectRatio: false,
|
||||
plugins: {
|
||||
legend: {
|
||||
align: 'start',
|
||||
labels: {
|
||||
color: foreground,
|
||||
usePointStyle: true,
|
||||
pointStyle: 'circle',
|
||||
boxWidth: 8,
|
||||
boxHeight: 8,
|
||||
padding: 16,
|
||||
font: { family: 'Inter', size: 11 },
|
||||
generateLabels(chart) {
|
||||
const datasets = chart.data.datasets
|
||||
return datasets.map((dataset, i) => {
|
||||
const color =
|
||||
(dataset as { borderColor?: string }).borderColor ??
|
||||
(dataset as { backgroundColor?: string }).backgroundColor ??
|
||||
'#888'
|
||||
return {
|
||||
text: dataset.label ?? '',
|
||||
fillStyle: color as string,
|
||||
strokeStyle: color as string,
|
||||
lineWidth: 0,
|
||||
pointStyle: 'circle' as const,
|
||||
hidden: !chart.isDatasetVisible(i),
|
||||
datasetIndex: i
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
},
|
||||
tooltip: {
|
||||
enabled: true
|
||||
}
|
||||
},
|
||||
elements: {
|
||||
point: {
|
||||
radius: 0,
|
||||
hoverRadius: 4
|
||||
}
|
||||
},
|
||||
scales: {
|
||||
x: {
|
||||
ticks: {
|
||||
color: muted,
|
||||
font: { family: 'Inter', size: 11 },
|
||||
padding: 8
|
||||
},
|
||||
grid: {
|
||||
display: true,
|
||||
color: muted + '33',
|
||||
drawTicks: false
|
||||
},
|
||||
border: { display: true, color: muted }
|
||||
},
|
||||
y: {
|
||||
ticks: {
|
||||
color: muted,
|
||||
font: { family: 'Inter', size: 11 },
|
||||
padding: 4
|
||||
},
|
||||
grid: {
|
||||
display: false,
|
||||
drawTicks: false
|
||||
},
|
||||
border: { display: true, color: muted }
|
||||
}
|
||||
},
|
||||
...(type === 'bar' && {
|
||||
datasets: {
|
||||
bar: {
|
||||
borderRadius: { topLeft: 4, topRight: 4 },
|
||||
borderSkipped: false,
|
||||
barPercentage: 0.6,
|
||||
categoryPercentage: 0.8
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
export function useChart(
|
||||
canvasRef: Ref<HTMLCanvasElement | null>,
|
||||
type: Ref<ChartType>,
|
||||
data: Ref<ChartData>,
|
||||
options?: Ref<ChartOptions | undefined>
|
||||
) {
|
||||
const chartInstance = ref<Chart | null>(null)
|
||||
|
||||
function createChart() {
|
||||
if (!canvasRef.value) return
|
||||
|
||||
chartInstance.value?.destroy()
|
||||
|
||||
const defaults = getDefaultOptions(type.value)
|
||||
const merged = options?.value
|
||||
? merge(defaults, options.value)
|
||||
: defaults
|
||||
|
||||
chartInstance.value = new Chart(canvasRef.value, {
|
||||
type: type.value,
|
||||
data: data.value,
|
||||
options: merged
|
||||
})
|
||||
}
|
||||
|
||||
onMounted(createChart)
|
||||
|
||||
watch(
|
||||
[type, data, options ?? ref(undefined)],
|
||||
([nextType], [previousType]) => {
|
||||
if (!chartInstance.value) return
|
||||
|
||||
if (nextType !== previousType) {
|
||||
createChart()
|
||||
return
|
||||
}
|
||||
|
||||
chartInstance.value.data = data.value
|
||||
chartInstance.value.options = options?.value
|
||||
? merge(getDefaultOptions(type.value), options.value)
|
||||
: getDefaultOptions(type.value)
|
||||
chartInstance.value.update()
|
||||
},
|
||||
{ deep: true }
|
||||
)
|
||||
|
||||
onBeforeUnmount(() => {
|
||||
chartInstance.value?.destroy()
|
||||
chartInstance.value = null
|
||||
})
|
||||
|
||||
return { chartInstance }
|
||||
}
|
||||
@@ -1,99 +0,0 @@
|
||||
<script setup lang="ts">
|
||||
import { computed, ref } from 'vue'
|
||||
import { useI18n } from 'vue-i18n'
|
||||
|
||||
const { hue } = defineProps<{
|
||||
hue: number
|
||||
}>()
|
||||
|
||||
const saturation = defineModel<number>('saturation', { required: true })
|
||||
const value = defineModel<number>('value', { required: true })
|
||||
|
||||
const { t } = useI18n()
|
||||
|
||||
const containerRef = ref<HTMLElement | null>(null)
|
||||
|
||||
const hueBackground = computed(() => `hsl(${hue}, 100%, 50%)`)
|
||||
|
||||
const handleStyle = computed(() => ({
|
||||
left: `${saturation.value}%`,
|
||||
top: `${100 - value.value}%`
|
||||
}))
|
||||
|
||||
function clamp(v: number, min: number, max: number) {
|
||||
return Math.max(min, Math.min(max, v))
|
||||
}
|
||||
|
||||
function updateFromPointer(e: PointerEvent) {
|
||||
const el = containerRef.value
|
||||
if (!el) return
|
||||
const rect = el.getBoundingClientRect()
|
||||
const x = Math.max(0, Math.min(1, (e.clientX - rect.left) / rect.width))
|
||||
const y = Math.max(0, Math.min(1, (e.clientY - rect.top) / rect.height))
|
||||
saturation.value = Math.round(x * 100)
|
||||
value.value = Math.round((1 - y) * 100)
|
||||
}
|
||||
|
||||
function handlePointerDown(e: PointerEvent) {
|
||||
;(e.currentTarget as HTMLElement).setPointerCapture(e.pointerId)
|
||||
updateFromPointer(e)
|
||||
}
|
||||
|
||||
function handlePointerMove(e: PointerEvent) {
|
||||
if (!(e.currentTarget as HTMLElement).hasPointerCapture(e.pointerId)) return
|
||||
updateFromPointer(e)
|
||||
}
|
||||
|
||||
function handleKeydown(e: KeyboardEvent) {
|
||||
const step = e.shiftKey ? 10 : 1
|
||||
switch (e.key) {
|
||||
case 'ArrowLeft':
|
||||
e.preventDefault()
|
||||
saturation.value = clamp(saturation.value - step, 0, 100)
|
||||
break
|
||||
case 'ArrowRight':
|
||||
e.preventDefault()
|
||||
saturation.value = clamp(saturation.value + step, 0, 100)
|
||||
break
|
||||
case 'ArrowUp':
|
||||
e.preventDefault()
|
||||
value.value = clamp(value.value + step, 0, 100)
|
||||
break
|
||||
case 'ArrowDown':
|
||||
e.preventDefault()
|
||||
value.value = clamp(value.value - step, 0, 100)
|
||||
break
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<div
|
||||
ref="containerRef"
|
||||
role="slider"
|
||||
tabindex="0"
|
||||
:aria-label="t('colorPicker.saturationValue')"
|
||||
:aria-valuetext="
|
||||
t('colorPicker.saturationBrightnessValue', {
|
||||
saturation: saturation,
|
||||
value: value
|
||||
})
|
||||
"
|
||||
class="relative aspect-square w-full cursor-crosshair rounded-sm outline-none focus-visible:ring-2 focus-visible:ring-highlight"
|
||||
:style="{ backgroundColor: hueBackground, touchAction: 'none' }"
|
||||
@pointerdown="handlePointerDown"
|
||||
@pointermove="handlePointerMove"
|
||||
@keydown="handleKeydown"
|
||||
>
|
||||
<div
|
||||
class="absolute inset-0 rounded-sm bg-linear-to-r from-white to-transparent"
|
||||
/>
|
||||
<div
|
||||
class="absolute inset-0 rounded-sm bg-linear-to-b from-transparent to-black"
|
||||
/>
|
||||
<div
|
||||
class="pointer-events-none absolute size-3.5 -translate-1/2 rounded-full border-2 border-white shadow-[0_0_2px_rgba(0,0,0,0.6)]"
|
||||
:style="handleStyle"
|
||||
/>
|
||||
</div>
|
||||
</template>
|
||||
@@ -1,115 +0,0 @@
|
||||
<script setup lang="ts">
|
||||
import { computed } from 'vue'
|
||||
import { useI18n } from 'vue-i18n'
|
||||
|
||||
import { hsbToRgb, rgbToHex } from '@/utils/colorUtil'
|
||||
|
||||
const {
|
||||
type,
|
||||
hue = 0,
|
||||
saturation = 100,
|
||||
brightness = 100
|
||||
} = defineProps<{
|
||||
type: 'hue' | 'alpha'
|
||||
hue?: number
|
||||
saturation?: number
|
||||
brightness?: number
|
||||
}>()
|
||||
|
||||
const modelValue = defineModel<number>({ required: true })
|
||||
|
||||
const { t } = useI18n()
|
||||
|
||||
const max = computed(() => (type === 'hue' ? 360 : 100))
|
||||
|
||||
const fraction = computed(() => modelValue.value / max.value)
|
||||
|
||||
const trackBackground = computed(() => {
|
||||
if (type === 'hue') {
|
||||
return 'linear-gradient(to right, #f00 0%, #ff0 17%, #0f0 33%, #0ff 50%, #00f 67%, #f0f 83%, #f00 100%)'
|
||||
}
|
||||
const rgb = hsbToRgb({ h: hue, s: saturation, b: brightness })
|
||||
const hex = rgbToHex(rgb)
|
||||
return `linear-gradient(to right, transparent, ${hex})`
|
||||
})
|
||||
|
||||
const containerStyle = computed(() => {
|
||||
if (type === 'alpha') {
|
||||
return {
|
||||
backgroundImage:
|
||||
'repeating-conic-gradient(#808080 0% 25%, transparent 0% 50%)',
|
||||
backgroundSize: '8px 8px',
|
||||
touchAction: 'none'
|
||||
}
|
||||
}
|
||||
return {
|
||||
background: trackBackground.value,
|
||||
touchAction: 'none'
|
||||
}
|
||||
})
|
||||
|
||||
const ariaLabel = computed(() =>
|
||||
type === 'hue' ? t('colorPicker.hue') : t('colorPicker.alpha')
|
||||
)
|
||||
|
||||
function clamp(v: number, min: number, maxVal: number) {
|
||||
return Math.max(min, Math.min(maxVal, v))
|
||||
}
|
||||
|
||||
function updateFromPointer(e: PointerEvent) {
|
||||
const el = e.currentTarget as HTMLElement
|
||||
const rect = el.getBoundingClientRect()
|
||||
const x = Math.max(0, Math.min(1, (e.clientX - rect.left) / rect.width))
|
||||
modelValue.value = Math.round(x * max.value)
|
||||
}
|
||||
|
||||
function handlePointerDown(e: PointerEvent) {
|
||||
;(e.currentTarget as HTMLElement).setPointerCapture(e.pointerId)
|
||||
updateFromPointer(e)
|
||||
}
|
||||
|
||||
function handlePointerMove(e: PointerEvent) {
|
||||
if (!(e.currentTarget as HTMLElement).hasPointerCapture(e.pointerId)) return
|
||||
updateFromPointer(e)
|
||||
}
|
||||
|
||||
function handleKeydown(e: KeyboardEvent) {
|
||||
const step = e.shiftKey ? 10 : 1
|
||||
switch (e.key) {
|
||||
case 'ArrowLeft':
|
||||
e.preventDefault()
|
||||
modelValue.value = clamp(modelValue.value - step, 0, max.value)
|
||||
break
|
||||
case 'ArrowRight':
|
||||
e.preventDefault()
|
||||
modelValue.value = clamp(modelValue.value + step, 0, max.value)
|
||||
break
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<div
|
||||
role="slider"
|
||||
tabindex="0"
|
||||
:aria-label="ariaLabel"
|
||||
:aria-valuenow="modelValue"
|
||||
:aria-valuemin="0"
|
||||
:aria-valuemax="max"
|
||||
class="relative flex h-4 cursor-pointer items-center rounded-full p-px outline-none focus-visible:ring-2 focus-visible:ring-highlight"
|
||||
:style="containerStyle"
|
||||
@pointerdown="handlePointerDown"
|
||||
@pointermove="handlePointerMove"
|
||||
@keydown="handleKeydown"
|
||||
>
|
||||
<div
|
||||
v-if="type === 'alpha'"
|
||||
class="absolute inset-0 rounded-full"
|
||||
:style="{ background: trackBackground }"
|
||||
/>
|
||||
<div
|
||||
class="pointer-events-none absolute aspect-square h-full -translate-x-1/2 rounded-full border-2 border-white shadow-[0_0_2px_rgba(0,0,0,0.6)]"
|
||||
:style="{ left: `${fraction * 100}%` }"
|
||||
/>
|
||||
</div>
|
||||
</template>
|
||||
@@ -924,8 +924,7 @@ export function useBrushDrawing(initialSettings?: {
|
||||
}
|
||||
|
||||
// Calculate target spacing based on step size percentage
|
||||
const stepPercentage =
|
||||
Math.pow(100, store.brushSettings.stepSize / 100) / 100
|
||||
const stepPercentage = store.brushSettings.stepSize / 100
|
||||
const targetSpacing = Math.max(
|
||||
1.0,
|
||||
store.brushSettings.size * stepPercentage
|
||||
@@ -1484,8 +1483,7 @@ export function useBrushDrawing(initialSettings?: {
|
||||
const dist = Math.hypot(p2.x - p1.x, p2.y - p1.y)
|
||||
|
||||
// Calculate target spacing based on stepSize
|
||||
const stepPercentage =
|
||||
Math.pow(100, store.brushSettings.stepSize / 100) / 100
|
||||
const stepPercentage = store.brushSettings.stepSize / 100
|
||||
const stepSize = Math.max(
|
||||
1.0,
|
||||
store.brushSettings.size * stepPercentage
|
||||
|
||||
@@ -1,35 +0,0 @@
|
||||
import { transformInputSpecV1ToV2 } from '@/schemas/nodeDef/migration'
|
||||
import { zAutogrowOptions, zMatchTypeOptions } from '@/schemas/nodeDefSchema'
|
||||
import type { InputSpec } from '@/schemas/nodeDefSchema'
|
||||
import type { InputSpec as InputSpecV2 } from '@/schemas/nodeDef/nodeDefSchemaV2'
|
||||
|
||||
const dynamicTypeResolvers: Record<
|
||||
string,
|
||||
(inputSpec: InputSpecV2) => string[]
|
||||
> = {
|
||||
COMFY_AUTOGROW_V3: resolveAutogrowType,
|
||||
COMFY_MATCHTYPE_V3: (input) =>
|
||||
zMatchTypeOptions
|
||||
.safeParse(input)
|
||||
.data?.template?.allowed_types?.split(',') ?? []
|
||||
}
|
||||
|
||||
export function resolveInputType(input: InputSpecV2): string[] {
|
||||
return input.type in dynamicTypeResolvers
|
||||
? dynamicTypeResolvers[input.type](input)
|
||||
: input.type.split(',')
|
||||
}
|
||||
|
||||
function resolveAutogrowType(rawSpec: InputSpecV2): string[] {
|
||||
const { input } = zAutogrowOptions.safeParse(rawSpec).data?.template ?? {}
|
||||
|
||||
const inputTypes: (Record<string, InputSpec> | undefined)[] = [
|
||||
input?.required,
|
||||
input?.optional
|
||||
]
|
||||
return inputTypes.flatMap((inputType) =>
|
||||
Object.entries(inputType ?? {}).flatMap(([name, v]) =>
|
||||
resolveInputType(transformInputSpecV1ToV2(v, { name }))
|
||||
)
|
||||
)
|
||||
}
|
||||
@@ -16,8 +16,7 @@ import type { ComboInputSpec, InputSpec } from '@/schemas/nodeDefSchema'
|
||||
import type { InputSpec as InputSpecV2 } from '@/schemas/nodeDef/nodeDefSchemaV2'
|
||||
import {
|
||||
zAutogrowOptions,
|
||||
zDynamicComboInputSpec,
|
||||
zMatchTypeOptions
|
||||
zDynamicComboInputSpec
|
||||
} from '@/schemas/nodeDefSchema'
|
||||
import { useLitegraphService } from '@/services/litegraphService'
|
||||
import { app } from '@/scripts/app'
|
||||
@@ -216,7 +215,6 @@ export function applyDynamicInputs(
|
||||
dynamicInputs[inputSpec.type](node, inputSpec)
|
||||
return true
|
||||
}
|
||||
|
||||
function spliceInputs(
|
||||
node: LGraphNode,
|
||||
startIndex: number,
|
||||
@@ -331,10 +329,11 @@ function withComfyMatchType(node: LGraphNode): asserts node is MatchTypeNode {
|
||||
function applyMatchType(node: LGraphNode, inputSpec: InputSpecV2) {
|
||||
const { addNodeInput } = useLitegraphService()
|
||||
const name = inputSpec.name
|
||||
const matchTypeSpec = zMatchTypeOptions.safeParse(inputSpec).data
|
||||
if (!matchTypeSpec) return
|
||||
|
||||
const { allowed_types, template_id } = matchTypeSpec.template
|
||||
const { allowed_types, template_id } = (
|
||||
inputSpec as InputSpecV2 & {
|
||||
template: { allowed_types: string; template_id: string }
|
||||
}
|
||||
).template
|
||||
const typedSpec = { ...inputSpec, type: allowed_types }
|
||||
addNodeInput(node, typedSpec)
|
||||
withComfyMatchType(node)
|
||||
|
||||
@@ -936,8 +936,6 @@
|
||||
"batchRename": "إعادة تسمية جماعية",
|
||||
"beta": "نسخة تجريبية",
|
||||
"bookmark": "حفظ في المكتبة",
|
||||
"browserReservedKeybinding": "هذا الاختصار محجوز من قبل بعض المتصفحات وقد يؤدي إلى نتائج غير متوقعة.",
|
||||
"browserReservedKeybindingTooltip": "هذا الاختصار يتعارض مع اختصارات المتصفح المحجوزة",
|
||||
"calculatingDimensions": "جارٍ حساب الأبعاد",
|
||||
"cancel": "إلغاء",
|
||||
"cancelled": "أُلغي",
|
||||
@@ -972,7 +970,6 @@
|
||||
"copy": "نسخ",
|
||||
"copyAll": "نسخ الكل",
|
||||
"copyJobId": "نسخ معرف المهمة",
|
||||
"copySystemInfo": "نسخ معلومات النظام",
|
||||
"copyToClipboard": "نسخ إلى الحافظة",
|
||||
"copyURL": "نسخ الرابط",
|
||||
"core": "النواة",
|
||||
@@ -1019,7 +1016,6 @@
|
||||
"enterNewName": "أدخل الاسم الجديد",
|
||||
"enterNewNamePrompt": "أدخل اسمًا جديدًا:",
|
||||
"enterSubgraph": "دخول الرسم البياني الفرعي",
|
||||
"enterYourKeybind": "أدخل اختصارك",
|
||||
"error": "خطأ",
|
||||
"errorLoadingImage": "حدث خطأ أثناء تحميل الصورة",
|
||||
"errorLoadingVideo": "حدث خطأ أثناء تحميل الفيديو",
|
||||
@@ -1089,7 +1085,6 @@
|
||||
"micPermissionDenied": "تم رفض إذن الميكروفون",
|
||||
"migrate": "ترحيل",
|
||||
"missing": "مفقود",
|
||||
"modifyKeybinding": "تعديل اختصار لوحة المفاتيح",
|
||||
"more": "المزيد",
|
||||
"moreOptions": "خيارات إضافية",
|
||||
"moreWorkflows": "المزيد من سير العمل",
|
||||
@@ -1098,7 +1093,6 @@
|
||||
"name": "الاسم",
|
||||
"newFolder": "مجلد جديد",
|
||||
"next": "التالي",
|
||||
"nextImage": "الصورة التالية",
|
||||
"nightly": "NIGHTLY",
|
||||
"no": "لا",
|
||||
"noAudioRecorded": "لم يتم تسجيل أي صوت",
|
||||
@@ -1132,8 +1126,8 @@
|
||||
"playRecording": "تشغيل التسجيل",
|
||||
"playbackSpeed": "سرعة التشغيل",
|
||||
"playing": "جاري التشغيل",
|
||||
"pressKeysForNewBinding": "اضغط على المفاتيح لربط جديد",
|
||||
"preview": "معاينة",
|
||||
"previousImage": "الصورة السابقة",
|
||||
"profile": "الملف الشخصي",
|
||||
"progressCountOf": "من",
|
||||
"queued": "في قائمة الانتظار",
|
||||
@@ -1173,7 +1167,6 @@
|
||||
"resultsCount": "تم العثور على {count} نتيجة",
|
||||
"running": "يعمل",
|
||||
"save": "حفظ",
|
||||
"saveAnyway": "احفظ على أي حال",
|
||||
"saving": "جارٍ الحفظ",
|
||||
"scrollLeft": "التمرير لليسار",
|
||||
"scrollRight": "التمرير لليمين",
|
||||
@@ -1192,7 +1185,6 @@
|
||||
"selectItemsToDuplicate": "حدد العناصر لعمل نسخة",
|
||||
"selectItemsToRename": "حدد العناصر لإعادة التسمية",
|
||||
"selectedFile": "الملف المحدد",
|
||||
"setAKeybindingForTheFollowing": "تعيين اختصار لوحة المفاتيح لما يلي:",
|
||||
"setAsBackground": "تعيين كخلفية",
|
||||
"settings": "الإعدادات",
|
||||
"shortcutSuffix": " ({shortcut})",
|
||||
@@ -1208,8 +1200,6 @@
|
||||
"stopRecording": "إيقاف التسجيل",
|
||||
"submit": "إرسال",
|
||||
"success": "نجاح",
|
||||
"switchToGridView": "التبديل إلى عرض الشبكة",
|
||||
"switchToSingleView": "التبديل إلى العرض الفردي",
|
||||
"systemInfo": "معلومات النظام",
|
||||
"terminal": "الطرفية",
|
||||
"title": "العنوان",
|
||||
@@ -1239,8 +1229,6 @@
|
||||
"you": "أنت"
|
||||
},
|
||||
"graphCanvasMenu": {
|
||||
"canvasMode": "وضع اللوحة",
|
||||
"canvasToolbar": "شريط أدوات اللوحة",
|
||||
"fitView": "ملائمة العرض",
|
||||
"focusMode": "وضع التركيز",
|
||||
"hand": "يد",
|
||||
@@ -1477,26 +1465,12 @@
|
||||
"dragAndDropImage": "اسحب وأسقط صورة",
|
||||
"emptyWorkflowExplanation": "سير العمل الخاص بك فارغ. تحتاج إلى بعض العقد أولاً لبدء بناء التطبيق.",
|
||||
"enterNodeGraph": "دخول مخطط العقد",
|
||||
"error": {
|
||||
"getHelp": "للمساعدة، راجع {0} أو {1} أو {2} مع تقرير الخطأ المنسوخ.",
|
||||
"github": "إرسال مشكلة على GitHub",
|
||||
"goto": "عرض الأخطاء في المخطط",
|
||||
"guide": "دليل استكشاف الأخطاء",
|
||||
"header": "حدث خطأ في هذا التطبيق",
|
||||
"log": "سجلات الأخطاء",
|
||||
"mobileFixable": "تحقق من {0} للأخطاء",
|
||||
"promptShow": "عرض تقرير الخطأ",
|
||||
"promptVisitGraph": "اعرض مخطط العُقد لرؤية الخطأ بالكامل.",
|
||||
"requiresGraph": "حدث خطأ أثناء التوليد. قد يكون ذلك بسبب مدخلات مخفية غير صالحة، أو موارد مفقودة، أو مشاكل في إعداد سير العمل.",
|
||||
"support": "الاتصال بالدعم"
|
||||
},
|
||||
"giveFeedback": "إعطاء ملاحظات",
|
||||
"graphMode": "وضع الرسم البياني",
|
||||
"hasCreditCost": "يتطلب أرصدة إضافية",
|
||||
"linearMode": "وضع التطبيق",
|
||||
"loadTemplate": "تحميل قالب",
|
||||
"mobileControls": "تعديل وتشغيل",
|
||||
"mobileNoWorkflow": "لم يتم بناء سير العمل هذا لوضع التطبيق. جرب سير عمل آخر.",
|
||||
"queue": {
|
||||
"clear": "مسح قائمة الانتظار",
|
||||
"clickToClear": "انقر لمسح قائمة الانتظار"
|
||||
@@ -1504,7 +1478,6 @@
|
||||
"rerun": "تشغيل مجدد",
|
||||
"reuseParameters": "إعادة استخدام المعلمات",
|
||||
"runCount": "عدد مرات التشغيل:",
|
||||
"viewGraph": "عرض مخطط العُقد",
|
||||
"viewJob": "عرض المهمة",
|
||||
"welcome": {
|
||||
"buildApp": "إنشاء تطبيق",
|
||||
@@ -1713,7 +1686,6 @@
|
||||
"installedSection": "المثبتة",
|
||||
"missingNodes": "عقد مفقودة",
|
||||
"notInstalled": "غير مثبت",
|
||||
"unresolvedNodes": "العُقد غير المحلولة",
|
||||
"updatesAvailable": "تحديثات متوفرة"
|
||||
},
|
||||
"nightlyVersion": "ليلي",
|
||||
@@ -1760,10 +1732,6 @@
|
||||
"uninstall": "إلغاء التثبيت",
|
||||
"uninstallSelected": "إلغاء تثبيت المحدد",
|
||||
"uninstalling": "جاري إلغاء التثبيت",
|
||||
"unresolvedNodes": {
|
||||
"message": "العُقد التالية غير مثبتة ولم يتم العثور عليها في السجل.",
|
||||
"title": "العُقد المفقودة غير المحلولة"
|
||||
},
|
||||
"update": "تحديث",
|
||||
"updateAll": "تحديث الكل",
|
||||
"updateSelected": "تحديث المحدد",
|
||||
@@ -2112,7 +2080,6 @@
|
||||
"OpenAI": "OpenAI",
|
||||
"PixVerse": "PixVerse",
|
||||
"Recraft": "Recraft",
|
||||
"Reve": "Reve",
|
||||
"Rodin": "رودان",
|
||||
"Runway": "رن واي",
|
||||
"Sora": "سورا",
|
||||
@@ -2412,33 +2379,6 @@
|
||||
"inputsNone": "لا توجد مدخلات",
|
||||
"inputsNoneTooltip": "العقدة ليس لديها مدخلات",
|
||||
"locateNode": "تحديد موقع العقدة على اللوحة",
|
||||
"missingModels": {
|
||||
"alreadyExistsInCategory": "هذا النموذج موجود بالفعل في \"{category}\"",
|
||||
"assetLoadTimeout": "انتهت مهلة اكتشاف النموذج. حاول إعادة تحميل سير العمل.",
|
||||
"cancelSelection": "إلغاء الاختيار",
|
||||
"clearUrl": "مسح الرابط",
|
||||
"collapseNodes": "إخفاء العُقد المرجعية",
|
||||
"confirmSelection": "تأكيد الاختيار",
|
||||
"copyModelName": "نسخ اسم النموذج",
|
||||
"customNodeDownloadDisabled": "بيئة السحابة لا تدعم استيراد النماذج للعُقد المخصصة في هذا القسم. يرجى استخدام عُقد التحميل القياسية أو استبدالها بنموذج من المكتبة أدناه.",
|
||||
"expandNodes": "عرض العُقد المرجعية",
|
||||
"import": "استيراد",
|
||||
"importAnyway": "استيراد على أي حال",
|
||||
"importFailed": "فشل الاستيراد",
|
||||
"importNotSupported": "الاستيراد غير مدعوم",
|
||||
"imported": "تم الاستيراد",
|
||||
"importing": "جارٍ الاستيراد...",
|
||||
"locateNode": "تحديد موقع العُقدة على اللوحة",
|
||||
"metadataFetchFailed": "فشل في جلب البيانات الوصفية. يرجى التحقق من الرابط والمحاولة مرة أخرى.",
|
||||
"missingModelsTitle": "النماذج المفقودة",
|
||||
"or": "أو",
|
||||
"typeMismatch": "يبدو أن هذا النموذج هو \"{detectedType}\". هل أنت متأكد؟",
|
||||
"unknownCategory": "غير معروف",
|
||||
"unsupportedUrl": "يتم دعم روابط Civitai و Hugging Face فقط.",
|
||||
"urlPlaceholder": "الصق رابط النموذج (Civitai أو Hugging Face)",
|
||||
"useFromLibrary": "استخدم من المكتبة",
|
||||
"usingFromLibrary": "يتم الاستخدام من المكتبة"
|
||||
},
|
||||
"missingNodePacks": {
|
||||
"applyChanges": "تطبيق التغييرات",
|
||||
"cloudMessage": "يتطلب سير العمل هذا عقدًا مخصصة غير متوفرة بعد على Comfy Cloud.",
|
||||
@@ -3298,7 +3238,6 @@
|
||||
"interrupted": "تم إيقاف التنفيذ",
|
||||
"legacyMaskEditorDeprecated": "محرر القناع القديم لم يعد مدعوماً وسيتم إزالته قريباً.",
|
||||
"migrateToLitegraphReroute": "سيتم إزالة عقد إعادة التوجيه في الإصدارات المستقبلية. انقر للترحيل إلى إعادة التوجيه الأصلية في Litegraph.",
|
||||
"missingModelVerificationFailed": "فشل التحقق من النماذج المفقودة. قد لا تظهر بعض النماذج في علامة تبويب الأخطاء.",
|
||||
"modelLoadedSuccessfully": "تم تحميل النموذج ثلاثي الأبعاد بنجاح",
|
||||
"no3dScene": "لا يوجد مشهد ثلاثي الأبعاد لتطبيق الخامة",
|
||||
"no3dSceneToExport": "لا يوجد مشهد ثلاثي الأبعاد للتصدير",
|
||||
|
||||
@@ -3207,21 +3207,6 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"FluxKVCache": {
|
||||
"description": "يُمكّن تحسين KV Cache لصور المرجع على نماذج عائلة Flux.",
|
||||
"display_name": "Flux KV Cache",
|
||||
"inputs": {
|
||||
"model": {
|
||||
"name": "النموذج",
|
||||
"tooltip": "النموذج الذي سيتم تفعيل KV Cache عليه."
|
||||
}
|
||||
},
|
||||
"outputs": {
|
||||
"0": {
|
||||
"tooltip": "النموذج المعدّل مع تفعيل KV Cache."
|
||||
}
|
||||
}
|
||||
},
|
||||
"FluxKontextImageScale": {
|
||||
"description": "تعيد هذه العقدة ضبط حجم الصورة إلى حجم أكثر ملاءمة لـ flux kontext.",
|
||||
"display_name": "FluxKontextImageScale",
|
||||
@@ -12870,133 +12855,6 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"ReveImageCreateNode": {
|
||||
"description": "توليد الصور من أوصاف نصية باستخدام Reve.",
|
||||
"display_name": "إنشاء صورة Reve",
|
||||
"inputs": {
|
||||
"control_after_generate": {
|
||||
"name": "التحكم بعد التوليد"
|
||||
},
|
||||
"model": {
|
||||
"name": "النموذج",
|
||||
"tooltip": "إصدار النموذج المستخدم في التوليد."
|
||||
},
|
||||
"model_aspect_ratio": {
|
||||
"name": "نسبة الأبعاد"
|
||||
},
|
||||
"model_test_time_scaling": {
|
||||
"name": "اختبار التحجيم الزمني"
|
||||
},
|
||||
"prompt": {
|
||||
"name": "الوصف النصي",
|
||||
"tooltip": "الوصف النصي للصورة المطلوبة. الحد الأقصى ٢٥٦٠ حرفًا."
|
||||
},
|
||||
"remove_background": {
|
||||
"name": "إزالة الخلفية",
|
||||
"tooltip": "إزالة الخلفية من الصورة المولدة. قد يضيف تكلفة إضافية."
|
||||
},
|
||||
"seed": {
|
||||
"name": "البذرة",
|
||||
"tooltip": "تتحكم البذرة فيما إذا كان يجب إعادة تشغيل العقدة؛ النتائج غير حتمية بغض النظر عن البذرة."
|
||||
},
|
||||
"upscale": {
|
||||
"name": "تكبير",
|
||||
"tooltip": "تكبير الصورة المولدة. قد يضيف تكلفة إضافية."
|
||||
}
|
||||
},
|
||||
"outputs": {
|
||||
"0": {
|
||||
"tooltip": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"ReveImageEditNode": {
|
||||
"description": "تعديل الصور باستخدام تعليمات لغة طبيعية مع Reve.",
|
||||
"display_name": "تعديل صورة Reve",
|
||||
"inputs": {
|
||||
"control_after_generate": {
|
||||
"name": "التحكم بعد التوليد"
|
||||
},
|
||||
"edit_instruction": {
|
||||
"name": "تعليمات التعديل",
|
||||
"tooltip": "الوصف النصي لكيفية تعديل الصورة. الحد الأقصى ٢٥٦٠ حرفًا."
|
||||
},
|
||||
"image": {
|
||||
"name": "الصورة",
|
||||
"tooltip": "الصورة المراد تعديلها."
|
||||
},
|
||||
"model": {
|
||||
"name": "النموذج",
|
||||
"tooltip": "إصدار النموذج المستخدم في التعديل."
|
||||
},
|
||||
"model_aspect_ratio": {
|
||||
"name": "نسبة الأبعاد"
|
||||
},
|
||||
"model_test_time_scaling": {
|
||||
"name": "اختبار التحجيم الزمني"
|
||||
},
|
||||
"remove_background": {
|
||||
"name": "إزالة الخلفية",
|
||||
"tooltip": "إزالة الخلفية من الصورة المولدة. قد يضيف تكلفة إضافية."
|
||||
},
|
||||
"seed": {
|
||||
"name": "البذرة",
|
||||
"tooltip": "تتحكم البذرة فيما إذا كان يجب إعادة تشغيل العقدة؛ النتائج غير حتمية بغض النظر عن البذرة."
|
||||
},
|
||||
"upscale": {
|
||||
"name": "تكبير",
|
||||
"tooltip": "تكبير الصورة المولدة. قد يضيف تكلفة إضافية."
|
||||
}
|
||||
},
|
||||
"outputs": {
|
||||
"0": {
|
||||
"tooltip": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"ReveImageRemixNode": {
|
||||
"description": "دمج الصور المرجعية مع الأوصاف النصية لإنشاء صور جديدة باستخدام Reve.",
|
||||
"display_name": "ريمكس صورة Reve",
|
||||
"inputs": {
|
||||
"control_after_generate": {
|
||||
"name": "التحكم بعد التوليد"
|
||||
},
|
||||
"model": {
|
||||
"name": "النموذج",
|
||||
"tooltip": "إصدار النموذج المستخدم في الريمكس."
|
||||
},
|
||||
"model_aspect_ratio": {
|
||||
"name": "نسبة الأبعاد"
|
||||
},
|
||||
"model_test_time_scaling": {
|
||||
"name": "اختبار التحجيم الزمني"
|
||||
},
|
||||
"prompt": {
|
||||
"name": "الوصف النصي",
|
||||
"tooltip": "الوصف النصي للصورة المطلوبة. يمكن أن يتضمن وسوم XML للصور للإشارة إلى صور محددة حسب الفهرس، مثل <img>0</img>، <img>1</img>، إلخ."
|
||||
},
|
||||
"reference_images": {
|
||||
"name": "الصور المرجعية"
|
||||
},
|
||||
"remove_background": {
|
||||
"name": "إزالة الخلفية",
|
||||
"tooltip": "إزالة الخلفية من الصورة المولدة. قد يضيف تكلفة إضافية."
|
||||
},
|
||||
"seed": {
|
||||
"name": "البذرة",
|
||||
"tooltip": "تتحكم البذرة فيما إذا كان يجب إعادة تشغيل العقدة؛ النتائج غير حتمية بغض النظر عن البذرة."
|
||||
},
|
||||
"upscale": {
|
||||
"name": "تكبير",
|
||||
"tooltip": "تكبير الصورة المولدة. قد يضيف تكلفة إضافية."
|
||||
}
|
||||
},
|
||||
"outputs": {
|
||||
"0": {
|
||||
"tooltip": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"Rodin3D_Detail": {
|
||||
"description": "توليد أصول ثلاثية الأبعاد باستخدام واجهة برمجة تطبيقات رودين",
|
||||
"display_name": "رودين 3D توليد - توليد التفاصيل",
|
||||
|
||||
@@ -498,14 +498,6 @@
|
||||
"black": "Black",
|
||||
"custom": "Custom"
|
||||
},
|
||||
"colorPicker": {
|
||||
"saturationValue": "Saturation and brightness",
|
||||
"saturationBrightnessValue": "Saturation {saturation}%, brightness {value}%",
|
||||
"saturation": "Saturation",
|
||||
"brightness": "Brightness",
|
||||
"hue": "Hue",
|
||||
"alpha": "Alpha"
|
||||
},
|
||||
"contextMenu": {
|
||||
"Inputs": "Inputs",
|
||||
"Outputs": "Outputs",
|
||||
@@ -1640,7 +1632,6 @@
|
||||
"unet": "unet",
|
||||
"sigmas": "sigmas",
|
||||
"BFL": "BFL",
|
||||
"": "",
|
||||
"Gemini": "Gemini",
|
||||
"video_models": "video_models",
|
||||
"gligen": "gligen",
|
||||
@@ -1675,7 +1666,6 @@
|
||||
"primitive": "primitive",
|
||||
"Recraft": "Recraft",
|
||||
"edit_models": "edit_models",
|
||||
"Reve": "Reve",
|
||||
"Rodin": "Rodin",
|
||||
"Runway": "Runway",
|
||||
"animation": "animation",
|
||||
@@ -1689,6 +1679,7 @@
|
||||
"style_model": "style_model",
|
||||
"Tencent": "Tencent",
|
||||
"textgen": "textgen",
|
||||
"": "",
|
||||
"Topaz": "Topaz",
|
||||
"Tripo": "Tripo",
|
||||
"Veo": "Veo",
|
||||
|
||||
@@ -3319,21 +3319,6 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"FluxKVCache": {
|
||||
"display_name": "Flux KV Cache",
|
||||
"description": "Enables KV Cache optimization for reference images on Flux family models.",
|
||||
"inputs": {
|
||||
"model": {
|
||||
"name": "model",
|
||||
"tooltip": "The model to use KV Cache on."
|
||||
}
|
||||
},
|
||||
"outputs": {
|
||||
"0": {
|
||||
"tooltip": "The patched model with KV Cache enabled."
|
||||
}
|
||||
}
|
||||
},
|
||||
"FluxProExpandNode": {
|
||||
"display_name": "Flux.1 Expand Image",
|
||||
"description": "Outpaints image based on prompt.",
|
||||
@@ -12870,133 +12855,6 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"ReveImageCreateNode": {
|
||||
"display_name": "Reve Image Create",
|
||||
"description": "Generate images from text descriptions using Reve.",
|
||||
"inputs": {
|
||||
"prompt": {
|
||||
"name": "prompt",
|
||||
"tooltip": "Text description of the desired image. Maximum 2560 characters."
|
||||
},
|
||||
"model": {
|
||||
"name": "model",
|
||||
"tooltip": "Model version to use for generation."
|
||||
},
|
||||
"upscale": {
|
||||
"name": "upscale",
|
||||
"tooltip": "Upscale the generated image. May add additional cost."
|
||||
},
|
||||
"remove_background": {
|
||||
"name": "remove_background",
|
||||
"tooltip": "Remove the background from the generated image. May add additional cost."
|
||||
},
|
||||
"seed": {
|
||||
"name": "seed",
|
||||
"tooltip": "Seed controls whether the node should re-run; results are non-deterministic regardless of seed."
|
||||
},
|
||||
"control_after_generate": {
|
||||
"name": "control after generate"
|
||||
},
|
||||
"model_aspect_ratio": {
|
||||
"name": "aspect_ratio"
|
||||
},
|
||||
"model_test_time_scaling": {
|
||||
"name": "test_time_scaling"
|
||||
}
|
||||
},
|
||||
"outputs": {
|
||||
"0": {
|
||||
"tooltip": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"ReveImageEditNode": {
|
||||
"display_name": "Reve Image Edit",
|
||||
"description": "Edit images using natural language instructions with Reve.",
|
||||
"inputs": {
|
||||
"image": {
|
||||
"name": "image",
|
||||
"tooltip": "The image to edit."
|
||||
},
|
||||
"edit_instruction": {
|
||||
"name": "edit_instruction",
|
||||
"tooltip": "Text description of how to edit the image. Maximum 2560 characters."
|
||||
},
|
||||
"model": {
|
||||
"name": "model",
|
||||
"tooltip": "Model version to use for editing."
|
||||
},
|
||||
"upscale": {
|
||||
"name": "upscale",
|
||||
"tooltip": "Upscale the generated image. May add additional cost."
|
||||
},
|
||||
"remove_background": {
|
||||
"name": "remove_background",
|
||||
"tooltip": "Remove the background from the generated image. May add additional cost."
|
||||
},
|
||||
"seed": {
|
||||
"name": "seed",
|
||||
"tooltip": "Seed controls whether the node should re-run; results are non-deterministic regardless of seed."
|
||||
},
|
||||
"control_after_generate": {
|
||||
"name": "control after generate"
|
||||
},
|
||||
"model_aspect_ratio": {
|
||||
"name": "aspect_ratio"
|
||||
},
|
||||
"model_test_time_scaling": {
|
||||
"name": "test_time_scaling"
|
||||
}
|
||||
},
|
||||
"outputs": {
|
||||
"0": {
|
||||
"tooltip": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"ReveImageRemixNode": {
|
||||
"display_name": "Reve Image Remix",
|
||||
"description": "Combine reference images with text prompts to create new images using Reve.",
|
||||
"inputs": {
|
||||
"reference_images": {
|
||||
"name": "reference_images"
|
||||
},
|
||||
"prompt": {
|
||||
"name": "prompt",
|
||||
"tooltip": "Text description of the desired image. May include XML img tags to reference specific images by index, e.g. <img>0</img>, <img>1</img>, etc."
|
||||
},
|
||||
"model": {
|
||||
"name": "model",
|
||||
"tooltip": "Model version to use for remixing."
|
||||
},
|
||||
"upscale": {
|
||||
"name": "upscale",
|
||||
"tooltip": "Upscale the generated image. May add additional cost."
|
||||
},
|
||||
"remove_background": {
|
||||
"name": "remove_background",
|
||||
"tooltip": "Remove the background from the generated image. May add additional cost."
|
||||
},
|
||||
"seed": {
|
||||
"name": "seed",
|
||||
"tooltip": "Seed controls whether the node should re-run; results are non-deterministic regardless of seed."
|
||||
},
|
||||
"control_after_generate": {
|
||||
"name": "control after generate"
|
||||
},
|
||||
"model_aspect_ratio": {
|
||||
"name": "aspect_ratio"
|
||||
},
|
||||
"model_test_time_scaling": {
|
||||
"name": "test_time_scaling"
|
||||
}
|
||||
},
|
||||
"outputs": {
|
||||
"0": {
|
||||
"tooltip": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"Rodin3D_Detail": {
|
||||
"display_name": "Rodin 3D Generate - Detail Generate",
|
||||
"description": "Generate 3D Assets using Rodin API",
|
||||
|
||||
@@ -936,8 +936,6 @@
|
||||
"batchRename": "Renombrar en lote",
|
||||
"beta": "BETA",
|
||||
"bookmark": "Guardar en Biblioteca",
|
||||
"browserReservedKeybinding": "Este atajo está reservado por algunos navegadores y puede tener resultados inesperados.",
|
||||
"browserReservedKeybindingTooltip": "Este atajo entra en conflicto con los atajos reservados del navegador",
|
||||
"calculatingDimensions": "Calculando dimensiones",
|
||||
"cancel": "Cancelar",
|
||||
"cancelled": "Cancelado",
|
||||
@@ -972,7 +970,6 @@
|
||||
"copy": "Copiar",
|
||||
"copyAll": "Copiar todo",
|
||||
"copyJobId": "Copiar ID de trabajo",
|
||||
"copySystemInfo": "Copiar información del sistema",
|
||||
"copyToClipboard": "Copiar al portapapeles",
|
||||
"copyURL": "Copiar URL",
|
||||
"core": "Núcleo",
|
||||
@@ -1019,7 +1016,6 @@
|
||||
"enterNewName": "Introduce el nuevo nombre",
|
||||
"enterNewNamePrompt": "Introduce un nuevo nombre:",
|
||||
"enterSubgraph": "Entrar en subgrafo",
|
||||
"enterYourKeybind": "Introduce tu atajo de teclado",
|
||||
"error": "Error",
|
||||
"errorLoadingImage": "Error al cargar imagen",
|
||||
"errorLoadingVideo": "Error al cargar video",
|
||||
@@ -1089,7 +1085,6 @@
|
||||
"micPermissionDenied": "Permiso de micrófono denegado",
|
||||
"migrate": "Migrar",
|
||||
"missing": "Faltante",
|
||||
"modifyKeybinding": "Modificar atajo de teclado",
|
||||
"more": "Más",
|
||||
"moreOptions": "Más Opciones",
|
||||
"moreWorkflows": "Más flujos de trabajo",
|
||||
@@ -1098,7 +1093,6 @@
|
||||
"name": "Nombre",
|
||||
"newFolder": "Nueva carpeta",
|
||||
"next": "Siguiente",
|
||||
"nextImage": "Imagen siguiente",
|
||||
"nightly": "NIGHTLY",
|
||||
"no": "No",
|
||||
"noAudioRecorded": "No se grabó audio",
|
||||
@@ -1132,8 +1126,8 @@
|
||||
"playRecording": "Reproducir grabación",
|
||||
"playbackSpeed": "Velocidad de reproducción",
|
||||
"playing": "Reproduciendo",
|
||||
"pressKeysForNewBinding": "Presiona teclas para nueva asignación",
|
||||
"preview": "VISTA PREVIA",
|
||||
"previousImage": "Imagen anterior",
|
||||
"profile": "Perfil",
|
||||
"progressCountOf": "de",
|
||||
"queued": "En cola",
|
||||
@@ -1173,7 +1167,6 @@
|
||||
"resultsCount": "Encontrados {count} resultados",
|
||||
"running": "En ejecución",
|
||||
"save": "Guardar",
|
||||
"saveAnyway": "Guardar de todos modos",
|
||||
"saving": "Guardando",
|
||||
"scrollLeft": "Desplazar a la izquierda",
|
||||
"scrollRight": "Desplazar a la derecha",
|
||||
@@ -1192,7 +1185,6 @@
|
||||
"selectItemsToDuplicate": "Selecciona elementos para duplicar",
|
||||
"selectItemsToRename": "Selecciona elementos para renombrar",
|
||||
"selectedFile": "Archivo seleccionado",
|
||||
"setAKeybindingForTheFollowing": "Establecer un atajo de teclado para lo siguiente:",
|
||||
"setAsBackground": "Establecer como fondo",
|
||||
"settings": "Configuraciones",
|
||||
"shortcutSuffix": " ({shortcut})",
|
||||
@@ -1208,8 +1200,6 @@
|
||||
"stopRecording": "Detener grabación",
|
||||
"submit": "Enviar",
|
||||
"success": "Éxito",
|
||||
"switchToGridView": "Cambiar a vista de cuadrícula",
|
||||
"switchToSingleView": "Cambiar a vista individual",
|
||||
"systemInfo": "Información del sistema",
|
||||
"terminal": "Terminal",
|
||||
"title": "Título",
|
||||
@@ -1239,8 +1229,6 @@
|
||||
"you": "Tú"
|
||||
},
|
||||
"graphCanvasMenu": {
|
||||
"canvasMode": "Modo lienzo",
|
||||
"canvasToolbar": "Barra de herramientas del lienzo",
|
||||
"fitView": "Ajustar vista",
|
||||
"focusMode": "Modo de Enfoque",
|
||||
"hand": "Mano",
|
||||
@@ -1477,26 +1465,12 @@
|
||||
"dragAndDropImage": "Arrastra y suelta una imagen",
|
||||
"emptyWorkflowExplanation": "Tu flujo de trabajo está vacío. Necesitas algunos nodos primero para empezar a construir una aplicación.",
|
||||
"enterNodeGraph": "Entrar al grafo de nodos",
|
||||
"error": {
|
||||
"getHelp": "Para obtener ayuda, consulta nuestro {0}, {1} o {2} con el error copiado.",
|
||||
"github": "enviar un issue en GitHub",
|
||||
"goto": "Mostrar errores en el grafo",
|
||||
"guide": "guía de solución de problemas",
|
||||
"header": "Esta aplicación encontró un error",
|
||||
"log": "Registros de errores",
|
||||
"mobileFixable": "Revisa {0} para ver los errores",
|
||||
"promptShow": "Mostrar informe de error",
|
||||
"promptVisitGraph": "Ve el grafo de nodos para ver el error completo.",
|
||||
"requiresGraph": "Algo salió mal durante la generación. Esto puede deberse a entradas ocultas no válidas, recursos faltantes o problemas de configuración del flujo de trabajo.",
|
||||
"support": "contacta a nuestro soporte"
|
||||
},
|
||||
"giveFeedback": "Enviar comentarios",
|
||||
"graphMode": "Modo gráfico",
|
||||
"hasCreditCost": "Requiere créditos adicionales",
|
||||
"linearMode": "Modo App",
|
||||
"loadTemplate": "Cargar una plantilla",
|
||||
"mobileControls": "Editar y ejecutar",
|
||||
"mobileNoWorkflow": "Este flujo de trabajo no ha sido creado para el modo de aplicación. Prueba con otro.",
|
||||
"queue": {
|
||||
"clear": "Limpiar cola",
|
||||
"clickToClear": "Haz clic para limpiar la cola"
|
||||
@@ -1504,7 +1478,6 @@
|
||||
"rerun": "Volver a ejecutar",
|
||||
"reuseParameters": "Reutilizar parámetros",
|
||||
"runCount": "Número de ejecuciones:",
|
||||
"viewGraph": "Ver grafo de nodos",
|
||||
"viewJob": "Ver tarea",
|
||||
"welcome": {
|
||||
"buildApp": "Crear aplicación",
|
||||
@@ -1713,7 +1686,6 @@
|
||||
"installedSection": "INSTALADO",
|
||||
"missingNodes": "Nodos faltantes",
|
||||
"notInstalled": "No instalado",
|
||||
"unresolvedNodes": "Nodos no resueltos",
|
||||
"updatesAvailable": "Actualizaciones disponibles"
|
||||
},
|
||||
"nightlyVersion": "Nocturna",
|
||||
@@ -1760,10 +1732,6 @@
|
||||
"uninstall": "Desinstalar",
|
||||
"uninstallSelected": "Desinstalar Seleccionado",
|
||||
"uninstalling": "Desinstalando",
|
||||
"unresolvedNodes": {
|
||||
"message": "Los siguientes nodos no están instalados y no se pudieron encontrar en el registro.",
|
||||
"title": "Nodos faltantes no resueltos"
|
||||
},
|
||||
"update": "Actualizar",
|
||||
"updateAll": "Actualizar Todos",
|
||||
"updateSelected": "Actualizar Seleccionados",
|
||||
@@ -2112,7 +2080,6 @@
|
||||
"OpenAI": "OpenAI",
|
||||
"PixVerse": "PixVerse",
|
||||
"Recraft": "Recraft",
|
||||
"Reve": "Reve",
|
||||
"Rodin": "Rodin",
|
||||
"Runway": "Runway",
|
||||
"Sora": "Sora",
|
||||
@@ -2412,33 +2379,6 @@
|
||||
"inputsNone": "SIN ENTRADAS",
|
||||
"inputsNoneTooltip": "El nodo no tiene entradas",
|
||||
"locateNode": "Localizar nodo en el lienzo",
|
||||
"missingModels": {
|
||||
"alreadyExistsInCategory": "Este modelo ya existe en \"{category}\"",
|
||||
"assetLoadTimeout": "El tiempo de detección del modelo se agotó. Intenta recargar el flujo de trabajo.",
|
||||
"cancelSelection": "Cancelar selección",
|
||||
"clearUrl": "Borrar URL",
|
||||
"collapseNodes": "Ocultar nodos de referencia",
|
||||
"confirmSelection": "Confirmar selección",
|
||||
"copyModelName": "Copiar nombre del modelo",
|
||||
"customNodeDownloadDisabled": "El entorno en la nube no admite la importación de modelos para nodos personalizados en esta sección. Por favor, utiliza nodos estándar de carga o sustituye con un modelo de la biblioteca de abajo.",
|
||||
"expandNodes": "Mostrar nodos de referencia",
|
||||
"import": "Importar",
|
||||
"importAnyway": "Importar de todos modos",
|
||||
"importFailed": "Error al importar",
|
||||
"importNotSupported": "Importación no soportada",
|
||||
"imported": "Importado",
|
||||
"importing": "Importando...",
|
||||
"locateNode": "Localizar nodo en el lienzo",
|
||||
"metadataFetchFailed": "No se pudo obtener los metadatos. Por favor, revisa el enlace e inténtalo de nuevo.",
|
||||
"missingModelsTitle": "Modelos faltantes",
|
||||
"or": "O",
|
||||
"typeMismatch": "Este modelo parece ser un \"{detectedType}\". ¿Estás seguro?",
|
||||
"unknownCategory": "Desconocido",
|
||||
"unsupportedUrl": "Solo se admiten URLs de Civitai y Hugging Face.",
|
||||
"urlPlaceholder": "Pega la URL del modelo (Civitai o Hugging Face)",
|
||||
"useFromLibrary": "Usar de la biblioteca",
|
||||
"usingFromLibrary": "Usando de la biblioteca"
|
||||
},
|
||||
"missingNodePacks": {
|
||||
"applyChanges": "Aplicar cambios",
|
||||
"cloudMessage": "Este flujo de trabajo requiere nodos personalizados que aún no están disponibles en Comfy Cloud.",
|
||||
@@ -3298,7 +3238,6 @@
|
||||
"interrupted": "La ejecución ha sido interrumpida",
|
||||
"legacyMaskEditorDeprecated": "El editor de máscaras heredado está obsoleto y se eliminará pronto.",
|
||||
"migrateToLitegraphReroute": "Los nodos de reroute se eliminarán en futuras versiones. Haz clic para migrar a reroute nativo de litegraph.",
|
||||
"missingModelVerificationFailed": "No se pudo verificar los modelos faltantes. Algunos modelos pueden no aparecer en la pestaña de Errores.",
|
||||
"modelLoadedSuccessfully": "Modelo 3D cargado exitosamente",
|
||||
"no3dScene": "No hay escena 3D para aplicar textura",
|
||||
"no3dSceneToExport": "No hay escena 3D para exportar",
|
||||
|
||||
@@ -3207,21 +3207,6 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"FluxKVCache": {
|
||||
"description": "Activa la optimización de KV Cache para imágenes de referencia en modelos de la familia Flux.",
|
||||
"display_name": "Flux KV Cache",
|
||||
"inputs": {
|
||||
"model": {
|
||||
"name": "modelo",
|
||||
"tooltip": "El modelo en el que se usará KV Cache."
|
||||
}
|
||||
},
|
||||
"outputs": {
|
||||
"0": {
|
||||
"tooltip": "El modelo modificado con KV Cache activado."
|
||||
}
|
||||
}
|
||||
},
|
||||
"FluxKontextImageScale": {
|
||||
"description": "Este nodo redimensiona la imagen a una más óptima para flux kontext.",
|
||||
"display_name": "EscalaImagenFluxKontext",
|
||||
@@ -12870,133 +12855,6 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"ReveImageCreateNode": {
|
||||
"description": "Genera imágenes a partir de descripciones de texto usando Reve.",
|
||||
"display_name": "Reve Crear Imagen",
|
||||
"inputs": {
|
||||
"control_after_generate": {
|
||||
"name": "control después de generar"
|
||||
},
|
||||
"model": {
|
||||
"name": "modelo",
|
||||
"tooltip": "Versión del modelo a utilizar para la generación."
|
||||
},
|
||||
"model_aspect_ratio": {
|
||||
"name": "relación_de_aspecto"
|
||||
},
|
||||
"model_test_time_scaling": {
|
||||
"name": "escalado_en_tiempo_de_prueba"
|
||||
},
|
||||
"prompt": {
|
||||
"name": "prompt",
|
||||
"tooltip": "Descripción en texto de la imagen deseada. Máximo 2560 caracteres."
|
||||
},
|
||||
"remove_background": {
|
||||
"name": "eliminar_fondo",
|
||||
"tooltip": "Eliminar el fondo de la imagen generada. Puede tener un costo adicional."
|
||||
},
|
||||
"seed": {
|
||||
"name": "semilla",
|
||||
"tooltip": "La semilla controla si el nodo debe ejecutarse de nuevo; los resultados son no deterministas independientemente de la semilla."
|
||||
},
|
||||
"upscale": {
|
||||
"name": "escalar",
|
||||
"tooltip": "Aumentar la resolución de la imagen generada. Puede tener un costo adicional."
|
||||
}
|
||||
},
|
||||
"outputs": {
|
||||
"0": {
|
||||
"tooltip": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"ReveImageEditNode": {
|
||||
"description": "Edita imágenes usando instrucciones en lenguaje natural con Reve.",
|
||||
"display_name": "Reve Editar Imagen",
|
||||
"inputs": {
|
||||
"control_after_generate": {
|
||||
"name": "control después de generar"
|
||||
},
|
||||
"edit_instruction": {
|
||||
"name": "instrucción_de_edición",
|
||||
"tooltip": "Descripción en texto de cómo editar la imagen. Máximo 2560 caracteres."
|
||||
},
|
||||
"image": {
|
||||
"name": "imagen",
|
||||
"tooltip": "La imagen a editar."
|
||||
},
|
||||
"model": {
|
||||
"name": "modelo",
|
||||
"tooltip": "Versión del modelo a utilizar para la edición."
|
||||
},
|
||||
"model_aspect_ratio": {
|
||||
"name": "relación_de_aspecto"
|
||||
},
|
||||
"model_test_time_scaling": {
|
||||
"name": "escalado_en_tiempo_de_prueba"
|
||||
},
|
||||
"remove_background": {
|
||||
"name": "eliminar_fondo",
|
||||
"tooltip": "Eliminar el fondo de la imagen generada. Puede tener un costo adicional."
|
||||
},
|
||||
"seed": {
|
||||
"name": "semilla",
|
||||
"tooltip": "La semilla controla si el nodo debe ejecutarse de nuevo; los resultados son no deterministas independientemente de la semilla."
|
||||
},
|
||||
"upscale": {
|
||||
"name": "escalar",
|
||||
"tooltip": "Aumentar la resolución de la imagen generada. Puede tener un costo adicional."
|
||||
}
|
||||
},
|
||||
"outputs": {
|
||||
"0": {
|
||||
"tooltip": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"ReveImageRemixNode": {
|
||||
"description": "Combina imágenes de referencia con prompts de texto para crear nuevas imágenes usando Reve.",
|
||||
"display_name": "Reve Mezclar Imagen",
|
||||
"inputs": {
|
||||
"control_after_generate": {
|
||||
"name": "control después de generar"
|
||||
},
|
||||
"model": {
|
||||
"name": "modelo",
|
||||
"tooltip": "Versión del modelo a utilizar para mezclar."
|
||||
},
|
||||
"model_aspect_ratio": {
|
||||
"name": "relación_de_aspecto"
|
||||
},
|
||||
"model_test_time_scaling": {
|
||||
"name": "escalado_en_tiempo_de_prueba"
|
||||
},
|
||||
"prompt": {
|
||||
"name": "prompt",
|
||||
"tooltip": "Descripción en texto de la imagen deseada. Puede incluir etiquetas XML img para referenciar imágenes específicas por índice, por ejemplo <img>0</img>, <img>1</img>, etc."
|
||||
},
|
||||
"reference_images": {
|
||||
"name": "imágenes_de_referencia"
|
||||
},
|
||||
"remove_background": {
|
||||
"name": "eliminar_fondo",
|
||||
"tooltip": "Eliminar el fondo de la imagen generada. Puede tener un costo adicional."
|
||||
},
|
||||
"seed": {
|
||||
"name": "semilla",
|
||||
"tooltip": "La semilla controla si el nodo debe ejecutarse de nuevo; los resultados son no deterministas independientemente de la semilla."
|
||||
},
|
||||
"upscale": {
|
||||
"name": "escalar",
|
||||
"tooltip": "Aumentar la resolución de la imagen generada. Puede tener un costo adicional."
|
||||
}
|
||||
},
|
||||
"outputs": {
|
||||
"0": {
|
||||
"tooltip": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"Rodin3D_Detail": {
|
||||
"description": "Generar activos 3D usando la API de Rodin",
|
||||
"display_name": "Rodin 3D Generar - Generar Detalle",
|
||||
|
||||
@@ -936,8 +936,6 @@
|
||||
"batchRename": "تغییر نام گروهی",
|
||||
"beta": "آزمایشی",
|
||||
"bookmark": "ذخیره در کتابخانه",
|
||||
"browserReservedKeybinding": "این میانبر توسط برخی مرورگرها رزرو شده و ممکن است نتایج غیرمنتظرهای داشته باشد.",
|
||||
"browserReservedKeybindingTooltip": "این میانبر با میانبرهای رزرو شده مرورگر تداخل دارد",
|
||||
"calculatingDimensions": "در حال محاسبه ابعاد",
|
||||
"cancel": "لغو",
|
||||
"cancelled": "لغو شده",
|
||||
@@ -972,7 +970,6 @@
|
||||
"copy": "کپی",
|
||||
"copyAll": "کپی همه",
|
||||
"copyJobId": "کپی شناسه وظیفه",
|
||||
"copySystemInfo": "کپی اطلاعات سیستم",
|
||||
"copyToClipboard": "کپی در کلیپبورد",
|
||||
"copyURL": "کپی آدرس",
|
||||
"core": "هسته",
|
||||
@@ -1019,7 +1016,6 @@
|
||||
"enterNewName": "نام جدید را وارد کنید",
|
||||
"enterNewNamePrompt": "نام جدید را وارد کنید:",
|
||||
"enterSubgraph": "ورود به زیرگراف",
|
||||
"enterYourKeybind": "کلید میانبر خود را وارد کنید",
|
||||
"error": "خطا",
|
||||
"errorLoadingImage": "خطا در بارگذاری تصویر",
|
||||
"errorLoadingVideo": "خطا در بارگذاری ویدیو",
|
||||
@@ -1089,7 +1085,6 @@
|
||||
"micPermissionDenied": "دسترسی میکروفون رد شد",
|
||||
"migrate": "مهاجرت",
|
||||
"missing": "ناقص",
|
||||
"modifyKeybinding": "تغییر کلید میانبر",
|
||||
"more": "بیشتر",
|
||||
"moreOptions": "گزینههای بیشتر",
|
||||
"moreWorkflows": "workflowهای بیشتر",
|
||||
@@ -1098,7 +1093,6 @@
|
||||
"name": "نام",
|
||||
"newFolder": "پوشه جدید",
|
||||
"next": "بعدی",
|
||||
"nextImage": "تصویر بعدی",
|
||||
"nightly": "نسخه شبانه",
|
||||
"no": "خیر",
|
||||
"noAudioRecorded": "هیچ صدایی ضبط نشد",
|
||||
@@ -1132,8 +1126,8 @@
|
||||
"playRecording": "پخش ضبط",
|
||||
"playbackSpeed": "سرعت پخش",
|
||||
"playing": "در حال پخش",
|
||||
"pressKeysForNewBinding": "کلیدهای میانبر جدید را فشار دهید",
|
||||
"preview": "پیشنمایش",
|
||||
"previousImage": "تصویر قبلی",
|
||||
"profile": "پروفایل",
|
||||
"progressCountOf": "از",
|
||||
"queued": "در صف",
|
||||
@@ -1173,7 +1167,6 @@
|
||||
"resultsCount": "{count} نتیجه یافت شد",
|
||||
"running": "در حال اجرا",
|
||||
"save": "ذخیره",
|
||||
"saveAnyway": "ذخیره کن",
|
||||
"saving": "در حال ذخیره",
|
||||
"scrollLeft": "اسکرول به چپ",
|
||||
"scrollRight": "اسکرول به راست",
|
||||
@@ -1192,7 +1185,6 @@
|
||||
"selectItemsToDuplicate": "مواردی برای تکرار انتخاب کنید",
|
||||
"selectItemsToRename": "مواردی برای تغییر نام انتخاب کنید",
|
||||
"selectedFile": "فایل انتخابشده",
|
||||
"setAKeybindingForTheFollowing": "کلید میانبر را برای مورد زیر تنظیم کنید:",
|
||||
"setAsBackground": "تنظیم به عنوان پسزمینه",
|
||||
"settings": "تنظیمات",
|
||||
"shortcutSuffix": " ({shortcut})",
|
||||
@@ -1208,8 +1200,6 @@
|
||||
"stopRecording": "پایان ضبط",
|
||||
"submit": "ارسال",
|
||||
"success": "موفقیتآمیز",
|
||||
"switchToGridView": "تغییر به نمای شبکهای",
|
||||
"switchToSingleView": "تغییر به نمای تکی",
|
||||
"systemInfo": "اطلاعات سیستم",
|
||||
"terminal": "ترمینال",
|
||||
"title": "عنوان",
|
||||
@@ -1239,8 +1229,6 @@
|
||||
"you": "شما"
|
||||
},
|
||||
"graphCanvasMenu": {
|
||||
"canvasMode": "حالت بوم",
|
||||
"canvasToolbar": "نوار ابزار بوم",
|
||||
"fitView": "تطبیق با نما",
|
||||
"focusMode": "حالت تمرکز",
|
||||
"hand": "دست",
|
||||
@@ -1477,26 +1465,12 @@
|
||||
"dragAndDropImage": "تصویر را بکشید و رها کنید",
|
||||
"emptyWorkflowExplanation": "جریان کاری شما خالی است. ابتدا باید چند node اضافه کنید تا بتوانید یک برنامه بسازید.",
|
||||
"enterNodeGraph": "ورود به گراف node",
|
||||
"error": {
|
||||
"getHelp": "برای دریافت راهنما، {0}، {1} یا {2} را با خطای کپیشده مشاهده کنید.",
|
||||
"github": "ارسال issue در GitHub",
|
||||
"goto": "نمایش خطاها در گراف",
|
||||
"guide": "راهنمای رفع اشکال",
|
||||
"header": "این اپلیکیشن با خطا مواجه شد",
|
||||
"log": "گزارشهای خطا",
|
||||
"mobileFixable": "برای مشاهده خطاها به {0} مراجعه کنید",
|
||||
"promptShow": "نمایش گزارش خطا",
|
||||
"promptVisitGraph": "برای مشاهده خطای کامل، گراف نود را ببینید.",
|
||||
"requiresGraph": "در طول تولید مشکلی پیش آمد. ممکن است به دلیل ورودیهای مخفی نامعتبر، منابع گمشده یا مشکلات پیکربندی workflow باشد.",
|
||||
"support": "تماس با پشتیبانی ما"
|
||||
},
|
||||
"giveFeedback": "ارسال بازخورد",
|
||||
"graphMode": "حالت گراف",
|
||||
"hasCreditCost": "نیازمند اعتبار اضافی",
|
||||
"linearMode": "حالت برنامه",
|
||||
"loadTemplate": "بارگذاری قالب",
|
||||
"mobileControls": "ویرایش و اجرا",
|
||||
"mobileNoWorkflow": "این workflow برای حالت اپلیکیشن ساخته نشده است. مورد دیگری را امتحان کنید.",
|
||||
"queue": {
|
||||
"clear": "پاکسازی صف",
|
||||
"clickToClear": "برای پاکسازی صف کلیک کنید"
|
||||
@@ -1504,7 +1478,6 @@
|
||||
"rerun": "اجرای مجدد",
|
||||
"reuseParameters": "استفاده مجدد از پارامترها",
|
||||
"runCount": "تعداد اجرا: ",
|
||||
"viewGraph": "مشاهده گراف نود",
|
||||
"viewJob": "مشاهده وظیفه",
|
||||
"welcome": {
|
||||
"buildApp": "ساخت اپلیکیشن",
|
||||
@@ -1713,7 +1686,6 @@
|
||||
"installedSection": "نصب شده",
|
||||
"missingNodes": "Nodeهای مفقود",
|
||||
"notInstalled": "نصب نشده",
|
||||
"unresolvedNodes": "نودهای حلنشده",
|
||||
"updatesAvailable": "بهروزرسانیهای موجود"
|
||||
},
|
||||
"nightlyVersion": "نسخه nightly",
|
||||
@@ -1760,10 +1732,6 @@
|
||||
"uninstall": "حذف نصب",
|
||||
"uninstallSelected": "حذف نصب انتخابشدهها",
|
||||
"uninstalling": "در حال حذف نصب {id}",
|
||||
"unresolvedNodes": {
|
||||
"message": "نودهای زیر نصب نشدهاند و در رجیستری یافت نشدند.",
|
||||
"title": "نودهای گمشده حلنشده"
|
||||
},
|
||||
"update": "بهروزرسانی",
|
||||
"updateAll": "بهروزرسانی همه",
|
||||
"updateSelected": "بهروزرسانی انتخابشدهها",
|
||||
@@ -2112,7 +2080,6 @@
|
||||
"OpenAI": "OpenAI",
|
||||
"PixVerse": "PixVerse",
|
||||
"Recraft": "Recraft",
|
||||
"Reve": "Reve",
|
||||
"Rodin": "Rodin",
|
||||
"Runway": "Runway",
|
||||
"Sora": "Sora",
|
||||
@@ -2412,33 +2379,6 @@
|
||||
"inputsNone": "بدون ورودی",
|
||||
"inputsNoneTooltip": "این نود ورودی ندارد",
|
||||
"locateNode": "یافتن node در canvas",
|
||||
"missingModels": {
|
||||
"alreadyExistsInCategory": "این مدل قبلاً در «{category}» وجود دارد",
|
||||
"assetLoadTimeout": "شناسایی مدل زمانبر شد. لطفاً workflow را مجدداً بارگذاری کنید.",
|
||||
"cancelSelection": "لغو انتخاب",
|
||||
"clearUrl": "پاک کردن آدرس",
|
||||
"collapseNodes": "مخفی کردن nodeهای مرتبط",
|
||||
"confirmSelection": "تأیید انتخاب",
|
||||
"copyModelName": "کپی نام مدل",
|
||||
"customNodeDownloadDisabled": "محیط ابری از وارد کردن مدل برای custom nodeها در این بخش پشتیبانی نمیکند. لطفاً از nodeهای بارگذار استاندارد استفاده کنید یا مدلی از کتابخانه زیر جایگزین نمایید.",
|
||||
"expandNodes": "نمایش nodeهای مرتبط",
|
||||
"import": "وارد کردن",
|
||||
"importAnyway": "به هر حال وارد کن",
|
||||
"importFailed": "وارد کردن انجام نشد",
|
||||
"importNotSupported": "وارد کردن پشتیبانی نمیشود",
|
||||
"imported": "وارد شد",
|
||||
"importing": "در حال وارد کردن...",
|
||||
"locateNode": "یافتن node در بوم",
|
||||
"metadataFetchFailed": "دریافت اطلاعات مدل انجام نشد. لطفاً لینک را بررسی و دوباره تلاش کنید.",
|
||||
"missingModelsTitle": "مدلهای مفقود شده",
|
||||
"or": "یا",
|
||||
"typeMismatch": "به نظر میرسد این مدل از نوع \"{detectedType}\" باشد. مطمئن هستید؟",
|
||||
"unknownCategory": "نامشخص",
|
||||
"unsupportedUrl": "فقط آدرسهای Civitai و Hugging Face پشتیبانی میشوند.",
|
||||
"urlPlaceholder": "آدرس مدل را وارد کنید (Civitai یا Hugging Face)",
|
||||
"useFromLibrary": "استفاده از کتابخانه",
|
||||
"usingFromLibrary": "در حال استفاده از کتابخانه"
|
||||
},
|
||||
"missingNodePacks": {
|
||||
"applyChanges": "اعمال تغییرات",
|
||||
"cloudMessage": "این workflow به nodeهای سفارشی نیاز دارد که هنوز در Comfy Cloud موجود نیستند.",
|
||||
@@ -3310,7 +3250,6 @@
|
||||
"interrupted": "اجرا متوقف شد",
|
||||
"legacyMaskEditorDeprecated": "ویرایشگر mask قدیمی منسوخ شده و بهزودی حذف خواهد شد.",
|
||||
"migrateToLitegraphReroute": "nodeهای reroute در نسخههای آینده حذف خواهند شد. برای مهاجرت به reroute بومی litegraph کلیک کنید.",
|
||||
"missingModelVerificationFailed": "تأیید مدلهای مفقود شده انجام نشد. برخی مدلها ممکن است در برگه خطاها نمایش داده نشوند.",
|
||||
"modelLoadedSuccessfully": "مدل سهبعدی با موفقیت بارگذاری شد",
|
||||
"no3dScene": "صحنه سهبعدی برای اعمال بافت وجود ندارد",
|
||||
"no3dSceneToExport": "صحنه سهبعدی برای صادرات وجود ندارد",
|
||||
|
||||
@@ -3207,21 +3207,6 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"FluxKVCache": {
|
||||
"description": "بهینهسازی KV Cache را برای تصاویر مرجع در مدلهای خانواده Flux فعال میکند.",
|
||||
"display_name": "Flux KV Cache",
|
||||
"inputs": {
|
||||
"model": {
|
||||
"name": "مدل",
|
||||
"tooltip": "مدلی که قرار است KV Cache روی آن فعال شود."
|
||||
}
|
||||
},
|
||||
"outputs": {
|
||||
"0": {
|
||||
"tooltip": "مدل اصلاحشده با KV Cache فعال."
|
||||
}
|
||||
}
|
||||
},
|
||||
"FluxKontextImageScale": {
|
||||
"description": "این نود تصویر را به اندازهای تغییر میدهد که برای flux kontext بهینهتر باشد.",
|
||||
"display_name": "FluxKontextImageScale",
|
||||
@@ -12870,133 +12855,6 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"ReveImageCreateNode": {
|
||||
"description": "تولید تصویر از توضیحات متنی با استفاده از Reve.",
|
||||
"display_name": "ایجاد تصویر با Reve",
|
||||
"inputs": {
|
||||
"control_after_generate": {
|
||||
"name": "کنترل پس از تولید"
|
||||
},
|
||||
"model": {
|
||||
"name": "مدل",
|
||||
"tooltip": "نسخه مدل مورد استفاده برای تولید."
|
||||
},
|
||||
"model_aspect_ratio": {
|
||||
"name": "نسبت ابعاد"
|
||||
},
|
||||
"model_test_time_scaling": {
|
||||
"name": "مقیاسدهی زمان تست"
|
||||
},
|
||||
"prompt": {
|
||||
"name": "پرامپت",
|
||||
"tooltip": "توضیح متنی تصویر مورد نظر. حداکثر ۲۵۶۰ کاراکتر."
|
||||
},
|
||||
"remove_background": {
|
||||
"name": "حذف پسزمینه",
|
||||
"tooltip": "حذف پسزمینه از تصویر تولید شده. ممکن است هزینه اضافی داشته باشد."
|
||||
},
|
||||
"seed": {
|
||||
"name": "seed",
|
||||
"tooltip": "seed تعیین میکند که node باید دوباره اجرا شود یا خیر؛ نتایج صرفنظر از seed غیرقطعی هستند."
|
||||
},
|
||||
"upscale": {
|
||||
"name": "افزایش وضوح",
|
||||
"tooltip": "افزایش وضوح تصویر تولید شده. ممکن است هزینه اضافی داشته باشد."
|
||||
}
|
||||
},
|
||||
"outputs": {
|
||||
"0": {
|
||||
"tooltip": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"ReveImageEditNode": {
|
||||
"description": "ویرایش تصاویر با استفاده از دستور زبان طبیعی در Reve.",
|
||||
"display_name": "ویرایش تصویر با Reve",
|
||||
"inputs": {
|
||||
"control_after_generate": {
|
||||
"name": "کنترل پس از تولید"
|
||||
},
|
||||
"edit_instruction": {
|
||||
"name": "دستور ویرایش",
|
||||
"tooltip": "توضیح متنی نحوه ویرایش تصویر. حداکثر ۲۵۶۰ کاراکتر."
|
||||
},
|
||||
"image": {
|
||||
"name": "تصویر",
|
||||
"tooltip": "تصویری که باید ویرایش شود."
|
||||
},
|
||||
"model": {
|
||||
"name": "مدل",
|
||||
"tooltip": "نسخه مدل مورد استفاده برای ویرایش."
|
||||
},
|
||||
"model_aspect_ratio": {
|
||||
"name": "نسبت ابعاد"
|
||||
},
|
||||
"model_test_time_scaling": {
|
||||
"name": "مقیاسدهی زمان تست"
|
||||
},
|
||||
"remove_background": {
|
||||
"name": "حذف پسزمینه",
|
||||
"tooltip": "حذف پسزمینه از تصویر تولید شده. ممکن است هزینه اضافی داشته باشد."
|
||||
},
|
||||
"seed": {
|
||||
"name": "seed",
|
||||
"tooltip": "seed تعیین میکند که node باید دوباره اجرا شود یا خیر؛ نتایج صرفنظر از seed غیرقطعی هستند."
|
||||
},
|
||||
"upscale": {
|
||||
"name": "افزایش وضوح",
|
||||
"tooltip": "افزایش وضوح تصویر تولید شده. ممکن است هزینه اضافی داشته باشد."
|
||||
}
|
||||
},
|
||||
"outputs": {
|
||||
"0": {
|
||||
"tooltip": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"ReveImageRemixNode": {
|
||||
"description": "ترکیب تصاویر مرجع با پرامپت متنی برای ایجاد تصاویر جدید با استفاده از Reve.",
|
||||
"display_name": "ترکیب تصویر با Reve",
|
||||
"inputs": {
|
||||
"control_after_generate": {
|
||||
"name": "کنترل پس از تولید"
|
||||
},
|
||||
"model": {
|
||||
"name": "مدل",
|
||||
"tooltip": "نسخه مدل مورد استفاده برای ترکیب."
|
||||
},
|
||||
"model_aspect_ratio": {
|
||||
"name": "نسبت ابعاد"
|
||||
},
|
||||
"model_test_time_scaling": {
|
||||
"name": "مقیاسدهی زمان تست"
|
||||
},
|
||||
"prompt": {
|
||||
"name": "پرامپت",
|
||||
"tooltip": "توضیح متنی تصویر مورد نظر. میتوانید از تگ XML img برای ارجاع به تصاویر خاص با شماره اندیس استفاده کنید، مانند <img>۰</img>، <img>۱</img> و غیره."
|
||||
},
|
||||
"reference_images": {
|
||||
"name": "تصاویر مرجع"
|
||||
},
|
||||
"remove_background": {
|
||||
"name": "حذف پسزمینه",
|
||||
"tooltip": "حذف پسزمینه از تصویر تولید شده. ممکن است هزینه اضافی داشته باشد."
|
||||
},
|
||||
"seed": {
|
||||
"name": "seed",
|
||||
"tooltip": "seed تعیین میکند که node باید دوباره اجرا شود یا خیر؛ نتایج صرفنظر از seed غیرقطعی هستند."
|
||||
},
|
||||
"upscale": {
|
||||
"name": "افزایش وضوح",
|
||||
"tooltip": "افزایش وضوح تصویر تولید شده. ممکن است هزینه اضافی داشته باشد."
|
||||
}
|
||||
},
|
||||
"outputs": {
|
||||
"0": {
|
||||
"tooltip": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"Rodin3D_Detail": {
|
||||
"description": "تولید داراییهای سهبعدی با استفاده از Rodin API",
|
||||
"display_name": "Rodin 3D Generate - تولید جزئیات",
|
||||
|
||||
@@ -936,8 +936,6 @@
|
||||
"batchRename": "Renommer en lot",
|
||||
"beta": "BÊTA",
|
||||
"bookmark": "Enregistrer dans la bibliothèque",
|
||||
"browserReservedKeybinding": "Ce raccourci est réservé par certains navigateurs et peut entraîner des résultats inattendus.",
|
||||
"browserReservedKeybindingTooltip": "Ce raccourci est en conflit avec des raccourcis réservés du navigateur",
|
||||
"calculatingDimensions": "Calcul des dimensions",
|
||||
"cancel": "Annuler",
|
||||
"cancelled": "Annulé",
|
||||
@@ -972,7 +970,6 @@
|
||||
"copy": "Copier",
|
||||
"copyAll": "Tout copier",
|
||||
"copyJobId": "Copier l'ID du travail",
|
||||
"copySystemInfo": "Copier les informations système",
|
||||
"copyToClipboard": "Copier dans le presse-papiers",
|
||||
"copyURL": "Copier l’URL",
|
||||
"core": "Noyau",
|
||||
@@ -1019,7 +1016,6 @@
|
||||
"enterNewName": "Entrez le nouveau nom",
|
||||
"enterNewNamePrompt": "Entrez le nouveau nom :",
|
||||
"enterSubgraph": "Entrer dans le sous-graphe",
|
||||
"enterYourKeybind": "Saisissez votre raccourci",
|
||||
"error": "Erreur",
|
||||
"errorLoadingImage": "Erreur lors du chargement de l'image",
|
||||
"errorLoadingVideo": "Erreur lors du chargement de la vidéo",
|
||||
@@ -1089,7 +1085,6 @@
|
||||
"micPermissionDenied": "Permission du microphone refusée",
|
||||
"migrate": "Migrer",
|
||||
"missing": "Manquant",
|
||||
"modifyKeybinding": "Modifier le raccourci clavier",
|
||||
"more": "Plus",
|
||||
"moreOptions": "Plus d'options",
|
||||
"moreWorkflows": "Plus de workflows",
|
||||
@@ -1098,7 +1093,6 @@
|
||||
"name": "Nom",
|
||||
"newFolder": "Nouveau dossier",
|
||||
"next": "Suivant",
|
||||
"nextImage": "Image suivante",
|
||||
"nightly": "NIGHTLY",
|
||||
"no": "Non",
|
||||
"noAudioRecorded": "Aucun audio enregistré",
|
||||
@@ -1132,8 +1126,8 @@
|
||||
"playRecording": "Lire l'enregistrement",
|
||||
"playbackSpeed": "Vitesse de lecture",
|
||||
"playing": "Lecture en cours",
|
||||
"pressKeysForNewBinding": "Appuyez sur les touches pour une nouvelle liaison",
|
||||
"preview": "APERÇU",
|
||||
"previousImage": "Image précédente",
|
||||
"profile": "Profil",
|
||||
"progressCountOf": "sur",
|
||||
"queued": "En file d’attente",
|
||||
@@ -1173,7 +1167,6 @@
|
||||
"resultsCount": "{count} Résultats Trouvés",
|
||||
"running": "En cours",
|
||||
"save": "Enregistrer",
|
||||
"saveAnyway": "Enregistrer quand même",
|
||||
"saving": "Enregistrement",
|
||||
"scrollLeft": "Faire défiler à gauche",
|
||||
"scrollRight": "Faire défiler à droite",
|
||||
@@ -1192,7 +1185,6 @@
|
||||
"selectItemsToDuplicate": "Sélectionnez les éléments à dupliquer",
|
||||
"selectItemsToRename": "Sélectionnez les éléments à renommer",
|
||||
"selectedFile": "Fichier sélectionné",
|
||||
"setAKeybindingForTheFollowing": "Définir un raccourci clavier pour :",
|
||||
"setAsBackground": "Définir comme arrière-plan",
|
||||
"settings": "Paramètres",
|
||||
"shortcutSuffix": " ({shortcut})",
|
||||
@@ -1208,8 +1200,6 @@
|
||||
"stopRecording": "Arrêter l’enregistrement",
|
||||
"submit": "Soumettre",
|
||||
"success": "Succès",
|
||||
"switchToGridView": "Passer à la vue grille",
|
||||
"switchToSingleView": "Passer à la vue unique",
|
||||
"systemInfo": "Informations système",
|
||||
"terminal": "Terminal",
|
||||
"title": "Titre",
|
||||
@@ -1239,8 +1229,6 @@
|
||||
"you": "Vous"
|
||||
},
|
||||
"graphCanvasMenu": {
|
||||
"canvasMode": "Mode canevas",
|
||||
"canvasToolbar": "Barre d’outils du canevas",
|
||||
"fitView": "Adapter la vue",
|
||||
"focusMode": "Mode focus",
|
||||
"hand": "Main",
|
||||
@@ -1477,26 +1465,12 @@
|
||||
"dragAndDropImage": "Glissez-déposez une image",
|
||||
"emptyWorkflowExplanation": "Votre workflow est vide. Vous devez d'abord ajouter des nodes pour commencer à créer une application.",
|
||||
"enterNodeGraph": "Entrer dans le graphique de nœuds",
|
||||
"error": {
|
||||
"getHelp": "Pour obtenir de l’aide, consultez notre {0}, {1} ou {2} avec l’erreur copiée.",
|
||||
"github": "soumettre un ticket GitHub",
|
||||
"goto": "Afficher les erreurs dans le graphe",
|
||||
"guide": "guide de dépannage",
|
||||
"header": "Une erreur est survenue dans cette application",
|
||||
"log": "Journaux d’erreurs",
|
||||
"mobileFixable": "Vérifiez {0} pour les erreurs",
|
||||
"promptShow": "Afficher le rapport d’erreur",
|
||||
"promptVisitGraph": "Consultez le graphe des nœuds pour voir l’erreur complète.",
|
||||
"requiresGraph": "Une erreur s’est produite lors de la génération. Cela peut être dû à des entrées cachées invalides, des ressources manquantes ou des problèmes de configuration du workflow.",
|
||||
"support": "contacter notre support"
|
||||
},
|
||||
"giveFeedback": "Donner un avis",
|
||||
"graphMode": "Mode graphique",
|
||||
"hasCreditCost": "Nécessite des crédits supplémentaires",
|
||||
"linearMode": "Mode App",
|
||||
"loadTemplate": "Charger un modèle",
|
||||
"mobileControls": "Éditer & Exécuter",
|
||||
"mobileNoWorkflow": "Ce workflow n’a pas été conçu pour le mode application. Essayez-en un autre.",
|
||||
"queue": {
|
||||
"clear": "Vider la file d'attente",
|
||||
"clickToClear": "Cliquez pour vider la file d'attente"
|
||||
@@ -1504,7 +1478,6 @@
|
||||
"rerun": "Relancer",
|
||||
"reuseParameters": "Réutiliser les paramètres",
|
||||
"runCount": "Nombre d’exécutions :",
|
||||
"viewGraph": "Voir le graphe des nœuds",
|
||||
"viewJob": "Voir la tâche",
|
||||
"welcome": {
|
||||
"buildApp": "Créer une application",
|
||||
@@ -1713,7 +1686,6 @@
|
||||
"installedSection": "INSTALLÉ",
|
||||
"missingNodes": "Nœuds manquants",
|
||||
"notInstalled": "Non installé",
|
||||
"unresolvedNodes": "Nœuds non résolus",
|
||||
"updatesAvailable": "Mises à jour disponibles"
|
||||
},
|
||||
"nightlyVersion": "Nocturne",
|
||||
@@ -1760,10 +1732,6 @@
|
||||
"uninstall": "Désinstaller",
|
||||
"uninstallSelected": "Désinstaller sélectionné",
|
||||
"uninstalling": "Désinstallation",
|
||||
"unresolvedNodes": {
|
||||
"message": "Les nœuds suivants ne sont pas installés et n'ont pas pu être trouvés dans le registre.",
|
||||
"title": "Nœuds manquants non résolus"
|
||||
},
|
||||
"update": "Mettre à jour",
|
||||
"updateAll": "Tout mettre à jour",
|
||||
"updateSelected": "Mettre à jour la sélection",
|
||||
@@ -2112,7 +2080,6 @@
|
||||
"OpenAI": "OpenAI",
|
||||
"PixVerse": "PixVerse",
|
||||
"Recraft": "Recraft",
|
||||
"Reve": "Reve",
|
||||
"Rodin": "Rodin",
|
||||
"Runway": "Runway",
|
||||
"Sora": "Sora",
|
||||
@@ -2412,33 +2379,6 @@
|
||||
"inputsNone": "AUCUNE ENTRÉE",
|
||||
"inputsNoneTooltip": "Le nœud n’a pas d’entrées",
|
||||
"locateNode": "Localiser le nœud sur le canevas",
|
||||
"missingModels": {
|
||||
"alreadyExistsInCategory": "Ce modèle existe déjà dans « {category} »",
|
||||
"assetLoadTimeout": "Le délai de détection du modèle est dépassé. Essayez de recharger le workflow.",
|
||||
"cancelSelection": "Annuler la sélection",
|
||||
"clearUrl": "Effacer l’URL",
|
||||
"collapseNodes": "Masquer les nœuds référencés",
|
||||
"confirmSelection": "Confirmer la sélection",
|
||||
"copyModelName": "Copier le nom du modèle",
|
||||
"customNodeDownloadDisabled": "L’environnement cloud ne prend pas en charge l’importation de modèles pour les nœuds personnalisés dans cette section. Veuillez utiliser des nœuds de chargement standard ou remplacer par un modèle de la bibliothèque ci-dessous.",
|
||||
"expandNodes": "Afficher les nœuds référencés",
|
||||
"import": "Importer",
|
||||
"importAnyway": "Importer quand même",
|
||||
"importFailed": "Échec de l’importation",
|
||||
"importNotSupported": "Importation non prise en charge",
|
||||
"imported": "Importé",
|
||||
"importing": "Importation...",
|
||||
"locateNode": "Localiser le nœud sur le canevas",
|
||||
"metadataFetchFailed": "Échec de la récupération des métadonnées. Veuillez vérifier le lien et réessayer.",
|
||||
"missingModelsTitle": "Modèles manquants",
|
||||
"or": "OU",
|
||||
"typeMismatch": "Ce modèle semble être un(e) « {detectedType} ». Êtes-vous sûr ?",
|
||||
"unknownCategory": "Inconnu",
|
||||
"unsupportedUrl": "Seules les URL Civitai et Hugging Face sont prises en charge.",
|
||||
"urlPlaceholder": "Collez l’URL du modèle (Civitai ou Hugging Face)",
|
||||
"useFromLibrary": "Utiliser depuis la bibliothèque",
|
||||
"usingFromLibrary": "Utilisation depuis la bibliothèque"
|
||||
},
|
||||
"missingNodePacks": {
|
||||
"applyChanges": "Appliquer les modifications",
|
||||
"cloudMessage": "Ce workflow nécessite des nœuds personnalisés qui ne sont pas encore disponibles sur Comfy Cloud.",
|
||||
@@ -3298,7 +3238,6 @@
|
||||
"interrupted": "L'exécution a été interrompue",
|
||||
"legacyMaskEditorDeprecated": "L’éditeur de masque hérité est obsolète et sera bientôt supprimé.",
|
||||
"migrateToLitegraphReroute": "Les nœuds de reroute seront supprimés dans les futures versions. Cliquez pour migrer vers le reroute natif de litegraph.",
|
||||
"missingModelVerificationFailed": "Échec de la vérification des modèles manquants. Certains modèles peuvent ne pas apparaître dans l’onglet Erreurs.",
|
||||
"modelLoadedSuccessfully": "Modèle 3D chargé avec succès",
|
||||
"no3dScene": "Aucune scène 3D pour appliquer la texture",
|
||||
"no3dSceneToExport": "Aucune scène 3D à exporter",
|
||||
|
||||
@@ -3207,21 +3207,6 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"FluxKVCache": {
|
||||
"description": "Active l’optimisation KV Cache pour les images de référence sur les modèles de la famille Flux.",
|
||||
"display_name": "Flux KV Cache",
|
||||
"inputs": {
|
||||
"model": {
|
||||
"name": "modèle",
|
||||
"tooltip": "Le modèle sur lequel activer le KV Cache."
|
||||
}
|
||||
},
|
||||
"outputs": {
|
||||
"0": {
|
||||
"tooltip": "Le modèle modifié avec le KV Cache activé."
|
||||
}
|
||||
}
|
||||
},
|
||||
"FluxKontextImageScale": {
|
||||
"description": "Ce nœud redimensionne l'image pour une optimisation avec flux kontext.",
|
||||
"display_name": "Échelle d'image FluxKontext",
|
||||
@@ -12870,133 +12855,6 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"ReveImageCreateNode": {
|
||||
"description": "Générez des images à partir de descriptions textuelles avec Reve.",
|
||||
"display_name": "Reve Création d’Image",
|
||||
"inputs": {
|
||||
"control_after_generate": {
|
||||
"name": "contrôle après génération"
|
||||
},
|
||||
"model": {
|
||||
"name": "modèle",
|
||||
"tooltip": "Version du modèle à utiliser pour la génération."
|
||||
},
|
||||
"model_aspect_ratio": {
|
||||
"name": "rapport d’aspect"
|
||||
},
|
||||
"model_test_time_scaling": {
|
||||
"name": "mise à l’échelle à l’exécution"
|
||||
},
|
||||
"prompt": {
|
||||
"name": "prompt",
|
||||
"tooltip": "Description textuelle de l’image souhaitée. Maximum 2560 caractères."
|
||||
},
|
||||
"remove_background": {
|
||||
"name": "supprimer l’arrière-plan",
|
||||
"tooltip": "Supprimer l’arrière-plan de l’image générée. Peut entraîner un coût supplémentaire."
|
||||
},
|
||||
"seed": {
|
||||
"name": "graine",
|
||||
"tooltip": "La graine contrôle si le nœud doit être relancé ; les résultats restent non déterministes quel que soit la graine."
|
||||
},
|
||||
"upscale": {
|
||||
"name": "agrandir",
|
||||
"tooltip": "Agrandir l’image générée. Peut entraîner un coût supplémentaire."
|
||||
}
|
||||
},
|
||||
"outputs": {
|
||||
"0": {
|
||||
"tooltip": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"ReveImageEditNode": {
|
||||
"description": "Modifiez des images à l’aide d’instructions en langage naturel avec Reve.",
|
||||
"display_name": "Reve Édition d’Image",
|
||||
"inputs": {
|
||||
"control_after_generate": {
|
||||
"name": "contrôle après génération"
|
||||
},
|
||||
"edit_instruction": {
|
||||
"name": "instruction d’édition",
|
||||
"tooltip": "Description textuelle de la modification à apporter à l’image. Maximum 2560 caractères."
|
||||
},
|
||||
"image": {
|
||||
"name": "image",
|
||||
"tooltip": "L’image à modifier."
|
||||
},
|
||||
"model": {
|
||||
"name": "modèle",
|
||||
"tooltip": "Version du modèle à utiliser pour l’édition."
|
||||
},
|
||||
"model_aspect_ratio": {
|
||||
"name": "rapport d’aspect"
|
||||
},
|
||||
"model_test_time_scaling": {
|
||||
"name": "mise à l’échelle à l’exécution"
|
||||
},
|
||||
"remove_background": {
|
||||
"name": "supprimer l’arrière-plan",
|
||||
"tooltip": "Supprimer l’arrière-plan de l’image générée. Peut entraîner un coût supplémentaire."
|
||||
},
|
||||
"seed": {
|
||||
"name": "graine",
|
||||
"tooltip": "La graine contrôle si le nœud doit être relancé ; les résultats restent non déterministes quel que soit la graine."
|
||||
},
|
||||
"upscale": {
|
||||
"name": "agrandir",
|
||||
"tooltip": "Agrandir l’image générée. Peut entraîner un coût supplémentaire."
|
||||
}
|
||||
},
|
||||
"outputs": {
|
||||
"0": {
|
||||
"tooltip": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"ReveImageRemixNode": {
|
||||
"description": "Combinez des images de référence avec des prompts textuels pour créer de nouvelles images avec Reve.",
|
||||
"display_name": "Reve Remix d’Image",
|
||||
"inputs": {
|
||||
"control_after_generate": {
|
||||
"name": "contrôle après génération"
|
||||
},
|
||||
"model": {
|
||||
"name": "modèle",
|
||||
"tooltip": "Version du modèle à utiliser pour le remix."
|
||||
},
|
||||
"model_aspect_ratio": {
|
||||
"name": "rapport d’aspect"
|
||||
},
|
||||
"model_test_time_scaling": {
|
||||
"name": "mise à l’échelle à l’exécution"
|
||||
},
|
||||
"prompt": {
|
||||
"name": "prompt",
|
||||
"tooltip": "Description textuelle de l’image souhaitée. Peut inclure des balises XML img pour référencer des images spécifiques par index, par exemple <img>0</img>, <img>1</img>, etc."
|
||||
},
|
||||
"reference_images": {
|
||||
"name": "images de référence"
|
||||
},
|
||||
"remove_background": {
|
||||
"name": "supprimer l’arrière-plan",
|
||||
"tooltip": "Supprimer l’arrière-plan de l’image générée. Peut entraîner un coût supplémentaire."
|
||||
},
|
||||
"seed": {
|
||||
"name": "graine",
|
||||
"tooltip": "La graine contrôle si le nœud doit être relancé ; les résultats restent non déterministes quel que soit la graine."
|
||||
},
|
||||
"upscale": {
|
||||
"name": "agrandir",
|
||||
"tooltip": "Agrandir l’image générée. Peut entraîner un coût supplémentaire."
|
||||
}
|
||||
},
|
||||
"outputs": {
|
||||
"0": {
|
||||
"tooltip": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"Rodin3D_Detail": {
|
||||
"description": "Générer des actifs 3D en utilisant l'API Rodin",
|
||||
"display_name": "Rodin 3D Générer - Générer Détails",
|
||||
|
||||
@@ -936,8 +936,6 @@
|
||||
"batchRename": "一括リネーム",
|
||||
"beta": "ベータ版",
|
||||
"bookmark": "ライブラリに保存",
|
||||
"browserReservedKeybinding": "このショートカットは一部のブラウザで予約されており、予期しない動作を引き起こす可能性があります。",
|
||||
"browserReservedKeybindingTooltip": "このショートカットはブラウザの予約済みショートカットと競合しています",
|
||||
"calculatingDimensions": "寸法を計算中",
|
||||
"cancel": "キャンセル",
|
||||
"cancelled": "キャンセル済み",
|
||||
@@ -972,7 +970,6 @@
|
||||
"copy": "コピー",
|
||||
"copyAll": "すべてコピー",
|
||||
"copyJobId": "ジョブIDをコピー",
|
||||
"copySystemInfo": "システム情報をコピー",
|
||||
"copyToClipboard": "クリップボードにコピー",
|
||||
"copyURL": "URLをコピー",
|
||||
"core": "コア",
|
||||
@@ -1019,7 +1016,6 @@
|
||||
"enterNewName": "新しい名前を入力",
|
||||
"enterNewNamePrompt": "新しい名前を入力してください:",
|
||||
"enterSubgraph": "サブグラフに入る",
|
||||
"enterYourKeybind": "キーバインドを入力してください",
|
||||
"error": "エラー",
|
||||
"errorLoadingImage": "画像の読み込みエラー",
|
||||
"errorLoadingVideo": "ビデオの読み込みエラー",
|
||||
@@ -1089,7 +1085,6 @@
|
||||
"micPermissionDenied": "マイクの許可が拒否されました",
|
||||
"migrate": "移行する",
|
||||
"missing": "不足している",
|
||||
"modifyKeybinding": "キーバインドを変更",
|
||||
"more": "もっと見る",
|
||||
"moreOptions": "その他のオプション",
|
||||
"moreWorkflows": "さらに多くのワークフロー",
|
||||
@@ -1098,7 +1093,6 @@
|
||||
"name": "名前",
|
||||
"newFolder": "新しいフォルダー",
|
||||
"next": "次へ",
|
||||
"nextImage": "次の画像",
|
||||
"nightly": "NIGHTLY",
|
||||
"no": "いいえ",
|
||||
"noAudioRecorded": "音声が録音されていません",
|
||||
@@ -1132,8 +1126,8 @@
|
||||
"playRecording": "録音を再生",
|
||||
"playbackSpeed": "再生速度",
|
||||
"playing": "再生中",
|
||||
"pressKeysForNewBinding": "新しいバインドのキーを押してください",
|
||||
"preview": "プレビュー",
|
||||
"previousImage": "前の画像",
|
||||
"profile": "プロフィール",
|
||||
"progressCountOf": "の",
|
||||
"queued": "キュー中",
|
||||
@@ -1173,7 +1167,6 @@
|
||||
"resultsCount": "{count}件の結果が見つかりました",
|
||||
"running": "実行中",
|
||||
"save": "保存",
|
||||
"saveAnyway": "強制的に保存",
|
||||
"saving": "保存中",
|
||||
"scrollLeft": "左にスクロール",
|
||||
"scrollRight": "右にスクロール",
|
||||
@@ -1192,7 +1185,6 @@
|
||||
"selectItemsToDuplicate": "複製する項目を選択",
|
||||
"selectItemsToRename": "リネームする項目を選択",
|
||||
"selectedFile": "選択されたファイル",
|
||||
"setAKeybindingForTheFollowing": "次の操作のキーバインドを設定:",
|
||||
"setAsBackground": "背景として設定",
|
||||
"settings": "設定",
|
||||
"shortcutSuffix": "({shortcut})",
|
||||
@@ -1208,8 +1200,6 @@
|
||||
"stopRecording": "録音停止",
|
||||
"submit": "送信",
|
||||
"success": "成功",
|
||||
"switchToGridView": "グリッドビューに切り替え",
|
||||
"switchToSingleView": "シングルビューに切り替え",
|
||||
"systemInfo": "システム情報",
|
||||
"terminal": "ターミナル",
|
||||
"title": "タイトル",
|
||||
@@ -1239,8 +1229,6 @@
|
||||
"you": "あなた"
|
||||
},
|
||||
"graphCanvasMenu": {
|
||||
"canvasMode": "キャンバスモード",
|
||||
"canvasToolbar": "キャンバスツールバー",
|
||||
"fitView": "ビューに合わせる",
|
||||
"focusMode": "フォーカスモード",
|
||||
"hand": "パンビュー",
|
||||
@@ -1477,26 +1465,12 @@
|
||||
"dragAndDropImage": "画像をドラッグ&ドロップ",
|
||||
"emptyWorkflowExplanation": "ワークフローが空です。アプリを作成するには、まずノードを追加してください。",
|
||||
"enterNodeGraph": "ノードグラフに入る",
|
||||
"error": {
|
||||
"getHelp": "ヘルプが必要な場合は、コピーしたエラーを使って{0}、{1}、または{2}をご覧ください。",
|
||||
"github": "GitHub イシューを提出",
|
||||
"goto": "グラフでエラーを表示",
|
||||
"guide": "トラブルシューティングガイド",
|
||||
"header": "このアプリでエラーが発生しました",
|
||||
"log": "エラーログ",
|
||||
"mobileFixable": "{0}でエラーを確認してください",
|
||||
"promptShow": "エラーレポートを表示",
|
||||
"promptVisitGraph": "ノードグラフを表示して、エラーの詳細を確認してください。",
|
||||
"requiresGraph": "生成中に問題が発生しました。無効な非表示入力、リソースの不足、またはワークフロー設定の問題が原因の可能性があります。",
|
||||
"support": "サポートに連絡"
|
||||
},
|
||||
"giveFeedback": "フィードバックを送る",
|
||||
"graphMode": "グラフモード",
|
||||
"hasCreditCost": "追加クレジットが必要です",
|
||||
"linearMode": "アプリモード",
|
||||
"loadTemplate": "テンプレートを読み込む",
|
||||
"mobileControls": "編集と実行",
|
||||
"mobileNoWorkflow": "このワークフローはアプリモード用に作成されていません。別のものをお試しください。",
|
||||
"queue": {
|
||||
"clear": "キューをクリア",
|
||||
"clickToClear": "クリックしてキューをクリア"
|
||||
@@ -1504,7 +1478,6 @@
|
||||
"rerun": "再実行",
|
||||
"reuseParameters": "パラメータを再利用",
|
||||
"runCount": "実行回数:",
|
||||
"viewGraph": "ノードグラフを表示",
|
||||
"viewJob": "ジョブを表示",
|
||||
"welcome": {
|
||||
"buildApp": "アプリを作成",
|
||||
@@ -1713,7 +1686,6 @@
|
||||
"installedSection": "インストール済み",
|
||||
"missingNodes": "不足しているノード",
|
||||
"notInstalled": "未インストール",
|
||||
"unresolvedNodes": "未解決ノード",
|
||||
"updatesAvailable": "アップデートあり"
|
||||
},
|
||||
"nightlyVersion": "ナイトリー",
|
||||
@@ -1760,10 +1732,6 @@
|
||||
"uninstall": "アンインストール",
|
||||
"uninstallSelected": "選択したものをアンインストール",
|
||||
"uninstalling": "アンインストール中",
|
||||
"unresolvedNodes": {
|
||||
"message": "以下のノードがインストールされておらず、レジストリで見つかりませんでした。",
|
||||
"title": "未解決の欠落ノード"
|
||||
},
|
||||
"update": "更新",
|
||||
"updateAll": "すべて更新",
|
||||
"updateSelected": "選択したものを更新",
|
||||
@@ -2112,7 +2080,6 @@
|
||||
"OpenAI": "OpenAI",
|
||||
"PixVerse": "PixVerse",
|
||||
"Recraft": "Recraft",
|
||||
"Reve": "Reve",
|
||||
"Rodin": "Rodin",
|
||||
"Runway": "Runway",
|
||||
"Sora": "Sora",
|
||||
@@ -2412,33 +2379,6 @@
|
||||
"inputsNone": "入力なし",
|
||||
"inputsNoneTooltip": "このノードには入力がありません",
|
||||
"locateNode": "キャンバス上でノードを探す",
|
||||
"missingModels": {
|
||||
"alreadyExistsInCategory": "このモデルはすでに「{category}」に存在します",
|
||||
"assetLoadTimeout": "モデルの検出がタイムアウトしました。ワークフローを再読み込みしてください。",
|
||||
"cancelSelection": "選択をキャンセル",
|
||||
"clearUrl": "URLをクリア",
|
||||
"collapseNodes": "参照ノードを非表示",
|
||||
"confirmSelection": "選択を確定",
|
||||
"copyModelName": "モデル名をコピー",
|
||||
"customNodeDownloadDisabled": "クラウド環境ではこのセクションのカスタムノード用モデルのインポートはサポートされていません。標準のローダーノードを使用するか、下記のライブラリからモデルを代用してください。",
|
||||
"expandNodes": "参照ノードを表示",
|
||||
"import": "インポート",
|
||||
"importAnyway": "強制的にインポート",
|
||||
"importFailed": "インポートに失敗しました",
|
||||
"importNotSupported": "インポートはサポートされていません",
|
||||
"imported": "インポート完了",
|
||||
"importing": "インポート中...",
|
||||
"locateNode": "キャンバス上でノードを表示",
|
||||
"metadataFetchFailed": "メタデータの取得に失敗しました。リンクを確認して再試行してください。",
|
||||
"missingModelsTitle": "不足しているモデル",
|
||||
"or": "または",
|
||||
"typeMismatch": "このモデルは「{detectedType}」のようです。本当に続行しますか?",
|
||||
"unknownCategory": "不明",
|
||||
"unsupportedUrl": "Civitai と Hugging Face のURLのみサポートされています。",
|
||||
"urlPlaceholder": "モデルのURLを貼り付け(Civitai または Hugging Face)",
|
||||
"useFromLibrary": "ライブラリから使用",
|
||||
"usingFromLibrary": "ライブラリから使用中"
|
||||
},
|
||||
"missingNodePacks": {
|
||||
"applyChanges": "変更を適用",
|
||||
"cloudMessage": "このワークフローにはComfy Cloudでまだ利用できないカスタムノードが必要です。",
|
||||
@@ -3298,7 +3238,6 @@
|
||||
"interrupted": "実行が中断されました",
|
||||
"legacyMaskEditorDeprecated": "従来のマスクエディタは非推奨となり、まもなく削除されます。",
|
||||
"migrateToLitegraphReroute": "将来のバージョンではRerouteノードが削除されます。litegraph-native rerouteに移行するにはクリックしてください。",
|
||||
"missingModelVerificationFailed": "不足しているモデルの検証に失敗しました。一部のモデルはエラータブに表示されない場合があります。",
|
||||
"modelLoadedSuccessfully": "3Dモデルが正常に読み込まれました",
|
||||
"no3dScene": "テクスチャを適用する3Dシーンがありません",
|
||||
"no3dSceneToExport": "エクスポートする3Dシーンがありません",
|
||||
|
||||
@@ -3207,21 +3207,6 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"FluxKVCache": {
|
||||
"description": "Fluxファミリーモデルの参照画像に対してKVキャッシュ最適化を有効にします。",
|
||||
"display_name": "Flux KVキャッシュ",
|
||||
"inputs": {
|
||||
"model": {
|
||||
"name": "モデル",
|
||||
"tooltip": "KVキャッシュを使用するモデル。"
|
||||
}
|
||||
},
|
||||
"outputs": {
|
||||
"0": {
|
||||
"tooltip": "KVキャッシュが有効になったパッチ済みモデル。"
|
||||
}
|
||||
}
|
||||
},
|
||||
"FluxKontextImageScale": {
|
||||
"description": "このノードは、Flux Kontextに最適なサイズに画像をリサイズします。",
|
||||
"display_name": "FluxKontextImageScale",
|
||||
@@ -12870,133 +12855,6 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"ReveImageCreateNode": {
|
||||
"description": "Reveを使用してテキスト説明から画像を生成します。",
|
||||
"display_name": "Reve画像生成",
|
||||
"inputs": {
|
||||
"control_after_generate": {
|
||||
"name": "生成後のコントロール"
|
||||
},
|
||||
"model": {
|
||||
"name": "モデル",
|
||||
"tooltip": "生成に使用するモデルバージョン。"
|
||||
},
|
||||
"model_aspect_ratio": {
|
||||
"name": "アスペクト比"
|
||||
},
|
||||
"model_test_time_scaling": {
|
||||
"name": "テスト時スケーリング"
|
||||
},
|
||||
"prompt": {
|
||||
"name": "プロンプト",
|
||||
"tooltip": "生成したい画像のテキスト説明。最大2560文字。"
|
||||
},
|
||||
"remove_background": {
|
||||
"name": "背景を削除",
|
||||
"tooltip": "生成された画像から背景を削除します。追加料金が発生する場合があります。"
|
||||
},
|
||||
"seed": {
|
||||
"name": "シード",
|
||||
"tooltip": "シードはノードの再実行を制御しますが、シードに関わらず結果は非決定的です。"
|
||||
},
|
||||
"upscale": {
|
||||
"name": "アップスケール",
|
||||
"tooltip": "生成された画像をアップスケールします。追加料金が発生する場合があります。"
|
||||
}
|
||||
},
|
||||
"outputs": {
|
||||
"0": {
|
||||
"tooltip": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"ReveImageEditNode": {
|
||||
"description": "Reveを使って自然言語指示で画像を編集します。",
|
||||
"display_name": "Reve画像編集",
|
||||
"inputs": {
|
||||
"control_after_generate": {
|
||||
"name": "生成後のコントロール"
|
||||
},
|
||||
"edit_instruction": {
|
||||
"name": "編集指示",
|
||||
"tooltip": "画像の編集方法のテキスト説明。最大2560文字。"
|
||||
},
|
||||
"image": {
|
||||
"name": "画像",
|
||||
"tooltip": "編集する画像。"
|
||||
},
|
||||
"model": {
|
||||
"name": "モデル",
|
||||
"tooltip": "編集に使用するモデルバージョン。"
|
||||
},
|
||||
"model_aspect_ratio": {
|
||||
"name": "アスペクト比"
|
||||
},
|
||||
"model_test_time_scaling": {
|
||||
"name": "テスト時スケーリング"
|
||||
},
|
||||
"remove_background": {
|
||||
"name": "背景を削除",
|
||||
"tooltip": "生成された画像から背景を削除します。追加料金が発生する場合があります。"
|
||||
},
|
||||
"seed": {
|
||||
"name": "シード",
|
||||
"tooltip": "シードはノードの再実行を制御しますが、シードに関わらず結果は非決定的です。"
|
||||
},
|
||||
"upscale": {
|
||||
"name": "アップスケール",
|
||||
"tooltip": "生成された画像をアップスケールします。追加料金が発生する場合があります。"
|
||||
}
|
||||
},
|
||||
"outputs": {
|
||||
"0": {
|
||||
"tooltip": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"ReveImageRemixNode": {
|
||||
"description": "参照画像とテキストプロンプトを組み合わせてReveで新しい画像を作成します。",
|
||||
"display_name": "Reve画像リミックス",
|
||||
"inputs": {
|
||||
"control_after_generate": {
|
||||
"name": "生成後のコントロール"
|
||||
},
|
||||
"model": {
|
||||
"name": "モデル",
|
||||
"tooltip": "リミックスに使用するモデルバージョン。"
|
||||
},
|
||||
"model_aspect_ratio": {
|
||||
"name": "アスペクト比"
|
||||
},
|
||||
"model_test_time_scaling": {
|
||||
"name": "テスト時スケーリング"
|
||||
},
|
||||
"prompt": {
|
||||
"name": "プロンプト",
|
||||
"tooltip": "生成したい画像のテキスト説明。特定の画像をインデックスで参照するXML imgタグ(例:<img>0</img>, <img>1</img>など)を含めることができます。"
|
||||
},
|
||||
"reference_images": {
|
||||
"name": "参照画像"
|
||||
},
|
||||
"remove_background": {
|
||||
"name": "背景を削除",
|
||||
"tooltip": "生成された画像から背景を削除します。追加料金が発生する場合があります。"
|
||||
},
|
||||
"seed": {
|
||||
"name": "シード",
|
||||
"tooltip": "シードはノードの再実行を制御しますが、シードに関わらず結果は非決定的です。"
|
||||
},
|
||||
"upscale": {
|
||||
"name": "アップスケール",
|
||||
"tooltip": "生成された画像をアップスケールします。追加料金が発生する場合があります。"
|
||||
}
|
||||
},
|
||||
"outputs": {
|
||||
"0": {
|
||||
"tooltip": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"Rodin3D_Detail": {
|
||||
"description": "Rodin APIを使用して3Dアセットを生成",
|
||||
"display_name": "Rodin 3D生成 - 詳細生成",
|
||||
|
||||
@@ -936,8 +936,6 @@
|
||||
"batchRename": "일괄 이름 변경",
|
||||
"beta": "베타",
|
||||
"bookmark": "라이브러리에 저장",
|
||||
"browserReservedKeybinding": "이 단축키는 일부 브라우저에서 예약되어 있어 예기치 않은 결과가 발생할 수 있습니다.",
|
||||
"browserReservedKeybindingTooltip": "이 단축키는 브라우저 예약 단축키와 충돌합니다",
|
||||
"calculatingDimensions": "크기 계산 중",
|
||||
"cancel": "취소",
|
||||
"cancelled": "취소됨",
|
||||
@@ -972,7 +970,6 @@
|
||||
"copy": "복사",
|
||||
"copyAll": "모두 복사",
|
||||
"copyJobId": "작업 ID 복사",
|
||||
"copySystemInfo": "시스템 정보 복사",
|
||||
"copyToClipboard": "클립보드에 복사",
|
||||
"copyURL": "URL 복사",
|
||||
"core": "코어",
|
||||
@@ -1019,7 +1016,6 @@
|
||||
"enterNewName": "새 이름 입력",
|
||||
"enterNewNamePrompt": "새 이름을 입력하세요:",
|
||||
"enterSubgraph": "서브그래프 진입",
|
||||
"enterYourKeybind": "단축키를 입력하세요",
|
||||
"error": "오류",
|
||||
"errorLoadingImage": "이미지 로드 오류",
|
||||
"errorLoadingVideo": "비디오 로드 오류",
|
||||
@@ -1089,7 +1085,6 @@
|
||||
"micPermissionDenied": "마이크 권한이 거부되었습니다",
|
||||
"migrate": "이전(migrate)",
|
||||
"missing": "누락됨",
|
||||
"modifyKeybinding": "단축키 수정",
|
||||
"more": "더보기",
|
||||
"moreOptions": "추가 옵션",
|
||||
"moreWorkflows": "더 많은 워크플로",
|
||||
@@ -1098,7 +1093,6 @@
|
||||
"name": "이름",
|
||||
"newFolder": "새 폴더",
|
||||
"next": "다음",
|
||||
"nextImage": "다음 이미지",
|
||||
"nightly": "NIGHTLY",
|
||||
"no": "아니오",
|
||||
"noAudioRecorded": "녹음된 오디오가 없습니다",
|
||||
@@ -1132,8 +1126,8 @@
|
||||
"playRecording": "녹음 재생",
|
||||
"playbackSpeed": "재생 속도",
|
||||
"playing": "재생 중",
|
||||
"pressKeysForNewBinding": "새 바인딩을 위한 키 입력",
|
||||
"preview": "미리보기",
|
||||
"previousImage": "이전 이미지",
|
||||
"profile": "프로필",
|
||||
"progressCountOf": "중",
|
||||
"queued": "대기 중",
|
||||
@@ -1173,7 +1167,6 @@
|
||||
"resultsCount": "{count} 개의 결과를 찾았습니다",
|
||||
"running": "실행 중",
|
||||
"save": "저장",
|
||||
"saveAnyway": "그래도 저장",
|
||||
"saving": "저장 중",
|
||||
"scrollLeft": "왼쪽으로 스크롤",
|
||||
"scrollRight": "오른쪽으로 스크롤",
|
||||
@@ -1192,7 +1185,6 @@
|
||||
"selectItemsToDuplicate": "복제할 항목 선택",
|
||||
"selectItemsToRename": "이름을 변경할 항목 선택",
|
||||
"selectedFile": "선택된 파일",
|
||||
"setAKeybindingForTheFollowing": "다음에 대한 단축키를 설정하세요:",
|
||||
"setAsBackground": "배경으로 설정",
|
||||
"settings": "설정",
|
||||
"shortcutSuffix": " ({shortcut})",
|
||||
@@ -1208,8 +1200,6 @@
|
||||
"stopRecording": "녹음 중지",
|
||||
"submit": "제출",
|
||||
"success": "성공",
|
||||
"switchToGridView": "그리드 보기로 전환",
|
||||
"switchToSingleView": "단일 보기로 전환",
|
||||
"systemInfo": "시스템 정보",
|
||||
"terminal": "터미널",
|
||||
"title": "제목",
|
||||
@@ -1239,8 +1229,6 @@
|
||||
"you": "당신"
|
||||
},
|
||||
"graphCanvasMenu": {
|
||||
"canvasMode": "캔버스 모드",
|
||||
"canvasToolbar": "캔버스 툴바",
|
||||
"fitView": "보기 맞춤",
|
||||
"focusMode": "집중 모드",
|
||||
"hand": "손",
|
||||
@@ -1477,26 +1465,12 @@
|
||||
"dragAndDropImage": "이미지를 드래그 앤 드롭하세요",
|
||||
"emptyWorkflowExplanation": "워크플로우가 비어 있습니다. 앱을 만들려면 먼저 노드를 추가해야 합니다.",
|
||||
"enterNodeGraph": "노드 그래프로 진입",
|
||||
"error": {
|
||||
"getHelp": "도움이 필요하다면 복사된 오류와 함께 {0}, {1}, 또는 {2}를 확인하세요.",
|
||||
"github": "GitHub 이슈 제출",
|
||||
"goto": "그래프에서 오류 보기",
|
||||
"guide": "문제 해결 가이드",
|
||||
"header": "앱에서 오류가 발생했습니다",
|
||||
"log": "오류 로그",
|
||||
"mobileFixable": "{0}에서 오류를 확인하세요",
|
||||
"promptShow": "오류 보고서 보기",
|
||||
"promptVisitGraph": "전체 오류를 보려면 노드 그래프를 확인하세요.",
|
||||
"requiresGraph": "생성 중 문제가 발생했습니다. 잘못된 숨겨진 입력, 누락된 리소스 또는 워크플로우 구성 문제일 수 있습니다.",
|
||||
"support": "고객 지원 문의"
|
||||
},
|
||||
"giveFeedback": "피드백 보내기",
|
||||
"graphMode": "그래프 모드",
|
||||
"hasCreditCost": "추가 크레딧 필요",
|
||||
"linearMode": "앱 모드",
|
||||
"loadTemplate": "템플릿 불러오기",
|
||||
"mobileControls": "편집 및 실행",
|
||||
"mobileNoWorkflow": "이 워크플로우는 앱 모드에 맞게 제작되지 않았습니다. 다른 워크플로우를 시도해 보세요.",
|
||||
"queue": {
|
||||
"clear": "대기열 비우기",
|
||||
"clickToClear": "클릭하여 대기열 비우기"
|
||||
@@ -1504,7 +1478,6 @@
|
||||
"rerun": "다시 실행",
|
||||
"reuseParameters": "파라미터 재사용",
|
||||
"runCount": "실행 횟수:",
|
||||
"viewGraph": "노드 그래프 보기",
|
||||
"viewJob": "작업 보기",
|
||||
"welcome": {
|
||||
"buildApp": "앱 만들기",
|
||||
@@ -1713,7 +1686,6 @@
|
||||
"installedSection": "설치됨",
|
||||
"missingNodes": "누락된 노드",
|
||||
"notInstalled": "미설치",
|
||||
"unresolvedNodes": "해결되지 않은 노드",
|
||||
"updatesAvailable": "업데이트 가능"
|
||||
},
|
||||
"nightlyVersion": "최신 테스트 버전(nightly)",
|
||||
@@ -1760,10 +1732,6 @@
|
||||
"uninstall": "제거",
|
||||
"uninstallSelected": "선택 항목 제거",
|
||||
"uninstalling": "제거 중",
|
||||
"unresolvedNodes": {
|
||||
"message": "다음 노드가 설치되어 있지 않으며 레지스트리에서 찾을 수 없습니다.",
|
||||
"title": "해결되지 않은 누락된 노드"
|
||||
},
|
||||
"update": "업데이트",
|
||||
"updateAll": "모두 업데이트",
|
||||
"updateSelected": "선택 항목 업데이트",
|
||||
@@ -2112,7 +2080,6 @@
|
||||
"OpenAI": "OpenAI",
|
||||
"PixVerse": "PixVerse",
|
||||
"Recraft": "Recraft",
|
||||
"Reve": "Reve",
|
||||
"Rodin": "Rodin",
|
||||
"Runway": "Runway",
|
||||
"Sora": "Sora",
|
||||
@@ -2412,33 +2379,6 @@
|
||||
"inputsNone": "입력 없음",
|
||||
"inputsNoneTooltip": "노드에 입력이 없습니다",
|
||||
"locateNode": "캔버스에서 노드 찾기",
|
||||
"missingModels": {
|
||||
"alreadyExistsInCategory": "이 모델은 이미 \"{category}\"에 존재합니다",
|
||||
"assetLoadTimeout": "모델 감지 시간이 초과되었습니다. 워크플로우를 다시 불러와 보세요.",
|
||||
"cancelSelection": "선택 취소",
|
||||
"clearUrl": "URL 지우기",
|
||||
"collapseNodes": "참조 노드 숨기기",
|
||||
"confirmSelection": "선택 확인",
|
||||
"copyModelName": "모델 이름 복사",
|
||||
"customNodeDownloadDisabled": "클라우드 환경에서는 이 섹션의 커스텀 노드 모델 가져오기를 지원하지 않습니다. 표준 로더 노드를 사용하거나 아래 라이브러리의 모델로 대체해 주세요.",
|
||||
"expandNodes": "참조 노드 보기",
|
||||
"import": "가져오기",
|
||||
"importAnyway": "그래도 가져오기",
|
||||
"importFailed": "가져오기 실패",
|
||||
"importNotSupported": "가져오기 지원되지 않음",
|
||||
"imported": "가져오기 완료",
|
||||
"importing": "가져오는 중...",
|
||||
"locateNode": "캔버스에서 노드 위치 찾기",
|
||||
"metadataFetchFailed": "메타데이터를 가져오지 못했습니다. 링크를 확인하고 다시 시도하세요.",
|
||||
"missingModelsTitle": "누락된 모델",
|
||||
"or": "또는",
|
||||
"typeMismatch": "이 모델은 \"{detectedType}\"로 보입니다. 계속하시겠습니까?",
|
||||
"unknownCategory": "알 수 없음",
|
||||
"unsupportedUrl": "Civitai와 Hugging Face URL만 지원됩니다.",
|
||||
"urlPlaceholder": "모델 URL 붙여넣기 (Civitai 또는 Hugging Face)",
|
||||
"useFromLibrary": "라이브러리에서 사용",
|
||||
"usingFromLibrary": "라이브러리에서 사용 중"
|
||||
},
|
||||
"missingNodePacks": {
|
||||
"applyChanges": "변경 사항 적용",
|
||||
"cloudMessage": "이 워크플로우에는 Comfy Cloud에서 아직 사용할 수 없는 커스텀 노드가 필요합니다.",
|
||||
@@ -3298,7 +3238,6 @@
|
||||
"interrupted": "실행이 중단되었습니다",
|
||||
"legacyMaskEditorDeprecated": "레거시 마스크 에디터는 더 이상 지원되지 않으며 곧 제거될 예정입니다.",
|
||||
"migrateToLitegraphReroute": "향후 버전에서는 Reroute 노드가 제거됩니다. LiteGraph 에서 자체 제공하는 경유점으로 변환하려면 클릭하세요.",
|
||||
"missingModelVerificationFailed": "누락된 모델 검증에 실패했습니다. 일부 모델이 오류 탭에 표시되지 않을 수 있습니다.",
|
||||
"modelLoadedSuccessfully": "3D 모델이 성공적으로 로드됨",
|
||||
"no3dScene": "텍스처를 적용할 3D 장면이 없습니다",
|
||||
"no3dSceneToExport": "내보낼 3D 장면이 없습니다",
|
||||
|
||||
@@ -3207,21 +3207,6 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"FluxKVCache": {
|
||||
"description": "Flux 계열 모델에서 참조 이미지에 대한 KV 캐시 최적화를 활성화합니다.",
|
||||
"display_name": "Flux KV 캐시",
|
||||
"inputs": {
|
||||
"model": {
|
||||
"name": "모델",
|
||||
"tooltip": "KV 캐시를 사용할 모델입니다."
|
||||
}
|
||||
},
|
||||
"outputs": {
|
||||
"0": {
|
||||
"tooltip": "KV 캐시가 활성화된 패치된 모델입니다."
|
||||
}
|
||||
}
|
||||
},
|
||||
"FluxKontextImageScale": {
|
||||
"description": "이 노드는 이미지를 Flux Kontext에 더 최적화된 크기로 조정합니다.",
|
||||
"display_name": "Flux Kontext 이미지 스케일",
|
||||
@@ -12870,133 +12855,6 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"ReveImageCreateNode": {
|
||||
"description": "Reve를 사용하여 텍스트 설명으로부터 이미지를 생성합니다.",
|
||||
"display_name": "Reve 이미지 생성",
|
||||
"inputs": {
|
||||
"control_after_generate": {
|
||||
"name": "생성 후 제어"
|
||||
},
|
||||
"model": {
|
||||
"name": "모델",
|
||||
"tooltip": "생성에 사용할 모델 버전입니다."
|
||||
},
|
||||
"model_aspect_ratio": {
|
||||
"name": "종횡비"
|
||||
},
|
||||
"model_test_time_scaling": {
|
||||
"name": "테스트 타임 스케일링"
|
||||
},
|
||||
"prompt": {
|
||||
"name": "프롬프트",
|
||||
"tooltip": "원하는 이미지에 대한 텍스트 설명입니다. 최대 2560자까지 입력할 수 있습니다."
|
||||
},
|
||||
"remove_background": {
|
||||
"name": "배경 제거",
|
||||
"tooltip": "생성된 이미지에서 배경을 제거합니다. 추가 비용이 발생할 수 있습니다."
|
||||
},
|
||||
"seed": {
|
||||
"name": "시드",
|
||||
"tooltip": "시드는 노드가 다시 실행될지 여부를 제어합니다. 시드와 관계없이 결과는 비결정적입니다."
|
||||
},
|
||||
"upscale": {
|
||||
"name": "업스케일",
|
||||
"tooltip": "생성된 이미지를 업스케일합니다. 추가 비용이 발생할 수 있습니다."
|
||||
}
|
||||
},
|
||||
"outputs": {
|
||||
"0": {
|
||||
"tooltip": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"ReveImageEditNode": {
|
||||
"description": "Reve를 사용하여 자연어 지시로 이미지를 편집합니다.",
|
||||
"display_name": "Reve 이미지 편집",
|
||||
"inputs": {
|
||||
"control_after_generate": {
|
||||
"name": "생성 후 제어"
|
||||
},
|
||||
"edit_instruction": {
|
||||
"name": "편집 지시",
|
||||
"tooltip": "이미지를 어떻게 편집할지에 대한 텍스트 설명입니다. 최대 2560자까지 입력할 수 있습니다."
|
||||
},
|
||||
"image": {
|
||||
"name": "이미지",
|
||||
"tooltip": "편집할 이미지입니다."
|
||||
},
|
||||
"model": {
|
||||
"name": "모델",
|
||||
"tooltip": "편집에 사용할 모델 버전입니다."
|
||||
},
|
||||
"model_aspect_ratio": {
|
||||
"name": "종횡비"
|
||||
},
|
||||
"model_test_time_scaling": {
|
||||
"name": "테스트 타임 스케일링"
|
||||
},
|
||||
"remove_background": {
|
||||
"name": "배경 제거",
|
||||
"tooltip": "생성된 이미지에서 배경을 제거합니다. 추가 비용이 발생할 수 있습니다."
|
||||
},
|
||||
"seed": {
|
||||
"name": "시드",
|
||||
"tooltip": "시드는 노드가 다시 실행될지 여부를 제어합니다. 시드와 관계없이 결과는 비결정적입니다."
|
||||
},
|
||||
"upscale": {
|
||||
"name": "업스케일",
|
||||
"tooltip": "생성된 이미지를 업스케일합니다. 추가 비용이 발생할 수 있습니다."
|
||||
}
|
||||
},
|
||||
"outputs": {
|
||||
"0": {
|
||||
"tooltip": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"ReveImageRemixNode": {
|
||||
"description": "참고 이미지를 텍스트 프롬프트와 결합하여 Reve로 새로운 이미지를 만듭니다.",
|
||||
"display_name": "Reve 이미지 리믹스",
|
||||
"inputs": {
|
||||
"control_after_generate": {
|
||||
"name": "생성 후 제어"
|
||||
},
|
||||
"model": {
|
||||
"name": "모델",
|
||||
"tooltip": "리믹스에 사용할 모델 버전입니다."
|
||||
},
|
||||
"model_aspect_ratio": {
|
||||
"name": "종횡비"
|
||||
},
|
||||
"model_test_time_scaling": {
|
||||
"name": "테스트 타임 스케일링"
|
||||
},
|
||||
"prompt": {
|
||||
"name": "프롬프트",
|
||||
"tooltip": "원하는 이미지에 대한 텍스트 설명입니다. 특정 이미지를 인덱스로 참조하려면 XML img 태그를 사용할 수 있습니다. 예: <img>0</img>, <img>1</img> 등."
|
||||
},
|
||||
"reference_images": {
|
||||
"name": "참고 이미지"
|
||||
},
|
||||
"remove_background": {
|
||||
"name": "배경 제거",
|
||||
"tooltip": "생성된 이미지에서 배경을 제거합니다. 추가 비용이 발생할 수 있습니다."
|
||||
},
|
||||
"seed": {
|
||||
"name": "시드",
|
||||
"tooltip": "시드는 노드가 다시 실행될지 여부를 제어합니다. 시드와 관계없이 결과는 비결정적입니다."
|
||||
},
|
||||
"upscale": {
|
||||
"name": "업스케일",
|
||||
"tooltip": "생성된 이미지를 업스케일합니다. 추가 비용이 발생할 수 있습니다."
|
||||
}
|
||||
},
|
||||
"outputs": {
|
||||
"0": {
|
||||
"tooltip": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"Rodin3D_Detail": {
|
||||
"description": "Rodin API를 사용하여 3D 에셋 생성",
|
||||
"display_name": "Rodin 3D 생성 - 디테일 생성",
|
||||
|
||||
@@ -936,8 +936,6 @@
|
||||
"batchRename": "Renomear em lote",
|
||||
"beta": "BETA",
|
||||
"bookmark": "Salvar na biblioteca",
|
||||
"browserReservedKeybinding": "Este atalho é reservado por alguns navegadores e pode ter resultados inesperados.",
|
||||
"browserReservedKeybindingTooltip": "Este atalho entra em conflito com atalhos reservados do navegador",
|
||||
"calculatingDimensions": "Calculando dimensões",
|
||||
"cancel": "Cancelar",
|
||||
"cancelled": "Cancelado",
|
||||
@@ -972,7 +970,6 @@
|
||||
"copy": "Copiar",
|
||||
"copyAll": "Copiar tudo",
|
||||
"copyJobId": "Copiar ID da tarefa",
|
||||
"copySystemInfo": "Copiar informações do sistema",
|
||||
"copyToClipboard": "Copiar para a área de transferência",
|
||||
"copyURL": "Copiar URL",
|
||||
"core": "Núcleo",
|
||||
@@ -1019,7 +1016,6 @@
|
||||
"enterNewName": "Digite o novo nome",
|
||||
"enterNewNamePrompt": "Digite o novo nome:",
|
||||
"enterSubgraph": "Entrar no Subgrafo",
|
||||
"enterYourKeybind": "Digite seu atalho",
|
||||
"error": "Erro",
|
||||
"errorLoadingImage": "Erro ao carregar imagem",
|
||||
"errorLoadingVideo": "Erro ao carregar vídeo",
|
||||
@@ -1089,7 +1085,6 @@
|
||||
"micPermissionDenied": "Permissão do microfone negada",
|
||||
"migrate": "Migrar",
|
||||
"missing": "Faltando",
|
||||
"modifyKeybinding": "Modificar atalho",
|
||||
"more": "Mais",
|
||||
"moreOptions": "Mais opções",
|
||||
"moreWorkflows": "Mais fluxos de trabalho",
|
||||
@@ -1098,7 +1093,6 @@
|
||||
"name": "Nome",
|
||||
"newFolder": "Nova pasta",
|
||||
"next": "Próximo",
|
||||
"nextImage": "Próxima imagem",
|
||||
"nightly": "NIGHTLY",
|
||||
"no": "Não",
|
||||
"noAudioRecorded": "Nenhum áudio gravado",
|
||||
@@ -1132,8 +1126,8 @@
|
||||
"playRecording": "Reproduzir gravação",
|
||||
"playbackSpeed": "Velocidade de reprodução",
|
||||
"playing": "Reproduzindo",
|
||||
"pressKeysForNewBinding": "Pressione as teclas para novo atalho",
|
||||
"preview": "PRÉVIA",
|
||||
"previousImage": "Imagem anterior",
|
||||
"profile": "Perfil",
|
||||
"progressCountOf": "de",
|
||||
"queued": "Na fila",
|
||||
@@ -1173,7 +1167,6 @@
|
||||
"resultsCount": "{count} resultados encontrados",
|
||||
"running": "Executando",
|
||||
"save": "Salvar",
|
||||
"saveAnyway": "Salvar mesmo assim",
|
||||
"saving": "Salvando",
|
||||
"scrollLeft": "Rolar para a esquerda",
|
||||
"scrollRight": "Rolar para a direita",
|
||||
@@ -1192,7 +1185,6 @@
|
||||
"selectItemsToDuplicate": "Selecione itens para duplicar",
|
||||
"selectItemsToRename": "Selecione itens para renomear",
|
||||
"selectedFile": "Arquivo selecionado",
|
||||
"setAKeybindingForTheFollowing": "Definir um atalho para o seguinte:",
|
||||
"setAsBackground": "Definir como plano de fundo",
|
||||
"settings": "Configurações",
|
||||
"shortcutSuffix": " ({shortcut})",
|
||||
@@ -1208,8 +1200,6 @@
|
||||
"stopRecording": "Parar gravação",
|
||||
"submit": "Enviar",
|
||||
"success": "Sucesso",
|
||||
"switchToGridView": "Alternar para visualização em grade",
|
||||
"switchToSingleView": "Alternar para visualização única",
|
||||
"systemInfo": "Informações do sistema",
|
||||
"terminal": "Terminal",
|
||||
"title": "Título",
|
||||
@@ -1239,8 +1229,6 @@
|
||||
"you": "Você"
|
||||
},
|
||||
"graphCanvasMenu": {
|
||||
"canvasMode": "Modo de tela",
|
||||
"canvasToolbar": "Barra de ferramentas da tela",
|
||||
"fitView": "Ajustar à Tela",
|
||||
"focusMode": "Modo de Foco",
|
||||
"hand": "Mão",
|
||||
@@ -1477,26 +1465,12 @@
|
||||
"dragAndDropImage": "Arraste e solte uma imagem",
|
||||
"emptyWorkflowExplanation": "Seu fluxo de trabalho está vazio. Você precisa adicionar alguns nós primeiro para começar a construir um app.",
|
||||
"enterNodeGraph": "Entrar no grafo de nós",
|
||||
"error": {
|
||||
"getHelp": "Para obter ajuda, veja nosso {0}, {1} ou {2} com o erro copiado.",
|
||||
"github": "enviar um problema no GitHub",
|
||||
"goto": "Mostrar erros no grafo",
|
||||
"guide": "guia de solução de problemas",
|
||||
"header": "Este aplicativo encontrou um erro",
|
||||
"log": "Logs de erro",
|
||||
"mobileFixable": "Verifique {0} para erros",
|
||||
"promptShow": "Mostrar relatório de erro",
|
||||
"promptVisitGraph": "Veja o grafo de nós para ver o erro completo.",
|
||||
"requiresGraph": "Algo deu errado durante a geração. Isso pode ser devido a entradas ocultas inválidas, recursos ausentes ou problemas de configuração do fluxo de trabalho.",
|
||||
"support": "contate nosso suporte"
|
||||
},
|
||||
"giveFeedback": "Enviar feedback",
|
||||
"graphMode": "Modo Gráfico",
|
||||
"hasCreditCost": "Requer créditos adicionais",
|
||||
"linearMode": "Modo App",
|
||||
"loadTemplate": "Carregar um modelo",
|
||||
"mobileControls": "Editar e Executar",
|
||||
"mobileNoWorkflow": "Este fluxo de trabalho não foi criado para o modo aplicativo. Tente outro.",
|
||||
"queue": {
|
||||
"clear": "Limpar fila",
|
||||
"clickToClear": "Clique para limpar a fila"
|
||||
@@ -1504,7 +1478,6 @@
|
||||
"rerun": "Executar novamente",
|
||||
"reuseParameters": "Reutilizar parâmetros",
|
||||
"runCount": "Número de execuções:",
|
||||
"viewGraph": "Ver grafo de nós",
|
||||
"viewJob": "Ver tarefa",
|
||||
"welcome": {
|
||||
"buildApp": "Criar aplicativo",
|
||||
@@ -1713,7 +1686,6 @@
|
||||
"installedSection": "INSTALADO",
|
||||
"missingNodes": "Nós Ausentes",
|
||||
"notInstalled": "Não Instalado",
|
||||
"unresolvedNodes": "Nós não resolvidos",
|
||||
"updatesAvailable": "Atualizações Disponíveis"
|
||||
},
|
||||
"nightlyVersion": "Noturna",
|
||||
@@ -1760,10 +1732,6 @@
|
||||
"uninstall": "Desinstalar",
|
||||
"uninstallSelected": "Desinstalar Selecionados",
|
||||
"uninstalling": "Desinstalando {id}",
|
||||
"unresolvedNodes": {
|
||||
"message": "Os seguintes nós não estão instalados e não foram encontrados no registro.",
|
||||
"title": "Nós ausentes não resolvidos"
|
||||
},
|
||||
"update": "Atualizar",
|
||||
"updateAll": "Atualizar Todos",
|
||||
"updateSelected": "Atualizar Selecionados",
|
||||
@@ -2112,7 +2080,6 @@
|
||||
"OpenAI": "OpenAI",
|
||||
"PixVerse": "PixVerse",
|
||||
"Recraft": "Recraft",
|
||||
"Reve": "Reve",
|
||||
"Rodin": "Rodin",
|
||||
"Runway": "Runway",
|
||||
"Sora": "Sora",
|
||||
@@ -2412,33 +2379,6 @@
|
||||
"inputsNone": "SEM ENTRADAS",
|
||||
"inputsNoneTooltip": "O nó não possui entradas",
|
||||
"locateNode": "Localizar nó no canvas",
|
||||
"missingModels": {
|
||||
"alreadyExistsInCategory": "Este modelo já existe em \"{category}\"",
|
||||
"assetLoadTimeout": "Tempo esgotado na detecção do modelo. Tente recarregar o fluxo de trabalho.",
|
||||
"cancelSelection": "Cancelar seleção",
|
||||
"clearUrl": "Limpar URL",
|
||||
"collapseNodes": "Ocultar nós de referência",
|
||||
"confirmSelection": "Confirmar seleção",
|
||||
"copyModelName": "Copiar nome do modelo",
|
||||
"customNodeDownloadDisabled": "O ambiente em nuvem não suporta importação de modelos para nós personalizados nesta seção. Utilize nós de carregamento padrão ou substitua por um modelo da biblioteca abaixo.",
|
||||
"expandNodes": "Mostrar nós de referência",
|
||||
"import": "Importar",
|
||||
"importAnyway": "Importar mesmo assim",
|
||||
"importFailed": "Falha na importação",
|
||||
"importNotSupported": "Importação não suportada",
|
||||
"imported": "Importado",
|
||||
"importing": "Importando...",
|
||||
"locateNode": "Localizar nó no canvas",
|
||||
"metadataFetchFailed": "Falha ao obter metadados. Verifique o link e tente novamente.",
|
||||
"missingModelsTitle": "Modelos Ausentes",
|
||||
"or": "OU",
|
||||
"typeMismatch": "Este modelo parece ser um \"{detectedType}\". Tem certeza?",
|
||||
"unknownCategory": "Desconhecido",
|
||||
"unsupportedUrl": "Apenas URLs do Civitai e Hugging Face são suportadas.",
|
||||
"urlPlaceholder": "Cole a URL do modelo (Civitai ou Hugging Face)",
|
||||
"useFromLibrary": "Usar da Biblioteca",
|
||||
"usingFromLibrary": "Usando da Biblioteca"
|
||||
},
|
||||
"missingNodePacks": {
|
||||
"applyChanges": "Aplicar alterações",
|
||||
"cloudMessage": "Este fluxo de trabalho requer nós personalizados que ainda não estão disponíveis no Comfy Cloud.",
|
||||
@@ -3310,7 +3250,6 @@
|
||||
"interrupted": "Execução interrompida",
|
||||
"legacyMaskEditorDeprecated": "O editor de máscara legado está obsoleto e será removido em breve.",
|
||||
"migrateToLitegraphReroute": "Nós de redirecionamento serão removidos em versões futuras. Clique para migrar para o redirecionamento nativo do litegraph.",
|
||||
"missingModelVerificationFailed": "Falha ao verificar modelos ausentes. Alguns modelos podem não aparecer na aba de Erros.",
|
||||
"modelLoadedSuccessfully": "Modelo 3D carregado com sucesso",
|
||||
"no3dScene": "Nenhuma cena 3D para aplicar textura",
|
||||
"no3dSceneToExport": "Nenhuma cena 3D para exportar",
|
||||
|
||||
@@ -3207,21 +3207,6 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"FluxKVCache": {
|
||||
"description": "Ativa a otimização KV Cache para imagens de referência em modelos da família Flux.",
|
||||
"display_name": "Flux KV Cache",
|
||||
"inputs": {
|
||||
"model": {
|
||||
"name": "modelo",
|
||||
"tooltip": "O modelo para aplicar o KV Cache."
|
||||
}
|
||||
},
|
||||
"outputs": {
|
||||
"0": {
|
||||
"tooltip": "O modelo modificado com KV Cache ativado."
|
||||
}
|
||||
}
|
||||
},
|
||||
"FluxKontextImageScale": {
|
||||
"description": "Este nó redimensiona a imagem para um tamanho mais ideal para flux kontext.",
|
||||
"display_name": "FluxKontextImageScale",
|
||||
@@ -12870,133 +12855,6 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"ReveImageCreateNode": {
|
||||
"description": "Gere imagens a partir de descrições de texto usando o Reve.",
|
||||
"display_name": "Reve Image Create",
|
||||
"inputs": {
|
||||
"control_after_generate": {
|
||||
"name": "control after generate"
|
||||
},
|
||||
"model": {
|
||||
"name": "model",
|
||||
"tooltip": "Versão do modelo a ser usada para geração."
|
||||
},
|
||||
"model_aspect_ratio": {
|
||||
"name": "aspect_ratio"
|
||||
},
|
||||
"model_test_time_scaling": {
|
||||
"name": "test_time_scaling"
|
||||
},
|
||||
"prompt": {
|
||||
"name": "prompt",
|
||||
"tooltip": "Descrição em texto da imagem desejada. Máximo de 2560 caracteres."
|
||||
},
|
||||
"remove_background": {
|
||||
"name": "remove_background",
|
||||
"tooltip": "Remover o fundo da imagem gerada. Pode gerar custo adicional."
|
||||
},
|
||||
"seed": {
|
||||
"name": "seed",
|
||||
"tooltip": "O seed controla se o nó deve ser executado novamente; os resultados são não determinísticos independentemente do seed."
|
||||
},
|
||||
"upscale": {
|
||||
"name": "upscale",
|
||||
"tooltip": "Aumentar a resolução da imagem gerada. Pode gerar custo adicional."
|
||||
}
|
||||
},
|
||||
"outputs": {
|
||||
"0": {
|
||||
"tooltip": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"ReveImageEditNode": {
|
||||
"description": "Edite imagens usando instruções em linguagem natural com o Reve.",
|
||||
"display_name": "Reve Image Edit",
|
||||
"inputs": {
|
||||
"control_after_generate": {
|
||||
"name": "control after generate"
|
||||
},
|
||||
"edit_instruction": {
|
||||
"name": "edit_instruction",
|
||||
"tooltip": "Descrição em texto de como editar a imagem. Máximo de 2560 caracteres."
|
||||
},
|
||||
"image": {
|
||||
"name": "image",
|
||||
"tooltip": "A imagem a ser editada."
|
||||
},
|
||||
"model": {
|
||||
"name": "model",
|
||||
"tooltip": "Versão do modelo a ser usada para edição."
|
||||
},
|
||||
"model_aspect_ratio": {
|
||||
"name": "aspect_ratio"
|
||||
},
|
||||
"model_test_time_scaling": {
|
||||
"name": "test_time_scaling"
|
||||
},
|
||||
"remove_background": {
|
||||
"name": "remove_background",
|
||||
"tooltip": "Remover o fundo da imagem gerada. Pode gerar custo adicional."
|
||||
},
|
||||
"seed": {
|
||||
"name": "seed",
|
||||
"tooltip": "O seed controla se o nó deve ser executado novamente; os resultados são não determinísticos independentemente do seed."
|
||||
},
|
||||
"upscale": {
|
||||
"name": "upscale",
|
||||
"tooltip": "Aumentar a resolução da imagem gerada. Pode gerar custo adicional."
|
||||
}
|
||||
},
|
||||
"outputs": {
|
||||
"0": {
|
||||
"tooltip": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"ReveImageRemixNode": {
|
||||
"description": "Combine imagens de referência com prompts de texto para criar novas imagens usando o Reve.",
|
||||
"display_name": "Reve Image Remix",
|
||||
"inputs": {
|
||||
"control_after_generate": {
|
||||
"name": "control after generate"
|
||||
},
|
||||
"model": {
|
||||
"name": "model",
|
||||
"tooltip": "Versão do modelo a ser usada para remix."
|
||||
},
|
||||
"model_aspect_ratio": {
|
||||
"name": "aspect_ratio"
|
||||
},
|
||||
"model_test_time_scaling": {
|
||||
"name": "test_time_scaling"
|
||||
},
|
||||
"prompt": {
|
||||
"name": "prompt",
|
||||
"tooltip": "Descrição em texto da imagem desejada. Pode incluir tags XML img para referenciar imagens específicas pelo índice, por exemplo, <img>0</img>, <img>1</img>, etc."
|
||||
},
|
||||
"reference_images": {
|
||||
"name": "reference_images"
|
||||
},
|
||||
"remove_background": {
|
||||
"name": "remove_background",
|
||||
"tooltip": "Remover o fundo da imagem gerada. Pode gerar custo adicional."
|
||||
},
|
||||
"seed": {
|
||||
"name": "seed",
|
||||
"tooltip": "O seed controla se o nó deve ser executado novamente; os resultados são não determinísticos independentemente do seed."
|
||||
},
|
||||
"upscale": {
|
||||
"name": "upscale",
|
||||
"tooltip": "Aumentar a resolução da imagem gerada. Pode gerar custo adicional."
|
||||
}
|
||||
},
|
||||
"outputs": {
|
||||
"0": {
|
||||
"tooltip": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"Rodin3D_Detail": {
|
||||
"description": "Gerar ativos 3D usando a API Rodin",
|
||||
"display_name": "Rodin 3D Gerar - Geração Detalhada",
|
||||
|
||||
@@ -936,8 +936,6 @@
|
||||
"batchRename": "Пакетное переименование",
|
||||
"beta": "БЕТА",
|
||||
"bookmark": "Сохранить в библиотеку",
|
||||
"browserReservedKeybinding": "Это сочетание клавиш зарезервировано некоторыми браузерами и может привести к неожиданным результатам.",
|
||||
"browserReservedKeybindingTooltip": "Это сочетание конфликтует с зарезервированными сочетаниями браузера",
|
||||
"calculatingDimensions": "Расчёт размеров",
|
||||
"cancel": "Отмена",
|
||||
"cancelled": "Отменено",
|
||||
@@ -972,7 +970,6 @@
|
||||
"copy": "Копировать",
|
||||
"copyAll": "Скопировать всё",
|
||||
"copyJobId": "Копировать ID задания",
|
||||
"copySystemInfo": "Скопировать информацию о системе",
|
||||
"copyToClipboard": "Скопировать в буфер обмена",
|
||||
"copyURL": "Скопировать URL",
|
||||
"core": "Ядро",
|
||||
@@ -1019,7 +1016,6 @@
|
||||
"enterNewName": "Введите новое имя",
|
||||
"enterNewNamePrompt": "Введите новое имя:",
|
||||
"enterSubgraph": "Войти в подграф",
|
||||
"enterYourKeybind": "Введите ваше сочетание клавиш",
|
||||
"error": "Ошибка",
|
||||
"errorLoadingImage": "Ошибка загрузки изображения",
|
||||
"errorLoadingVideo": "Ошибка загрузки видео",
|
||||
@@ -1089,7 +1085,6 @@
|
||||
"micPermissionDenied": "Доступ к микрофону запрещён",
|
||||
"migrate": "Мигрировать",
|
||||
"missing": "Отсутствует",
|
||||
"modifyKeybinding": "Изменить сочетание клавиш",
|
||||
"more": "Больше",
|
||||
"moreOptions": "Больше опций",
|
||||
"moreWorkflows": "Больше рабочих процессов",
|
||||
@@ -1098,7 +1093,6 @@
|
||||
"name": "Имя",
|
||||
"newFolder": "Новая папка",
|
||||
"next": "Далее",
|
||||
"nextImage": "Следующее изображение",
|
||||
"nightly": "NIGHTLY",
|
||||
"no": "Нет",
|
||||
"noAudioRecorded": "Аудио не записано",
|
||||
@@ -1132,8 +1126,8 @@
|
||||
"playRecording": "Воспроизвести запись",
|
||||
"playbackSpeed": "Скорость воспроизведения",
|
||||
"playing": "Воспроизводится",
|
||||
"pressKeysForNewBinding": "Нажмите клавиши для новой привязки",
|
||||
"preview": "ПРЕДПРОСМОТР",
|
||||
"previousImage": "Предыдущее изображение",
|
||||
"profile": "Профиль",
|
||||
"progressCountOf": "из",
|
||||
"queued": "В очереди",
|
||||
@@ -1173,7 +1167,6 @@
|
||||
"resultsCount": "Найдено {count} результатов",
|
||||
"running": "Выполняется",
|
||||
"save": "Сохранить",
|
||||
"saveAnyway": "Сохранить в любом случае",
|
||||
"saving": "Сохранение",
|
||||
"scrollLeft": "Прокрутить влево",
|
||||
"scrollRight": "Прокрутить вправо",
|
||||
@@ -1192,7 +1185,6 @@
|
||||
"selectItemsToDuplicate": "Выберите элементы для дублирования",
|
||||
"selectItemsToRename": "Выберите элементы для переименования",
|
||||
"selectedFile": "Выбранный файл",
|
||||
"setAKeybindingForTheFollowing": "Установите сочетание клавиш для следующего:",
|
||||
"setAsBackground": "Установить как фон",
|
||||
"settings": "Настройки",
|
||||
"shortcutSuffix": " ({shortcut})",
|
||||
@@ -1208,8 +1200,6 @@
|
||||
"stopRecording": "Остановить запись",
|
||||
"submit": "Отправить",
|
||||
"success": "Успех",
|
||||
"switchToGridView": "Переключиться на вид сетки",
|
||||
"switchToSingleView": "Переключиться на одиночный вид",
|
||||
"systemInfo": "Информация о системе",
|
||||
"terminal": "Терминал",
|
||||
"title": "Заголовок",
|
||||
@@ -1239,8 +1229,6 @@
|
||||
"you": "Вы"
|
||||
},
|
||||
"graphCanvasMenu": {
|
||||
"canvasMode": "Режим холста",
|
||||
"canvasToolbar": "Панель инструментов холста",
|
||||
"fitView": "Подгонять под выделенные",
|
||||
"focusMode": "Режим фокуса",
|
||||
"hand": "Рука",
|
||||
@@ -1477,26 +1465,12 @@
|
||||
"dragAndDropImage": "Перетащите изображение",
|
||||
"emptyWorkflowExplanation": "Ваш рабочий процесс пуст. Сначала добавьте несколько узлов, чтобы начать создавать приложение.",
|
||||
"enterNodeGraph": "Войти в граф узлов",
|
||||
"error": {
|
||||
"getHelp": "Для получения помощи ознакомьтесь с нашим {0}, {1} или {2} с копией ошибки.",
|
||||
"github": "отправить issue на GitHub",
|
||||
"goto": "Показать ошибки в графе",
|
||||
"guide": "руководство по устранению неполадок",
|
||||
"header": "В приложении произошла ошибка",
|
||||
"log": "Журналы ошибок",
|
||||
"mobileFixable": "Проверьте {0} на наличие ошибок",
|
||||
"promptShow": "Показать отчёт об ошибке",
|
||||
"promptVisitGraph": "Просмотрите граф узлов, чтобы увидеть полную ошибку.",
|
||||
"requiresGraph": "Что-то пошло не так во время генерации. Возможные причины: неверные скрытые входные данные, отсутствующие ресурсы или ошибки конфигурации рабочего процесса.",
|
||||
"support": "связаться с поддержкой"
|
||||
},
|
||||
"giveFeedback": "Оставить отзыв",
|
||||
"graphMode": "Графовый режим",
|
||||
"hasCreditCost": "Требуются дополнительные кредиты",
|
||||
"linearMode": "Режим приложения",
|
||||
"loadTemplate": "Загрузить шаблон",
|
||||
"mobileControls": "Редактировать и запустить",
|
||||
"mobileNoWorkflow": "Для этого режима приложения рабочий процесс не создан. Попробуйте другой.",
|
||||
"queue": {
|
||||
"clear": "Очистить очередь",
|
||||
"clickToClear": "Нажмите, чтобы очистить очередь"
|
||||
@@ -1504,7 +1478,6 @@
|
||||
"rerun": "Перезапустить",
|
||||
"reuseParameters": "Повторно использовать параметры",
|
||||
"runCount": "Количество запусков:",
|
||||
"viewGraph": "Просмотреть граф узлов",
|
||||
"viewJob": "Просмотреть задачу",
|
||||
"welcome": {
|
||||
"buildApp": "Создать приложение",
|
||||
@@ -1713,7 +1686,6 @@
|
||||
"installedSection": "УСТАНОВЛЕНО",
|
||||
"missingNodes": "Отсутствующие узлы",
|
||||
"notInstalled": "Не установлено",
|
||||
"unresolvedNodes": "Неразрешённые узлы",
|
||||
"updatesAvailable": "Доступны обновления"
|
||||
},
|
||||
"nightlyVersion": "Ночная",
|
||||
@@ -1760,10 +1732,6 @@
|
||||
"uninstall": "Удалить",
|
||||
"uninstallSelected": "Удалить выбранное",
|
||||
"uninstalling": "Удаление",
|
||||
"unresolvedNodes": {
|
||||
"message": "Следующие узлы не установлены и не найдены в реестре.",
|
||||
"title": "Неразрешённые отсутствующие узлы"
|
||||
},
|
||||
"update": "Обновить",
|
||||
"updateAll": "Обновить всё",
|
||||
"updateSelected": "Обновить выбранное",
|
||||
@@ -2112,7 +2080,6 @@
|
||||
"OpenAI": "OpenAI",
|
||||
"PixVerse": "PixVerse",
|
||||
"Recraft": "Recraft",
|
||||
"Reve": "Reve",
|
||||
"Rodin": "Rodin",
|
||||
"Runway": "Runway",
|
||||
"Sora": "Sora",
|
||||
@@ -2412,33 +2379,6 @@
|
||||
"inputsNone": "НЕТ ВХОДОВ",
|
||||
"inputsNoneTooltip": "Узел не имеет входов",
|
||||
"locateNode": "Найти узел на холсте",
|
||||
"missingModels": {
|
||||
"alreadyExistsInCategory": "Эта модель уже существует в «{category}»",
|
||||
"assetLoadTimeout": "Время ожидания обнаружения модели истекло. Попробуйте перезагрузить рабочий процесс.",
|
||||
"cancelSelection": "Отменить выбор",
|
||||
"clearUrl": "Очистить URL",
|
||||
"collapseNodes": "Скрыть ссылающиеся узлы",
|
||||
"confirmSelection": "Подтвердить выбор",
|
||||
"copyModelName": "Скопировать имя модели",
|
||||
"customNodeDownloadDisabled": "В облачной среде импорт моделей для пользовательских узлов в этом разделе не поддерживается. Пожалуйста, используйте стандартные загрузочные узлы или выберите модель из библиотеки ниже.",
|
||||
"expandNodes": "Показать ссылающиеся узлы",
|
||||
"import": "Импортировать",
|
||||
"importAnyway": "Импортировать в любом случае",
|
||||
"importFailed": "Ошибка импорта",
|
||||
"importNotSupported": "Импорт не поддерживается",
|
||||
"imported": "Импортировано",
|
||||
"importing": "Импортируется...",
|
||||
"locateNode": "Найти узел на холсте",
|
||||
"metadataFetchFailed": "Не удалось получить метаданные. Проверьте ссылку и попробуйте снова.",
|
||||
"missingModelsTitle": "Отсутствующие модели",
|
||||
"or": "ИЛИ",
|
||||
"typeMismatch": "Похоже, эта модель — «{detectedType}». Вы уверены?",
|
||||
"unknownCategory": "Неизвестно",
|
||||
"unsupportedUrl": "Поддерживаются только URL Civitai и Hugging Face.",
|
||||
"urlPlaceholder": "Вставьте URL модели (Civitai или Hugging Face)",
|
||||
"useFromLibrary": "Использовать из библиотеки",
|
||||
"usingFromLibrary": "Используется из библиотеки"
|
||||
},
|
||||
"missingNodePacks": {
|
||||
"applyChanges": "Применить изменения",
|
||||
"cloudMessage": "Для этого рабочего процесса требуются пользовательские узлы, которые ещё недоступны в Comfy Cloud.",
|
||||
@@ -3298,7 +3238,6 @@
|
||||
"interrupted": "Выполнение было прервано",
|
||||
"legacyMaskEditorDeprecated": "Устаревший редактор масок будет скоро удалён.",
|
||||
"migrateToLitegraphReroute": "Узлы перенаправления будут удалены в будущих версиях. Нажмите, чтобы перейти на litegraph-native reroute.",
|
||||
"missingModelVerificationFailed": "Не удалось проверить отсутствующие модели. Некоторые модели могут не отображаться на вкладке Ошибки.",
|
||||
"modelLoadedSuccessfully": "3D-модель успешно загружена",
|
||||
"no3dScene": "Нет 3D сцены для применения текстуры",
|
||||
"no3dSceneToExport": "Нет 3D сцены для экспорта",
|
||||
|
||||
@@ -3207,21 +3207,6 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"FluxKVCache": {
|
||||
"description": "Включает оптимизацию KV Cache для эталонных изображений в моделях семейства Flux.",
|
||||
"display_name": "Flux KV Cache",
|
||||
"inputs": {
|
||||
"model": {
|
||||
"name": "model",
|
||||
"tooltip": "Модель, для которой будет использоваться KV Cache."
|
||||
}
|
||||
},
|
||||
"outputs": {
|
||||
"0": {
|
||||
"tooltip": "Патченная модель с включённым KV Cache."
|
||||
}
|
||||
}
|
||||
},
|
||||
"FluxKontextImageScale": {
|
||||
"description": "Этот узел изменяет размер изображения до более оптимального для flux kontext.",
|
||||
"display_name": "FluxKontextImageScale",
|
||||
@@ -12870,133 +12855,6 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"ReveImageCreateNode": {
|
||||
"description": "Генерируйте изображения по текстовым описаниям с помощью Reve.",
|
||||
"display_name": "Reve Создание изображения",
|
||||
"inputs": {
|
||||
"control_after_generate": {
|
||||
"name": "control after generate"
|
||||
},
|
||||
"model": {
|
||||
"name": "model",
|
||||
"tooltip": "Версия модели для генерации."
|
||||
},
|
||||
"model_aspect_ratio": {
|
||||
"name": "aspect_ratio"
|
||||
},
|
||||
"model_test_time_scaling": {
|
||||
"name": "test_time_scaling"
|
||||
},
|
||||
"prompt": {
|
||||
"name": "prompt",
|
||||
"tooltip": "Текстовое описание желаемого изображения. Максимум 2560 символов."
|
||||
},
|
||||
"remove_background": {
|
||||
"name": "remove_background",
|
||||
"tooltip": "Удалить фон с сгенерированного изображения. Может потребоваться дополнительная оплата."
|
||||
},
|
||||
"seed": {
|
||||
"name": "seed",
|
||||
"tooltip": "Seed определяет, должен ли узел запускаться повторно; результаты не являются детерминированными независимо от seed."
|
||||
},
|
||||
"upscale": {
|
||||
"name": "upscale",
|
||||
"tooltip": "Увеличить разрешение сгенерированного изображения. Может потребоваться дополнительная оплата."
|
||||
}
|
||||
},
|
||||
"outputs": {
|
||||
"0": {
|
||||
"tooltip": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"ReveImageEditNode": {
|
||||
"description": "Редактируйте изображения с помощью естественно-языковых инструкций в Reve.",
|
||||
"display_name": "Reve Редактирование изображения",
|
||||
"inputs": {
|
||||
"control_after_generate": {
|
||||
"name": "control after generate"
|
||||
},
|
||||
"edit_instruction": {
|
||||
"name": "edit_instruction",
|
||||
"tooltip": "Текстовое описание того, как редактировать изображение. Максимум 2560 символов."
|
||||
},
|
||||
"image": {
|
||||
"name": "image",
|
||||
"tooltip": "Изображение для редактирования."
|
||||
},
|
||||
"model": {
|
||||
"name": "model",
|
||||
"tooltip": "Версия модели для редактирования."
|
||||
},
|
||||
"model_aspect_ratio": {
|
||||
"name": "aspect_ratio"
|
||||
},
|
||||
"model_test_time_scaling": {
|
||||
"name": "test_time_scaling"
|
||||
},
|
||||
"remove_background": {
|
||||
"name": "remove_background",
|
||||
"tooltip": "Удалить фон с сгенерированного изображения. Может потребоваться дополнительная оплата."
|
||||
},
|
||||
"seed": {
|
||||
"name": "seed",
|
||||
"tooltip": "Seed определяет, должен ли узел запускаться повторно; результаты не являются детерминированными независимо от seed."
|
||||
},
|
||||
"upscale": {
|
||||
"name": "upscale",
|
||||
"tooltip": "Увеличить разрешение сгенерированного изображения. Может потребоваться дополнительная оплата."
|
||||
}
|
||||
},
|
||||
"outputs": {
|
||||
"0": {
|
||||
"tooltip": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"ReveImageRemixNode": {
|
||||
"description": "Комбинируйте референсные изображения с текстовыми подсказками для создания новых изображений с помощью Reve.",
|
||||
"display_name": "Reve Ремикс изображения",
|
||||
"inputs": {
|
||||
"control_after_generate": {
|
||||
"name": "control after generate"
|
||||
},
|
||||
"model": {
|
||||
"name": "model",
|
||||
"tooltip": "Версия модели для ремикса."
|
||||
},
|
||||
"model_aspect_ratio": {
|
||||
"name": "aspect_ratio"
|
||||
},
|
||||
"model_test_time_scaling": {
|
||||
"name": "test_time_scaling"
|
||||
},
|
||||
"prompt": {
|
||||
"name": "prompt",
|
||||
"tooltip": "Текстовое описание желаемого изображения. Можно использовать XML-теги img для ссылки на определённые изображения по индексу, например <img>0</img>, <img>1</img> и т.д."
|
||||
},
|
||||
"reference_images": {
|
||||
"name": "reference_images"
|
||||
},
|
||||
"remove_background": {
|
||||
"name": "remove_background",
|
||||
"tooltip": "Удалить фон с сгенерированного изображения. Может потребоваться дополнительная оплата."
|
||||
},
|
||||
"seed": {
|
||||
"name": "seed",
|
||||
"tooltip": "Seed определяет, должен ли узел запускаться повторно; результаты не являются детерминированными независимо от seed."
|
||||
},
|
||||
"upscale": {
|
||||
"name": "upscale",
|
||||
"tooltip": "Увеличить разрешение сгенерированного изображения. Может потребоваться дополнительная оплата."
|
||||
}
|
||||
},
|
||||
"outputs": {
|
||||
"0": {
|
||||
"tooltip": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"Rodin3D_Detail": {
|
||||
"description": "Создание 3D-объектов с помощью Rodin API",
|
||||
"display_name": "Rodin 3D Generate - Детальная генерация",
|
||||
|
||||
@@ -936,8 +936,6 @@
|
||||
"batchRename": "Toplu Yeniden Adlandır",
|
||||
"beta": "BETA",
|
||||
"bookmark": "Kütüphaneye Kaydet",
|
||||
"browserReservedKeybinding": "Bu kısayol bazı tarayıcılar tarafından ayrılmıştır ve beklenmeyen sonuçlara yol açabilir.",
|
||||
"browserReservedKeybindingTooltip": "Bu kısayol, tarayıcıya ayrılmış kısayollarla çakışıyor",
|
||||
"calculatingDimensions": "Boyutlar hesaplanıyor",
|
||||
"cancel": "İptal",
|
||||
"cancelled": "İptal Edildi",
|
||||
@@ -972,7 +970,6 @@
|
||||
"copy": "Kopyala",
|
||||
"copyAll": "Tümünü Kopyala",
|
||||
"copyJobId": "İş Kimliğini Kopyala",
|
||||
"copySystemInfo": "Sistem Bilgilerini Kopyala",
|
||||
"copyToClipboard": "Panoya Kopyala",
|
||||
"copyURL": "URL'yi Kopyala",
|
||||
"core": "Çekirdek",
|
||||
@@ -1019,7 +1016,6 @@
|
||||
"enterNewName": "Yeni adı girin",
|
||||
"enterNewNamePrompt": "Yeni adı girin:",
|
||||
"enterSubgraph": "Alt Grafiğe Gir",
|
||||
"enterYourKeybind": "Kısayol tuşunuzu girin",
|
||||
"error": "Hata",
|
||||
"errorLoadingImage": "Görüntü yüklenirken hata",
|
||||
"errorLoadingVideo": "Video yüklenirken hata",
|
||||
@@ -1089,7 +1085,6 @@
|
||||
"micPermissionDenied": "Mikrofon izni reddedildi",
|
||||
"migrate": "Taşı",
|
||||
"missing": "Eksik",
|
||||
"modifyKeybinding": "Kısayol tuşunu değiştir",
|
||||
"more": "Daha Fazla",
|
||||
"moreOptions": "Daha Fazla Seçenek",
|
||||
"moreWorkflows": "Daha fazla iş akışı",
|
||||
@@ -1098,7 +1093,6 @@
|
||||
"name": "Ad",
|
||||
"newFolder": "Yeni Klasör",
|
||||
"next": "İleri",
|
||||
"nextImage": "Sonraki görsel",
|
||||
"nightly": "NIGHTLY",
|
||||
"no": "Hayır",
|
||||
"noAudioRecorded": "Ses kaydedilmedi",
|
||||
@@ -1132,8 +1126,8 @@
|
||||
"playRecording": "Kaydı Oynat",
|
||||
"playbackSpeed": "Oynatma Hızı",
|
||||
"playing": "Oynatılıyor",
|
||||
"pressKeysForNewBinding": "Yeni bağlama için tuşlara basın",
|
||||
"preview": "ÖNİZLEME",
|
||||
"previousImage": "Önceki görsel",
|
||||
"profile": "Profil",
|
||||
"progressCountOf": "/",
|
||||
"queued": "Kuyrukta",
|
||||
@@ -1173,7 +1167,6 @@
|
||||
"resultsCount": "{count} Sonuç Bulundu",
|
||||
"running": "Çalışıyor",
|
||||
"save": "Kaydet",
|
||||
"saveAnyway": "Yine de Kaydet",
|
||||
"saving": "Kaydediliyor",
|
||||
"scrollLeft": "Sola Kaydır",
|
||||
"scrollRight": "Sağa Kaydır",
|
||||
@@ -1192,7 +1185,6 @@
|
||||
"selectItemsToDuplicate": "Çoğaltılacak öğeleri seçin",
|
||||
"selectItemsToRename": "Yeniden adlandırılacak öğeleri seçin",
|
||||
"selectedFile": "Seçilen dosya",
|
||||
"setAKeybindingForTheFollowing": "Aşağıdakiler için bir kısayol tuşu ayarla:",
|
||||
"setAsBackground": "Arka Plan Olarak Ayarla",
|
||||
"settings": "Ayarlar",
|
||||
"shortcutSuffix": " ({shortcut})",
|
||||
@@ -1208,8 +1200,6 @@
|
||||
"stopRecording": "Kaydı Durdur",
|
||||
"submit": "Gönder",
|
||||
"success": "Başarılı",
|
||||
"switchToGridView": "Izgara görünümüne geç",
|
||||
"switchToSingleView": "Tekli görünüme geç",
|
||||
"systemInfo": "Sistem Bilgisi",
|
||||
"terminal": "Terminal",
|
||||
"title": "Başlık",
|
||||
@@ -1239,8 +1229,6 @@
|
||||
"you": "Sen"
|
||||
},
|
||||
"graphCanvasMenu": {
|
||||
"canvasMode": "Tuval Modu",
|
||||
"canvasToolbar": "Tuval Araç Çubuğu",
|
||||
"fitView": "Görünüme Sığdır",
|
||||
"focusMode": "Odak Modu",
|
||||
"hand": "El",
|
||||
@@ -1477,26 +1465,12 @@
|
||||
"dragAndDropImage": "Bir görseli sürükleyip bırakın",
|
||||
"emptyWorkflowExplanation": "Çalışma akışınız boş. Bir uygulama oluşturmaya başlamak için önce bazı düğümler eklemelisiniz.",
|
||||
"enterNodeGraph": "Düğüm grafiğine gir",
|
||||
"error": {
|
||||
"getHelp": "Yardım için, kopyalanan hatayla birlikte {0}, {1} veya {2} adresini ziyaret edin.",
|
||||
"github": "GitHub sorunu gönder",
|
||||
"goto": "Grafikte hataları göster",
|
||||
"guide": "sorun giderme rehberi",
|
||||
"header": "Uygulamada bir hata oluştu",
|
||||
"log": "Hata Kayıtları",
|
||||
"mobileFixable": "Hatalar için {0} kontrol edin",
|
||||
"promptShow": "Hata raporunu göster",
|
||||
"promptVisitGraph": "Tüm hatayı görmek için düğüm grafiğini görüntüleyin.",
|
||||
"requiresGraph": "Oluşturma sırasında bir şeyler ters gitti. Bu, geçersiz gizli girdiler, eksik kaynaklar veya iş akışı yapılandırma sorunlarından kaynaklanıyor olabilir.",
|
||||
"support": "destek ekibimizle iletişime geçin"
|
||||
},
|
||||
"giveFeedback": "Geri bildirim ver",
|
||||
"graphMode": "Grafik Modu",
|
||||
"hasCreditCost": "Ekstra kredi gerektirir",
|
||||
"linearMode": "Uygulama Modu",
|
||||
"loadTemplate": "Şablon yükle",
|
||||
"mobileControls": "Düzenle ve Çalıştır",
|
||||
"mobileNoWorkflow": "Bu iş akışı uygulama modu için oluşturulmamış. Farklı bir tane deneyin.",
|
||||
"queue": {
|
||||
"clear": "Kuyruğu temizle",
|
||||
"clickToClear": "Kuyruğu temizlemek için tıklayın"
|
||||
@@ -1504,7 +1478,6 @@
|
||||
"rerun": "Tekrar Çalıştır",
|
||||
"reuseParameters": "Parametreleri Yeniden Kullan",
|
||||
"runCount": "Çalıştırma sayısı:",
|
||||
"viewGraph": "Düğüm grafiğini görüntüle",
|
||||
"viewJob": "İşi Görüntüle",
|
||||
"welcome": {
|
||||
"buildApp": "Uygulama oluştur",
|
||||
@@ -1713,7 +1686,6 @@
|
||||
"installedSection": "YÜKLÜ",
|
||||
"missingNodes": "Eksik Düğümler",
|
||||
"notInstalled": "Yüklü Değil",
|
||||
"unresolvedNodes": "Çözülemeyen Düğümler",
|
||||
"updatesAvailable": "Güncellemeler Mevcut"
|
||||
},
|
||||
"nightlyVersion": "Gecelik",
|
||||
@@ -1760,10 +1732,6 @@
|
||||
"uninstall": "Kaldır",
|
||||
"uninstallSelected": "Seçilenleri Kaldır",
|
||||
"uninstalling": "{id} kaldırılıyor",
|
||||
"unresolvedNodes": {
|
||||
"message": "Aşağıdaki düğümler yüklü değil ve kayıt defterinde bulunamadı.",
|
||||
"title": "Çözülemeyen Eksik Düğümler"
|
||||
},
|
||||
"update": "Güncelle",
|
||||
"updateAll": "Tümünü Güncelle",
|
||||
"updateSelected": "Seçilenleri Güncelle",
|
||||
@@ -2112,7 +2080,6 @@
|
||||
"OpenAI": "OpenAI",
|
||||
"PixVerse": "PixVerse",
|
||||
"Recraft": "Recraft",
|
||||
"Reve": "Reve",
|
||||
"Rodin": "Rodin",
|
||||
"Runway": "Runway",
|
||||
"Sora": "Sora",
|
||||
@@ -2412,33 +2379,6 @@
|
||||
"inputsNone": "GİRİŞ YOK",
|
||||
"inputsNoneTooltip": "Düğümün girişi yok",
|
||||
"locateNode": "Düğümü tuvalde bul",
|
||||
"missingModels": {
|
||||
"alreadyExistsInCategory": "Bu model zaten \"{category}\" içinde mevcut",
|
||||
"assetLoadTimeout": "Model algılama zaman aşımına uğradı. Lütfen iş akışını yeniden yüklemeyi deneyin.",
|
||||
"cancelSelection": "Seçimi iptal et",
|
||||
"clearUrl": "URL'yi temizle",
|
||||
"collapseNodes": "Referans veren node'ları gizle",
|
||||
"confirmSelection": "Seçimi onayla",
|
||||
"copyModelName": "Model adını kopyala",
|
||||
"customNodeDownloadDisabled": "Bulut ortamı, bu bölümde özel node'lar için model içe aktarmayı desteklemiyor. Lütfen standart yükleyici node'larını kullanın veya aşağıdaki kütüphaneden bir model ile değiştirin.",
|
||||
"expandNodes": "Referans veren node'ları göster",
|
||||
"import": "İçe aktar",
|
||||
"importAnyway": "Yine de içe aktar",
|
||||
"importFailed": "İçe aktarılamadı",
|
||||
"importNotSupported": "İçe Aktarma Desteklenmiyor",
|
||||
"imported": "İçe aktarıldı",
|
||||
"importing": "İçe aktarılıyor...",
|
||||
"locateNode": "Node'u tuvalde bul",
|
||||
"metadataFetchFailed": "Meta veriler alınamadı. Lütfen bağlantıyı kontrol edip tekrar deneyin.",
|
||||
"missingModelsTitle": "Eksik Modeller",
|
||||
"or": "VEYA",
|
||||
"typeMismatch": "Bu model \"{detectedType}\" gibi görünüyor. Emin misiniz?",
|
||||
"unknownCategory": "Bilinmeyen",
|
||||
"unsupportedUrl": "Sadece Civitai ve Hugging Face URL'leri desteklenmektedir.",
|
||||
"urlPlaceholder": "Model URL'sini yapıştırın (Civitai veya Hugging Face)",
|
||||
"useFromLibrary": "Kütüphaneden kullan",
|
||||
"usingFromLibrary": "Kütüphaneden kullanılıyor"
|
||||
},
|
||||
"missingNodePacks": {
|
||||
"applyChanges": "Değişiklikleri Uygula",
|
||||
"cloudMessage": "Bu iş akışı, Comfy Cloud'da henüz mevcut olmayan özel düğümler gerektiriyor.",
|
||||
@@ -3298,7 +3238,6 @@
|
||||
"interrupted": "Yürütme kesintiye uğradı",
|
||||
"legacyMaskEditorDeprecated": "Klasik maske düzenleyici kullanımdan kaldırıldı ve yakında kaldırılacak.",
|
||||
"migrateToLitegraphReroute": "Yeniden yönlendirme düğümleri gelecekteki sürümlerde kaldırılacaktır. Litegraph yerel yeniden yönlendirmeye geçmek için tıklayın.",
|
||||
"missingModelVerificationFailed": "Eksik modeller doğrulanamadı. Bazı modeller Hatalar sekmesinde gösterilmeyebilir.",
|
||||
"modelLoadedSuccessfully": "3B model başarıyla yüklendi",
|
||||
"no3dScene": "Doku uygulanacak 3D sahne yok",
|
||||
"no3dSceneToExport": "Dışa aktarılacak 3D sahne yok",
|
||||
|
||||
@@ -3207,21 +3207,6 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"FluxKVCache": {
|
||||
"description": "Flux ailesi modellerinde referans görselleri için KV Cache optimizasyonunu etkinleştirir.",
|
||||
"display_name": "Flux KV Cache",
|
||||
"inputs": {
|
||||
"model": {
|
||||
"name": "model",
|
||||
"tooltip": "KV Cache uygulanacak model."
|
||||
}
|
||||
},
|
||||
"outputs": {
|
||||
"0": {
|
||||
"tooltip": "KV Cache etkinleştirilmiş yamalı model."
|
||||
}
|
||||
}
|
||||
},
|
||||
"FluxKontextImageScale": {
|
||||
"description": "Bu düğüm, görüntüyü flux kontext için daha uygun bir boyuta yeniden boyutlandırır.",
|
||||
"display_name": "FluxKontext Görüntü Ölçeği",
|
||||
@@ -12870,133 +12855,6 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"ReveImageCreateNode": {
|
||||
"description": "Reve kullanarak metin açıklamalarından görseller oluşturun.",
|
||||
"display_name": "Reve Görsel Oluştur",
|
||||
"inputs": {
|
||||
"control_after_generate": {
|
||||
"name": "oluşturduktan sonra kontrol et"
|
||||
},
|
||||
"model": {
|
||||
"name": "model",
|
||||
"tooltip": "Oluşturma için kullanılacak model sürümü."
|
||||
},
|
||||
"model_aspect_ratio": {
|
||||
"name": "en_boy_oranı"
|
||||
},
|
||||
"model_test_time_scaling": {
|
||||
"name": "test_zamanı_ölçekleme"
|
||||
},
|
||||
"prompt": {
|
||||
"name": "prompt",
|
||||
"tooltip": "İstenen görselin metin açıklaması. En fazla 2560 karakter."
|
||||
},
|
||||
"remove_background": {
|
||||
"name": "remove_background",
|
||||
"tooltip": "Oluşturulan görselin arka planını kaldır. Ek maliyet oluşturabilir."
|
||||
},
|
||||
"seed": {
|
||||
"name": "seed",
|
||||
"tooltip": "Seed, düğümün tekrar çalıştırılıp çalıştırılmayacağını kontrol eder; seed ne olursa olsun sonuçlar deterministik değildir."
|
||||
},
|
||||
"upscale": {
|
||||
"name": "upscale",
|
||||
"tooltip": "Oluşturulan görseli büyüt. Ek maliyet oluşturabilir."
|
||||
}
|
||||
},
|
||||
"outputs": {
|
||||
"0": {
|
||||
"tooltip": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"ReveImageEditNode": {
|
||||
"description": "Reve ile doğal dil talimatları kullanarak görselleri düzenleyin.",
|
||||
"display_name": "Reve Görsel Düzenle",
|
||||
"inputs": {
|
||||
"control_after_generate": {
|
||||
"name": "oluşturduktan sonra kontrol et"
|
||||
},
|
||||
"edit_instruction": {
|
||||
"name": "düzenleme_talimatı",
|
||||
"tooltip": "Görselin nasıl düzenleneceğine dair metin açıklaması. En fazla 2560 karakter."
|
||||
},
|
||||
"image": {
|
||||
"name": "görsel",
|
||||
"tooltip": "Düzenlenecek görsel."
|
||||
},
|
||||
"model": {
|
||||
"name": "model",
|
||||
"tooltip": "Düzenleme için kullanılacak model sürümü."
|
||||
},
|
||||
"model_aspect_ratio": {
|
||||
"name": "en_boy_oranı"
|
||||
},
|
||||
"model_test_time_scaling": {
|
||||
"name": "test_zamanı_ölçekleme"
|
||||
},
|
||||
"remove_background": {
|
||||
"name": "remove_background",
|
||||
"tooltip": "Oluşturulan görselin arka planını kaldır. Ek maliyet oluşturabilir."
|
||||
},
|
||||
"seed": {
|
||||
"name": "seed",
|
||||
"tooltip": "Seed, düğümün tekrar çalıştırılıp çalıştırılmayacağını kontrol eder; seed ne olursa olsun sonuçlar deterministik değildir."
|
||||
},
|
||||
"upscale": {
|
||||
"name": "upscale",
|
||||
"tooltip": "Oluşturulan görseli büyüt. Ek maliyet oluşturabilir."
|
||||
}
|
||||
},
|
||||
"outputs": {
|
||||
"0": {
|
||||
"tooltip": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"ReveImageRemixNode": {
|
||||
"description": "Referans görselleri ve metin istemlerini birleştirerek Reve ile yeni görseller oluşturun.",
|
||||
"display_name": "Reve Görsel Remix",
|
||||
"inputs": {
|
||||
"control_after_generate": {
|
||||
"name": "oluşturduktan sonra kontrol et"
|
||||
},
|
||||
"model": {
|
||||
"name": "model",
|
||||
"tooltip": "Remix için kullanılacak model sürümü."
|
||||
},
|
||||
"model_aspect_ratio": {
|
||||
"name": "en_boy_oranı"
|
||||
},
|
||||
"model_test_time_scaling": {
|
||||
"name": "test_zamanı_ölçekleme"
|
||||
},
|
||||
"prompt": {
|
||||
"name": "prompt",
|
||||
"tooltip": "İstenen görselin metin açıklaması. Belirli görselleri indeks ile referans göstermek için XML img etiketleri ekleyebilirsiniz, örn. <img>0</img>, <img>1</img> vb."
|
||||
},
|
||||
"reference_images": {
|
||||
"name": "referans_görseller"
|
||||
},
|
||||
"remove_background": {
|
||||
"name": "remove_background",
|
||||
"tooltip": "Oluşturulan görselin arka planını kaldır. Ek maliyet oluşturabilir."
|
||||
},
|
||||
"seed": {
|
||||
"name": "seed",
|
||||
"tooltip": "Seed, düğümün tekrar çalıştırılıp çalıştırılmayacağını kontrol eder; seed ne olursa olsun sonuçlar deterministik değildir."
|
||||
},
|
||||
"upscale": {
|
||||
"name": "upscale",
|
||||
"tooltip": "Oluşturulan görseli büyüt. Ek maliyet oluşturabilir."
|
||||
}
|
||||
},
|
||||
"outputs": {
|
||||
"0": {
|
||||
"tooltip": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"Rodin3D_Detail": {
|
||||
"description": "Rodin API kullanarak 3D Varlıklar Oluştur",
|
||||
"display_name": "Rodin 3D Oluştur - Detay Oluştur",
|
||||
|
||||
@@ -936,8 +936,6 @@
|
||||
"batchRename": "批次重新命名",
|
||||
"beta": "測試版",
|
||||
"bookmark": "儲存至程式庫",
|
||||
"browserReservedKeybinding": "此快捷鍵已被部分瀏覽器保留,可能會產生非預期結果。",
|
||||
"browserReservedKeybindingTooltip": "此快捷鍵與瀏覽器保留的快捷鍵衝突",
|
||||
"calculatingDimensions": "計算尺寸中",
|
||||
"cancel": "取消",
|
||||
"cancelled": "已取消",
|
||||
@@ -972,7 +970,6 @@
|
||||
"copy": "複製",
|
||||
"copyAll": "全部複製",
|
||||
"copyJobId": "複製工作 ID",
|
||||
"copySystemInfo": "複製系統資訊",
|
||||
"copyToClipboard": "複製到剪貼簿",
|
||||
"copyURL": "複製網址",
|
||||
"core": "核心",
|
||||
@@ -1019,7 +1016,6 @@
|
||||
"enterNewName": "輸入新名稱",
|
||||
"enterNewNamePrompt": "輸入新名稱:",
|
||||
"enterSubgraph": "進入子圖",
|
||||
"enterYourKeybind": "輸入您的快捷鍵",
|
||||
"error": "錯誤",
|
||||
"errorLoadingImage": "載入圖片時發生錯誤",
|
||||
"errorLoadingVideo": "載入影片時發生錯誤",
|
||||
@@ -1089,7 +1085,6 @@
|
||||
"micPermissionDenied": "麥克風權限被拒絕",
|
||||
"migrate": "遷移",
|
||||
"missing": "缺少",
|
||||
"modifyKeybinding": "修改快捷鍵",
|
||||
"more": "更多",
|
||||
"moreOptions": "更多選項",
|
||||
"moreWorkflows": "更多工作流程",
|
||||
@@ -1098,7 +1093,6 @@
|
||||
"name": "名稱",
|
||||
"newFolder": "新資料夾",
|
||||
"next": "下一步",
|
||||
"nextImage": "下一張圖片",
|
||||
"nightly": "NIGHTLY",
|
||||
"no": "否",
|
||||
"noAudioRecorded": "沒有錄製到音訊",
|
||||
@@ -1132,8 +1126,8 @@
|
||||
"playRecording": "播放錄製",
|
||||
"playbackSpeed": "播放速度",
|
||||
"playing": "播放中",
|
||||
"pressKeysForNewBinding": "按下按鍵設定新綁定",
|
||||
"preview": "預覽",
|
||||
"previousImage": "上一張圖片",
|
||||
"profile": "個人檔案",
|
||||
"progressCountOf": "共",
|
||||
"queued": "已排隊",
|
||||
@@ -1173,7 +1167,6 @@
|
||||
"resultsCount": "找到 {count} 筆結果",
|
||||
"running": "執行中",
|
||||
"save": "儲存",
|
||||
"saveAnyway": "仍要儲存",
|
||||
"saving": "儲存中",
|
||||
"scrollLeft": "向左捲動",
|
||||
"scrollRight": "向右捲動",
|
||||
@@ -1192,7 +1185,6 @@
|
||||
"selectItemsToDuplicate": "請選擇要複製的項目",
|
||||
"selectItemsToRename": "請選擇要重新命名的項目",
|
||||
"selectedFile": "已選取的檔案",
|
||||
"setAKeybindingForTheFollowing": "為以下項目設定快捷鍵:",
|
||||
"setAsBackground": "設為背景",
|
||||
"settings": "設定",
|
||||
"shortcutSuffix": "({shortcut})",
|
||||
@@ -1208,8 +1200,6 @@
|
||||
"stopRecording": "停止錄音",
|
||||
"submit": "提交",
|
||||
"success": "成功",
|
||||
"switchToGridView": "切換至網格檢視",
|
||||
"switchToSingleView": "切換至單一檢視",
|
||||
"systemInfo": "系統資訊",
|
||||
"terminal": "終端機",
|
||||
"title": "標題",
|
||||
@@ -1239,8 +1229,6 @@
|
||||
"you": "你"
|
||||
},
|
||||
"graphCanvasMenu": {
|
||||
"canvasMode": "畫布模式",
|
||||
"canvasToolbar": "畫布工具列",
|
||||
"fitView": "適合視窗",
|
||||
"focusMode": "專注模式",
|
||||
"hand": "手形",
|
||||
@@ -1477,26 +1465,12 @@
|
||||
"dragAndDropImage": "拖曳圖片到此",
|
||||
"emptyWorkflowExplanation": "您的工作流程目前是空的。您需要先新增一些節點,才能開始建立應用程式。",
|
||||
"enterNodeGraph": "進入節點圖",
|
||||
"error": {
|
||||
"getHelp": "如需協助,請參閱我們的 {0}、{1} 或 {2} 並附上複製的錯誤資訊。",
|
||||
"github": "提交 GitHub 問題",
|
||||
"goto": "在圖中顯示錯誤",
|
||||
"guide": "疑難排解指南",
|
||||
"header": "此應用程式發生錯誤",
|
||||
"log": "錯誤日誌",
|
||||
"mobileFixable": "請檢查 {0} 以獲取錯誤資訊",
|
||||
"promptShow": "顯示錯誤報告",
|
||||
"promptVisitGraph": "檢視節點圖以查看完整錯誤。",
|
||||
"requiresGraph": "產生過程中發生錯誤。可能原因包括無效的隱藏輸入、缺少資源或工作流程設定問題。",
|
||||
"support": "聯絡我們的支援"
|
||||
},
|
||||
"giveFeedback": "提供回饋",
|
||||
"graphMode": "圖形模式",
|
||||
"hasCreditCost": "需要額外點數",
|
||||
"linearMode": "App 模式",
|
||||
"loadTemplate": "載入範本",
|
||||
"mobileControls": "編輯與執行",
|
||||
"mobileNoWorkflow": "此工作流程尚未為應用程式模式建立。請嘗試其他工作流程。",
|
||||
"queue": {
|
||||
"clear": "清除佇列",
|
||||
"clickToClear": "點擊以清除佇列"
|
||||
@@ -1504,7 +1478,6 @@
|
||||
"rerun": "重新執行",
|
||||
"reuseParameters": "重用參數",
|
||||
"runCount": "執行次數:",
|
||||
"viewGraph": "檢視節點圖",
|
||||
"viewJob": "檢視任務",
|
||||
"welcome": {
|
||||
"buildApp": "建立應用",
|
||||
@@ -1713,7 +1686,6 @@
|
||||
"installedSection": "已安裝",
|
||||
"missingNodes": "缺少節點",
|
||||
"notInstalled": "未安裝",
|
||||
"unresolvedNodes": "未解決的節點",
|
||||
"updatesAvailable": "有可用更新"
|
||||
},
|
||||
"nightlyVersion": "每夜建置版",
|
||||
@@ -1760,10 +1732,6 @@
|
||||
"uninstall": "解除安裝",
|
||||
"uninstallSelected": "解除安裝所選項目",
|
||||
"uninstalling": "正在解除安裝",
|
||||
"unresolvedNodes": {
|
||||
"message": "以下節點尚未安裝,且在註冊表中找不到。",
|
||||
"title": "未解決的缺失節點"
|
||||
},
|
||||
"update": "更新",
|
||||
"updateAll": "全部更新",
|
||||
"updateSelected": "更新所選項目",
|
||||
@@ -2112,7 +2080,6 @@
|
||||
"OpenAI": "OpenAI",
|
||||
"PixVerse": "PixVerse",
|
||||
"Recraft": "Recraft",
|
||||
"Reve": "Reve",
|
||||
"Rodin": "羅丹",
|
||||
"Runway": "跑道",
|
||||
"Sora": "蒼穹",
|
||||
@@ -2412,33 +2379,6 @@
|
||||
"inputsNone": "無輸入",
|
||||
"inputsNoneTooltip": "此節點沒有輸入",
|
||||
"locateNode": "在畫布上定位節點",
|
||||
"missingModels": {
|
||||
"alreadyExistsInCategory": "此模型已存在於「{category}」中",
|
||||
"assetLoadTimeout": "模型偵測逾時。請嘗試重新載入工作流程。",
|
||||
"cancelSelection": "取消選擇",
|
||||
"clearUrl": "清除網址",
|
||||
"collapseNodes": "隱藏參照節點",
|
||||
"confirmSelection": "確認選擇",
|
||||
"copyModelName": "複製模型名稱",
|
||||
"customNodeDownloadDisabled": "雲端環境不支援此區段自訂節點的模型匯入。請使用標準載入節點或以下資料庫中的模型替代。",
|
||||
"expandNodes": "顯示參照節點",
|
||||
"import": "匯入",
|
||||
"importAnyway": "仍要匯入",
|
||||
"importFailed": "匯入失敗",
|
||||
"importNotSupported": "不支援匯入",
|
||||
"imported": "已匯入",
|
||||
"importing": "匯入中...",
|
||||
"locateNode": "在畫布上定位節點",
|
||||
"metadataFetchFailed": "取得中繼資料失敗。請檢查連結並重試。",
|
||||
"missingModelsTitle": "缺少的模型",
|
||||
"or": "或",
|
||||
"typeMismatch": "此模型似乎是「{detectedType}」。您確定嗎?",
|
||||
"unknownCategory": "未知",
|
||||
"unsupportedUrl": "僅支援 Civitai 與 Hugging Face 網址。",
|
||||
"urlPlaceholder": "貼上模型網址(Civitai 或 Hugging Face)",
|
||||
"useFromLibrary": "從資料庫使用",
|
||||
"usingFromLibrary": "已從資料庫使用"
|
||||
},
|
||||
"missingNodePacks": {
|
||||
"applyChanges": "套用變更",
|
||||
"cloudMessage": "此工作流程需要 Comfy Cloud 尚未提供的自訂節點。",
|
||||
@@ -3298,7 +3238,6 @@
|
||||
"interrupted": "執行已被中斷",
|
||||
"legacyMaskEditorDeprecated": "舊版遮罩編輯器即將淘汰並很快移除。",
|
||||
"migrateToLitegraphReroute": "重導節點將於未來版本移除。點擊以遷移至 litegraph 原生重導。",
|
||||
"missingModelVerificationFailed": "驗證缺少的模型失敗。部分模型可能不會顯示在錯誤標籤頁中。",
|
||||
"modelLoadedSuccessfully": "3D 模型載入成功",
|
||||
"no3dScene": "沒有 3D 場景可套用材質",
|
||||
"no3dSceneToExport": "沒有 3D 場景可匯出",
|
||||
|
||||
@@ -3207,21 +3207,6 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"FluxKVCache": {
|
||||
"description": "為 Flux 系列模型的參考圖像啟用 KV 快取最佳化。",
|
||||
"display_name": "Flux KV 快取",
|
||||
"inputs": {
|
||||
"model": {
|
||||
"name": "模型",
|
||||
"tooltip": "要啟用 KV 快取的模型。"
|
||||
}
|
||||
},
|
||||
"outputs": {
|
||||
"0": {
|
||||
"tooltip": "已啟用 KV 快取的修補模型。"
|
||||
}
|
||||
}
|
||||
},
|
||||
"FluxKontextImageScale": {
|
||||
"description": "此節點將圖像調整為更適合flux kontext的尺寸。",
|
||||
"display_name": "FluxKontextImageScale",
|
||||
@@ -12870,133 +12855,6 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"ReveImageCreateNode": {
|
||||
"description": "使用 Reve 根據文字描述生成圖像。",
|
||||
"display_name": "Reve 圖像生成",
|
||||
"inputs": {
|
||||
"control_after_generate": {
|
||||
"name": "生成後控制"
|
||||
},
|
||||
"model": {
|
||||
"name": "模型",
|
||||
"tooltip": "用於生成的模型版本。"
|
||||
},
|
||||
"model_aspect_ratio": {
|
||||
"name": "長寬比"
|
||||
},
|
||||
"model_test_time_scaling": {
|
||||
"name": "測試時縮放"
|
||||
},
|
||||
"prompt": {
|
||||
"name": "提示詞",
|
||||
"tooltip": "欲生成圖像的文字描述。最多 2560 字元。"
|
||||
},
|
||||
"remove_background": {
|
||||
"name": "去背",
|
||||
"tooltip": "移除生成圖像的背景。可能會產生額外費用。"
|
||||
},
|
||||
"seed": {
|
||||
"name": "種子",
|
||||
"tooltip": "種子控制此節點是否重新執行;無論種子為何,結果皆為非確定性。"
|
||||
},
|
||||
"upscale": {
|
||||
"name": "放大",
|
||||
"tooltip": "對生成的圖像進行放大。可能會產生額外費用。"
|
||||
}
|
||||
},
|
||||
"outputs": {
|
||||
"0": {
|
||||
"tooltip": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"ReveImageEditNode": {
|
||||
"description": "使用 Reve 以自然語言指令編輯圖像。",
|
||||
"display_name": "Reve 圖像編輯",
|
||||
"inputs": {
|
||||
"control_after_generate": {
|
||||
"name": "生成後控制"
|
||||
},
|
||||
"edit_instruction": {
|
||||
"name": "編輯指令",
|
||||
"tooltip": "描述如何編輯圖像的文字說明。最多 2560 字元。"
|
||||
},
|
||||
"image": {
|
||||
"name": "圖像",
|
||||
"tooltip": "要編輯的圖像。"
|
||||
},
|
||||
"model": {
|
||||
"name": "模型",
|
||||
"tooltip": "用於編輯的模型版本。"
|
||||
},
|
||||
"model_aspect_ratio": {
|
||||
"name": "長寬比"
|
||||
},
|
||||
"model_test_time_scaling": {
|
||||
"name": "測試時縮放"
|
||||
},
|
||||
"remove_background": {
|
||||
"name": "去背",
|
||||
"tooltip": "移除生成圖像的背景。可能會產生額外費用。"
|
||||
},
|
||||
"seed": {
|
||||
"name": "種子",
|
||||
"tooltip": "種子控制此節點是否重新執行;無論種子為何,結果皆為非確定性。"
|
||||
},
|
||||
"upscale": {
|
||||
"name": "放大",
|
||||
"tooltip": "對生成的圖像進行放大。可能會產生額外費用。"
|
||||
}
|
||||
},
|
||||
"outputs": {
|
||||
"0": {
|
||||
"tooltip": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"ReveImageRemixNode": {
|
||||
"description": "結合參考圖像與文字提示,使用 Reve 創建新圖像。",
|
||||
"display_name": "Reve 圖像混合",
|
||||
"inputs": {
|
||||
"control_after_generate": {
|
||||
"name": "生成後控制"
|
||||
},
|
||||
"model": {
|
||||
"name": "模型",
|
||||
"tooltip": "用於混合的模型版本。"
|
||||
},
|
||||
"model_aspect_ratio": {
|
||||
"name": "長寬比"
|
||||
},
|
||||
"model_test_time_scaling": {
|
||||
"name": "測試時縮放"
|
||||
},
|
||||
"prompt": {
|
||||
"name": "提示詞",
|
||||
"tooltip": "欲生成圖像的文字描述。可包含 XML img 標籤以索引特定圖像,例如 <img>0</img>、<img>1</img> 等。"
|
||||
},
|
||||
"reference_images": {
|
||||
"name": "參考圖像"
|
||||
},
|
||||
"remove_background": {
|
||||
"name": "去背",
|
||||
"tooltip": "移除生成圖像的背景。可能會產生額外費用。"
|
||||
},
|
||||
"seed": {
|
||||
"name": "種子",
|
||||
"tooltip": "種子控制此節點是否重新執行;無論種子為何,結果皆為非確定性。"
|
||||
},
|
||||
"upscale": {
|
||||
"name": "放大",
|
||||
"tooltip": "對生成的圖像進行放大。可能會產生額外費用。"
|
||||
}
|
||||
},
|
||||
"outputs": {
|
||||
"0": {
|
||||
"tooltip": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"Rodin3D_Detail": {
|
||||
"description": "使用 Rodin API 生成 3D 資源",
|
||||
"display_name": "Rodin 3D 生成 - 細節生成",
|
||||
|
||||
@@ -936,8 +936,6 @@
|
||||
"batchRename": "批量重命名",
|
||||
"beta": "测试版",
|
||||
"bookmark": "保存到库",
|
||||
"browserReservedKeybinding": "此快捷键被部分浏览器保留,可能导致意外结果。",
|
||||
"browserReservedKeybindingTooltip": "此快捷键与浏览器保留的快捷键冲突",
|
||||
"calculatingDimensions": "正在计算尺寸",
|
||||
"cancel": "取消",
|
||||
"cancelled": "已取消",
|
||||
@@ -972,7 +970,6 @@
|
||||
"copy": "复制",
|
||||
"copyAll": "全部复制",
|
||||
"copyJobId": "复制队列 ID",
|
||||
"copySystemInfo": "复制系统信息",
|
||||
"copyToClipboard": "复制到剪贴板",
|
||||
"copyURL": "复制链接",
|
||||
"core": "核心",
|
||||
@@ -1019,7 +1016,6 @@
|
||||
"enterNewName": "输入新名称",
|
||||
"enterNewNamePrompt": "输入新名称:",
|
||||
"enterSubgraph": "进入子图",
|
||||
"enterYourKeybind": "输入你的快捷键",
|
||||
"error": "错误",
|
||||
"errorLoadingImage": "图片加载出错",
|
||||
"errorLoadingVideo": "视频加载出错",
|
||||
@@ -1089,7 +1085,6 @@
|
||||
"micPermissionDenied": "麦克风权限被拒绝",
|
||||
"migrate": "迁移",
|
||||
"missing": "缺失",
|
||||
"modifyKeybinding": "修改快捷键",
|
||||
"more": "更多",
|
||||
"moreOptions": "更多选项",
|
||||
"moreWorkflows": "更多工作流",
|
||||
@@ -1098,7 +1093,6 @@
|
||||
"name": "名称",
|
||||
"newFolder": "新文件夹",
|
||||
"next": "下一个",
|
||||
"nextImage": "下一张图像",
|
||||
"nightly": "NIGHTLY",
|
||||
"no": "否",
|
||||
"noAudioRecorded": "未录制音频",
|
||||
@@ -1132,8 +1126,8 @@
|
||||
"playRecording": "播放录音",
|
||||
"playbackSpeed": "播放速度",
|
||||
"playing": "播放中",
|
||||
"pressKeysForNewBinding": "按下按键设置新绑定",
|
||||
"preview": "预览",
|
||||
"previousImage": "上一张图像",
|
||||
"profile": "档案",
|
||||
"progressCountOf": "共",
|
||||
"queued": "已执行",
|
||||
@@ -1173,7 +1167,6 @@
|
||||
"resultsCount": "找到 {count} 个结果",
|
||||
"running": "正在运行",
|
||||
"save": "保存",
|
||||
"saveAnyway": "仍然保存",
|
||||
"saving": "正在保存",
|
||||
"scrollLeft": "向左滚动",
|
||||
"scrollRight": "向右滚动",
|
||||
@@ -1192,7 +1185,6 @@
|
||||
"selectItemsToDuplicate": "选择复制",
|
||||
"selectItemsToRename": "选择重命名",
|
||||
"selectedFile": "已选文件",
|
||||
"setAKeybindingForTheFollowing": "为以下操作设置快捷键:",
|
||||
"setAsBackground": "设为背景",
|
||||
"settings": "设置",
|
||||
"shortcutSuffix": "({shortcut})",
|
||||
@@ -1208,8 +1200,6 @@
|
||||
"stopRecording": "停止录音",
|
||||
"submit": "提交",
|
||||
"success": "成功",
|
||||
"switchToGridView": "切换到网格视图",
|
||||
"switchToSingleView": "切换到单图视图",
|
||||
"systemInfo": "系统信息",
|
||||
"terminal": "终端",
|
||||
"title": "标题",
|
||||
@@ -1239,8 +1229,6 @@
|
||||
"you": "你"
|
||||
},
|
||||
"graphCanvasMenu": {
|
||||
"canvasMode": "画布模式",
|
||||
"canvasToolbar": "画布工具栏",
|
||||
"fitView": "适应视图",
|
||||
"focusMode": "专注模式",
|
||||
"hand": "拖拽",
|
||||
@@ -1477,26 +1465,12 @@
|
||||
"dragAndDropImage": "拖拽图片到此处",
|
||||
"emptyWorkflowExplanation": "你的工作流为空。你需要先添加一些节点,才能开始构建应用。",
|
||||
"enterNodeGraph": "进入节点图",
|
||||
"error": {
|
||||
"getHelp": "如需帮助,请查看我们的 {0}、{1} 或 {2},并附上复制的错误信息。",
|
||||
"github": "提交 GitHub 问题",
|
||||
"goto": "在图中显示错误",
|
||||
"guide": "故障排查指南",
|
||||
"header": "应用遇到错误",
|
||||
"log": "错误日志",
|
||||
"mobileFixable": "请检查 {0} 以获取错误信息",
|
||||
"promptShow": "显示错误报告",
|
||||
"promptVisitGraph": "查看节点图以获取完整错误信息。",
|
||||
"requiresGraph": "生成过程中出现问题。可能由于无效的隐藏输入、缺失资源或工作流配置问题导致。",
|
||||
"support": "联系我们的支持团队"
|
||||
},
|
||||
"giveFeedback": "提供反馈",
|
||||
"graphMode": "图形模式",
|
||||
"hasCreditCost": "需要额外积分",
|
||||
"linearMode": "App 模式",
|
||||
"loadTemplate": "加载模板",
|
||||
"mobileControls": "编辑与运行",
|
||||
"mobileNoWorkflow": "此工作流未为应用模式构建。请尝试其他工作流。",
|
||||
"queue": {
|
||||
"clear": "清空队列",
|
||||
"clickToClear": "点击清空队列"
|
||||
@@ -1504,7 +1478,6 @@
|
||||
"rerun": "重新运行",
|
||||
"reuseParameters": "复用参数",
|
||||
"runCount": "运行次数:",
|
||||
"viewGraph": "查看节点图",
|
||||
"viewJob": "查看任务",
|
||||
"welcome": {
|
||||
"buildApp": "构建应用",
|
||||
@@ -1713,7 +1686,6 @@
|
||||
"installedSection": "已安装",
|
||||
"missingNodes": "缺失节点",
|
||||
"notInstalled": "未安装",
|
||||
"unresolvedNodes": "未解析节点",
|
||||
"updatesAvailable": "有可用更新"
|
||||
},
|
||||
"nightlyVersion": "每夜",
|
||||
@@ -1760,10 +1732,6 @@
|
||||
"uninstall": "卸载",
|
||||
"uninstallSelected": "卸载所选",
|
||||
"uninstalling": "正在卸载",
|
||||
"unresolvedNodes": {
|
||||
"message": "以下节点未安装,且在注册表中未找到。",
|
||||
"title": "未解析的缺失节点"
|
||||
},
|
||||
"update": "更新",
|
||||
"updateAll": "全部更新",
|
||||
"updateSelected": "更新所选",
|
||||
@@ -2112,7 +2080,6 @@
|
||||
"OpenAI": "OpenAI",
|
||||
"PixVerse": "PixVerse",
|
||||
"Recraft": "Recraft",
|
||||
"Reve": "Reve",
|
||||
"Rodin": "Rodin",
|
||||
"Runway": "Runway",
|
||||
"Sora": "Sora",
|
||||
@@ -2412,33 +2379,6 @@
|
||||
"inputsNone": "无输入",
|
||||
"inputsNoneTooltip": "节点没有输入",
|
||||
"locateNode": "在画布上定位节点",
|
||||
"missingModels": {
|
||||
"alreadyExistsInCategory": "该模型已存在于“{category}”中",
|
||||
"assetLoadTimeout": "模型检测超时。请尝试重新加载工作流。",
|
||||
"cancelSelection": "取消选择",
|
||||
"clearUrl": "清除链接",
|
||||
"collapseNodes": "隐藏引用节点",
|
||||
"confirmSelection": "确认选择",
|
||||
"copyModelName": "复制模型名称",
|
||||
"customNodeDownloadDisabled": "云环境不支持在此部分为自定义节点导入模型。请使用标准加载节点或在下方库中选择模型替代。",
|
||||
"expandNodes": "显示引用节点",
|
||||
"import": "导入",
|
||||
"importAnyway": "仍然导入",
|
||||
"importFailed": "导入失败",
|
||||
"importNotSupported": "不支持导入",
|
||||
"imported": "已导入",
|
||||
"importing": "正在导入...",
|
||||
"locateNode": "在画布上定位节点",
|
||||
"metadataFetchFailed": "获取元数据失败。请检查链接后重试。",
|
||||
"missingModelsTitle": "缺失模型",
|
||||
"or": "或",
|
||||
"typeMismatch": "该模型似乎是“{detectedType}”。你确定要继续吗?",
|
||||
"unknownCategory": "未知",
|
||||
"unsupportedUrl": "仅支持 Civitai 和 Hugging Face 链接。",
|
||||
"urlPlaceholder": "粘贴模型链接(Civitai 或 Hugging Face)",
|
||||
"useFromLibrary": "从库中使用",
|
||||
"usingFromLibrary": "正在从库中使用"
|
||||
},
|
||||
"missingNodePacks": {
|
||||
"applyChanges": "应用更改",
|
||||
"cloudMessage": "此工作流需要 Comfy Cloud 上尚未提供的自定义节点。",
|
||||
@@ -3310,7 +3250,6 @@
|
||||
"interrupted": "执行已被中断",
|
||||
"legacyMaskEditorDeprecated": "旧版遮罩编辑器已弃用,即将删除。",
|
||||
"migrateToLitegraphReroute": "将来的版本中将删除重定向节点。点击以迁移到litegraph-native重定向。",
|
||||
"missingModelVerificationFailed": "验证缺失模型失败。部分模型可能不会在错误标签页中显示。",
|
||||
"modelLoadedSuccessfully": "3D模型加载成功",
|
||||
"no3dScene": "没有3D场景可以应用纹理",
|
||||
"no3dSceneToExport": "没有3D场景可以导出",
|
||||
|
||||
@@ -3207,21 +3207,6 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"FluxKVCache": {
|
||||
"description": "为 Flux 系列模型的参考图像启用 KV 缓存优化。",
|
||||
"display_name": "Flux KV 缓存",
|
||||
"inputs": {
|
||||
"model": {
|
||||
"name": "模型",
|
||||
"tooltip": "要在其上启用 KV 缓存的模型。"
|
||||
}
|
||||
},
|
||||
"outputs": {
|
||||
"0": {
|
||||
"tooltip": "已启用 KV 缓存的模型。"
|
||||
}
|
||||
}
|
||||
},
|
||||
"FluxKontextImageScale": {
|
||||
"description": "将图像调整为更适合 Flux Kontext 的尺寸。",
|
||||
"display_name": "图像缩放为FluxKontext",
|
||||
@@ -12870,133 +12855,6 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"ReveImageCreateNode": {
|
||||
"description": "使用 Reve 根据文本描述生成图像。",
|
||||
"display_name": "Reve 图像生成",
|
||||
"inputs": {
|
||||
"control_after_generate": {
|
||||
"name": "control after generate"
|
||||
},
|
||||
"model": {
|
||||
"name": "model",
|
||||
"tooltip": "用于生成的模型版本。"
|
||||
},
|
||||
"model_aspect_ratio": {
|
||||
"name": "aspect_ratio"
|
||||
},
|
||||
"model_test_time_scaling": {
|
||||
"name": "test_time_scaling"
|
||||
},
|
||||
"prompt": {
|
||||
"name": "prompt",
|
||||
"tooltip": "期望图像的文本描述。最多 2560 个字符。"
|
||||
},
|
||||
"remove_background": {
|
||||
"name": "remove_background",
|
||||
"tooltip": "移除生成图像的背景。可能会产生额外费用。"
|
||||
},
|
||||
"seed": {
|
||||
"name": "seed",
|
||||
"tooltip": "seed 控制节点是否重新运行;无论 seed 如何,结果都是非确定性的。"
|
||||
},
|
||||
"upscale": {
|
||||
"name": "upscale",
|
||||
"tooltip": "对生成的图像进行放大。可能会产生额外费用。"
|
||||
}
|
||||
},
|
||||
"outputs": {
|
||||
"0": {
|
||||
"tooltip": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"ReveImageEditNode": {
|
||||
"description": "使用 Reve 通过自然语言指令编辑图像。",
|
||||
"display_name": "Reve 图像编辑",
|
||||
"inputs": {
|
||||
"control_after_generate": {
|
||||
"name": "control after generate"
|
||||
},
|
||||
"edit_instruction": {
|
||||
"name": "edit_instruction",
|
||||
"tooltip": "关于如何编辑图像的文本描述。最多 2560 个字符。"
|
||||
},
|
||||
"image": {
|
||||
"name": "image",
|
||||
"tooltip": "要编辑的图像。"
|
||||
},
|
||||
"model": {
|
||||
"name": "model",
|
||||
"tooltip": "用于编辑的模型版本。"
|
||||
},
|
||||
"model_aspect_ratio": {
|
||||
"name": "aspect_ratio"
|
||||
},
|
||||
"model_test_time_scaling": {
|
||||
"name": "test_time_scaling"
|
||||
},
|
||||
"remove_background": {
|
||||
"name": "remove_background",
|
||||
"tooltip": "移除生成图像的背景。可能会产生额外费用。"
|
||||
},
|
||||
"seed": {
|
||||
"name": "seed",
|
||||
"tooltip": "seed 控制节点是否重新运行;无论 seed 如何,结果都是非确定性的。"
|
||||
},
|
||||
"upscale": {
|
||||
"name": "upscale",
|
||||
"tooltip": "对生成的图像进行放大。可能会产生额外费用。"
|
||||
}
|
||||
},
|
||||
"outputs": {
|
||||
"0": {
|
||||
"tooltip": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"ReveImageRemixNode": {
|
||||
"description": "结合参考图像和文本提示,使用 Reve 创建新图像。",
|
||||
"display_name": "Reve 图像混合",
|
||||
"inputs": {
|
||||
"control_after_generate": {
|
||||
"name": "control after generate"
|
||||
},
|
||||
"model": {
|
||||
"name": "model",
|
||||
"tooltip": "用于混合的模型版本。"
|
||||
},
|
||||
"model_aspect_ratio": {
|
||||
"name": "aspect_ratio"
|
||||
},
|
||||
"model_test_time_scaling": {
|
||||
"name": "test_time_scaling"
|
||||
},
|
||||
"prompt": {
|
||||
"name": "prompt",
|
||||
"tooltip": "期望图像的文本描述。可包含 XML img 标签,通过索引引用特定图像,例如 <img>0</img>、<img>1</img> 等。"
|
||||
},
|
||||
"reference_images": {
|
||||
"name": "reference_images"
|
||||
},
|
||||
"remove_background": {
|
||||
"name": "remove_background",
|
||||
"tooltip": "移除生成图像的背景。可能会产生额外费用。"
|
||||
},
|
||||
"seed": {
|
||||
"name": "seed",
|
||||
"tooltip": "seed 控制节点是否重新运行;无论 seed 如何,结果都是非确定性的。"
|
||||
},
|
||||
"upscale": {
|
||||
"name": "upscale",
|
||||
"tooltip": "对生成的图像进行放大。可能会产生额外费用。"
|
||||
}
|
||||
},
|
||||
"outputs": {
|
||||
"0": {
|
||||
"tooltip": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"Rodin3D_Detail": {
|
||||
"description": "使用Rodin API生成3D资源",
|
||||
"display_name": "Rodin 3D生成 - 细节生成",
|
||||
|
||||
@@ -186,7 +186,7 @@ const tooltipDelay = computed<number>(() =>
|
||||
|
||||
const { isLoading, error } = useImage({
|
||||
src: asset.preview_url ?? '',
|
||||
alt: displayName.value
|
||||
alt: asset.display_name || asset.name
|
||||
})
|
||||
|
||||
function handleSelect() {
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
:aria-label="
|
||||
asset
|
||||
? $t('assetBrowser.ariaLabel.assetCard', {
|
||||
name: getAssetDisplayName(asset),
|
||||
name: asset.display_name || asset.name,
|
||||
type: fileKind
|
||||
})
|
||||
: $t('assetBrowser.ariaLabel.loadingAsset')
|
||||
@@ -152,7 +152,6 @@ import { cn } from '@/utils/tailwindUtil'
|
||||
import { getAssetType } from '../composables/media/assetMappers'
|
||||
import { useMediaAssetActions } from '../composables/useMediaAssetActions'
|
||||
import type { AssetItem } from '../schemas/assetSchema'
|
||||
import { getAssetDisplayName } from '../utils/assetMetadataUtils'
|
||||
import type { MediaKind } from '../schemas/mediaAssetSchema'
|
||||
import { MediaAssetKey } from '../schemas/mediaAssetSchema'
|
||||
import MediaTitle from './MediaTitle.vue'
|
||||
@@ -226,7 +225,7 @@ const canInspect = computed(() => isPreviewableMediaType(fileKind.value))
|
||||
|
||||
// Get filename without extension
|
||||
const fileName = computed(() => {
|
||||
return getFilenameDetails(asset ? getAssetDisplayName(asset) : '').filename
|
||||
return getFilenameDetails(asset?.display_name || asset?.name || '').filename
|
||||
})
|
||||
|
||||
// Adapt AssetItem to legacy AssetMeta format for existing components
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
<img
|
||||
v-if="!error"
|
||||
:src="asset.src"
|
||||
:alt="getAssetDisplayName(asset)"
|
||||
:alt="asset.display_name || asset.name"
|
||||
class="size-full object-contain transition-transform duration-300 group-hover:scale-105 group-data-[selected=true]:scale-105"
|
||||
/>
|
||||
<div
|
||||
@@ -22,7 +22,6 @@
|
||||
import { useImage, whenever } from '@vueuse/core'
|
||||
|
||||
import type { AssetMeta } from '../schemas/mediaAssetSchema'
|
||||
import { getAssetDisplayName } from '../utils/assetMetadataUtils'
|
||||
|
||||
const { asset } = defineProps<{
|
||||
asset: AssetMeta
|
||||
@@ -35,7 +34,7 @@ const emit = defineEmits<{
|
||||
|
||||
const { state, error, isReady } = useImage({
|
||||
src: asset.src ?? '',
|
||||
alt: getAssetDisplayName(asset)
|
||||
alt: asset.display_name || asset.name
|
||||
})
|
||||
|
||||
whenever(
|
||||
|
||||
@@ -14,7 +14,6 @@ import { useNodeDefStore } from '@/stores/nodeDefStore'
|
||||
import { getOutputAssetMetadata } from '../schemas/assetMetadataSchema'
|
||||
import { useAssetsStore } from '@/stores/assetsStore'
|
||||
import { useDialogStore } from '@/stores/dialogStore'
|
||||
import { getAssetDisplayName } from '../utils/assetMetadataUtils'
|
||||
import { getAssetType } from '../utils/assetTypeUtil'
|
||||
import { getAssetUrl } from '../utils/assetUrlUtil'
|
||||
import { createAnnotatedPath } from '@/utils/createAnnotatedPath'
|
||||
@@ -69,7 +68,7 @@ export function useMediaAssetActions() {
|
||||
if (!targetAsset) return
|
||||
|
||||
try {
|
||||
const filename = getAssetDisplayName(targetAsset)
|
||||
const filename = targetAsset.display_name || targetAsset.name
|
||||
// Prefer preview_url (already includes subfolder) with getAssetUrl as fallback
|
||||
const downloadUrl = targetAsset.preview_url || getAssetUrl(targetAsset)
|
||||
|
||||
@@ -110,7 +109,7 @@ export function useMediaAssetActions() {
|
||||
|
||||
try {
|
||||
assets.forEach((asset) => {
|
||||
const filename = getAssetDisplayName(asset)
|
||||
const filename = asset.display_name || asset.name
|
||||
const downloadUrl = asset.preview_url || getAssetUrl(asset)
|
||||
downloadFile(downloadUrl, filename)
|
||||
})
|
||||
|
||||
@@ -70,35 +70,20 @@ describe('assetMetadataUtils', () => {
|
||||
{
|
||||
name: 'returns name from user_metadata when present',
|
||||
user_metadata: { name: 'My Custom Name' },
|
||||
display_name: 'ComfyUI_00001_.png',
|
||||
expected: 'My Custom Name'
|
||||
},
|
||||
{
|
||||
name: 'returns display_name when user_metadata.name is absent',
|
||||
user_metadata: undefined,
|
||||
display_name: 'ComfyUI_00001_.png',
|
||||
expected: 'ComfyUI_00001_.png'
|
||||
},
|
||||
{
|
||||
name: 'falls back to asset name when both are absent',
|
||||
user_metadata: undefined,
|
||||
display_name: undefined,
|
||||
name: 'falls back to asset name for non-string',
|
||||
user_metadata: { name: 123 },
|
||||
expected: 'test-model'
|
||||
},
|
||||
{
|
||||
name: 'skips non-string user_metadata.name',
|
||||
user_metadata: { name: 123 },
|
||||
display_name: 'ComfyUI_00001_.png',
|
||||
expected: 'ComfyUI_00001_.png'
|
||||
},
|
||||
{
|
||||
name: 'falls back to asset name when display_name is empty',
|
||||
name: 'falls back to asset name for undefined',
|
||||
user_metadata: undefined,
|
||||
display_name: '',
|
||||
expected: 'test-model'
|
||||
}
|
||||
])('$name', ({ user_metadata, display_name, expected }) => {
|
||||
const asset = { ...mockAsset, user_metadata, display_name }
|
||||
])('$name', ({ user_metadata, expected }) => {
|
||||
const asset = { ...mockAsset, user_metadata }
|
||||
expect(getAssetDisplayName(asset)).toBe(expected)
|
||||
})
|
||||
})
|
||||
|
||||
@@ -58,12 +58,12 @@ export function getAssetBaseModels(asset: AssetItem): string[] {
|
||||
|
||||
/**
|
||||
* Gets the display name for an asset
|
||||
* Checks user_metadata.name, then metadata.name, then display_name, then asset.name
|
||||
* Checks user_metadata.name first, then metadata.name, then asset.name
|
||||
* @param asset - The asset to get display name from
|
||||
* @returns The display name
|
||||
*/
|
||||
export function getAssetDisplayName(asset: AssetItem): string {
|
||||
return getStringProperty(asset, 'name') || asset.display_name || asset.name
|
||||
return getStringProperty(asset, 'name') ?? asset.name
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
import type { PostHogConfig } from 'posthog-js'
|
||||
|
||||
import type { TelemetryEventName } from '@/platform/telemetry/types'
|
||||
|
||||
/**
|
||||
@@ -33,7 +31,7 @@ export type RemoteConfig = {
|
||||
mixpanel_token?: string
|
||||
posthog_project_token?: string
|
||||
posthog_api_host?: string
|
||||
posthog_config?: Partial<PostHogConfig>
|
||||
posthog_debug?: boolean
|
||||
subscription_required?: boolean
|
||||
server_health_alert?: ServerHealthAlert
|
||||
max_upload_size?: number
|
||||
|
||||
@@ -1,14 +0,0 @@
|
||||
<script setup lang="ts">
|
||||
import { computed } from 'vue'
|
||||
|
||||
import NightlySurveyPopover from './NightlySurveyPopover.vue'
|
||||
import { getEnabledSurveys } from './surveyRegistry'
|
||||
|
||||
const enabledSurveys = computed(() => getEnabledSurveys())
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<template v-for="config in enabledSurveys" :key="config.featureId">
|
||||
<NightlySurveyPopover :config="config" />
|
||||
</template>
|
||||
</template>
|
||||
@@ -1,77 +0,0 @@
|
||||
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'
|
||||
|
||||
const getSurveyConfig = vi.hoisted(() =>
|
||||
vi.fn<(featureId: string) => { enabled: boolean } | undefined>()
|
||||
)
|
||||
|
||||
vi.mock('./surveyRegistry', () => ({
|
||||
getSurveyConfig
|
||||
}))
|
||||
|
||||
describe('useSurveyFeatureTracking', () => {
|
||||
beforeEach(() => {
|
||||
localStorage.clear()
|
||||
vi.resetModules()
|
||||
getSurveyConfig.mockReset()
|
||||
})
|
||||
|
||||
afterEach(() => {
|
||||
localStorage.clear()
|
||||
})
|
||||
|
||||
it('tracks usage when config is enabled', async () => {
|
||||
getSurveyConfig.mockReturnValue({ enabled: true })
|
||||
|
||||
const { useSurveyFeatureTracking } =
|
||||
await import('./useSurveyFeatureTracking')
|
||||
const { trackFeatureUsed, useCount } =
|
||||
useSurveyFeatureTracking('test-feature')
|
||||
|
||||
expect(useCount.value).toBe(0)
|
||||
|
||||
trackFeatureUsed()
|
||||
|
||||
expect(useCount.value).toBe(1)
|
||||
})
|
||||
|
||||
it('does not track when config is disabled', async () => {
|
||||
getSurveyConfig.mockReturnValue({ enabled: false })
|
||||
|
||||
const { useSurveyFeatureTracking } =
|
||||
await import('./useSurveyFeatureTracking')
|
||||
const { trackFeatureUsed, useCount } =
|
||||
useSurveyFeatureTracking('disabled-feature')
|
||||
|
||||
trackFeatureUsed()
|
||||
|
||||
expect(useCount.value).toBe(0)
|
||||
})
|
||||
|
||||
it('tracks usage when config exists without enabled field', async () => {
|
||||
getSurveyConfig.mockReturnValue({} as { enabled: boolean })
|
||||
|
||||
const { useSurveyFeatureTracking } =
|
||||
await import('./useSurveyFeatureTracking')
|
||||
const { trackFeatureUsed, useCount } = useSurveyFeatureTracking(
|
||||
'implicit-enabled-feature'
|
||||
)
|
||||
|
||||
trackFeatureUsed()
|
||||
|
||||
expect(useCount.value).toBe(1)
|
||||
})
|
||||
|
||||
it('does not track when config does not exist', async () => {
|
||||
getSurveyConfig.mockReturnValue(undefined)
|
||||
|
||||
const { useSurveyFeatureTracking } =
|
||||
await import('./useSurveyFeatureTracking')
|
||||
const { trackFeatureUsed, useCount } = useSurveyFeatureTracking(
|
||||
'nonexistent-feature'
|
||||
)
|
||||
|
||||
trackFeatureUsed()
|
||||
|
||||
expect(useCount.value).toBe(0)
|
||||
})
|
||||
})
|
||||
@@ -1,35 +0,0 @@
|
||||
import { computed } from 'vue'
|
||||
|
||||
import { getSurveyConfig } from './surveyRegistry'
|
||||
import { useFeatureUsageTracker } from './useFeatureUsageTracker'
|
||||
|
||||
/**
|
||||
* Convenience composable for tracking feature usage for surveys.
|
||||
* Use this at the feature site to track when a feature is used.
|
||||
*
|
||||
* @example
|
||||
* ```typescript
|
||||
* const { trackFeatureUsed } = useSurveyFeatureTracking('simple-mode')
|
||||
*
|
||||
* function onFeatureAction() {
|
||||
* trackFeatureUsed()
|
||||
* }
|
||||
* ```
|
||||
*/
|
||||
export function useSurveyFeatureTracking(featureId: string) {
|
||||
const config = getSurveyConfig(featureId)
|
||||
|
||||
if (config?.enabled === false || !config) {
|
||||
return {
|
||||
trackFeatureUsed: () => {},
|
||||
useCount: computed(() => 0)
|
||||
}
|
||||
}
|
||||
|
||||
const { trackUsage, useCount } = useFeatureUsageTracker(featureId)
|
||||
|
||||
return {
|
||||
trackFeatureUsed: trackUsage,
|
||||
useCount
|
||||
}
|
||||
}
|
||||
@@ -40,12 +40,8 @@ vi.mock('@/composables/auth/useCurrentUser', () => ({
|
||||
})
|
||||
}))
|
||||
|
||||
const mockRemoteConfig = vi.hoisted(
|
||||
() => ({ value: null }) as { value: Record<string, unknown> | null }
|
||||
)
|
||||
|
||||
vi.mock('@/platform/remoteConfig/remoteConfig', () => ({
|
||||
remoteConfig: mockRemoteConfig
|
||||
remoteConfig: { value: null }
|
||||
}))
|
||||
|
||||
vi.mock('posthog-js', () => hoisted.mockPosthog)
|
||||
@@ -65,7 +61,6 @@ function createProvider(
|
||||
describe('PostHogTelemetryProvider', () => {
|
||||
beforeEach(() => {
|
||||
vi.clearAllMocks()
|
||||
mockRemoteConfig.value = null
|
||||
window.__CONFIG__ = {
|
||||
posthog_project_token: 'phc_test_token'
|
||||
} as typeof window.__CONFIG__
|
||||
@@ -81,7 +76,7 @@ describe('PostHogTelemetryProvider', () => {
|
||||
expect(hoisted.mockCapture).not.toHaveBeenCalled()
|
||||
})
|
||||
|
||||
it('calls posthog.init with the token and default config', async () => {
|
||||
it('calls posthog.init with the token and default api_host', async () => {
|
||||
createProvider()
|
||||
await vi.dynamicImportSettled()
|
||||
|
||||
@@ -98,22 +93,17 @@ describe('PostHogTelemetryProvider', () => {
|
||||
)
|
||||
})
|
||||
|
||||
it('applies posthog_config overrides from remote config', async () => {
|
||||
mockRemoteConfig.value = {
|
||||
posthog_config: {
|
||||
debug: true,
|
||||
api_host: 'https://custom.host.com'
|
||||
}
|
||||
}
|
||||
createProvider()
|
||||
it('enables debug mode when posthog_debug is true in config', async () => {
|
||||
window.__CONFIG__ = {
|
||||
posthog_project_token: 'phc_test_token',
|
||||
posthog_debug: true
|
||||
} as typeof window.__CONFIG__
|
||||
new PostHogTelemetryProvider()
|
||||
await vi.dynamicImportSettled()
|
||||
|
||||
expect(hoisted.mockInit).toHaveBeenCalledWith(
|
||||
'phc_test_token',
|
||||
expect.objectContaining({
|
||||
debug: true,
|
||||
api_host: 'https://custom.host.com'
|
||||
})
|
||||
expect.objectContaining({ debug: true })
|
||||
)
|
||||
})
|
||||
|
||||
|
||||
@@ -101,7 +101,6 @@ export class PostHogTelemetryProvider implements TelemetryProvider {
|
||||
void import('posthog-js')
|
||||
.then((posthogModule) => {
|
||||
this.posthog = posthogModule.default
|
||||
const serverConfig = remoteConfig.value?.posthog_config ?? {}
|
||||
this.posthog!.init(apiKey, {
|
||||
api_host:
|
||||
window.__CONFIG__?.posthog_api_host || 'https://t.comfy.org',
|
||||
@@ -110,8 +109,9 @@ export class PostHogTelemetryProvider implements TelemetryProvider {
|
||||
capture_pageview: false,
|
||||
capture_pageleave: false,
|
||||
persistence: 'localStorage+cookie',
|
||||
debug: import.meta.env.VITE_POSTHOG_DEBUG === 'true',
|
||||
...serverConfig
|
||||
debug:
|
||||
window.__CONFIG__?.posthog_debug ??
|
||||
import.meta.env.VITE_POSTHOG_DEBUG === 'true'
|
||||
})
|
||||
this.isInitialized = true
|
||||
this.flushEventQueue()
|
||||
|
||||
@@ -341,15 +341,6 @@ export const zDynamicComboInputSpec = z.tuple([
|
||||
})
|
||||
])
|
||||
|
||||
export const zMatchTypeOptions = z.object({
|
||||
...zBaseInputOptions.shape,
|
||||
type: z.literal('COMFY_MATCHTYPE_V3'),
|
||||
template: z.object({
|
||||
allowed_types: z.string(),
|
||||
template_id: z.string()
|
||||
})
|
||||
})
|
||||
|
||||
// `/object_info`
|
||||
export type ComfyInputsSpec = z.infer<typeof zComfyInputsSpec>
|
||||
export type ComfyOutputTypesSpec = z.infer<typeof zComfyOutputTypesSpec>
|
||||
|
||||
@@ -34,7 +34,10 @@ export class NodeSearchService {
|
||||
id: 'input',
|
||||
name: 'Input Type',
|
||||
invokeSequence: 'i',
|
||||
getItemOptions: (node) => node.inputTypes,
|
||||
getItemOptions: (node) =>
|
||||
Object.values(node.inputs ?? []).flatMap((input) =>
|
||||
input.type.split(',')
|
||||
),
|
||||
fuseOptions
|
||||
})
|
||||
|
||||
|
||||
@@ -6,7 +6,6 @@ import { computed, ref, watchEffect } from 'vue'
|
||||
import { t } from '@/i18n'
|
||||
import { isPromotedWidgetView } from '@/core/graph/subgraph/promotedWidgetTypes'
|
||||
import { resolvePromotedWidgetSource } from '@/core/graph/subgraph/resolvePromotedWidgetSource'
|
||||
import { resolveInputType } from '@/core/graph/widgets/dynamicTypes'
|
||||
import { LiteGraph } from '@/lib/litegraph/src/litegraph'
|
||||
import type { LGraphNode } from '@/lib/litegraph/src/litegraph'
|
||||
import { transformNodeDefV1ToV2 } from '@/schemas/nodeDef/migration'
|
||||
@@ -99,7 +98,6 @@ export class ComfyNodeDefImpl
|
||||
|
||||
// ComfyNodeDefImpl fields
|
||||
readonly nodeSource: NodeSource
|
||||
readonly inputTypes: string[]
|
||||
|
||||
/**
|
||||
* @internal
|
||||
@@ -181,9 +179,6 @@ export class ComfyNodeDefImpl
|
||||
|
||||
// Initialize node source
|
||||
this.nodeSource = getNodeSource(obj.python_module, this.essentials_category)
|
||||
this.inputTypes = _.uniq(
|
||||
Object.values(this.inputs).flatMap(resolveInputType)
|
||||
)
|
||||
}
|
||||
|
||||
get nodePath(): string {
|
||||
|
||||
Reference in New Issue
Block a user