[fix] use getter functions for sidebar tab command labels to resolve i18n collection issues (#4370)

Co-authored-by: github-actions <github-actions@github.com>
This commit is contained in:
Christian Byrne
2025-07-08 23:50:49 -07:00
committed by GitHub
parent f5b03f323d
commit 22c70d5d1b
16 changed files with 84 additions and 24 deletions

View File

@@ -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) {

View File

@@ -949,7 +949,8 @@
"Light": "Light",
"User": "User",
"Credits": "Credits",
"API Nodes": "API Nodes"
"API Nodes": "API Nodes",
"Notification Preferences": "Notification Preferences"
},
"serverConfigItems": {
"listen": {

View File

@@ -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."

View File

@@ -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",

View File

@@ -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."

View File

@@ -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 dattente",
"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",

View File

@@ -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."

View File

@@ -1099,6 +1099,7 @@
"Node Search Box": "ノード検索ボックス",
"Node Widget": "ノードウィジェット",
"NodeLibrary": "ノードライブラリ",
"Notification Preferences": "通知設定",
"Pointer": "ポインタ",
"Queue": "キュー",
"QueueButton": "キューボタン",

View File

@@ -259,6 +259,10 @@
"name": "スナップハイライトノード",
"tooltip": "有効な入力スロットを持つノードの上にリンクをドラッグすると、ノードがハイライトされます"
},
"Comfy_Notification_ShowVersionUpdates": {
"name": "バージョン更新を表示",
"tooltip": "新しいモデルや主要な新機能のアップデートを表示します。"
},
"Comfy_Pointer_ClickBufferTime": {
"name": "ポインタークリックドリフト遅延",
"tooltip": "ポインターボタンを押した後、ポインタの動きが無視される最大時間(ミリ秒単位)です。\n\nクリック中にポインタが移動した場合、オブジェクトが意図せず動かされるのを防ぎます。"

View File

@@ -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": "실행 대기열 버튼",

View File

@@ -259,6 +259,10 @@
"name": "스냅 하이라이트 노드",
"tooltip": "링크를 유효한 입력 슬롯이 있는 노드 위로 드래그할 때 노드를 강조 표시합니다."
},
"Comfy_Notification_ShowVersionUpdates": {
"name": "버전 업데이트 표시",
"tooltip": "새 모델과 주요 신규 기능에 대한 업데이트를 표시합니다."
},
"Comfy_Pointer_ClickBufferTime": {
"name": "포인터 클릭 드리프트 지연",
"tooltip": "포인터 버튼을 누른 후, 포인터 움직임을 무시할 수 있는 최대 시간(밀리초)입니다.\n\n클릭하는 동안 포인터가 움직여 의도치 않게 객체가 밀리는 것을 방지합니다."

View File

@@ -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": "Кнопка очереди",

View File

@@ -259,6 +259,10 @@
"name": "Подсветка ноды при привязке",
"tooltip": "При перетаскивании ссылки над нодой с подходящим входным слотом, нода подсвечивается"
},
"Comfy_Notification_ShowVersionUpdates": {
"name": "Показывать обновления версий",
"tooltip": "Показывать обновления новых моделей и основные новые функции."
},
"Comfy_Pointer_ClickBufferTime": {
"name": "Задержка дрейфа щелчка указателя",
"tooltip": "После нажатия кнопки указателя, это максимальное время (в миллисекундах), в течение которого движение указателя может быть проигнорировано.\n\nПомогает предотвратить непреднамеренное смещение объектов, если указатель перемещается во время щелчка."

View File

@@ -1099,6 +1099,7 @@
"Node Search Box": "节点搜索框",
"Node Widget": "节点组件",
"NodeLibrary": "节点库",
"Notification Preferences": "通知偏好",
"Pointer": "指针",
"Queue": "队列",
"QueueButton": "执行按钮",

View File

@@ -259,6 +259,10 @@
"name": "吸附高亮节点",
"tooltip": "在拖动连线经过具有可用输入接口的节点时,高亮显示该节点。"
},
"Comfy_Notification_ShowVersionUpdates": {
"name": "显示版本更新",
"tooltip": "显示新模型和主要新功能的更新。"
},
"Comfy_Pointer_ClickBufferTime": {
"name": "指针点击漂移延迟",
"tooltip": "按下指针按钮后,忽略指针移动的最大时间(毫秒)。\n\n有助于防止在点击时意外移动鼠标。"

View File

@@ -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)