mirror of
https://github.com/willmiao/ComfyUI-Lora-Manager.git
synced 2026-10-13 12:52:13 -03:00
i18n(download): translate download root rules strings in all locales
Fill the 26 [TODO: Translate] placeholders per locale (24 settings.downloadRootRules.* keys + modals.download.routedByRule.*) across zh-CN, zh-TW, ja, ko, fr, de, es, ru, he, following the i18n guidelines: routing/root/base-model/tag terminology per §2, R3 Latin model types and example token lists kept verbatim, R6 register, per-locale UI-label quoting in routedByRule, and fragment style for the summary/chip strings. The es tag chip uses "Tag" (the full "etiqueta" overflows the badge; the tooltip keeps the full term). Source fix per R9/R7: en.json summary.selectBaseModels/enterTags used U+2026 — now ASCII "..." (JS fallbacks and vitest assertions moved with it; truncateMiddlePath's … stays, it is a path-elision character, not a locale string). Guidelines doc: new §2 "Download root rules feature" terminology subsection + 2026-10 status entry.
This commit is contained in:
@@ -195,6 +195,17 @@ Locales: `en`, `zh-CN`, `zh-TW`, `ja`, `ko`, `fr`, `de`, `es`, `ru`, `he` (RTL).
|
||||
> root** noun while translating (`library root` → `model root`, R5); the count-bearing
|
||||
> `successMulti` uses the singular `success` key when only one copy was removed.
|
||||
|
||||
> **Status (2026-10, download root rules):** the Download Root Rules editor (Settings →
|
||||
> Library, per model type) routes downloads to a non-default root by base model or tag
|
||||
> match, and the download modal names the rule that matched. That added 26 keys —
|
||||
> `settings.downloadRootRules.*` (24) and `modals.download.routedByRule.baseModel` /
|
||||
> `.tag` — translated in all 9 locales (terminology in §2, "Download root rules
|
||||
> feature"). One source fix came with the pass: `summary.selectBaseModels` /
|
||||
> `summary.enterTags` used U+2026 `…`, which violates R7, so `en.json` now uses ASCII
|
||||
> `...` (the JS fallback strings in `SettingsManager.js` moved with it). The `…` in
|
||||
> `truncateMiddlePath` stays — it is a code-level path-elision character, not a locale
|
||||
> string. No remaining `[TODO: Translate]` placeholders.
|
||||
|
||||
---
|
||||
|
||||
## 1. Hard rules (do not violate)
|
||||
@@ -686,6 +697,41 @@ directly (model-type names, R3). The tooltip quotes the `modals.download.useDefa
|
||||
label verbatim with each locale's UI-label quoting style (zh-CN “ ”, zh-TW/ja 「 」,
|
||||
ko `' '`, fr « … », de „ … “, es/ru/he «…»).
|
||||
|
||||
### Download root rules feature (per-type routing by base model / tag)
|
||||
|
||||
The settings Library tab hosts an ordered rule list per model type
|
||||
(`settings.downloadRootRules.*`) that sends a download to a non-default root folder when
|
||||
the model's base model or tags match; the download modal names the rule that matched
|
||||
(`modals.download.routedByRule.*`). Rules are checked in order, the **first match wins**,
|
||||
and unmatched downloads fall back to the default root. "Routing" itself reuses the
|
||||
Download routing feature row above (zh 路由, ja 振り分け, ko 라우팅, …).
|
||||
|
||||
| Term | Rendering |
|
||||
|---|---|
|
||||
| rule | zh-CN 规则 · zh-TW 規則 · ja ルール · ko 규칙 · fr règle · de Regel · es regla · ru правило · he כלל |
|
||||
| root (folder) | reuse each locale's `sidebar.modelRoot` noun: zh-CN 根目录 · zh-TW 根目錄 · ja ルート · ko 루트 · fr racine · de Stammordner · es raíz · ru корневая папка · he שורש |
|
||||
| default root | zh-CN 默认根目录 · zh-TW 預設根目錄 · ja デフォルトルート · ko 기본 루트 · fr racine par défaut · de Standard-Stammordner · es raíz predeterminada · ru корневая папка по умолчанию · he שורש ברירת המחדל |
|
||||
| first match wins | zh-CN 首个命中的规则生效 · zh-TW 首個命中的規則生效 · ja 最初に一致したルールが適用 · ko 첫 번째로 일치하는 규칙이 적용 · fr la première correspondance l’emporte · de der erste Treffer gewinnt · es gana la primera coincidencia · ru срабатывает первое совпадение · he ההתאמה הראשונה מנצחת |
|
||||
| unmatched (downloads) | zh-CN 未匹配 · zh-TW 未匹配 · ja 一致しない · ko 일치하지 않는 · fr sans correspondance · de ohne Treffer · es sin coincidencia · ru без совпадения · he ללא התאמה |
|
||||
| routed by rule | zh-CN 已由规则路由 · zh-TW 已由規則路由 · ja ルールで振り分け · ko 규칙에 따라 라우팅됨 · fr routé par règle · de per Regel geroutet · es enrutado por regla · ru маршрут по правилу · he נותב לפי כלל |
|
||||
|
||||
- The match-type **chips** are tiny badges: `BM` stays Latin everywhere; the tag chip uses
|
||||
the short tag noun (zh-CN 标签, zh-TW 標籤, ja タグ, ko 태그, fr/de Tag, ru Тег,
|
||||
he תגית). **es uses `Tag` on the chip** (not "etiqueta") because the full noun
|
||||
overflows the badge — the full term "Etiqueta" still appears in the `matchTypes.tag`
|
||||
tooltip.
|
||||
- `types.*` are model-type names (R3) and `tagPlaceholder` is an example token list (§6):
|
||||
both stay byte-identical to `en.json` in every locale.
|
||||
- `summary.*` are fragments inside the collapsed-row button — no trailing period, ASCII
|
||||
`...` per R7. `summary.more` joins after the first two matches as `a, b, <more>`;
|
||||
`{count}` may move (ru «ещё {count}», ja 「他 {count} 件」, zh-CN 还有 {count} 项,
|
||||
zh-TW 還有 {count} 項).
|
||||
- `routedByRule.*` quote the matched value with each locale's UI-label quoting style
|
||||
(zh-CN “ ”, zh-TW/ja 「 」, ko `' '`, fr « … », de „ … “, es/ru/he «…»).
|
||||
- Colon style in `defaultHint` / `saveFailed` / `routedByRule` follows each file's
|
||||
existing majority: full-width `:` for zh-CN/zh-TW/ja, ASCII `:` for ko and the
|
||||
Latin/Cyrillic/Hebrew locales (fr keeps its space before `:`).
|
||||
|
||||
### OpenModelDB feature
|
||||
|
||||
**OpenModelDB** is a brand name and stays Latin in every locale (R3, same as CivitAI /
|
||||
|
||||
+26
-26
@@ -496,39 +496,39 @@
|
||||
}
|
||||
},
|
||||
"downloadRootRules": {
|
||||
"title": "[TODO: Translate] Download Root Rules",
|
||||
"help": "[TODO: Translate] Route downloads to a different root folder based on the model's base model.",
|
||||
"description": "[TODO: Translate] Rules are checked in order. First match wins; unmatched downloads use the default root.",
|
||||
"defaultHint": "[TODO: Translate] Default: {root} — unmatched downloads go here",
|
||||
"defaultSuffix": "[TODO: Translate] default",
|
||||
"addBaseModelRule": "[TODO: Translate] Base model rule",
|
||||
"addTagRule": "[TODO: Translate] Tag rule",
|
||||
"removeRule": "[TODO: Translate] Remove rule",
|
||||
"moveUp": "[TODO: Translate] Move up",
|
||||
"moveDown": "[TODO: Translate] Move down",
|
||||
"noRoots": "[TODO: Translate] No roots configured for this model type.",
|
||||
"title": "Download-Root-Regeln",
|
||||
"help": "Leitet Downloads anhand des Basismodells oder der Tags des Modells in einen anderen Stammordner.",
|
||||
"description": "Regeln werden der Reihe nach geprüft. Der erste Treffer gewinnt; Downloads ohne Treffer verwenden den Standard-Stammordner.",
|
||||
"defaultHint": "Standard: {root} — Downloads ohne Treffer landen hier",
|
||||
"defaultSuffix": "Standard",
|
||||
"addBaseModelRule": "Basismodell-Regel",
|
||||
"addTagRule": "Tag-Regel",
|
||||
"removeRule": "Regel entfernen",
|
||||
"moveUp": "Nach oben",
|
||||
"moveDown": "Nach unten",
|
||||
"noRoots": "Für diesen Modelltyp sind keine Stammordner konfiguriert.",
|
||||
"matchTypes": {
|
||||
"baseModel": "[TODO: Translate] Base model",
|
||||
"tag": "[TODO: Translate] Tag"
|
||||
"baseModel": "Basismodell",
|
||||
"tag": "Tag"
|
||||
},
|
||||
"matchTypeChips": {
|
||||
"baseModel": "[TODO: Translate] BM",
|
||||
"tag": "[TODO: Translate] Tag"
|
||||
"baseModel": "BM",
|
||||
"tag": "Tag"
|
||||
},
|
||||
"tagPlaceholder": "[TODO: Translate] character, style, realistic",
|
||||
"tagPlaceholder": "character, style, realistic",
|
||||
"summary": {
|
||||
"selectBaseModels": "[TODO: Translate] Select base models…",
|
||||
"enterTags": "[TODO: Translate] Enter tags…",
|
||||
"more": "[TODO: Translate] +{count} more"
|
||||
"selectBaseModels": "Basismodelle auswählen...",
|
||||
"enterTags": "Tags eingeben...",
|
||||
"more": "+{count} weitere"
|
||||
},
|
||||
"types": {
|
||||
"loras": "[TODO: Translate] LoRA",
|
||||
"checkpoints": "[TODO: Translate] Checkpoint",
|
||||
"unet": "[TODO: Translate] Diffusion Model",
|
||||
"embeddings": "[TODO: Translate] Embedding"
|
||||
"loras": "LoRA",
|
||||
"checkpoints": "Checkpoint",
|
||||
"unet": "Diffusion Model",
|
||||
"embeddings": "Embedding"
|
||||
},
|
||||
"validation": {
|
||||
"saveFailed": "[TODO: Translate] Unable to save download root rules: {message}"
|
||||
"saveFailed": "Download-Root-Regeln konnten nicht gespeichert werden: {message}"
|
||||
}
|
||||
},
|
||||
"skipPreviouslyDownloadedModelVersions": {
|
||||
@@ -1662,8 +1662,8 @@
|
||||
"tooltip": "Automatisch aus den Modell-Metadaten erkannt. Wechseln Sie, wenn die Erkennung falsch war; ein Wechsel deaktiviert „Standardpfad verwenden“ für diesen Download."
|
||||
},
|
||||
"routedByRule": {
|
||||
"baseModel": "[TODO: Translate] Routed by rule: base model \"{value}\"",
|
||||
"tag": "[TODO: Translate] Routed by rule: tag \"{value}\""
|
||||
"baseModel": "Per Regel geroutet: Basismodell „{value}“",
|
||||
"tag": "Per Regel geroutet: Tag „{value}“"
|
||||
},
|
||||
"targetFolderPath": "Zielordnerpfad:",
|
||||
"browseFolders": "Ordner durchsuchen:",
|
||||
|
||||
+2
-2
@@ -517,8 +517,8 @@
|
||||
},
|
||||
"tagPlaceholder": "character, style, realistic",
|
||||
"summary": {
|
||||
"selectBaseModels": "Select base models…",
|
||||
"enterTags": "Enter tags…",
|
||||
"selectBaseModels": "Select base models...",
|
||||
"enterTags": "Enter tags...",
|
||||
"more": "+{count} more"
|
||||
},
|
||||
"types": {
|
||||
|
||||
+26
-26
@@ -496,39 +496,39 @@
|
||||
}
|
||||
},
|
||||
"downloadRootRules": {
|
||||
"title": "[TODO: Translate] Download Root Rules",
|
||||
"help": "[TODO: Translate] Route downloads to a different root folder based on the model's base model.",
|
||||
"description": "[TODO: Translate] Rules are checked in order. First match wins; unmatched downloads use the default root.",
|
||||
"defaultHint": "[TODO: Translate] Default: {root} — unmatched downloads go here",
|
||||
"defaultSuffix": "[TODO: Translate] default",
|
||||
"addBaseModelRule": "[TODO: Translate] Base model rule",
|
||||
"addTagRule": "[TODO: Translate] Tag rule",
|
||||
"removeRule": "[TODO: Translate] Remove rule",
|
||||
"moveUp": "[TODO: Translate] Move up",
|
||||
"moveDown": "[TODO: Translate] Move down",
|
||||
"noRoots": "[TODO: Translate] No roots configured for this model type.",
|
||||
"title": "Reglas de raíz de descarga",
|
||||
"help": "Enruta las descargas a una carpeta raíz diferente según el modelo base o las etiquetas del modelo.",
|
||||
"description": "Las reglas se comprueban en orden. Gana la primera coincidencia; las descargas sin coincidencia usan la raíz predeterminada.",
|
||||
"defaultHint": "Predeterminada: {root} — las descargas sin coincidencia van aquí",
|
||||
"defaultSuffix": "predeterminado",
|
||||
"addBaseModelRule": "Regla de modelo base",
|
||||
"addTagRule": "Regla de etiqueta",
|
||||
"removeRule": "Eliminar regla",
|
||||
"moveUp": "Subir",
|
||||
"moveDown": "Bajar",
|
||||
"noRoots": "No hay raíces configuradas para este tipo de modelo.",
|
||||
"matchTypes": {
|
||||
"baseModel": "[TODO: Translate] Base model",
|
||||
"tag": "[TODO: Translate] Tag"
|
||||
"baseModel": "Modelo base",
|
||||
"tag": "Etiqueta"
|
||||
},
|
||||
"matchTypeChips": {
|
||||
"baseModel": "[TODO: Translate] BM",
|
||||
"tag": "[TODO: Translate] Tag"
|
||||
"baseModel": "BM",
|
||||
"tag": "Tag"
|
||||
},
|
||||
"tagPlaceholder": "[TODO: Translate] character, style, realistic",
|
||||
"tagPlaceholder": "character, style, realistic",
|
||||
"summary": {
|
||||
"selectBaseModels": "[TODO: Translate] Select base models…",
|
||||
"enterTags": "[TODO: Translate] Enter tags…",
|
||||
"more": "[TODO: Translate] +{count} more"
|
||||
"selectBaseModels": "Selecciona modelos base...",
|
||||
"enterTags": "Introduce etiquetas...",
|
||||
"more": "+{count} más"
|
||||
},
|
||||
"types": {
|
||||
"loras": "[TODO: Translate] LoRA",
|
||||
"checkpoints": "[TODO: Translate] Checkpoint",
|
||||
"unet": "[TODO: Translate] Diffusion Model",
|
||||
"embeddings": "[TODO: Translate] Embedding"
|
||||
"loras": "LoRA",
|
||||
"checkpoints": "Checkpoint",
|
||||
"unet": "Diffusion Model",
|
||||
"embeddings": "Embedding"
|
||||
},
|
||||
"validation": {
|
||||
"saveFailed": "[TODO: Translate] Unable to save download root rules: {message}"
|
||||
"saveFailed": "No se pudieron guardar las reglas de raíz de descarga: {message}"
|
||||
}
|
||||
},
|
||||
"skipPreviouslyDownloadedModelVersions": {
|
||||
@@ -1662,8 +1662,8 @@
|
||||
"tooltip": "Detectado automáticamente a partir de los metadatos del modelo. Cámbialo si la detección fue incorrecta; cambiar desactiva «Usar ruta predeterminada» para esta descarga."
|
||||
},
|
||||
"routedByRule": {
|
||||
"baseModel": "[TODO: Translate] Routed by rule: base model \"{value}\"",
|
||||
"tag": "[TODO: Translate] Routed by rule: tag \"{value}\""
|
||||
"baseModel": "Enrutado por regla: modelo base «{value}»",
|
||||
"tag": "Enrutado por regla: etiqueta «{value}»"
|
||||
},
|
||||
"targetFolderPath": "Ruta de carpeta de destino:",
|
||||
"browseFolders": "Explorar carpetas:",
|
||||
|
||||
+26
-26
@@ -496,39 +496,39 @@
|
||||
}
|
||||
},
|
||||
"downloadRootRules": {
|
||||
"title": "[TODO: Translate] Download Root Rules",
|
||||
"help": "[TODO: Translate] Route downloads to a different root folder based on the model's base model.",
|
||||
"description": "[TODO: Translate] Rules are checked in order. First match wins; unmatched downloads use the default root.",
|
||||
"defaultHint": "[TODO: Translate] Default: {root} — unmatched downloads go here",
|
||||
"defaultSuffix": "[TODO: Translate] default",
|
||||
"addBaseModelRule": "[TODO: Translate] Base model rule",
|
||||
"addTagRule": "[TODO: Translate] Tag rule",
|
||||
"removeRule": "[TODO: Translate] Remove rule",
|
||||
"moveUp": "[TODO: Translate] Move up",
|
||||
"moveDown": "[TODO: Translate] Move down",
|
||||
"noRoots": "[TODO: Translate] No roots configured for this model type.",
|
||||
"title": "Règles de racine de téléchargement",
|
||||
"help": "Route les téléchargements vers un autre dossier racine en fonction du modèle de base ou des tags du modèle.",
|
||||
"description": "Les règles sont vérifiées dans l’ordre. La première correspondance l’emporte ; les téléchargements sans correspondance utilisent la racine par défaut.",
|
||||
"defaultHint": "Par défaut : {root} — les téléchargements sans correspondance arrivent ici",
|
||||
"defaultSuffix": "par défaut",
|
||||
"addBaseModelRule": "Règle de modèle de base",
|
||||
"addTagRule": "Règle de tag",
|
||||
"removeRule": "Supprimer la règle",
|
||||
"moveUp": "Monter",
|
||||
"moveDown": "Descendre",
|
||||
"noRoots": "Aucune racine configurée pour ce type de modèle.",
|
||||
"matchTypes": {
|
||||
"baseModel": "[TODO: Translate] Base model",
|
||||
"tag": "[TODO: Translate] Tag"
|
||||
"baseModel": "Modèle de base",
|
||||
"tag": "Tag"
|
||||
},
|
||||
"matchTypeChips": {
|
||||
"baseModel": "[TODO: Translate] BM",
|
||||
"tag": "[TODO: Translate] Tag"
|
||||
"baseModel": "BM",
|
||||
"tag": "Tag"
|
||||
},
|
||||
"tagPlaceholder": "[TODO: Translate] character, style, realistic",
|
||||
"tagPlaceholder": "character, style, realistic",
|
||||
"summary": {
|
||||
"selectBaseModels": "[TODO: Translate] Select base models…",
|
||||
"enterTags": "[TODO: Translate] Enter tags…",
|
||||
"more": "[TODO: Translate] +{count} more"
|
||||
"selectBaseModels": "Sélectionner des modèles de base...",
|
||||
"enterTags": "Saisir des tags...",
|
||||
"more": "+{count} de plus"
|
||||
},
|
||||
"types": {
|
||||
"loras": "[TODO: Translate] LoRA",
|
||||
"checkpoints": "[TODO: Translate] Checkpoint",
|
||||
"unet": "[TODO: Translate] Diffusion Model",
|
||||
"embeddings": "[TODO: Translate] Embedding"
|
||||
"loras": "LoRA",
|
||||
"checkpoints": "Checkpoint",
|
||||
"unet": "Diffusion Model",
|
||||
"embeddings": "Embedding"
|
||||
},
|
||||
"validation": {
|
||||
"saveFailed": "[TODO: Translate] Unable to save download root rules: {message}"
|
||||
"saveFailed": "Impossible d’enregistrer les règles de racine de téléchargement : {message}"
|
||||
}
|
||||
},
|
||||
"skipPreviouslyDownloadedModelVersions": {
|
||||
@@ -1662,8 +1662,8 @@
|
||||
"tooltip": "Détecté automatiquement à partir des métadonnées du modèle. Changez si la détection est incorrecte ; changer désactive « Utiliser le chemin par défaut » pour ce téléchargement."
|
||||
},
|
||||
"routedByRule": {
|
||||
"baseModel": "[TODO: Translate] Routed by rule: base model \"{value}\"",
|
||||
"tag": "[TODO: Translate] Routed by rule: tag \"{value}\""
|
||||
"baseModel": "Routé par règle : modèle de base « {value} »",
|
||||
"tag": "Routé par règle : tag « {value} »"
|
||||
},
|
||||
"targetFolderPath": "Chemin du dossier cible :",
|
||||
"browseFolders": "Parcourir les dossiers :",
|
||||
|
||||
+26
-26
@@ -496,39 +496,39 @@
|
||||
}
|
||||
},
|
||||
"downloadRootRules": {
|
||||
"title": "[TODO: Translate] Download Root Rules",
|
||||
"help": "[TODO: Translate] Route downloads to a different root folder based on the model's base model.",
|
||||
"description": "[TODO: Translate] Rules are checked in order. First match wins; unmatched downloads use the default root.",
|
||||
"defaultHint": "[TODO: Translate] Default: {root} — unmatched downloads go here",
|
||||
"defaultSuffix": "[TODO: Translate] default",
|
||||
"addBaseModelRule": "[TODO: Translate] Base model rule",
|
||||
"addTagRule": "[TODO: Translate] Tag rule",
|
||||
"removeRule": "[TODO: Translate] Remove rule",
|
||||
"moveUp": "[TODO: Translate] Move up",
|
||||
"moveDown": "[TODO: Translate] Move down",
|
||||
"noRoots": "[TODO: Translate] No roots configured for this model type.",
|
||||
"title": "כללי שורש להורדות",
|
||||
"help": "מנתב הורדות לתיקיית שורש אחרת בהתאם למודל הבסיס או לתגיות של המודל.",
|
||||
"description": "הכללים נבדקים לפי הסדר. ההתאמה הראשונה מנצחת; הורדות ללא התאמה משתמשות בשורש ברירת המחדל.",
|
||||
"defaultHint": "ברירת מחדל: {root} — הורדות ללא התאמה מגיעות לכאן",
|
||||
"defaultSuffix": "ברירת מחדל",
|
||||
"addBaseModelRule": "כלל מודל בסיס",
|
||||
"addTagRule": "כלל תגית",
|
||||
"removeRule": "הסר כלל",
|
||||
"moveUp": "הזז למעלה",
|
||||
"moveDown": "הזז למטה",
|
||||
"noRoots": "לא הוגדרו שורשים עבור סוג מודל זה.",
|
||||
"matchTypes": {
|
||||
"baseModel": "[TODO: Translate] Base model",
|
||||
"tag": "[TODO: Translate] Tag"
|
||||
"baseModel": "מודל בסיס",
|
||||
"tag": "תגית"
|
||||
},
|
||||
"matchTypeChips": {
|
||||
"baseModel": "[TODO: Translate] BM",
|
||||
"tag": "[TODO: Translate] Tag"
|
||||
"baseModel": "BM",
|
||||
"tag": "תגית"
|
||||
},
|
||||
"tagPlaceholder": "[TODO: Translate] character, style, realistic",
|
||||
"tagPlaceholder": "character, style, realistic",
|
||||
"summary": {
|
||||
"selectBaseModels": "[TODO: Translate] Select base models…",
|
||||
"enterTags": "[TODO: Translate] Enter tags…",
|
||||
"more": "[TODO: Translate] +{count} more"
|
||||
"selectBaseModels": "בחר מודלי בסיס...",
|
||||
"enterTags": "הזן תגיות...",
|
||||
"more": "+{count} נוספים"
|
||||
},
|
||||
"types": {
|
||||
"loras": "[TODO: Translate] LoRA",
|
||||
"checkpoints": "[TODO: Translate] Checkpoint",
|
||||
"unet": "[TODO: Translate] Diffusion Model",
|
||||
"embeddings": "[TODO: Translate] Embedding"
|
||||
"loras": "LoRA",
|
||||
"checkpoints": "Checkpoint",
|
||||
"unet": "Diffusion Model",
|
||||
"embeddings": "Embedding"
|
||||
},
|
||||
"validation": {
|
||||
"saveFailed": "[TODO: Translate] Unable to save download root rules: {message}"
|
||||
"saveFailed": "לא ניתן לשמור את כללי השורש להורדות: {message}"
|
||||
}
|
||||
},
|
||||
"skipPreviouslyDownloadedModelVersions": {
|
||||
@@ -1662,8 +1662,8 @@
|
||||
"tooltip": "זוהה אוטומטית ממטא-נתוני המודל. החלף אם הזיהוי שגוי; החלפה מכבה את «השתמש בנתיב ברירת מחדל» עבור הורדה זו."
|
||||
},
|
||||
"routedByRule": {
|
||||
"baseModel": "[TODO: Translate] Routed by rule: base model \"{value}\"",
|
||||
"tag": "[TODO: Translate] Routed by rule: tag \"{value}\""
|
||||
"baseModel": "נותב לפי כלל: מודל בסיס «{value}»",
|
||||
"tag": "נותב לפי כלל: תגית «{value}»"
|
||||
},
|
||||
"targetFolderPath": "נתיב תיקיית יעד:",
|
||||
"browseFolders": "דפדף בתיקיות:",
|
||||
|
||||
+26
-26
@@ -496,39 +496,39 @@
|
||||
}
|
||||
},
|
||||
"downloadRootRules": {
|
||||
"title": "[TODO: Translate] Download Root Rules",
|
||||
"help": "[TODO: Translate] Route downloads to a different root folder based on the model's base model.",
|
||||
"description": "[TODO: Translate] Rules are checked in order. First match wins; unmatched downloads use the default root.",
|
||||
"defaultHint": "[TODO: Translate] Default: {root} — unmatched downloads go here",
|
||||
"defaultSuffix": "[TODO: Translate] default",
|
||||
"addBaseModelRule": "[TODO: Translate] Base model rule",
|
||||
"addTagRule": "[TODO: Translate] Tag rule",
|
||||
"removeRule": "[TODO: Translate] Remove rule",
|
||||
"moveUp": "[TODO: Translate] Move up",
|
||||
"moveDown": "[TODO: Translate] Move down",
|
||||
"noRoots": "[TODO: Translate] No roots configured for this model type.",
|
||||
"title": "ダウンロードルートのルール",
|
||||
"help": "モデルのベースモデルまたはタグに基づいて、ダウンロードを別のルートフォルダに振り分けます。",
|
||||
"description": "ルールは順番にチェックされます。最初に一致したルールが適用され、一致しないダウンロードはデフォルトルートを使用します。",
|
||||
"defaultHint": "デフォルト:{root} — 一致しないダウンロードはここに保存されます",
|
||||
"defaultSuffix": "デフォルト",
|
||||
"addBaseModelRule": "ベースモデルルール",
|
||||
"addTagRule": "タグルール",
|
||||
"removeRule": "ルールを削除",
|
||||
"moveUp": "上に移動",
|
||||
"moveDown": "下に移動",
|
||||
"noRoots": "このモデルタイプにはルートが設定されていません。",
|
||||
"matchTypes": {
|
||||
"baseModel": "[TODO: Translate] Base model",
|
||||
"tag": "[TODO: Translate] Tag"
|
||||
"baseModel": "ベースモデル",
|
||||
"tag": "タグ"
|
||||
},
|
||||
"matchTypeChips": {
|
||||
"baseModel": "[TODO: Translate] BM",
|
||||
"tag": "[TODO: Translate] Tag"
|
||||
"baseModel": "BM",
|
||||
"tag": "タグ"
|
||||
},
|
||||
"tagPlaceholder": "[TODO: Translate] character, style, realistic",
|
||||
"tagPlaceholder": "character, style, realistic",
|
||||
"summary": {
|
||||
"selectBaseModels": "[TODO: Translate] Select base models…",
|
||||
"enterTags": "[TODO: Translate] Enter tags…",
|
||||
"more": "[TODO: Translate] +{count} more"
|
||||
"selectBaseModels": "ベースモデルを選択...",
|
||||
"enterTags": "タグを入力...",
|
||||
"more": "他 {count} 件"
|
||||
},
|
||||
"types": {
|
||||
"loras": "[TODO: Translate] LoRA",
|
||||
"checkpoints": "[TODO: Translate] Checkpoint",
|
||||
"unet": "[TODO: Translate] Diffusion Model",
|
||||
"embeddings": "[TODO: Translate] Embedding"
|
||||
"loras": "LoRA",
|
||||
"checkpoints": "Checkpoint",
|
||||
"unet": "Diffusion Model",
|
||||
"embeddings": "Embedding"
|
||||
},
|
||||
"validation": {
|
||||
"saveFailed": "[TODO: Translate] Unable to save download root rules: {message}"
|
||||
"saveFailed": "ダウンロードルートのルールを保存できませんでした:{message}"
|
||||
}
|
||||
},
|
||||
"skipPreviouslyDownloadedModelVersions": {
|
||||
@@ -1662,8 +1662,8 @@
|
||||
"tooltip": "モデルのメタデータから自動検出されます。誤検出の場合は切り替えてください。切り替えると、このダウンロードでは「デフォルトパスを使用」がオフになります。"
|
||||
},
|
||||
"routedByRule": {
|
||||
"baseModel": "[TODO: Translate] Routed by rule: base model \"{value}\"",
|
||||
"tag": "[TODO: Translate] Routed by rule: tag \"{value}\""
|
||||
"baseModel": "ルールで振り分け:ベースモデル「{value}」",
|
||||
"tag": "ルールで振り分け:タグ「{value}」"
|
||||
},
|
||||
"targetFolderPath": "ターゲットフォルダパス:",
|
||||
"browseFolders": "フォルダを参照:",
|
||||
|
||||
+26
-26
@@ -496,39 +496,39 @@
|
||||
}
|
||||
},
|
||||
"downloadRootRules": {
|
||||
"title": "[TODO: Translate] Download Root Rules",
|
||||
"help": "[TODO: Translate] Route downloads to a different root folder based on the model's base model.",
|
||||
"description": "[TODO: Translate] Rules are checked in order. First match wins; unmatched downloads use the default root.",
|
||||
"defaultHint": "[TODO: Translate] Default: {root} — unmatched downloads go here",
|
||||
"defaultSuffix": "[TODO: Translate] default",
|
||||
"addBaseModelRule": "[TODO: Translate] Base model rule",
|
||||
"addTagRule": "[TODO: Translate] Tag rule",
|
||||
"removeRule": "[TODO: Translate] Remove rule",
|
||||
"moveUp": "[TODO: Translate] Move up",
|
||||
"moveDown": "[TODO: Translate] Move down",
|
||||
"noRoots": "[TODO: Translate] No roots configured for this model type.",
|
||||
"title": "다운로드 루트 규칙",
|
||||
"help": "모델의 베이스 모델 또는 태그에 따라 다운로드를 다른 루트 폴더로 라우팅합니다.",
|
||||
"description": "규칙은 순서대로 확인됩니다. 첫 번째로 일치하는 규칙이 적용되며, 일치하지 않는 다운로드는 기본 루트를 사용합니다.",
|
||||
"defaultHint": "기본값: {root} — 일치하지 않는 다운로드는 여기에 저장됩니다",
|
||||
"defaultSuffix": "기본값",
|
||||
"addBaseModelRule": "베이스 모델 규칙",
|
||||
"addTagRule": "태그 규칙",
|
||||
"removeRule": "규칙 제거",
|
||||
"moveUp": "위로 이동",
|
||||
"moveDown": "아래로 이동",
|
||||
"noRoots": "이 모델 유형에 구성된 루트가 없습니다.",
|
||||
"matchTypes": {
|
||||
"baseModel": "[TODO: Translate] Base model",
|
||||
"tag": "[TODO: Translate] Tag"
|
||||
"baseModel": "베이스 모델",
|
||||
"tag": "태그"
|
||||
},
|
||||
"matchTypeChips": {
|
||||
"baseModel": "[TODO: Translate] BM",
|
||||
"tag": "[TODO: Translate] Tag"
|
||||
"baseModel": "BM",
|
||||
"tag": "태그"
|
||||
},
|
||||
"tagPlaceholder": "[TODO: Translate] character, style, realistic",
|
||||
"tagPlaceholder": "character, style, realistic",
|
||||
"summary": {
|
||||
"selectBaseModels": "[TODO: Translate] Select base models…",
|
||||
"enterTags": "[TODO: Translate] Enter tags…",
|
||||
"more": "[TODO: Translate] +{count} more"
|
||||
"selectBaseModels": "베이스 모델 선택...",
|
||||
"enterTags": "태그 입력...",
|
||||
"more": "+{count}개 더"
|
||||
},
|
||||
"types": {
|
||||
"loras": "[TODO: Translate] LoRA",
|
||||
"checkpoints": "[TODO: Translate] Checkpoint",
|
||||
"unet": "[TODO: Translate] Diffusion Model",
|
||||
"embeddings": "[TODO: Translate] Embedding"
|
||||
"loras": "LoRA",
|
||||
"checkpoints": "Checkpoint",
|
||||
"unet": "Diffusion Model",
|
||||
"embeddings": "Embedding"
|
||||
},
|
||||
"validation": {
|
||||
"saveFailed": "[TODO: Translate] Unable to save download root rules: {message}"
|
||||
"saveFailed": "다운로드 루트 규칙을 저장할 수 없습니다: {message}"
|
||||
}
|
||||
},
|
||||
"skipPreviouslyDownloadedModelVersions": {
|
||||
@@ -1662,8 +1662,8 @@
|
||||
"tooltip": "모델 메타데이터에서 자동으로 감지됩니다. 잘못 감지된 경우 전환하세요. 전환하면 이 다운로드에서 '기본 경로 사용'이 꺼집니다."
|
||||
},
|
||||
"routedByRule": {
|
||||
"baseModel": "[TODO: Translate] Routed by rule: base model \"{value}\"",
|
||||
"tag": "[TODO: Translate] Routed by rule: tag \"{value}\""
|
||||
"baseModel": "규칙에 따라 라우팅됨: 베이스 모델 '{value}'",
|
||||
"tag": "규칙에 따라 라우팅됨: 태그 '{value}'"
|
||||
},
|
||||
"targetFolderPath": "대상 폴더 경로:",
|
||||
"browseFolders": "폴더 탐색:",
|
||||
|
||||
+26
-26
@@ -496,39 +496,39 @@
|
||||
}
|
||||
},
|
||||
"downloadRootRules": {
|
||||
"title": "[TODO: Translate] Download Root Rules",
|
||||
"help": "[TODO: Translate] Route downloads to a different root folder based on the model's base model.",
|
||||
"description": "[TODO: Translate] Rules are checked in order. First match wins; unmatched downloads use the default root.",
|
||||
"defaultHint": "[TODO: Translate] Default: {root} — unmatched downloads go here",
|
||||
"defaultSuffix": "[TODO: Translate] default",
|
||||
"addBaseModelRule": "[TODO: Translate] Base model rule",
|
||||
"addTagRule": "[TODO: Translate] Tag rule",
|
||||
"removeRule": "[TODO: Translate] Remove rule",
|
||||
"moveUp": "[TODO: Translate] Move up",
|
||||
"moveDown": "[TODO: Translate] Move down",
|
||||
"noRoots": "[TODO: Translate] No roots configured for this model type.",
|
||||
"title": "Правила корневых папок загрузки",
|
||||
"help": "Направляет загрузки в другую корневую папку в зависимости от базовой модели или тегов модели.",
|
||||
"description": "Правила проверяются по порядку. Срабатывает первое совпадение; загрузки без совпадения используют корневую папку по умолчанию.",
|
||||
"defaultHint": "По умолчанию: {root} — загрузки без совпадения попадают сюда",
|
||||
"defaultSuffix": "по умолчанию",
|
||||
"addBaseModelRule": "Правило базовой модели",
|
||||
"addTagRule": "Правило тега",
|
||||
"removeRule": "Удалить правило",
|
||||
"moveUp": "Вверх",
|
||||
"moveDown": "Вниз",
|
||||
"noRoots": "Для этого типа моделей не настроены корневые папки.",
|
||||
"matchTypes": {
|
||||
"baseModel": "[TODO: Translate] Base model",
|
||||
"tag": "[TODO: Translate] Tag"
|
||||
"baseModel": "Базовая модель",
|
||||
"tag": "Тег"
|
||||
},
|
||||
"matchTypeChips": {
|
||||
"baseModel": "[TODO: Translate] BM",
|
||||
"tag": "[TODO: Translate] Tag"
|
||||
"baseModel": "BM",
|
||||
"tag": "Тег"
|
||||
},
|
||||
"tagPlaceholder": "[TODO: Translate] character, style, realistic",
|
||||
"tagPlaceholder": "character, style, realistic",
|
||||
"summary": {
|
||||
"selectBaseModels": "[TODO: Translate] Select base models…",
|
||||
"enterTags": "[TODO: Translate] Enter tags…",
|
||||
"more": "[TODO: Translate] +{count} more"
|
||||
"selectBaseModels": "Выберите базовые модели...",
|
||||
"enterTags": "Введите теги...",
|
||||
"more": "ещё {count}"
|
||||
},
|
||||
"types": {
|
||||
"loras": "[TODO: Translate] LoRA",
|
||||
"checkpoints": "[TODO: Translate] Checkpoint",
|
||||
"unet": "[TODO: Translate] Diffusion Model",
|
||||
"embeddings": "[TODO: Translate] Embedding"
|
||||
"loras": "LoRA",
|
||||
"checkpoints": "Checkpoint",
|
||||
"unet": "Diffusion Model",
|
||||
"embeddings": "Embedding"
|
||||
},
|
||||
"validation": {
|
||||
"saveFailed": "[TODO: Translate] Unable to save download root rules: {message}"
|
||||
"saveFailed": "Не удалось сохранить правила корневых папок загрузки: {message}"
|
||||
}
|
||||
},
|
||||
"skipPreviouslyDownloadedModelVersions": {
|
||||
@@ -1662,8 +1662,8 @@
|
||||
"tooltip": "Определяется автоматически из метаданных модели. Переключите, если определение неверно; переключение отключает «Использовать путь по умолчанию» для этой загрузки."
|
||||
},
|
||||
"routedByRule": {
|
||||
"baseModel": "[TODO: Translate] Routed by rule: base model \"{value}\"",
|
||||
"tag": "[TODO: Translate] Routed by rule: tag \"{value}\""
|
||||
"baseModel": "Маршрут по правилу: базовая модель «{value}»",
|
||||
"tag": "Маршрут по правилу: тег «{value}»"
|
||||
},
|
||||
"targetFolderPath": "Путь к целевой папке:",
|
||||
"browseFolders": "Обзор папок:",
|
||||
|
||||
+26
-26
@@ -496,39 +496,39 @@
|
||||
}
|
||||
},
|
||||
"downloadRootRules": {
|
||||
"title": "[TODO: Translate] Download Root Rules",
|
||||
"help": "[TODO: Translate] Route downloads to a different root folder based on the model's base model.",
|
||||
"description": "[TODO: Translate] Rules are checked in order. First match wins; unmatched downloads use the default root.",
|
||||
"defaultHint": "[TODO: Translate] Default: {root} — unmatched downloads go here",
|
||||
"defaultSuffix": "[TODO: Translate] default",
|
||||
"addBaseModelRule": "[TODO: Translate] Base model rule",
|
||||
"addTagRule": "[TODO: Translate] Tag rule",
|
||||
"removeRule": "[TODO: Translate] Remove rule",
|
||||
"moveUp": "[TODO: Translate] Move up",
|
||||
"moveDown": "[TODO: Translate] Move down",
|
||||
"noRoots": "[TODO: Translate] No roots configured for this model type.",
|
||||
"title": "下载根目录规则",
|
||||
"help": "根据模型的基础模型或标签,将下载路由到其他根目录。",
|
||||
"description": "规则按顺序检查,首个命中的规则生效;未匹配的下载使用默认根目录。",
|
||||
"defaultHint": "默认:{root} — 未匹配的下载将保存到这里",
|
||||
"defaultSuffix": "默认",
|
||||
"addBaseModelRule": "基础模型规则",
|
||||
"addTagRule": "标签规则",
|
||||
"removeRule": "移除规则",
|
||||
"moveUp": "上移",
|
||||
"moveDown": "下移",
|
||||
"noRoots": "此模型类型尚未配置根目录。",
|
||||
"matchTypes": {
|
||||
"baseModel": "[TODO: Translate] Base model",
|
||||
"tag": "[TODO: Translate] Tag"
|
||||
"baseModel": "基础模型",
|
||||
"tag": "标签"
|
||||
},
|
||||
"matchTypeChips": {
|
||||
"baseModel": "[TODO: Translate] BM",
|
||||
"tag": "[TODO: Translate] Tag"
|
||||
"baseModel": "BM",
|
||||
"tag": "标签"
|
||||
},
|
||||
"tagPlaceholder": "[TODO: Translate] character, style, realistic",
|
||||
"tagPlaceholder": "character, style, realistic",
|
||||
"summary": {
|
||||
"selectBaseModels": "[TODO: Translate] Select base models…",
|
||||
"enterTags": "[TODO: Translate] Enter tags…",
|
||||
"more": "[TODO: Translate] +{count} more"
|
||||
"selectBaseModels": "选择基础模型...",
|
||||
"enterTags": "输入标签...",
|
||||
"more": "还有 {count} 项"
|
||||
},
|
||||
"types": {
|
||||
"loras": "[TODO: Translate] LoRA",
|
||||
"checkpoints": "[TODO: Translate] Checkpoint",
|
||||
"unet": "[TODO: Translate] Diffusion Model",
|
||||
"embeddings": "[TODO: Translate] Embedding"
|
||||
"loras": "LoRA",
|
||||
"checkpoints": "Checkpoint",
|
||||
"unet": "Diffusion Model",
|
||||
"embeddings": "Embedding"
|
||||
},
|
||||
"validation": {
|
||||
"saveFailed": "[TODO: Translate] Unable to save download root rules: {message}"
|
||||
"saveFailed": "无法保存下载根目录规则:{message}"
|
||||
}
|
||||
},
|
||||
"skipPreviouslyDownloadedModelVersions": {
|
||||
@@ -1662,8 +1662,8 @@
|
||||
"tooltip": "根据模型元数据自动检测。如果检测结果有误,请切换;切换会为本次下载关闭“使用默认路径”。"
|
||||
},
|
||||
"routedByRule": {
|
||||
"baseModel": "[TODO: Translate] Routed by rule: base model \"{value}\"",
|
||||
"tag": "[TODO: Translate] Routed by rule: tag \"{value}\""
|
||||
"baseModel": "已由规则路由:基础模型“{value}”",
|
||||
"tag": "已由规则路由:标签“{value}”"
|
||||
},
|
||||
"targetFolderPath": "目标文件夹路径:",
|
||||
"browseFolders": "浏览文件夹:",
|
||||
|
||||
+26
-26
@@ -496,39 +496,39 @@
|
||||
}
|
||||
},
|
||||
"downloadRootRules": {
|
||||
"title": "[TODO: Translate] Download Root Rules",
|
||||
"help": "[TODO: Translate] Route downloads to a different root folder based on the model's base model.",
|
||||
"description": "[TODO: Translate] Rules are checked in order. First match wins; unmatched downloads use the default root.",
|
||||
"defaultHint": "[TODO: Translate] Default: {root} — unmatched downloads go here",
|
||||
"defaultSuffix": "[TODO: Translate] default",
|
||||
"addBaseModelRule": "[TODO: Translate] Base model rule",
|
||||
"addTagRule": "[TODO: Translate] Tag rule",
|
||||
"removeRule": "[TODO: Translate] Remove rule",
|
||||
"moveUp": "[TODO: Translate] Move up",
|
||||
"moveDown": "[TODO: Translate] Move down",
|
||||
"noRoots": "[TODO: Translate] No roots configured for this model type.",
|
||||
"title": "下載根目錄規則",
|
||||
"help": "根據模型的基礎模型或標籤,將下載路由到其他根目錄。",
|
||||
"description": "規則依序檢查,首個命中的規則生效;未匹配的下載使用預設根目錄。",
|
||||
"defaultHint": "預設:{root} — 未匹配的下載將儲存到這裡",
|
||||
"defaultSuffix": "預設",
|
||||
"addBaseModelRule": "基礎模型規則",
|
||||
"addTagRule": "標籤規則",
|
||||
"removeRule": "移除規則",
|
||||
"moveUp": "上移",
|
||||
"moveDown": "下移",
|
||||
"noRoots": "此模型類型尚未設定根目錄。",
|
||||
"matchTypes": {
|
||||
"baseModel": "[TODO: Translate] Base model",
|
||||
"tag": "[TODO: Translate] Tag"
|
||||
"baseModel": "基礎模型",
|
||||
"tag": "標籤"
|
||||
},
|
||||
"matchTypeChips": {
|
||||
"baseModel": "[TODO: Translate] BM",
|
||||
"tag": "[TODO: Translate] Tag"
|
||||
"baseModel": "BM",
|
||||
"tag": "標籤"
|
||||
},
|
||||
"tagPlaceholder": "[TODO: Translate] character, style, realistic",
|
||||
"tagPlaceholder": "character, style, realistic",
|
||||
"summary": {
|
||||
"selectBaseModels": "[TODO: Translate] Select base models…",
|
||||
"enterTags": "[TODO: Translate] Enter tags…",
|
||||
"more": "[TODO: Translate] +{count} more"
|
||||
"selectBaseModels": "選擇基礎模型...",
|
||||
"enterTags": "輸入標籤...",
|
||||
"more": "還有 {count} 項"
|
||||
},
|
||||
"types": {
|
||||
"loras": "[TODO: Translate] LoRA",
|
||||
"checkpoints": "[TODO: Translate] Checkpoint",
|
||||
"unet": "[TODO: Translate] Diffusion Model",
|
||||
"embeddings": "[TODO: Translate] Embedding"
|
||||
"loras": "LoRA",
|
||||
"checkpoints": "Checkpoint",
|
||||
"unet": "Diffusion Model",
|
||||
"embeddings": "Embedding"
|
||||
},
|
||||
"validation": {
|
||||
"saveFailed": "[TODO: Translate] Unable to save download root rules: {message}"
|
||||
"saveFailed": "無法儲存下載根目錄規則:{message}"
|
||||
}
|
||||
},
|
||||
"skipPreviouslyDownloadedModelVersions": {
|
||||
@@ -1662,8 +1662,8 @@
|
||||
"tooltip": "根據模型中繼資料自動偵測。如果偵測結果有誤,請切換;切換會為本次下載關閉「使用預設路徑」。"
|
||||
},
|
||||
"routedByRule": {
|
||||
"baseModel": "[TODO: Translate] Routed by rule: base model \"{value}\"",
|
||||
"tag": "[TODO: Translate] Routed by rule: tag \"{value}\""
|
||||
"baseModel": "已由規則路由:基礎模型「{value}」",
|
||||
"tag": "已由規則路由:標籤「{value}」"
|
||||
},
|
||||
"targetFolderPath": "目標資料夾路徑:",
|
||||
"browseFolders": "瀏覽資料夾:",
|
||||
|
||||
@@ -4823,8 +4823,8 @@ export class SettingsManager {
|
||||
if (!match.length) {
|
||||
// Only drafts can be empty; persisted rules always have matches.
|
||||
summaryEl.textContent = rule?.match_type === 'tag'
|
||||
? translate('settings.downloadRootRules.summary.enterTags', {}, 'Enter tags…')
|
||||
: translate('settings.downloadRootRules.summary.selectBaseModels', {}, 'Select base models…');
|
||||
? translate('settings.downloadRootRules.summary.enterTags', {}, 'Enter tags...')
|
||||
: translate('settings.downloadRootRules.summary.selectBaseModels', {}, 'Select base models...');
|
||||
return;
|
||||
}
|
||||
if (match.length <= 2) {
|
||||
|
||||
@@ -719,12 +719,12 @@ describe('SettingsManager download root rules row layout', () => {
|
||||
|
||||
manager.addDownloadRootRule('loras', 'base_model');
|
||||
expect(groupRows('loras')[0].querySelector('.download-root-rule-summary').textContent)
|
||||
.toBe('Select base models…');
|
||||
.toBe('Select base models...');
|
||||
|
||||
manager.removeDownloadRootRule('loras', 0, true);
|
||||
manager.addDownloadRootRule('loras', 'tag');
|
||||
expect(groupRows('loras')[0].querySelector('.download-root-rule-summary').textContent)
|
||||
.toBe('Enter tags…');
|
||||
.toBe('Enter tags...');
|
||||
});
|
||||
|
||||
it('summarizes more than two matches as first two plus a count', () => {
|
||||
|
||||
Reference in New Issue
Block a user