diff --git a/scripts/check-unused-i18n-keys.ts b/scripts/check-unused-i18n-keys.ts index 2be36a483..b5b70a6ea 100755 --- a/scripts/check-unused-i18n-keys.ts +++ b/scripts/check-unused-i18n-keys.ts @@ -17,7 +17,15 @@ const IGNORE_PATTERNS = [ /^templateWorkflows\./, // Template workflows are loaded dynamically /^dataTypes\./, // Data types might be referenced dynamically /^contextMenu\./, // Context menu items might be dynamic - /^color\./ // Color names might be used dynamically + /^color\./, // Color names might be used dynamically + // Auto-generated categories from collect-i18n-general.ts + /^menuLabels\./, // Menu labels generated from command labels + /^settingsCategories\./, // Settings categories generated from setting definitions + /^serverConfigItems\./, // Server config items generated from SERVER_CONFIG_ITEMS + /^serverConfigCategories\./, // Server config categories generated from config categories + /^nodeCategories\./, // Node categories generated from node definitions + // Setting option values that are dynamically generated + /\.options\./ // All setting options are rendered dynamically ] // Get list of staged locale files @@ -97,17 +105,21 @@ function shouldIgnoreKey(key: string): boolean { // Search for key usage in source files function isKeyUsed(key: string, sourceFiles: string[]): boolean { + // Escape special regex characters + const escapeRegex = (str: string) => + str.replace(/[.*+?^${}()|[\]\\]/g, '\\$&') + const escapedKey = escapeRegex(key) + const lastPart = key.split('.').pop() + const escapedLastPart = lastPart ? escapeRegex(lastPart) : '' + // Common patterns for i18n key usage const patterns = [ // Direct usage: $t('key'), t('key'), i18n.t('key') - new RegExp(`[t$]\\s*\\(\\s*['"\`]${key}['"\`]`, 'g'), + new RegExp(`[t$]\\s*\\(\\s*['"\`]${escapedKey}['"\`]`, 'g'), // With namespace: $t('g.key'), t('namespace.key') - new RegExp( - `[t$]\\s*\\(\\s*['"\`][^'"]+\\.${key.split('.').pop()}['"\`]`, - 'g' - ), + new RegExp(`[t$]\\s*\\(\\s*['"\`][^'"]+\\.${escapedLastPart}['"\`]`, 'g'), // Dynamic keys might reference parts of the key - new RegExp(`['"\`]${key}['"\`]`, 'g') + new RegExp(`['"\`]${escapedKey}['"\`]`, 'g') ] for (const file of sourceFiles) { diff --git a/src/locales/en/main.json b/src/locales/en/main.json index 92b48f703..f1f33740f 100644 --- a/src/locales/en/main.json +++ b/src/locales/en/main.json @@ -949,7 +949,8 @@ "Light": "Light", "User": "User", "Credits": "Credits", - "API Nodes": "API Nodes" + "API Nodes": "API Nodes", + "Notification Preferences": "Notification Preferences" }, "serverConfigItems": { "listen": { diff --git a/src/locales/en/settings.json b/src/locales/en/settings.json index 1c39b4e37..37cf30cff 100644 --- a/src/locales/en/settings.json +++ b/src/locales/en/settings.json @@ -263,6 +263,10 @@ "name": "Number of nodes suggestions", "tooltip": "Only for litegraph searchbox/context menu" }, + "Comfy_Notification_ShowVersionUpdates": { + "name": "Show version updates", + "tooltip": "Show updates for new models, and major new features." + }, "Comfy_Pointer_ClickBufferTime": { "name": "Pointer click drift delay", "tooltip": "After pressing a pointer button down, this is the maximum time (in milliseconds) that pointer movement can be ignored for.\n\nHelps prevent objects from being unintentionally nudged if the pointer is moved whilst clicking." diff --git a/src/locales/es/main.json b/src/locales/es/main.json index d35a0d4e9..f1c05e45a 100644 --- a/src/locales/es/main.json +++ b/src/locales/es/main.json @@ -785,13 +785,13 @@ "Toggle Bottom Panel": "Alternar panel inferior", "Toggle Focus Mode": "Alternar modo de enfoque", "Toggle Logs Bottom Panel": "Alternar panel inferior de registros", - "Toggle Model Library Sidebar": "Alternar barra lateral de biblioteca de modelos", - "Toggle Node Library Sidebar": "Alternar barra lateral de biblioteca de nodos", - "Toggle Queue Sidebar": "Alternar barra lateral de cola", + "Toggle Model Library Sidebar": "Alternar barra lateral de la biblioteca de modelos", + "Toggle Node Library Sidebar": "Alternar barra lateral de la biblioteca de nodos", + "Toggle Queue Sidebar": "Alternar barra lateral de la cola", "Toggle Search Box": "Alternar caja de búsqueda", "Toggle Terminal Bottom Panel": "Alternar panel inferior de terminal", "Toggle Theme (Dark/Light)": "Alternar tema (Oscuro/Claro)", - "Toggle Workflows Sidebar": "Alternar barra lateral de flujos de trabajo", + "Toggle Workflows Sidebar": "Alternar barra lateral de los flujos de trabajo", "Toggle the Custom Nodes Manager": "Alternar el Administrador de Nodos Personalizados", "Toggle the Custom Nodes Manager Progress Bar": "Alternar la Barra de Progreso del Administrador de Nodos Personalizados", "Undo": "Deshacer", @@ -1099,6 +1099,7 @@ "Node Search Box": "Caja de Búsqueda de Nodo", "Node Widget": "Widget de Nodo", "NodeLibrary": "Biblioteca de Nodos", + "Notification Preferences": "Preferencias de notificación", "Pointer": "Puntero", "Queue": "Cola", "QueueButton": "Botón de Cola", diff --git a/src/locales/es/settings.json b/src/locales/es/settings.json index 15dbfd1ac..d703baae5 100644 --- a/src/locales/es/settings.json +++ b/src/locales/es/settings.json @@ -259,6 +259,10 @@ "name": "Destacar nodo de ajuste", "tooltip": "Al arrastrar un enlace sobre un nodo con ranura de entrada viable, resalta el nodo" }, + "Comfy_Notification_ShowVersionUpdates": { + "name": "Mostrar actualizaciones de versión", + "tooltip": "Mostrar actualizaciones para nuevos modelos y funciones principales nuevas." + }, "Comfy_Pointer_ClickBufferTime": { "name": "Retraso de deriva del clic del puntero", "tooltip": "Después de presionar un botón del puntero, este es el tiempo máximo (en milisegundos) que se puede ignorar el movimiento del puntero.\n\nAyuda a prevenir que los objetos sean movidos involuntariamente si el puntero se mueve al hacer clic." diff --git a/src/locales/fr/main.json b/src/locales/fr/main.json index 80864db02..f4d496f15 100644 --- a/src/locales/fr/main.json +++ b/src/locales/fr/main.json @@ -785,13 +785,13 @@ "Toggle Bottom Panel": "Basculer le panneau inférieur", "Toggle Focus Mode": "Basculer le mode focus", "Toggle Logs Bottom Panel": "Basculer le panneau inférieur des journaux", - "Toggle Model Library Sidebar": "Basculer la barre latérale de la bibliothèque de modèles", - "Toggle Node Library Sidebar": "Basculer la barre latérale de la bibliothèque de nœuds", - "Toggle Queue Sidebar": "Basculer la barre latérale de la file d'attente", + "Toggle Model Library Sidebar": "Afficher/Masquer la barre latérale de la bibliothèque de modèles", + "Toggle Node Library Sidebar": "Afficher/Masquer la barre latérale de la bibliothèque de nœuds", + "Toggle Queue Sidebar": "Afficher/Masquer la barre latérale de la file d’attente", "Toggle Search Box": "Basculer la boîte de recherche", "Toggle Terminal Bottom Panel": "Basculer le panneau inférieur du terminal", "Toggle Theme (Dark/Light)": "Basculer le thème (Sombre/Clair)", - "Toggle Workflows Sidebar": "Basculer la barre latérale des flux de travail", + "Toggle Workflows Sidebar": "Afficher/Masquer la barre latérale des workflows", "Toggle the Custom Nodes Manager": "Basculer le gestionnaire de nœuds personnalisés", "Toggle the Custom Nodes Manager Progress Bar": "Basculer la barre de progression du gestionnaire de nœuds personnalisés", "Undo": "Annuler", @@ -1099,6 +1099,7 @@ "Node Search Box": "Boîte de Recherche de Nœud", "Node Widget": "Widget de Nœud", "NodeLibrary": "Bibliothèque de Nœuds", + "Notification Preferences": "Préférences de notification", "Pointer": "Pointeur", "Queue": "File d'Attente", "QueueButton": "Bouton de File d'Attente", diff --git a/src/locales/fr/settings.json b/src/locales/fr/settings.json index e80f57a5d..bf17d40c4 100644 --- a/src/locales/fr/settings.json +++ b/src/locales/fr/settings.json @@ -259,6 +259,10 @@ "name": "Le snap met en évidence le nœud", "tooltip": "Lorsque vous faites glisser un lien sur un nœud avec une fente d'entrée viable, mettez en évidence le nœud" }, + "Comfy_Notification_ShowVersionUpdates": { + "name": "Afficher les mises à jour de version", + "tooltip": "Afficher les mises à jour pour les nouveaux modèles et les nouvelles fonctionnalités majeures." + }, "Comfy_Pointer_ClickBufferTime": { "name": "Délai de dérive du clic du pointeur", "tooltip": "Après avoir appuyé sur un bouton de pointeur, c'est le temps maximum (en millisecondes) que le mouvement du pointeur peut être ignoré.\n\nAide à prévenir que les objets soient déplacés involontairement si le pointeur est déplacé lors du clic." diff --git a/src/locales/ja/main.json b/src/locales/ja/main.json index 8bd656869..8f8b0f074 100644 --- a/src/locales/ja/main.json +++ b/src/locales/ja/main.json @@ -1099,6 +1099,7 @@ "Node Search Box": "ノード検索ボックス", "Node Widget": "ノードウィジェット", "NodeLibrary": "ノードライブラリ", + "Notification Preferences": "通知設定", "Pointer": "ポインタ", "Queue": "キュー", "QueueButton": "キューボタン", diff --git a/src/locales/ja/settings.json b/src/locales/ja/settings.json index 3f4f68ed6..82ab8c68b 100644 --- a/src/locales/ja/settings.json +++ b/src/locales/ja/settings.json @@ -259,6 +259,10 @@ "name": "スナップハイライトノード", "tooltip": "有効な入力スロットを持つノードの上にリンクをドラッグすると、ノードがハイライトされます" }, + "Comfy_Notification_ShowVersionUpdates": { + "name": "バージョン更新を表示", + "tooltip": "新しいモデルや主要な新機能のアップデートを表示します。" + }, "Comfy_Pointer_ClickBufferTime": { "name": "ポインタークリックドリフト遅延", "tooltip": "ポインターボタンを押した後、ポインタの動きが無視される最大時間(ミリ秒単位)です。\n\nクリック中にポインタが移動した場合、オブジェクトが意図せず動かされるのを防ぎます。" diff --git a/src/locales/ko/main.json b/src/locales/ko/main.json index e02e14caa..53dc65464 100644 --- a/src/locales/ko/main.json +++ b/src/locales/ko/main.json @@ -787,11 +787,11 @@ "Toggle Logs Bottom Panel": "로그 하단 패널 전환", "Toggle Model Library Sidebar": "모델 라이브러리 사이드바 전환", "Toggle Node Library Sidebar": "노드 라이브러리 사이드바 전환", - "Toggle Queue Sidebar": "실행 대기열 사이드바 전환", + "Toggle Queue Sidebar": "대기열 사이드바 전환", "Toggle Search Box": "검색 상자 전환", "Toggle Terminal Bottom Panel": "터미널 하단 패널 전환", "Toggle Theme (Dark/Light)": "테마 전환 (어두운/밝은)", - "Toggle Workflows Sidebar": "워크플로 사이드바 전환", + "Toggle Workflows Sidebar": "워크플로우 사이드바 전환", "Toggle the Custom Nodes Manager": "커스텀 노드 매니저 전환", "Toggle the Custom Nodes Manager Progress Bar": "커스텀 노드 매니저 진행률 표시줄 전환", "Undo": "실행 취소", @@ -1099,6 +1099,7 @@ "Node Search Box": "노드 검색 상자", "Node Widget": "노드 위젯", "NodeLibrary": "노드 라이브러리", + "Notification Preferences": "알림 환경설정", "Pointer": "포인터", "Queue": "실행 대기열", "QueueButton": "실행 대기열 버튼", diff --git a/src/locales/ko/settings.json b/src/locales/ko/settings.json index c3b51c843..fe3d4959c 100644 --- a/src/locales/ko/settings.json +++ b/src/locales/ko/settings.json @@ -259,6 +259,10 @@ "name": "스냅 하이라이트 노드", "tooltip": "링크를 유효한 입력 슬롯이 있는 노드 위로 드래그할 때 노드를 강조 표시합니다." }, + "Comfy_Notification_ShowVersionUpdates": { + "name": "버전 업데이트 표시", + "tooltip": "새 모델과 주요 신규 기능에 대한 업데이트를 표시합니다." + }, "Comfy_Pointer_ClickBufferTime": { "name": "포인터 클릭 드리프트 지연", "tooltip": "포인터 버튼을 누른 후, 포인터 움직임을 무시할 수 있는 최대 시간(밀리초)입니다.\n\n클릭하는 동안 포인터가 움직여 의도치 않게 객체가 밀리는 것을 방지합니다." diff --git a/src/locales/ru/main.json b/src/locales/ru/main.json index 2b6e6878a..a66815a6d 100644 --- a/src/locales/ru/main.json +++ b/src/locales/ru/main.json @@ -785,13 +785,13 @@ "Toggle Bottom Panel": "Переключить нижнюю панель", "Toggle Focus Mode": "Переключить режим фокуса", "Toggle Logs Bottom Panel": "Переключение нижней панели журналов", - "Toggle Model Library Sidebar": "Переключение боковой панели библиотеки моделей", - "Toggle Node Library Sidebar": "Переключение боковой панели библиотеки нод", - "Toggle Queue Sidebar": "Переключение боковой панели очереди", + "Toggle Model Library Sidebar": "Показать/скрыть боковую панель библиотеки моделей", + "Toggle Node Library Sidebar": "Показать/скрыть боковую панель библиотеки узлов", + "Toggle Queue Sidebar": "Показать/скрыть боковую панель очереди", "Toggle Search Box": "Переключить поисковую панель", "Toggle Terminal Bottom Panel": "Переключение нижней панели терминала", "Toggle Theme (Dark/Light)": "Переключение темы (Тёмная/Светлая)", - "Toggle Workflows Sidebar": "Переключение боковой панели рабочих процессов", + "Toggle Workflows Sidebar": "Показать/скрыть боковую панель рабочих процессов", "Toggle the Custom Nodes Manager": "Переключить менеджер пользовательских узлов", "Toggle the Custom Nodes Manager Progress Bar": "Переключить индикатор выполнения менеджера пользовательских узлов", "Undo": "Отменить", @@ -1099,6 +1099,7 @@ "Node Search Box": "Поисковая строка нод", "Node Widget": "Виджет ноды", "NodeLibrary": "Библиотека нод", + "Notification Preferences": "Настройки уведомлений", "Pointer": "Указатель", "Queue": "Очередь", "QueueButton": "Кнопка очереди", diff --git a/src/locales/ru/settings.json b/src/locales/ru/settings.json index 2fe962498..5d625e36e 100644 --- a/src/locales/ru/settings.json +++ b/src/locales/ru/settings.json @@ -259,6 +259,10 @@ "name": "Подсветка ноды при привязке", "tooltip": "При перетаскивании ссылки над нодой с подходящим входным слотом, нода подсвечивается" }, + "Comfy_Notification_ShowVersionUpdates": { + "name": "Показывать обновления версий", + "tooltip": "Показывать обновления новых моделей и основные новые функции." + }, "Comfy_Pointer_ClickBufferTime": { "name": "Задержка дрейфа щелчка указателя", "tooltip": "После нажатия кнопки указателя, это максимальное время (в миллисекундах), в течение которого движение указателя может быть проигнорировано.\n\nПомогает предотвратить непреднамеренное смещение объектов, если указатель перемещается во время щелчка." diff --git a/src/locales/zh/main.json b/src/locales/zh/main.json index 8fe43c4a7..ff785c2f3 100644 --- a/src/locales/zh/main.json +++ b/src/locales/zh/main.json @@ -1099,6 +1099,7 @@ "Node Search Box": "节点搜索框", "Node Widget": "节点组件", "NodeLibrary": "节点库", + "Notification Preferences": "通知偏好", "Pointer": "指针", "Queue": "队列", "QueueButton": "执行按钮", diff --git a/src/locales/zh/settings.json b/src/locales/zh/settings.json index abb4627bf..4dd776e71 100644 --- a/src/locales/zh/settings.json +++ b/src/locales/zh/settings.json @@ -259,6 +259,10 @@ "name": "吸附高亮节点", "tooltip": "在拖动连线经过具有可用输入接口的节点时,高亮显示该节点。" }, + "Comfy_Notification_ShowVersionUpdates": { + "name": "显示版本更新", + "tooltip": "显示新模型和主要新功能的更新。" + }, "Comfy_Pointer_ClickBufferTime": { "name": "指针点击漂移延迟", "tooltip": "按下指针按钮后,忽略指针移动的最大时间(毫秒)。\n\n有助于防止在点击时意外移动鼠标。" diff --git a/src/stores/workspace/sidebarTabStore.ts b/src/stores/workspace/sidebarTabStore.ts index eb6ba77bf..c5b66c359 100644 --- a/src/stores/workspace/sidebarTabStore.ts +++ b/src/stores/workspace/sidebarTabStore.ts @@ -5,6 +5,7 @@ import { useModelLibrarySidebarTab } from '@/composables/sidebarTabs/useModelLib import { useNodeLibrarySidebarTab } from '@/composables/sidebarTabs/useNodeLibrarySidebarTab' import { useQueueSidebarTab } from '@/composables/sidebarTabs/useQueueSidebarTab' import { useWorkflowsSidebarTab } from '@/composables/sidebarTabs/useWorkflowsSidebarTab' +import { t, te } from '@/i18n' import { useCommandStore } from '@/stores/commandStore' import { SidebarTabExtension } from '@/types/extensionTypes' @@ -25,11 +26,23 @@ export const useSidebarTabStore = defineStore('sidebarTab', () => { const registerSidebarTab = (tab: SidebarTabExtension) => { sidebarTabs.value = [...sidebarTabs.value, tab] + + // Generate label in format "Toggle X Sidebar" + const labelFunction = () => { + const tabTitle = te(tab.title) ? t(tab.title) : tab.title + return `Toggle ${tabTitle} Sidebar` + } + const tooltipFunction = tab.tooltip + ? te(String(tab.tooltip)) + ? () => t(String(tab.tooltip)) + : String(tab.tooltip) + : undefined + useCommandStore().registerCommand({ id: `Workspace.ToggleSidebarTab.${tab.id}`, icon: tab.icon, - label: tab.title, - tooltip: tab.tooltip, + label: labelFunction, + tooltip: tooltipFunction, versionAdded: '1.3.9', function: () => { toggleSidebarTab(tab.id)