mirror of
https://github.com/willmiao/ComfyUI-Lora-Manager.git
synced 2026-09-21 03:01:27 -03:00
feat(settings): directory picker and live validation for path settings
Add a reusable directory-picker modal backed by a new generic POST /api/lm/browse-directory endpoint (browse logic extracted from the recipe batch-import handler into py/utils/directory_browser.py) and wire a browse button plus advisory validate-path feedback (POST /api/lm/validate-path) into the settings path inputs: recipes path, example images path/local root, and the extra-folder/model-path rows. The browse button insets into the right edge of static inputs so narrow settings rows keep their single-control layout. Translations for the new settings.directoryPicker and settings.pathValidation keys are filled in for all 9 locales.
This commit is contained in:
@@ -608,6 +608,22 @@
|
||||
"controlnet": "ControlNet-Pfade"
|
||||
}
|
||||
},
|
||||
"directoryPicker": {
|
||||
"title": "Ordner durchsuchen",
|
||||
"selectFolder": "Diesen Ordner auswählen",
|
||||
"goUp": "Nach oben",
|
||||
"pathPlaceholder": "Pfad eingeben...",
|
||||
"go": "Los",
|
||||
"emptyFolder": "Keine Unterordner",
|
||||
"loadError": "Verzeichnis konnte nicht geladen werden"
|
||||
},
|
||||
"pathValidation": {
|
||||
"valid": "Pfad ist gültig",
|
||||
"pathNotFound": "Pfad existiert nicht",
|
||||
"notADirectory": "Kein Verzeichnis",
|
||||
"notReadable": "Pfad ist nicht lesbar",
|
||||
"notWritable": "Pfad ist nicht beschreibbar"
|
||||
},
|
||||
"priorityTags": {
|
||||
"title": "Prioritäts-Tags",
|
||||
"description": "Passen Sie die Tag-Prioritätsreihenfolge für jeden Modelltyp an (z. B. character, concept, style(toon|toon_style))",
|
||||
|
||||
@@ -608,6 +608,22 @@
|
||||
"controlnet": "ControlNet Paths"
|
||||
}
|
||||
},
|
||||
"directoryPicker": {
|
||||
"title": "Browse Folders",
|
||||
"selectFolder": "Select This Folder",
|
||||
"goUp": "Up",
|
||||
"pathPlaceholder": "Enter path...",
|
||||
"go": "Go",
|
||||
"emptyFolder": "No subfolders",
|
||||
"loadError": "Failed to load directory"
|
||||
},
|
||||
"pathValidation": {
|
||||
"valid": "Path is valid",
|
||||
"pathNotFound": "Path does not exist",
|
||||
"notADirectory": "Not a directory",
|
||||
"notReadable": "Path is not readable",
|
||||
"notWritable": "Path is not writable"
|
||||
},
|
||||
"priorityTags": {
|
||||
"title": "Priority Tags",
|
||||
"description": "Customize the tag priority order for each model type (e.g., character, concept, style(toon|toon_style))",
|
||||
|
||||
@@ -608,6 +608,22 @@
|
||||
"controlnet": "Rutas de ControlNet"
|
||||
}
|
||||
},
|
||||
"directoryPicker": {
|
||||
"title": "Explorar carpetas",
|
||||
"selectFolder": "Seleccionar esta carpeta",
|
||||
"goUp": "Subir",
|
||||
"pathPlaceholder": "Introducir ruta...",
|
||||
"go": "Ir",
|
||||
"emptyFolder": "No hay subcarpetas",
|
||||
"loadError": "Error al cargar el directorio"
|
||||
},
|
||||
"pathValidation": {
|
||||
"valid": "La ruta es válida",
|
||||
"pathNotFound": "La ruta no existe",
|
||||
"notADirectory": "No es un directorio",
|
||||
"notReadable": "La ruta no es legible",
|
||||
"notWritable": "La ruta no es escribible"
|
||||
},
|
||||
"priorityTags": {
|
||||
"title": "Etiquetas prioritarias",
|
||||
"description": "Personaliza el orden de prioridad de etiquetas para cada tipo de modelo (p. ej., character, concept, style(toon|toon_style))",
|
||||
|
||||
@@ -608,6 +608,22 @@
|
||||
"controlnet": "Chemins ControlNet"
|
||||
}
|
||||
},
|
||||
"directoryPicker": {
|
||||
"title": "Parcourir les dossiers",
|
||||
"selectFolder": "Sélectionner ce dossier",
|
||||
"goUp": "Remonter",
|
||||
"pathPlaceholder": "Saisir un chemin...",
|
||||
"go": "Aller",
|
||||
"emptyFolder": "Aucun sous-dossier",
|
||||
"loadError": "Échec du chargement du dossier"
|
||||
},
|
||||
"pathValidation": {
|
||||
"valid": "Le chemin est valide",
|
||||
"pathNotFound": "Le chemin n’existe pas",
|
||||
"notADirectory": "N’est pas un dossier",
|
||||
"notReadable": "Le chemin n’est pas lisible",
|
||||
"notWritable": "Le chemin n’est pas accessible en écriture"
|
||||
},
|
||||
"priorityTags": {
|
||||
"title": "Tags prioritaires",
|
||||
"description": "Personnalisez l'ordre de priorité des tags pour chaque type de modèle (par ex. : character, concept, style(toon|toon_style))",
|
||||
|
||||
@@ -608,6 +608,22 @@
|
||||
"controlnet": "נתיבי ControlNet"
|
||||
}
|
||||
},
|
||||
"directoryPicker": {
|
||||
"title": "עיון בתיקיות",
|
||||
"selectFolder": "בחר תיקייה זו",
|
||||
"goUp": "למעלה",
|
||||
"pathPlaceholder": "הזן נתיב...",
|
||||
"go": "עבור",
|
||||
"emptyFolder": "אין תתי-תיקיות",
|
||||
"loadError": "טעינת התיקייה נכשלה"
|
||||
},
|
||||
"pathValidation": {
|
||||
"valid": "הנתיב תקין",
|
||||
"pathNotFound": "הנתיב לא קיים",
|
||||
"notADirectory": "לא תיקייה",
|
||||
"notReadable": "הנתיב לא ניתן לקריאה",
|
||||
"notWritable": "הנתיב לא ניתן לכתיבה"
|
||||
},
|
||||
"priorityTags": {
|
||||
"title": "תגיות עדיפות",
|
||||
"description": "התאם את סדר העדיפות של התגיות עבור כל סוג מודל (לדוגמה: character, concept, style(toon|toon_style))",
|
||||
|
||||
@@ -608,6 +608,22 @@
|
||||
"controlnet": "ControlNetパス"
|
||||
}
|
||||
},
|
||||
"directoryPicker": {
|
||||
"title": "フォルダを参照",
|
||||
"selectFolder": "このフォルダを選択",
|
||||
"goUp": "上へ",
|
||||
"pathPlaceholder": "パスを入力...",
|
||||
"go": "移動",
|
||||
"emptyFolder": "サブフォルダがありません",
|
||||
"loadError": "ディレクトリの読み込みに失敗しました"
|
||||
},
|
||||
"pathValidation": {
|
||||
"valid": "パスは有効です",
|
||||
"pathNotFound": "パスが存在しません",
|
||||
"notADirectory": "ディレクトリではありません",
|
||||
"notReadable": "パスは読み取れません",
|
||||
"notWritable": "パスは書き込めません"
|
||||
},
|
||||
"priorityTags": {
|
||||
"title": "優先タグ",
|
||||
"description": "各モデルタイプのタグ優先順位をカスタマイズします (例: character, concept, style(toon|toon_style))",
|
||||
|
||||
@@ -608,6 +608,22 @@
|
||||
"controlnet": "ControlNet 경로"
|
||||
}
|
||||
},
|
||||
"directoryPicker": {
|
||||
"title": "폴더 찾아보기",
|
||||
"selectFolder": "이 폴더 선택",
|
||||
"goUp": "위로",
|
||||
"pathPlaceholder": "경로 입력...",
|
||||
"go": "이동",
|
||||
"emptyFolder": "하위 폴더 없음",
|
||||
"loadError": "디렉터리를 불러오지 못했습니다"
|
||||
},
|
||||
"pathValidation": {
|
||||
"valid": "유효한 경로입니다",
|
||||
"pathNotFound": "경로가 존재하지 않습니다",
|
||||
"notADirectory": "디렉터리가 아닙니다",
|
||||
"notReadable": "경로를 읽을 수 없습니다",
|
||||
"notWritable": "경로에 쓸 수 없습니다"
|
||||
},
|
||||
"priorityTags": {
|
||||
"title": "우선순위 태그",
|
||||
"description": "모델 유형별 태그 우선순위를 사용자 지정합니다(예: character, concept, style(toon|toon_style)).",
|
||||
|
||||
@@ -608,6 +608,22 @@
|
||||
"controlnet": "Пути ControlNet"
|
||||
}
|
||||
},
|
||||
"directoryPicker": {
|
||||
"title": "Обзор папок",
|
||||
"selectFolder": "Выбрать эту папку",
|
||||
"goUp": "Вверх",
|
||||
"pathPlaceholder": "Введите путь...",
|
||||
"go": "Перейти",
|
||||
"emptyFolder": "Нет подпапок",
|
||||
"loadError": "Не удалось загрузить каталог"
|
||||
},
|
||||
"pathValidation": {
|
||||
"valid": "Путь действителен",
|
||||
"pathNotFound": "Путь не существует",
|
||||
"notADirectory": "Не является каталогом",
|
||||
"notReadable": "Путь недоступен для чтения",
|
||||
"notWritable": "Путь недоступен для записи"
|
||||
},
|
||||
"priorityTags": {
|
||||
"title": "Приоритетные теги",
|
||||
"description": "Настройте порядок приоритетов тегов для каждого типа моделей (например, character, concept, style(toon|toon_style)).",
|
||||
|
||||
@@ -608,6 +608,22 @@
|
||||
"controlnet": "ControlNet 路径"
|
||||
}
|
||||
},
|
||||
"directoryPicker": {
|
||||
"title": "浏览文件夹",
|
||||
"selectFolder": "选择此文件夹",
|
||||
"goUp": "上级目录",
|
||||
"pathPlaceholder": "输入路径...",
|
||||
"go": "跳转",
|
||||
"emptyFolder": "没有子文件夹",
|
||||
"loadError": "目录加载失败"
|
||||
},
|
||||
"pathValidation": {
|
||||
"valid": "路径有效",
|
||||
"pathNotFound": "路径不存在",
|
||||
"notADirectory": "不是一个目录",
|
||||
"notReadable": "路径不可读",
|
||||
"notWritable": "路径不可写"
|
||||
},
|
||||
"priorityTags": {
|
||||
"title": "优先标签",
|
||||
"description": "为每种模型类型自定义标签优先级顺序 (例如: character, concept, style(toon|toon_style))",
|
||||
|
||||
@@ -608,6 +608,22 @@
|
||||
"controlnet": "ControlNet 路徑"
|
||||
}
|
||||
},
|
||||
"directoryPicker": {
|
||||
"title": "瀏覽資料夾",
|
||||
"selectFolder": "選擇此資料夾",
|
||||
"goUp": "上一層",
|
||||
"pathPlaceholder": "輸入路徑...",
|
||||
"go": "前往",
|
||||
"emptyFolder": "沒有子資料夾",
|
||||
"loadError": "目錄載入失敗"
|
||||
},
|
||||
"pathValidation": {
|
||||
"valid": "路徑有效",
|
||||
"pathNotFound": "路徑不存在",
|
||||
"notADirectory": "不是目錄",
|
||||
"notReadable": "路徑無法讀取",
|
||||
"notWritable": "路徑無法寫入"
|
||||
},
|
||||
"priorityTags": {
|
||||
"title": "優先標籤",
|
||||
"description": "為每種模型類型自訂標籤的優先順序 (例如: character, concept, style(toon|toon_style))",
|
||||
|
||||
Reference in New Issue
Block a user