From 112a693f3da8c79220152251330ccb665c1db825 Mon Sep 17 00:00:00 2001 From: Chenlei Hu Date: Tue, 10 Dec 2024 09:31:13 -0800 Subject: [PATCH] [i18n] Translate setting options (#1858) * Collect options * Translate setting options * Update locales [skip ci] * Normalize key * Revert change of logic --------- Co-authored-by: github-actions --- scripts/collect-i18n.ts | 17 +++- src/components/common/FormItem.vue | 5 +- .../dialog/content/setting/SettingItem.vue | 23 ++++- src/locales/en.json | 91 ++++++++++++++++--- src/locales/ja.json | 87 +++++++++++++++--- src/locales/ko.json | 87 +++++++++++++++--- src/locales/ru.json | 87 +++++++++++++++--- src/locales/zh.json | 87 +++++++++++++++--- src/types/settingTypes.ts | 2 +- 9 files changed, 418 insertions(+), 68 deletions(-) diff --git a/scripts/collect-i18n.ts b/scripts/collect-i18n.ts index 7dc7486b2..a72dc0c16 100644 --- a/scripts/collect-i18n.ts +++ b/scripts/collect-i18n.ts @@ -52,7 +52,8 @@ test('collect-i18n', async ({ comfyPage }) => { id: setting.id, name: setting.name, tooltip: setting.tooltip, - category: setting.category + category: setting.category, + options: setting.options })) }) @@ -61,7 +62,19 @@ test('collect-i18n', async ({ comfyPage }) => { normalizeI18nKey(setting.id), { name: setting.name, - tooltip: setting.tooltip + tooltip: setting.tooltip, + // Don't translate the locale options as each option is in its own language. + // e.g. "English", "中文", "Русский", "日本語", "한국어" + options: + setting.options && setting.id !== 'Comfy.Locale' + ? Object.fromEntries( + setting.options.map((option) => { + const optionLabel = + typeof option === 'string' ? option : option.text + return [normalizeI18nKey(optionLabel), optionLabel] + }) + ) + : undefined } ]) ) diff --git a/src/components/common/FormItem.vue b/src/components/common/FormItem.vue index 7f70ea3bf..df7da773c 100644 --- a/src/components/common/FormItem.vue +++ b/src/components/common/FormItem.vue @@ -55,8 +55,11 @@ function getFormAttrs(item: FormItem) { case 'combo': attrs['options'] = typeof item.options === 'function' - ? item.options(formValue.value) + ? // @ts-expect-error: Audit and deprecate usage of legacy options type: + // (value) => [string | {text: string, value: string}] + item.options(formValue.value) : item.options + if (typeof item.options[0] !== 'string') { attrs['optionLabel'] = 'text' attrs['optionValue'] = 'value' diff --git a/src/components/dialog/content/setting/SettingItem.vue b/src/components/dialog/content/setting/SettingItem.vue index 53a52a99e..465d4ebab 100644 --- a/src/components/dialog/content/setting/SettingItem.vue +++ b/src/components/dialog/content/setting/SettingItem.vue @@ -20,22 +20,41 @@ import Tag from 'primevue/tag' import FormItem from '@/components/common/FormItem.vue' import { useSettingStore } from '@/stores/settingStore' -import { SettingParams } from '@/types/settingTypes' +import type { SettingOption, SettingParams } from '@/types/settingTypes' import { computed } from 'vue' import { useI18n } from 'vue-i18n' +import { normalizeI18nKey } from '@/utils/formatUtil' const props = defineProps<{ setting: SettingParams }>() const { t } = useI18n() +function translateOptions(options: (SettingOption | string)[]) { + return options.map((option) => { + const optionLabel = typeof option === 'string' ? option : option.text + const optionValue = typeof option === 'string' ? option : option.value + + return { + text: t( + `settingsDialog.${normalizeI18nKey(props.setting.id)}.options.${normalizeI18nKey(optionLabel)}`, + optionLabel + ), + value: optionValue + } + }) +} + const formItem = computed(() => { - const normalizedId = props.setting.id.replace(/\./g, '_') + const normalizedId = normalizeI18nKey(props.setting.id) return { ...props.setting, name: t(`settingsDialog.${normalizedId}.name`, props.setting.name), tooltip: props.setting.tooltip ? t(`settingsDialog.${normalizedId}.tooltip`, props.setting.tooltip) + : undefined, + options: props.setting.options + ? translateOptions(props.setting.options) : undefined } }) diff --git a/src/locales/en.json b/src/locales/en.json index 8e8334abc..dda086103 100644 --- a/src/locales/en.json +++ b/src/locales/en.json @@ -220,7 +220,12 @@ "name": "Enable fast-zoom shortcut (Ctrl + Shift + Drag)" }, "Comfy_Graph_LinkMarkers": { - "name": "Link midpoint markers" + "name": "Link midpoint markers", + "options": { + "None": "None", + "Circle": "Circle", + "Arrow": "Arrow" + } }, "Comfy_Graph_ZoomSpeed": { "name": "Canvas zoom speed" @@ -241,13 +246,29 @@ "name": "Keybindings unset by the user" }, "Comfy_LinkRelease_Action": { - "name": "Action on link release (No modifier)" + "name": "Action on link release (No modifier)", + "options": { + "context menu": "context menu", + "search box": "search box", + "no action": "no action" + } }, "Comfy_LinkRelease_ActionShift": { - "name": "Action on link release (Shift)" + "name": "Action on link release (Shift)", + "options": { + "context menu": "context menu", + "search box": "search box", + "no action": "no action" + } }, "Comfy_LinkRenderMode": { - "name": "Link Render Mode" + "name": "Link Render Mode", + "options": { + "Straight": "Straight", + "Linear": "Linear", + "Spline": "Spline", + "Hidden": "Hidden" + } }, "Comfy_Locale": { "name": "Language" @@ -273,7 +294,11 @@ }, "Comfy_ModelLibrary_NameFormat": { "name": "What name to display in the model library tree view", - "tooltip": "Select \"filename\" to render a simplified view of the raw filename (without directory or \".safetensors\" extension) in the model list. Select \"title\" to display the configurable model metadata title." + "tooltip": "Select \"filename\" to render a simplified view of the raw filename (without directory or \".safetensors\" extension) in the model list. Select \"title\" to display the configurable model metadata title.", + "options": { + "filename": "filename", + "title": "title" + } }, "Comfy_Node_AutoSnapLinkToSlot": { "name": "Auto snap link to node slot", @@ -305,13 +330,26 @@ "tooltip": "When dragging a link over a node with viable input slot, highlight the node" }, "Comfy_NodeBadge_NodeIdBadgeMode": { - "name": "Node ID badge mode" + "name": "Node ID badge mode", + "options": { + "None": "None", + "Show all": "Show all" + } }, "Comfy_NodeBadge_NodeLifeCycleBadgeMode": { - "name": "Node life cycle badge mode" + "name": "Node life cycle badge mode", + "options": { + "None": "None", + "Show all": "Show all" + } }, "Comfy_NodeBadge_NodeSourceBadgeMode": { - "name": "Node source badge mode" + "name": "Node source badge mode", + "options": { + "None": "None", + "Show all": "Show all", + "Hide built-in": "Hide built-in" + } }, "Comfy_NodeInputConversionSubmenus": { "name": "In the node context menu, place the entries that convert between input/widget in sub-menus." @@ -326,7 +364,11 @@ "name": "Node library bookmarks customization" }, "Comfy_NodeSearchBoxImpl": { - "name": "Node search box implementation" + "name": "Node search box implementation", + "options": { + "default": "default", + "litegraph (legacy)": "litegraph (legacy)" + } }, "Comfy_NodeSearchBoxImpl_NodePreview": { "name": "Node preview", @@ -394,10 +436,18 @@ "name": "Show extension panel in settings dialog" }, "Comfy_Sidebar_Location": { - "name": "Sidebar location" + "name": "Sidebar location", + "options": { + "left": "left", + "right": "right" + } }, "Comfy_Sidebar_Size": { - "name": "Sidebar size" + "name": "Sidebar size", + "options": { + "normal": "normal", + "small": "small" + } }, "Comfy_SnapToGrid_GridSize": { "name": "Snap to grid size", @@ -413,7 +463,12 @@ "name": "Tree explorer item padding" }, "Comfy_UseNewMenu": { - "name": "Use new menu" + "name": "Use new menu", + "options": { + "Disabled": "Disabled", + "Top": "Top", + "Bottom": "Bottom" + } }, "Comfy_Validation_NodeDefs": { "name": "Validate node definitions (slow)", @@ -424,7 +479,11 @@ }, "Comfy_WidgetControlMode": { "name": "Widget control mode", - "tooltip": "Controls when widget values are updated (randomize/increment/decrement), either before the prompt is queued or after." + "tooltip": "Controls when widget values are updated (randomize/increment/decrement), either before the prompt is queued or after.", + "options": { + "before": "before", + "after": "after" + } }, "Comfy_Window_UnloadConfirmation": { "name": "Show confirmation when closing window" @@ -442,7 +501,11 @@ "name": "Sort node IDs when saving workflow" }, "Comfy_Workflow_WorkflowTabsPosition": { - "name": "Opened workflows position" + "name": "Opened workflows position", + "options": { + "Sidebar": "Sidebar", + "Topbar": "Topbar" + } }, "LiteGraph_Canvas_MaximumFps": { "name": "Maxium FPS", diff --git a/src/locales/ja.json b/src/locales/ja.json index 96c71e2bd..5327c31d1 100644 --- a/src/locales/ja.json +++ b/src/locales/ja.json @@ -1333,7 +1333,12 @@ "name": "ファストズームショートカットを有効にする(Ctrl + Shift + ドラッグ)" }, "Comfy_Graph_LinkMarkers": { - "name": "リンク中点マーカー" + "name": "リンク中点マーカー", + "options": { + "Arrow": "矢印", + "Circle": "円", + "None": "なし" + } }, "Comfy_Graph_ZoomSpeed": { "name": "キャンバスズーム速度" @@ -1354,13 +1359,29 @@ "name": "ユーザーによって解除されたキー割り当て" }, "Comfy_LinkRelease_Action": { - "name": "リンクリリース時のアクション(修飾子なし)" + "name": "リンクリリース時のアクション(修飾子なし)", + "options": { + "context menu": "コンテキストメニュー", + "no action": "アクションなし", + "search box": "検索ボックス" + } }, "Comfy_LinkRelease_ActionShift": { - "name": "リンクリリース時のアクション(Shift)" + "name": "リンクリリース時のアクション(Shift)", + "options": { + "context menu": "コンテキストメニュー", + "no action": "アクションなし", + "search box": "検索ボックス" + } }, "Comfy_LinkRenderMode": { - "name": "リンクレンダーモード" + "name": "リンクレンダーモード", + "options": { + "Hidden": "隠す", + "Linear": "リニア", + "Spline": "スプライン", + "Straight": "ストレート" + } }, "Comfy_Locale": { "name": "言語" @@ -1386,16 +1407,33 @@ }, "Comfy_ModelLibrary_NameFormat": { "name": "モデルライブラリツリービューに表示する名前", + "options": { + "filename": "ファイル名", + "title": "タイトル" + }, "tooltip": "\"ファイル名\"を選択すると、モデルリストにディレクトリや\".safetensors\"拡張子なしの生のファイル名の簡略化されたビューが表示されます。\"タイトル\"を選択すると、設定可能なモデルメタデータタイトルが表示されます。" }, "Comfy_NodeBadge_NodeIdBadgeMode": { - "name": "ノードIDバッジモード" + "name": "ノードIDバッジモード", + "options": { + "None": "なし", + "Show all": "すべて表示" + } }, "Comfy_NodeBadge_NodeLifeCycleBadgeMode": { - "name": "ノードライフサイクルバッジモード" + "name": "ノードライフサイクルバッジモード", + "options": { + "None": "なし", + "Show all": "すべて表示" + } }, "Comfy_NodeBadge_NodeSourceBadgeMode": { - "name": "ノードソースバッジモード" + "name": "ノードソースバッジモード", + "options": { + "Hide built-in": "組み込みを隠す", + "None": "なし", + "Show all": "すべて表示" + } }, "Comfy_NodeInputConversionSubmenus": { "name": "ノードのコンテキストメニューに、入力/ウィジェット間の変換を行うエントリをサブメニューに配置します。" @@ -1410,7 +1448,11 @@ "name": "ユニークな名前のノードライブラリのブックマークv2" }, "Comfy_NodeSearchBoxImpl": { - "name": "ノード検索ボックスの実装" + "name": "ノード検索ボックスの実装", + "options": { + "default": "デフォルト", + "litegraph (legacy)": "litegraph (レガシー)" + } }, "Comfy_NodeSearchBoxImpl_NodePreview": { "name": "ノードプレビュー", @@ -1507,10 +1549,18 @@ "name": "設定ダイアログに拡張パネルを表示" }, "Comfy_Sidebar_Location": { - "name": "サイドバーの位置" + "name": "サイドバーの位置", + "options": { + "left": "左", + "right": "右" + } }, "Comfy_Sidebar_Size": { - "name": "サイドバーのサイズ" + "name": "サイドバーのサイズ", + "options": { + "normal": "通常", + "small": "小" + } }, "Comfy_SnapToGrid_GridSize": { "name": "グリッドサイズにスナップ", @@ -1526,7 +1576,12 @@ "name": "ツリーエクスプローラーアイテムのパディング" }, "Comfy_UseNewMenu": { - "name": "新しいメニューを使用" + "name": "新しいメニューを使用", + "options": { + "Bottom": "下", + "Disabled": "無効", + "Top": "上" + } }, "Comfy_Validation_NodeDefs": { "name": "ノード定義を検証(遅い)", @@ -1537,6 +1592,10 @@ }, "Comfy_WidgetControlMode": { "name": "ウィジェット制御モード", + "options": { + "after": "後", + "before": "前" + }, "tooltip": "ウィジェットの値が更新されるタイミングを制御します(ランダム化/インクリメント/デクリメント)、プロンプトがキューに入れられる前または後のいずれかです。" }, "Comfy_Window_UnloadConfirmation": { @@ -1555,7 +1614,11 @@ "name": "ワークフローを保存する際にノードIDをソート" }, "Comfy_Workflow_WorkflowTabsPosition": { - "name": "開いているワークフローの位置" + "name": "開いているワークフローの位置", + "options": { + "Sidebar": "サイドバー", + "Topbar": "トップバー" + } }, "LiteGraph_Canvas_MaximumFps": { "name": "最大FPS", diff --git a/src/locales/ko.json b/src/locales/ko.json index 2fcf48b5e..eb69fb730 100644 --- a/src/locales/ko.json +++ b/src/locales/ko.json @@ -1316,7 +1316,12 @@ "name": "빠른 확대/축소 단축키 활성화 (Ctrl + Shift + 드래그)" }, "Comfy_Graph_LinkMarkers": { - "name": "링크 중간점 마커" + "name": "링크 중간점 마커", + "options": { + "Arrow": "화살표", + "Circle": "원", + "None": "없음" + } }, "Comfy_Graph_ZoomSpeed": { "name": "캔버스 확대/축소 속도" @@ -1337,13 +1342,29 @@ "name": "사용자가 해제한 키 바인딩" }, "Comfy_LinkRelease_Action": { - "name": "링크 해제 시 동작 (수정자 없음)" + "name": "링크 해제 시 동작 (수정자 없음)", + "options": { + "context menu": "컨텍스트 메뉴", + "no action": "작업 없음", + "search box": "검색 상자" + } }, "Comfy_LinkRelease_ActionShift": { - "name": "링크 해제 시 동작 (Shift)" + "name": "링크 해제 시 동작 (Shift)", + "options": { + "context menu": "컨텍스트 메뉴", + "no action": "작업 없음", + "search box": "검색 상자" + } }, "Comfy_LinkRenderMode": { - "name": "링크 렌더 모드" + "name": "링크 렌더 모드", + "options": { + "Hidden": "숨김", + "Linear": "선형", + "Spline": "스플라인", + "Straight": "직선" + } }, "Comfy_Locale": { "name": "언어" @@ -1369,16 +1390,33 @@ }, "Comfy_ModelLibrary_NameFormat": { "name": "모델 라이브러리 트리 뷰에 표시할 이름", + "options": { + "filename": "파일 이름", + "title": "제목" + }, "tooltip": "\"파일 이름\"을 선택하면 모델 목록에서 원시 파일 이름(디렉토리 또는 \".safetensors\" 확장자 없이)의 단순화된 뷰가 렌더링됩니다. \"제목\"을 선택하면 구성 가능한 모델 메타데이터 제목이 표시됩니다." }, "Comfy_NodeBadge_NodeIdBadgeMode": { - "name": "노드 ID 배지 모드" + "name": "노드 ID 배지 모드", + "options": { + "None": "없음", + "Show all": "모두 표시" + } }, "Comfy_NodeBadge_NodeLifeCycleBadgeMode": { - "name": "노드 생명 주기 배지 모드" + "name": "노드 생명 주기 배지 모드", + "options": { + "None": "없음", + "Show all": "모두 표시" + } }, "Comfy_NodeBadge_NodeSourceBadgeMode": { - "name": "노드 출처 배지 모드" + "name": "노드 출처 배지 모드", + "options": { + "Hide built-in": "내장 숨기기", + "None": "없음", + "Show all": "모두 표시" + } }, "Comfy_NodeInputConversionSubmenus": { "name": "노드 컨텍스트 메뉴에서 입력/위젯 간 변환 항목을 하위 메뉴에 배치합니다." @@ -1393,7 +1431,11 @@ "name": "고유 이름을 가진 노드 라이브러리 북마크 v2" }, "Comfy_NodeSearchBoxImpl": { - "name": "노드 검색 상자 구현" + "name": "노드 검색 상자 구현", + "options": { + "default": "기본", + "litegraph (legacy)": "litegraph (구버전)" + } }, "Comfy_NodeSearchBoxImpl_NodePreview": { "name": "노드 미리보기", @@ -1490,10 +1532,18 @@ "name": "설정 대화 상자에서 확장 패널 표시" }, "Comfy_Sidebar_Location": { - "name": "사이드바 위치" + "name": "사이드바 위치", + "options": { + "left": "왼쪽", + "right": "오른쪽" + } }, "Comfy_Sidebar_Size": { - "name": "사이드바 크기" + "name": "사이드바 크기", + "options": { + "normal": "보통", + "small": "작음" + } }, "Comfy_SnapToGrid_GridSize": { "name": "그리드 크기에 스냅", @@ -1509,7 +1559,12 @@ "name": "트리 탐색기 항목 패딩" }, "Comfy_UseNewMenu": { - "name": "새 메뉴 사용" + "name": "새 메뉴 사용", + "options": { + "Bottom": "하단", + "Disabled": "비활성화", + "Top": "상단" + } }, "Comfy_Validation_NodeDefs": { "name": "노드 정의 유효성 검사 (느림)", @@ -1520,6 +1575,10 @@ }, "Comfy_WidgetControlMode": { "name": "위젯 제어 모드", + "options": { + "after": "다음", + "before": "이전" + }, "tooltip": "위젯 값이 업데이트되는 시점을 제어합니다 (무작위화/증가/감소), 프롬프트가 큐에 추가되기 전 또는 후입니다." }, "Comfy_Window_UnloadConfirmation": { @@ -1538,7 +1597,11 @@ "name": "워크플로 저장 시 노드 ID 정렬" }, "Comfy_Workflow_WorkflowTabsPosition": { - "name": "열린 워크플로 위치" + "name": "열린 워크플로 위치", + "options": { + "Sidebar": "사이드바", + "Topbar": "상단바" + } }, "LiteGraph_Canvas_MaximumFps": { "name": "최대 FPS", diff --git a/src/locales/ru.json b/src/locales/ru.json index 57c0525f6..14576c28c 100644 --- a/src/locales/ru.json +++ b/src/locales/ru.json @@ -1333,7 +1333,12 @@ "name": "Включить быстрый зум с помощью сочетания клавиш (Ctrl + Shift + Перетаскивание)" }, "Comfy_Graph_LinkMarkers": { - "name": "Маркер середины ссылки" + "name": "Маркер середины ссылки", + "options": { + "Arrow": "Стрелка", + "Circle": "Круг", + "None": "Нет" + } }, "Comfy_Graph_ZoomSpeed": { "name": "Скорость зума холста" @@ -1354,13 +1359,29 @@ "name": "Сочетания клавиш, снятые пользователем" }, "Comfy_LinkRelease_Action": { - "name": "Действие при отпускании ссылки (без модификатора)" + "name": "Действие при отпускании ссылки (без модификатора)", + "options": { + "context menu": "контекстное меню", + "no action": "без действия", + "search box": "поисковая строка" + } }, "Comfy_LinkRelease_ActionShift": { - "name": "Действие при отпускании ссылки (Shift)" + "name": "Действие при отпускании ссылки (Shift)", + "options": { + "context menu": "контекстное меню", + "no action": "без действия", + "search box": "поисковая строка" + } }, "Comfy_LinkRenderMode": { - "name": "Режим рендеринга ссылки" + "name": "Режим рендеринга ссылки", + "options": { + "Hidden": "Скрытый", + "Linear": "Линейный", + "Spline": "Сплайн", + "Straight": "Прямой" + } }, "Comfy_Locale": { "name": "Язык" @@ -1386,16 +1407,33 @@ }, "Comfy_ModelLibrary_NameFormat": { "name": "Какое имя отображать в древовидном представлении библиотеки моделей", + "options": { + "filename": "имя файла", + "title": "название" + }, "tooltip": "Выберите \"имя файла\", чтобы отобразить упрощенный вид сырого имени файла (без директории или расширения \".safetensors\") в списке моделей. Выберите \"название\", чтобы отобразить настраиваемое название метаданных модели." }, "Comfy_NodeBadge_NodeIdBadgeMode": { - "name": "Режим значка ID узла" + "name": "Режим значка ID узла", + "options": { + "None": "Нет", + "Show all": "Показать все" + } }, "Comfy_NodeBadge_NodeLifeCycleBadgeMode": { - "name": "Режим значка жизненного цикла узла" + "name": "Режим значка жизненного цикла узла", + "options": { + "None": "Нет", + "Show all": "Показать все" + } }, "Comfy_NodeBadge_NodeSourceBadgeMode": { - "name": "Режим значка источника узла" + "name": "Режим значка источника узла", + "options": { + "Hide built-in": "Скрыть встроенные", + "None": "Нет", + "Show all": "Показать все" + } }, "Comfy_NodeInputConversionSubmenus": { "name": "В контекстном меню узла разместите элементы, которые конвертируют между вводом/виджетом в подменю." @@ -1410,7 +1448,11 @@ "name": "Закладки библиотеки узлов v2 с уникальным именем" }, "Comfy_NodeSearchBoxImpl": { - "name": "Реализация поискового поля узлов" + "name": "Реализация поискового поля узлов", + "options": { + "default": "по умолчанию", + "litegraph (legacy)": "litegraph (устаревший)" + } }, "Comfy_NodeSearchBoxImpl_NodePreview": { "name": "Предварительный просмотр узла", @@ -1507,10 +1549,18 @@ "name": "Показать панель расширений в диалоговом окне настроек" }, "Comfy_Sidebar_Location": { - "name": "Расположение боковой панели" + "name": "Расположение боковой панели", + "options": { + "left": "слева", + "right": "справа" + } }, "Comfy_Sidebar_Size": { - "name": "Размер боковой панели" + "name": "Размер боковой панели", + "options": { + "normal": "нормальный", + "small": "маленький" + } }, "Comfy_SnapToGrid_GridSize": { "name": "Размер сетки привязки", @@ -1526,7 +1576,12 @@ "name": "Отступ элемента в проводнике дерева" }, "Comfy_UseNewMenu": { - "name": "Использовать новое меню" + "name": "Использовать новое меню", + "options": { + "Bottom": "Внизу", + "Disabled": "Отключено", + "Top": "Вверху" + } }, "Comfy_Validation_NodeDefs": { "name": "Проверка определений узлов (медленно)", @@ -1537,6 +1592,10 @@ }, "Comfy_WidgetControlMode": { "name": "Режим управления виджетом", + "options": { + "after": "после", + "before": "до" + }, "tooltip": "Управляет тем, когда обновляются значения виджета (случайные/увеличение/уменьшение), либо до того, как запрос будет поставлен в очередь, либо после." }, "Comfy_Window_UnloadConfirmation": { @@ -1555,7 +1614,11 @@ "name": "Сортировать ID узлов при сохранении рабочего процесса" }, "Comfy_Workflow_WorkflowTabsPosition": { - "name": "Положение открытых рабочих процессов" + "name": "Положение открытых рабочих процессов", + "options": { + "Sidebar": "Боковая панель", + "Topbar": "Верхняя панель" + } }, "LiteGraph_Canvas_MaximumFps": { "name": "Максимум FPS", diff --git a/src/locales/zh.json b/src/locales/zh.json index e7868b5e8..f1bdc33a9 100644 --- a/src/locales/zh.json +++ b/src/locales/zh.json @@ -1333,7 +1333,12 @@ "name": "启用快速缩放快捷键(Ctrl + Shift + 拖动)" }, "Comfy_Graph_LinkMarkers": { - "name": "链接中点标记" + "name": "链接中点标记", + "options": { + "Arrow": "箭头", + "Circle": "圆", + "None": "无" + } }, "Comfy_Graph_ZoomSpeed": { "name": "画布缩放速度" @@ -1354,13 +1359,29 @@ "name": "用户取消的键绑定" }, "Comfy_LinkRelease_Action": { - "name": "释放链接时的操作(无修饰符)" + "name": "释放链接时的操作(无修饰符)", + "options": { + "context menu": "上下文菜单", + "no action": "无操作", + "search box": "搜索框" + } }, "Comfy_LinkRelease_ActionShift": { - "name": "释放链接时的操作(Shift)" + "name": "释放链接时的操作(Shift)", + "options": { + "context menu": "上下文菜单", + "no action": "无操作", + "search box": "搜索框" + } }, "Comfy_LinkRenderMode": { - "name": "链接渲染模式" + "name": "链接渲染模式", + "options": { + "Hidden": "隐藏", + "Linear": "线性", + "Spline": "样条", + "Straight": "直线" + } }, "Comfy_Locale": { "name": "语言" @@ -1386,16 +1407,33 @@ }, "Comfy_ModelLibrary_NameFormat": { "name": "在模型库树视图中显示的名称", + "options": { + "filename": "文件名", + "title": "标题" + }, "tooltip": "选择“文件名”以在模型列表中呈现原始文件名的简化视图(不带目录或“.safetensors”扩展名)。选择“标题”以显示可配置的模型元数据标题。" }, "Comfy_NodeBadge_NodeIdBadgeMode": { - "name": "节点ID徽章模式" + "name": "节点ID徽章模式", + "options": { + "None": "无", + "Show all": "显示全部" + } }, "Comfy_NodeBadge_NodeLifeCycleBadgeMode": { - "name": "节点生命周期徽章模式" + "name": "节点生命周期徽章模式", + "options": { + "None": "无", + "Show all": "显示全部" + } }, "Comfy_NodeBadge_NodeSourceBadgeMode": { - "name": "节点源徽章模式" + "name": "节点源徽章模式", + "options": { + "Hide built-in": "隐藏内置", + "None": "无", + "Show all": "显示全部" + } }, "Comfy_NodeInputConversionSubmenus": { "name": "在节点上下文菜单中,将输入/小部件之间转换的条目放置在子菜单中。" @@ -1410,7 +1448,11 @@ "name": "节点库书签v2及唯一名称" }, "Comfy_NodeSearchBoxImpl": { - "name": "节点搜索框实现" + "name": "节点搜索框实现", + "options": { + "default": "默认", + "litegraph (legacy)": "litegraph(遗留)" + } }, "Comfy_NodeSearchBoxImpl_NodePreview": { "name": "节点预览", @@ -1507,10 +1549,18 @@ "name": "在设置对话框中显示扩展面板" }, "Comfy_Sidebar_Location": { - "name": "侧边栏位置" + "name": "侧边栏位置", + "options": { + "left": "左侧", + "right": "右侧" + } }, "Comfy_Sidebar_Size": { - "name": "侧边栏大小" + "name": "侧边栏大小", + "options": { + "normal": "正常", + "small": "小" + } }, "Comfy_SnapToGrid_GridSize": { "name": "吸附到网格大小", @@ -1526,7 +1576,12 @@ "name": "树形浏览器项目内边距" }, "Comfy_UseNewMenu": { - "name": "使用新菜单" + "name": "使用新菜单", + "options": { + "Bottom": "底部", + "Disabled": "禁用", + "Top": "顶部" + } }, "Comfy_Validation_NodeDefs": { "name": "验证节点定义(慢)", @@ -1537,6 +1592,10 @@ }, "Comfy_WidgetControlMode": { "name": "小部件控制模式", + "options": { + "after": "之后", + "before": "之前" + }, "tooltip": "控制小部件值的更新时机(随机/增量/减量),可以在提示排队之前或之后。" }, "Comfy_Window_UnloadConfirmation": { @@ -1555,7 +1614,11 @@ "name": "保存工作流时排序节点ID" }, "Comfy_Workflow_WorkflowTabsPosition": { - "name": "已打开工作流的位置" + "name": "已打开工作流的位置", + "options": { + "Sidebar": "侧边栏", + "Topbar": "顶部栏" + } }, "LiteGraph_Canvas_MaximumFps": { "name": "最大FPS", diff --git a/src/types/settingTypes.ts b/src/types/settingTypes.ts index defb45d45..34251496c 100644 --- a/src/types/settingTypes.ts +++ b/src/types/settingTypes.ts @@ -54,7 +54,7 @@ export interface FormItem { type: SettingInputType | SettingCustomRenderer tooltip?: string attrs?: Record - options?: Array | ((value: any) => SettingOption[]) + options?: Array } export interface ISettingGroup {