八国语言+eagle图片

This commit is contained in:
tianmo committed 2026-10-29 11:02:01 +08:00
1 parent acc93d5404
commit 3bd3ba7404
46 files changed
+2520 -290

No files matched your search

@@ -0,0 +1,117 @@
{
"manifest": {
"app": {
"name": "Spine-Vorschaubilder"
}
},
"thumb": {
"title": "Spine-Vorschaubilder",
"noticeIntro": "Nach dem Import von Spine-Assets (.skel / .json + .atlas + Texturen) erstellt dieses Plugin eine Skelettvorschau für Elemente ohne eigenes Vorschaubild.",
"noticeSafety": "Nur neu importierte Elemente werden verarbeitet. Vorhandene Elemente werden weder durchsucht noch geändert, und eigene Vorschaubilder werden nie überschrieben.",
"noticeModes": "Animiert verwendet die erste Animation und exportiert WebP. Statisch verwendet immer die Setup-Pose.",
"noticeDefault": "Die automatische Erstellung ist standardmäßig ausgeschaltet. Aktiviere sie bei Bedarf unten.",
"autoToggle": "Beim Import Vorschaubilder erstellen",
"clear": "Protokoll leeren",
"modeLabel": "Erstellungsmodus",
"modeAnimated": "Animiert (erste Animation)",
"modeStatic": "Statisch (Setup-Pose)",
"strategyLabel": "Strategie",
"strategySize": "Kleinste Datei (langsam)",
"strategySpeed": "Schnellste Methode (schnell)",
"statusLabel": "Status",
"statusStarting": "Wird gestartet…",
"libraryLabel": "Bibliothek",
"statsLabel": "Statistik",
"filterAll": "Alle",
"filterOk": "Erfolg",
"filterFail": "Fehlgeschlagen",
"filterWarn": "Warnung",
"filterError": "Fehler",
"unknownError": "Unbekannter Fehler",
"scriptError": "Skriptfehler: {error}",
"promiseError": "Unbehandelter Promise-Fehler: {error}",
"uncategorized": "Ohne Kategorie",
"reasonQuiet": "Ruhephase",
"reasonFallback": "Ersatzprüfung",
"none": "keine",
"complete": "vollständig",
"incomplete": "unvollständig",
"statusLoaded": "Skript {version} geladen; warte auf Eagle-Ereignisse…",
"statusEagleMissing": "Eagle-API nicht verfügbar",
"statusListening": "Überwachung aktiv",
"statusListenFailed": "Überwachung fehlgeschlagen",
"statusAutoOff": "Überwachung aktiv (automatische Erstellung aus)",
"statusNoLibrary": "Bibliothekspfad nicht verfügbar",
"statusPairing": "Neue Assets werden zugeordnet…",
"statusPairingProgress": "Zuordnung {current}/{total}",
"statusRendering": "Frame wird gerendert {current}/{total} ({queued} in Warteschlange)",
"statusGenerating": "Vorschaubilder werden erstellt… noch {queued}",
"statusPaused": "Pausiert (im Fortschrittsfenster fortsetzen oder abbrechen)",
"statusAutoSkipped": "Automatische Erstellung ist aus; dieser Stapel wurde übersprungen",
"statusStartFailed": "Start fehlgeschlagen: {error}",
"stats": "Stapel {batches} · Hinzugefügt {added} · Spine {spine} · Vollständig {complete} · Erstellt {generated} · Übersprungen {skipped} · Fehlgeschlagen {failed}",
"modulesMissing": "Lokale Module nicht geladen: {modules}",
"moduleLoadError": "Lokale Module wurden nicht geladen. Prüfe die Skriptreihenfolge in index.html: {modules}",
"version": "Plugin-Codeversion {version}",
"pluginCreated": "Plugin erstellt: {name}",
"settingsReadFailed": "Einstellungen konnten nicht gelesen werden; Standardwerte werden verwendet (automatische Erstellung aus): {error}",
"settingsSaveFailed": "Einstellungen konnten nicht gespeichert werden: {error}",
"autoEnabled": "Automatische Erstellung aktiviert. Neu importierte Spine-Assets erhalten Vorschaubilder.",
"autoDisabled": "Automatische Erstellung deaktiviert; die Warteschlange wurde geleert.",
"modeStaticLog": "Erstellungsmodus: statisch (immer Setup-Pose, PNG)",
"modeAnimatedLog": "Erstellungsmodus: animiert (erste Animation als WebP; Setup-Pose ohne Animation)",
"strategySpeedLog": "Strategie: schnellste Methode (grobe Auswahl, nur die kleinsten ein oder zwei Profile)",
"strategySizeLog": "Strategie: kleinste Datei (alle zehn Profile erstellen und das kleinste Ergebnis behalten)",
"missingItem": "{label} übersprungen: Element nicht in Eagle gefunden",
"suffixFixed": "Zusammengesetzte Endung für {label} korrigiert → {name}",
"suffixFailed": "Zusammengesetzte Endung für {label} konnte nicht korrigiert werden: {error}",
"existingThumbnail": "{label} übersprungen: eigenes Vorschaubild vorhanden",
"thumbnailRejected": "Eagle hat dieses Vorschaubild abgelehnt",
"generated": "{label} erstellt | {details} | Spine {version}",
"generateFailed": "Erstellung für {label} fehlgeschlagen: {error}",
"cancelled": "Erstellung abgebrochen: {dropped} ausstehende Elemente verworfen. {done} abgeschlossen (Erfolg {generated}, Fehler {failed}, übersprungen {skipped})",
"batchFailed": "Importstapel konnte nicht verarbeitet werden: {error}",
"batchFinished": "Stapel abgeschlossen: {added} hinzugefügt, {total} in der Bibliothek ({reason})",
"recheck": "{count} früher unvollständige Assets werden erneut geprüft",
"noSpine": "Keine Spine-Assets in diesem Stapel",
"incompletePending": "{count} Assets sind unvollständig und werden nach späteren Importen erneut geprüft",
"incompleteIgnored": "{count} Assets sind unvollständig und wurden in diesem Stapel nicht verarbeitet",
"itemSummary": " {name} | {path} | {state} | Skelett {skeleton} | Atlas {atlas} | Seiten {pages} (fehlend {missing})",
"autoSkipped": "Automatische Erstellung ist aus; {count} Assets in diesem Stapel übersprungen",
"queued": "{added} zur Warteschlange hinzugefügt; {queued} warten{state}",
"queuedRunning": " (wird verarbeitet)",
"libraryInfoNoPath": "library.info() hat keinen Pfad zurückgegeben: {info}",
"libraryInfoFailed": "library.info() fehlgeschlagen: {error}",
"switchingLibrary": "Bibliothek wird gewechselt: {path}",
"noCreateEvent": "Kein Plugin-Erstellungsereignis erhalten; direkter Start wird versucht",
"watching": "{path} wird überwacht ({count} vorhandene Elemente gelten als Verlauf)",
"watchReadFailed": "Asset-Verzeichnis konnte nicht gelesen werden: {error}",
"watchMissingDir": "Asset-Verzeichnis fehlt: {path}",
"watchFailed": "Überwachung konnte nicht gestartet werden: {error}",
"fixSuffixAction": "Zusammengesetzte Endung für {label} korrigieren",
"renderAction": "{label} rendern",
"setThumbnailAction": "Vorschaubild für {label} setzen",
"thumbnailDetailsAnimated": "Animiert {size}@{fps}fps/q{quality}/{kb}KB (Ziel {target}KB)/{frames} Frames/Animation {animation}/{strategy}{limit}",
"thumbnailDetailsStatic": "Statisch {width}×{height}/{kb}KB{fallback}",
"bestSpeed": "schnellste Methode",
"bestSize": "kleinste Datei",
"fallbackNote": " ({text})",
"fallbackNoAnimation": "das Skelett hat keine Animationen",
"fallbackAnimatedFailed": "animierte Erstellung fehlgeschlagen: {error}",
"limitNote": " (auch das kleinste Profil überschreitet das Ziel; erhöhe gegebenenfalls die Vorschaubildgröße)",
"runSummary": "{generated} erfolgreich, {failed} fehlgeschlagen, {skipped} übersprungen in {seconds} Sekunden."
},
"progress": {
"title": "Spine-Vorschaubilder",
"generating": "Animierte Vorschaubilder werden erstellt…",
"waiting": "Warte auf Start…",
"confirmPrompt": "Diesen Lauf abbrechen?",
"resume": "Fortsetzen",
"cancel": "Abbruch bestätigen",
"stop": "Stoppen",
"confirm": "Fertig",
"generatedConfirm": "{done} Vorschaubilder erstellt. Lauf abbrechen?",
"complete": "Abgeschlossen",
"completed": "Abgeschlossen {done} / {total} ({percent}%)"
}
}
@@ -0,0 +1,117 @@
{
"manifest": {
"app": {
"name": "Spine Thumbnails"
}
},
"thumb": {
"title": "Spine Thumbnails",
"noticeIntro": "After importing Spine assets (.skel / .json + .atlas + textures), this plugin creates a skeleton preview for items that do not yet have a custom thumbnail.",
"noticeSafety": "Only newly imported items are processed. Existing items are not scanned or changed, and custom thumbnails are never overwritten.",
"noticeModes": "Animated uses the first animation and exports WebP. Still always uses the setup pose.",
"noticeDefault": "Automatic generation is off by default. Enable it below when needed.",
"autoToggle": "Generate thumbnails on import",
"clear": "Clear log",
"modeLabel": "Generation mode",
"modeAnimated": "Animated (first animation)",
"modeStatic": "Still (setup pose)",
"strategyLabel": "Strategy",
"strategySize": "Smallest file (slow)",
"strategySpeed": "Fastest (quick)",
"statusLabel": "Status",
"statusStarting": "Starting…",
"libraryLabel": "Library",
"statsLabel": "Statistics",
"filterAll": "All",
"filterOk": "Success",
"filterFail": "Failed",
"filterWarn": "Warning",
"filterError": "Error",
"unknownError": "Unknown error",
"scriptError": "Script error: {error}",
"promiseError": "Unhandled Promise error: {error}",
"uncategorized": "Uncategorized",
"reasonQuiet": "quiet",
"reasonFallback": "fallback scan",
"none": "none",
"complete": "complete",
"incomplete": "incomplete",
"statusLoaded": "Script {version} loaded; waiting for Eagle events…",
"statusEagleMissing": "Eagle API not available",
"statusListening": "Watching",
"statusListenFailed": "Watch failed",
"statusAutoOff": "Watching (automatic generation off)",
"statusNoLibrary": "Library path unavailable",
"statusPairing": "Pairing new assets…",
"statusPairingProgress": "Pairing {current}/{total}",
"statusRendering": "Rendering frame {current}/{total} ({queued} queued)",
"statusGenerating": "Generating thumbnails… {queued} remaining",
"statusPaused": "Paused (resume or cancel in the progress window)",
"statusAutoSkipped": "Automatic generation is off; this batch was skipped",
"statusStartFailed": "Startup failed: {error}",
"stats": "Batches {batches} · Added {added} · Spine {spine} · Complete {complete} · Generated {generated} · Skipped {skipped} · Failed {failed}",
"modulesMissing": "Local modules not loaded: {modules}",
"moduleLoadError": "Local modules were not loaded. Check the script order in index.html: {modules}",
"version": "Plugin code version {version}",
"pluginCreated": "Plugin created: {name}",
"settingsReadFailed": "Failed to read settings; using defaults (automatic generation off): {error}",
"settingsSaveFailed": "Failed to save settings: {error}",
"autoEnabled": "Automatic generation enabled. Newly imported Spine assets will receive thumbnails.",
"autoDisabled": "Automatic generation disabled; the pending queue was cleared.",
"modeStaticLog": "Generation mode: still (setup pose, PNG)",
"modeAnimatedLog": "Generation mode: animated (first animation as WebP; setup pose if no animation exists)",
"strategySpeedLog": "Strategy: fastest (estimate profiles and render only the smallest one or two)",
"strategySizeLog": "Strategy: smallest file (render all ten profiles and keep the smallest result)",
"missingItem": "Skipped {label}: item not found in Eagle",
"suffixFixed": "Fixed compound suffix for {label} → {name}",
"suffixFailed": "Failed to fix compound suffix for {label}: {error}",
"existingThumbnail": "Skipped {label}: a custom thumbnail already exists",
"thumbnailRejected": "Eagle rejected this thumbnail",
"generated": "Generated {label} | {details} | Spine {version}",
"generateFailed": "Generation failed for {label}: {error}",
"cancelled": "Generation cancelled: discarded {dropped} pending items. Completed {done} (success {generated}, failed {failed}, skipped {skipped})",
"batchFailed": "Failed to process import batch: {error}",
"batchFinished": "Batch finished: {added} added, {total} in library ({reason})",
"recheck": "Rechecking {count} previously incomplete assets",
"noSpine": "No Spine assets in this batch",
"incompletePending": "{count} assets are incomplete and will be rechecked after later imports",
"incompleteIgnored": "{count} assets are incomplete and were not processed",
"itemSummary": " {name} | {path} | {state} | skeleton {skeleton} | atlas {atlas} | pages {pages} (missing {missing})",
"autoSkipped": "Automatic generation is off; skipped {count} assets in this batch",
"queued": "Queued {added}; {queued} waiting{state}",
"queuedRunning": " (processing)",
"libraryInfoNoPath": "library.info() did not return a path: {info}",
"libraryInfoFailed": "library.info() failed: {error}",
"switchingLibrary": "Switching library: {path}",
"noCreateEvent": "No plugin-create event received; trying to start directly",
"watching": "Watching {path} ({count} existing items treated as history)",
"watchReadFailed": "Failed to read the asset directory: {error}",
"watchMissingDir": "Asset directory does not exist: {path}",
"watchFailed": "Failed to start watching: {error}",
"fixSuffixAction": "Fixing compound suffix for {label}",
"renderAction": "Rendering {label}",
"setThumbnailAction": "Setting thumbnail for {label}",
"thumbnailDetailsAnimated": "Animated {size}@{fps}fps/q{quality}/{kb}KB (target {target}KB)/{frames} frames/animation {animation}/{strategy}{limit}",
"thumbnailDetailsStatic": "Still {width}×{height}/{kb}KB{fallback}",
"bestSpeed": "fastest",
"bestSize": "smallest file",
"fallbackNote": " ({text})",
"fallbackNoAnimation": "the skeleton has no animations",
"fallbackAnimatedFailed": "animated generation failed: {error}",
"limitNote": " (the smallest profile still exceeds the target; consider a larger thumbnail size)",
"runSummary": "{generated} succeeded, {failed} failed, {skipped} skipped in {seconds} seconds."
},
"progress": {
"title": "Spine Thumbnails",
"generating": "Generating animated thumbnails…",
"waiting": "Waiting to start…",
"confirmPrompt": "Cancel this run?",
"resume": "Continue",
"cancel": "Confirm cancel",
"stop": "Stop",
"confirm": "Done",
"generatedConfirm": "{done} thumbnails generated. Cancel this run?",
"complete": "Complete",
"completed": "Completed {done} / {total} ({percent}%)"
}
}
@@ -0,0 +1,117 @@
{
"manifest": {
"app": {
"name": "Miniaturas de Spine"
}
},
"thumb": {
"title": "Miniaturas de Spine",
"noticeIntro": "Después de importar recursos de Spine (.skel / .json + .atlas + texturas), este complemento crea una vista previa del esqueleto para los elementos que aún no tienen una miniatura personalizada.",
"noticeSafety": "Solo se procesan los elementos recién importados. No se buscan ni modifican elementos existentes y nunca se sobrescriben las miniaturas personalizadas.",
"noticeModes": "Animado usa la primera animación y exporta WebP. Estático siempre usa la pose de configuración.",
"noticeDefault": "La generación automática está desactivada de forma predeterminada. Actívala abajo cuando la necesites.",
"autoToggle": "Generar miniaturas al importar",
"clear": "Borrar registro",
"modeLabel": "Modo de generación",
"modeAnimated": "Animado (primera animación)",
"modeStatic": "Estático (pose de configuración)",
"strategyLabel": "Estrategia",
"strategySize": "Archivo más pequeño (lento)",
"strategySpeed": "Más rápido (rápido)",
"statusLabel": "Estado",
"statusStarting": "Iniciando…",
"libraryLabel": "Biblioteca",
"statsLabel": "Estadísticas",
"filterAll": "Todo",
"filterOk": "Correcto",
"filterFail": "Fallido",
"filterWarn": "Aviso",
"filterError": "Error",
"unknownError": "Error desconocido",
"scriptError": "Error de script: {error}",
"promiseError": "Error de Promise no controlado: {error}",
"uncategorized": "Sin categoría",
"reasonQuiet": "fin de actividad",
"reasonFallback": "exploración de respaldo",
"none": "ninguno",
"complete": "completo",
"incomplete": "incompleto",
"statusLoaded": "Script {version} cargado; esperando eventos de Eagle…",
"statusEagleMissing": "API de Eagle no disponible",
"statusListening": "Supervisando",
"statusListenFailed": "Error de supervisión",
"statusAutoOff": "Supervisando (generación automática desactivada)",
"statusNoLibrary": "Ruta de la biblioteca no disponible",
"statusPairing": "Emparejando recursos nuevos…",
"statusPairingProgress": "Emparejando {current}/{total}",
"statusRendering": "Renderizando fotograma {current}/{total} ({queued} en cola)",
"statusGenerating": "Generando miniaturas… quedan {queued}",
"statusPaused": "En pausa (continúa o cancela en la ventana de progreso)",
"statusAutoSkipped": "La generación automática está desactivada; se omitió este lote",
"statusStartFailed": "Error al iniciar: {error}",
"stats": "Lotes {batches} · Añadidos {added} · Spine {spine} · Completos {complete} · Generados {generated} · Omitidos {skipped} · Fallidos {failed}",
"modulesMissing": "Módulos locales no cargados: {modules}",
"moduleLoadError": "No se cargaron los módulos locales. Revisa el orden de scripts en index.html: {modules}",
"version": "Versión del código del complemento {version}",
"pluginCreated": "Complemento creado: {name}",
"settingsReadFailed": "No se pudieron leer los ajustes; se usarán los valores predeterminados (generación automática desactivada): {error}",
"settingsSaveFailed": "No se pudieron guardar los ajustes: {error}",
"autoEnabled": "Generación automática activada. Los nuevos recursos de Spine importados recibirán miniaturas.",
"autoDisabled": "Generación automática desactivada; se vació la cola pendiente.",
"modeStaticLog": "Modo de generación: estático (siempre pose de configuración, PNG)",
"modeAnimatedLog": "Modo de generación: animado (primera animación como WebP; pose de configuración si no hay animación)",
"strategySpeedLog": "Estrategia: más rápida (estimación y solo los perfiles más pequeños)",
"strategySizeLog": "Estrategia: archivo más pequeño (genera los diez perfiles y conserva el menor)",
"missingItem": "Se omitió {label}: elemento no encontrado en Eagle",
"suffixFixed": "Extensión compuesta corregida para {label} → {name}",
"suffixFailed": "No se pudo corregir la extensión compuesta de {label}: {error}",
"existingThumbnail": "Se omitió {label}: ya existe una miniatura personalizada",
"thumbnailRejected": "Eagle rechazó esta miniatura",
"generated": "{label} generado | {details} | Spine {version}",
"generateFailed": "Error al generar {label}: {error}",
"cancelled": "Generación cancelada: se descartaron {dropped} pendientes. Completados {done} (correctos {generated}, fallidos {failed}, omitidos {skipped})",
"batchFailed": "Error al procesar el lote importado: {error}",
"batchFinished": "Lote finalizado: {added} añadidos, {total} en la biblioteca ({reason})",
"recheck": "Revisando de nuevo {count} recursos previamente incompletos",
"noSpine": "No hay recursos de Spine en este lote",
"incompletePending": "{count} recursos están incompletos y se revisarán tras importaciones posteriores",
"incompleteIgnored": "{count} recursos están incompletos y no se procesaron en este lote",
"itemSummary": " {name} | {path} | {state} | esqueleto {skeleton} | atlas {atlas} | páginas {pages} (faltan {missing})",
"autoSkipped": "La generación automática está desactivada; se omitieron {count} recursos de este lote",
"queued": "{added} añadidos a la cola; {queued} esperando{state}",
"queuedRunning": " (procesando)",
"libraryInfoNoPath": "library.info() no devolvió una ruta: {info}",
"libraryInfoFailed": "Error de library.info(): {error}",
"switchingLibrary": "Cambiando de biblioteca: {path}",
"noCreateEvent": "No se recibió el evento de creación; intentando iniciar directamente",
"watching": "Supervisando {path} ({count} elementos existentes tratados como historial)",
"watchReadFailed": "No se pudo leer el directorio de recursos: {error}",
"watchMissingDir": "No existe el directorio de recursos: {path}",
"watchFailed": "No se pudo iniciar la supervisión: {error}",
"fixSuffixAction": "Corrigiendo extensión compuesta de {label}",
"renderAction": "Renderizando {label}",
"setThumbnailAction": "Estableciendo miniatura de {label}",
"thumbnailDetailsAnimated": "Animado {size}@{fps}fps/q{quality}/{kb}KB (objetivo {target}KB)/{frames} fotogramas/animación {animation}/{strategy}{limit}",
"thumbnailDetailsStatic": "Estático {width}×{height}/{kb}KB{fallback}",
"bestSpeed": "más rápido",
"bestSize": "archivo más pequeño",
"fallbackNote": " ({text})",
"fallbackNoAnimation": "el esqueleto no tiene animaciones",
"fallbackAnimatedFailed": "falló la generación animada: {error}",
"limitNote": " (incluso el perfil más pequeño supera el objetivo; considera aumentar el tamaño de la miniatura)",
"runSummary": "{generated} correctos, {failed} fallidos, {skipped} omitidos en {seconds} segundos."
},
"progress": {
"title": "Miniaturas de Spine",
"generating": "Generando miniaturas animadas…",
"waiting": "Esperando para iniciar…",
"confirmPrompt": "¿Cancelar esta ejecución?",
"resume": "Continuar",
"cancel": "Confirmar cancelación",
"stop": "Detener",
"confirm": "Listo",
"generatedConfirm": "Se generaron {done} miniaturas. ¿Cancelar esta ejecución?",
"complete": "Completado",
"completed": "Completado {done} / {total} ({percent}%)"
}
}
@@ -0,0 +1,117 @@
{
"manifest": {
"app": {
"name": "Spineサムネイル"
}
},
"thumb": {
"title": "Spineサムネイル",
"noticeIntro": "Spine アセット(.skel / .json + .atlas + テクスチャ)を読み込んだ後、カスタムサムネイルがないアイテムにスケルトンプレビューを生成します。",
"noticeSafety": "今回新しく読み込んだアイテムだけを処理し、既存アイテムの走査や変更、カスタムサムネイルの上書きは行いません。",
"noticeModes": "アニメーションは最初のアニメーションを WebP に変換します。静止画は常に setup pose を使用します。",
"noticeDefault": "自動生成は既定でオフです。必要なときに下で有効にしてください。",
"autoToggle": "読み込み時にサムネイルを自動生成",
"clear": "ログを消去",
"modeLabel": "生成方式",
"modeAnimated": "アニメーション(最初のアニメーション)",
"modeStatic": "静止画(setup pose)",
"strategyLabel": "生成戦略",
"strategySize": "最小サイズ(低速)",
"strategySpeed": "最速(高速)",
"statusLabel": "状態",
"statusStarting": "起動中…",
"libraryLabel": "ライブラリ",
"statsLabel": "統計",
"filterAll": "すべて",
"filterOk": "成功",
"filterFail": "失敗",
"filterWarn": "警告",
"filterError": "エラー",
"unknownError": "不明なエラー",
"scriptError": "スクリプトエラー:{error}",
"promiseError": "未処理の Promise エラー:{error}",
"uncategorized": "未分類",
"reasonQuiet": "静止検出",
"reasonFallback": "フォールバック走査",
"none": "なし",
"complete": "完全",
"incomplete": "不完全",
"statusLoaded": "スクリプト {version} を読み込みました。Eagle イベントを待機しています…",
"statusEagleMissing": "Eagle API が利用できません",
"statusListening": "監視中",
"statusListenFailed": "監視に失敗",
"statusAutoOff": "監視中(自動生成はオフ)",
"statusNoLibrary": "ライブラリのパスを取得できません",
"statusPairing": "新しいアセットを照合中…",
"statusPairingProgress": "照合中 {current}/{total}",
"statusRendering": "フレームをレンダリング中 {current}/{total}(待機 {queued})",
"statusGenerating": "サムネイルを生成中…残り {queued}",
"statusPaused": "一時停止中(進捗ウィンドウで再開またはキャンセル)",
"statusAutoSkipped": "自動生成がオフのため、このバッチをスキップしました",
"statusStartFailed": "起動に失敗:{error}",
"stats": "バッチ {batches} · 追加 {added} · Spine {spine} · 完全 {complete} · 生成済み {generated} · スキップ {skipped} · 失敗 {failed}",
"modulesMissing": "ローカルモジュールが未読み込みです:{modules}",
"moduleLoadError": "ローカルモジュールが読み込まれていません。index.html の script 順を確認してください:{modules}",
"version": "プラグインコード {version}",
"pluginCreated": "プラグインを初期化しました:{name}",
"settingsReadFailed": "設定を読み込めないため既定値を使用します(自動生成オフ):{error}",
"settingsSaveFailed": "設定を保存できません:{error}",
"autoEnabled": "自動生成を有効にしました。今後読み込む Spine アセットにサムネイルを生成します。",
"autoDisabled": "自動生成を無効にし、待機中のキューを消去しました。",
"modeStaticLog": "生成方式:静止画(常に setup pose、PNG)",
"modeAnimatedLog": "生成方式:アニメーション(最初のアニメーションを WebP 化し、なければ setup pose)",
"strategySpeedLog": "生成戦略:最速(概算で選び、最小の 1~2 プロファイルのみ生成)",
"strategySizeLog": "生成戦略:最小サイズ(全 10 プロファイルを生成し最小を採用)",
"missingItem": "{label} をスキップ:Eagle にアイテムが見つかりません",
"suffixFixed": "{label} の複合拡張子を修正 → {name}",
"suffixFailed": "{label} の複合拡張子を修正できません:{error}",
"existingThumbnail": "{label} をスキップ:カスタムサムネイルが既にあります",
"thumbnailRejected": "Eagle がこのサムネイルを拒否しました",
"generated": "{label} を生成 | {details} | Spine {version}",
"generateFailed": "{label} の生成に失敗:{error}",
"cancelled": "生成をキャンセル:残り {dropped} 件を破棄、完了 {done} 件(成功 {generated}、失敗 {failed}、スキップ {skipped})",
"batchFailed": "読み込みバッチの処理に失敗:{error}",
"batchFinished": "バッチ完了:{added} 件追加、ライブラリ内 {total} 件({reason})",
"recheck": "以前の不完全なアセット {count} 件を再確認",
"noSpine": "このバッチに Spine アセットはありません",
"incompletePending": "不完全なアセットが {count} 件あります。後の読み込み後に再確認します",
"incompleteIgnored": "不完全なアセットが {count} 件あり、このバッチでは処理しません",
"itemSummary": " {name} | {path} | {state} | スケルトン {skeleton} | atlas {atlas} | ページ {pages}(不足 {missing})",
"autoSkipped": "自動生成がオフのため、このバッチの {count} 件をスキップしました",
"queued": "{added} 件をキューに追加、待機中 {queued} 件{state}",
"queuedRunning": "(処理中)",
"libraryInfoNoPath": "library.info() がパスを返しません:{info}",
"libraryInfoFailed": "library.info() の呼び出しに失敗:{error}",
"switchingLibrary": "ライブラリを切り替え:{path}",
"noCreateEvent": "作成イベントを受信できないため、直接起動します",
"watching": "{path} を監視中(既存 {count} 件は履歴として扱い、処理しません)",
"watchReadFailed": "アセットディレクトリを読み込めません:{error}",
"watchMissingDir": "アセットディレクトリがありません:{path}",
"watchFailed": "監視を開始できません:{error}",
"fixSuffixAction": "{label} の複合拡張子を修正",
"renderAction": "{label} をレンダリング",
"setThumbnailAction": "{label} のサムネイルを設定",
"thumbnailDetailsAnimated": "アニメーション {size}@{fps}fps/q{quality}/{kb}KB(目標 {target}KB)/ {frames} フレーム / アニメーション {animation}/{strategy}{limit}",
"thumbnailDetailsStatic": "静止画 {width}×{height}/{kb}KB{fallback}",
"bestSpeed": "最速",
"bestSize": "最小サイズ",
"fallbackNote": "({text})",
"fallbackNoAnimation": "スケルトンにアニメーションがありません",
"fallbackAnimatedFailed": "アニメーション生成に失敗:{error}",
"limitNote": "(最小プロファイルでも目標サイズを超えています。サムネイルサイズを上げてください)",
"runSummary": "成功 {generated}、失敗 {failed}、スキップ {skipped}、所要 {seconds} 秒。"
},
"progress": {
"title": "Spineサムネイル",
"generating": "アニメーションサムネイルを生成中……",
"waiting": "開始待ち…",
"confirmPrompt": "キャンセルしますか?",
"resume": "続行",
"cancel": "キャンセル確定",
"stop": "停止",
"confirm": "確認",
"generatedConfirm": "{done} 枚生成しました。キャンセルしますか?",
"complete": "完了",
"completed": "完了 {done} / {total}({percent}%)"
}
}
@@ -0,0 +1,117 @@
{
"manifest": {
"app": {
"name": "Spine 썸네일"
}
},
"thumb": {
"title": "Spine 썸네일",
"noticeIntro": "Spine 에셋(.skel / .json + .atlas + 텍스처)을 가져온 뒤 사용자 지정 썸네일이 없는 항목에 스켈레톤 미리보기를 생성합니다.",
"noticeSafety": "이번에 새로 가져온 항목만 처리합니다. 기존 항목을 검색하거나 수정하지 않으며 사용자 지정 썸네일을 덮어쓰지 않습니다.",
"noticeModes": "애니메이션은 첫 번째 애니메이션을 WebP로 만듭니다. 정지 이미지는 항상 setup pose를 사용합니다.",
"noticeDefault": "자동 생성은 기본적으로 꺼져 있습니다. 필요할 때 아래에서 켜세요.",
"autoToggle": "가져올 때 썸네일 자동 생성",
"clear": "로그 지우기",
"modeLabel": "생성 방식",
"modeAnimated": "애니메이션(첫 번째 애니메이션)",
"modeStatic": "정지 이미지(setup pose)",
"strategyLabel": "생성 전략",
"strategySize": "최소 파일(느림)",
"strategySpeed": "최고 속도(빠름)",
"statusLabel": "상태",
"statusStarting": "시작 중…",
"libraryLabel": "라이브러리",
"statsLabel": "통계",
"filterAll": "전체",
"filterOk": "성공",
"filterFail": "실패",
"filterWarn": "경고",
"filterError": "오류",
"unknownError": "알 수 없는 오류",
"scriptError": "스크립트 오류: {error}",
"promiseError": "처리되지 않은 Promise 오류: {error}",
"uncategorized": "미분류",
"reasonQuiet": "정적 감지",
"reasonFallback": "대체 검색",
"none": "없음",
"complete": "완전",
"incomplete": "불완전",
"statusLoaded": "스크립트 {version}을(를) 불러왔습니다. Eagle 이벤트를 기다리는 중…",
"statusEagleMissing": "Eagle API를 사용할 수 없음",
"statusListening": "감시 중",
"statusListenFailed": "감시 실패",
"statusAutoOff": "감시 중(자동 생성 꺼짐)",
"statusNoLibrary": "라이브러리 경로를 가져올 수 없음",
"statusPairing": "새 에셋 연결 중…",
"statusPairingProgress": "연결 중 {current}/{total}",
"statusRendering": "프레임 렌더링 중 {current}/{total}(대기 {queued})",
"statusGenerating": "썸네일 생성 중… 남은 항목 {queued}",
"statusPaused": "일시 정지됨(진행 창에서 계속하거나 취소하세요)",
"statusAutoSkipped": "자동 생성이 꺼져 있어 이번 묶음을 건너뛰었습니다",
"statusStartFailed": "시작 실패: {error}",
"stats": "묶음 {batches} · 추가 {added} · Spine {spine} · 완전 {complete} · 생성 {generated} · 건너뜀 {skipped} · 실패 {failed}",
"modulesMissing": "로컬 모듈이 로드되지 않음: {modules}",
"moduleLoadError": "로컬 모듈이 로드되지 않았습니다. index.html의 script 순서를 확인하세요: {modules}",
"version": "플러그인 코드 버전 {version}",
"pluginCreated": "플러그인 생성됨: {name}",
"settingsReadFailed": "설정을 읽지 못해 기본값을 사용합니다(자동 생성 꺼짐): {error}",
"settingsSaveFailed": "설정 저장 실패: {error}",
"autoEnabled": "자동 생성을 켰습니다. 새로 가져오는 Spine 에셋에 썸네일을 생성합니다.",
"autoDisabled": "자동 생성을 껐으며 대기 큐를 비웠습니다.",
"modeStaticLog": "생성 방식: 정지 이미지(항상 setup pose, PNG)",
"modeAnimatedLog": "생성 방식: 애니메이션(첫 애니메이션을 WebP로 만들고 없으면 setup pose 사용)",
"strategySpeedLog": "생성 전략: 최고 속도(대략 선택 후 가장 작은 1~2개 프로필만 생성)",
"strategySizeLog": "생성 전략: 최소 파일(10개 프로필을 모두 생성하고 가장 작은 결과 선택)",
"missingItem": "{label} 건너뜀: Eagle에서 항목을 찾을 수 없음",
"suffixFixed": "{label}의 복합 확장자 수정 → {name}",
"suffixFailed": "{label}의 복합 확장자 수정 실패: {error}",
"existingThumbnail": "{label} 건너뜀: 사용자 지정 썸네일이 이미 있음",
"thumbnailRejected": "Eagle이 이 썸네일을 거부했습니다",
"generated": "{label} 생성됨 | {details} | Spine {version}",
"generateFailed": "{label} 생성 실패: {error}",
"cancelled": "생성 취소: 남은 {dropped}개를 버렸습니다. 완료 {done}개(성공 {generated}, 실패 {failed}, 건너뜀 {skipped})",
"batchFailed": "가져오기 묶음 처리 실패: {error}",
"batchFinished": "묶음 완료: {added}개 추가, 라이브러리 전체 {total}개({reason})",
"recheck": "이전 불완전 에셋 {count}개 다시 확인",
"noSpine": "이번 묶음에 Spine 에셋이 없습니다",
"incompletePending": "불완전한 에셋 {count}개를 이후 가져오기 후 다시 확인합니다",
"incompleteIgnored": "불완전한 에셋 {count}개가 있으며 이번 묶음에서는 처리하지 않습니다",
"itemSummary": " {name} | {path} | {state} | 스켈레톤 {skeleton} | atlas {atlas} | 페이지 {pages}(누락 {missing})",
"autoSkipped": "자동 생성이 꺼져 있어 이번 묶음의 에셋 {count}개를 건너뛰었습니다",
"queued": "{added}개를 큐에 추가했습니다. 현재 대기 {queued}개{state}",
"queuedRunning": "(처리 중)",
"libraryInfoNoPath": "library.info()가 경로를 반환하지 않음: {info}",
"libraryInfoFailed": "library.info() 호출 실패: {error}",
"switchingLibrary": "라이브러리 전환: {path}",
"noCreateEvent": "생성 이벤트를 받지 못해 직접 시작합니다",
"watching": "{path} 감시 중(기존 항목 {count}개는 기록으로 간주하여 처리하지 않음)",
"watchReadFailed": "에셋 디렉터리를 읽지 못함: {error}",
"watchMissingDir": "에셋 디렉터리가 없음: {path}",
"watchFailed": "감시 시작 실패: {error}",
"fixSuffixAction": "{label}의 복합 확장자 수정",
"renderAction": "{label} 렌더링",
"setThumbnailAction": "{label} 썸네일 설정",
"thumbnailDetailsAnimated": "애니메이션 {size}@{fps}fps/q{quality}/{kb}KB(목표 {target}KB)/ {frames}프레임 / 애니메이션 {animation}/{strategy}{limit}",
"thumbnailDetailsStatic": "정지 이미지 {width}×{height}/{kb}KB{fallback}",
"bestSpeed": "최고 속도",
"bestSize": "최소 파일",
"fallbackNote": "({text})",
"fallbackNoAnimation": "스켈레톤에 애니메이션이 없습니다",
"fallbackAnimatedFailed": "애니메이션 생성 실패: {error}",
"limitNote": "(가장 작은 프로필도 목표 크기를 초과합니다. 썸네일 크기를 늘리세요)",
"runSummary": "성공 {generated}, 실패 {failed}, 건너뜀 {skipped}, {seconds}초 소요."
},
"progress": {
"title": "Spine 썸네일",
"generating": "애니메이션 썸네일 생성 중……",
"waiting": "시작 대기 중…",
"confirmPrompt": "이번 작업을 취소할까요?",
"resume": "계속",
"cancel": "취소 확인",
"stop": "중지",
"confirm": "확인",
"generatedConfirm": "썸네일 {done}개를 생성했습니다. 취소할까요?",
"complete": "완료",
"completed": "완료 {done} / {total}({percent}%)"
}
}
@@ -0,0 +1,117 @@
{
"manifest": {
"app": {
"name": "Миниатюры Spine"
}
},
"thumb": {
"title": "Миниатюры Spine",
"noticeIntro": "После импорта ресурсов Spine (.skel / .json + .atlas + текстуры) плагин создаёт предпросмотр скелета для элементов без пользовательской миниатюры.",
"noticeSafety": "Обрабатываются только новые элементы. Существующие элементы не сканируются и не изменяются, пользовательские миниатюры никогда не перезаписываются.",
"noticeModes": "Анимированный режим использует первую анимацию и экспортирует WebP. Статический всегда использует setup pose.",
"noticeDefault": "Автоматическое создание по умолчанию отключено. Включите его ниже при необходимости.",
"autoToggle": "Создавать миниатюры при импорте",
"clear": "Очистить журнал",
"modeLabel": "Режим создания",
"modeAnimated": "Анимированный (первая анимация)",
"modeStatic": "Статический (setup pose)",
"strategyLabel": "Стратегия",
"strategySize": "Минимальный файл (медленно)",
"strategySpeed": "Максимальная скорость (быстро)",
"statusLabel": "Состояние",
"statusStarting": "Запуск…",
"libraryLabel": "Библиотека",
"statsLabel": "Статистика",
"filterAll": "Все",
"filterOk": "Успешно",
"filterFail": "Ошибки",
"filterWarn": "Предупреждения",
"filterError": "Ошибка",
"unknownError": "Неизвестная ошибка",
"scriptError": "Ошибка скрипта: {error}",
"promiseError": "Необработанная ошибка Promise: {error}",
"uncategorized": "Без категории",
"reasonQuiet": "после завершения импорта",
"reasonFallback": "резервное сканирование",
"none": "нет",
"complete": "полный",
"incomplete": "неполный",
"statusLoaded": "Скрипт {version} загружен; ожидание событий Eagle…",
"statusEagleMissing": "API Eagle недоступен",
"statusListening": "Наблюдение",
"statusListenFailed": "Ошибка наблюдения",
"statusAutoOff": "Наблюдение (автосоздание выключено)",
"statusNoLibrary": "Путь к библиотеке недоступен",
"statusPairing": "Сопоставление новых ресурсов…",
"statusPairingProgress": "Сопоставление {current}/{total}",
"statusRendering": "Рендеринг кадра {current}/{total} (в очереди {queued})",
"statusGenerating": "Создание миниатюр… осталось {queued}",
"statusPaused": "Пауза (продолжите или отмените в окне прогресса)",
"statusAutoSkipped": "Автосоздание выключено; этот пакет пропущен",
"statusStartFailed": "Ошибка запуска: {error}",
"stats": "Пакеты {batches} · Добавлено {added} · Spine {spine} · Полные {complete} · Создано {generated} · Пропущено {skipped} · Ошибок {failed}",
"modulesMissing": "Локальные модули не загружены: {modules}",
"moduleLoadError": "Локальные модули не загружены. Проверьте порядок скриптов в index.html: {modules}",
"version": "Версия кода плагина {version}",
"pluginCreated": "Плагин создан: {name}",
"settingsReadFailed": "Не удалось прочитать настройки; используются значения по умолчанию (автосоздание выключено): {error}",
"settingsSaveFailed": "Не удалось сохранить настройки: {error}",
"autoEnabled": "Автосоздание включено. Для новых импортированных ресурсов Spine будут созданы миниатюры.",
"autoDisabled": "Автосоздание выключено; очередь ожидания очищена.",
"modeStaticLog": "Режим создания: статический (всегда setup pose, PNG)",
"modeAnimatedLog": "Режим создания: анимированный (первая анимация в WebP; setup pose без анимации)",
"strategySpeedLog": "Стратегия: максимальная скорость (примерный выбор, только один-два наименьших профиля)",
"strategySizeLog": "Стратегия: минимальный файл (все десять профилей и выбор наименьшего)",
"missingItem": "{label} пропущен: элемент не найден в Eagle",
"suffixFixed": "Составное расширение исправлено для {label} → {name}",
"suffixFailed": "Не удалось исправить составное расширение {label}: {error}",
"existingThumbnail": "{label} пропущен: уже есть пользовательская миниатюра",
"thumbnailRejected": "Eagle отклонил эту миниатюру",
"generated": "{label} создан | {details} | Spine {version}",
"generateFailed": "Ошибка создания {label}: {error}",
"cancelled": "Создание отменено: отброшено ожидающих {dropped}. Завершено {done} (успешно {generated}, ошибок {failed}, пропущено {skipped})",
"batchFailed": "Ошибка обработки пакета импорта: {error}",
"batchFinished": "Пакет завершён: добавлено {added}, в библиотеке {total} ({reason})",
"recheck": "Повторная проверка ранее неполных ресурсов: {count}",
"noSpine": "В этом пакете нет ресурсов Spine",
"incompletePending": "Неполных ресурсов: {count}; они будут проверены после следующих импортов",
"incompleteIgnored": "Неполных ресурсов: {count}; в этом пакете они не обрабатываются",
"itemSummary": " {name} | {path} | {state} | скелет {skeleton} | atlas {atlas} | страниц {pages} (не хватает {missing})",
"autoSkipped": "Автосоздание выключено; пропущено ресурсов в пакете: {count}",
"queued": "Добавлено в очередь: {added}; ожидают {queued}{state}",
"queuedRunning": " (обработка)",
"libraryInfoNoPath": "library.info() не вернул путь: {info}",
"libraryInfoFailed": "Ошибка вызова library.info(): {error}",
"switchingLibrary": "Переключение библиотеки: {path}",
"noCreateEvent": "Событие создания не получено; выполняется прямой запуск",
"watching": "Наблюдение за {path} (существующие элементы {count} считаются историей)",
"watchReadFailed": "Не удалось прочитать каталог ресурсов: {error}",
"watchMissingDir": "Каталог ресурсов не существует: {path}",
"watchFailed": "Не удалось начать наблюдение: {error}",
"fixSuffixAction": "Исправление составного расширения {label}",
"renderAction": "Рендеринг {label}",
"setThumbnailAction": "Установка миниатюры {label}",
"thumbnailDetailsAnimated": "Анимация {size}@{fps}fps/q{quality}/{kb}KB (цель {target}KB)/{frames} кадров/анимация {animation}/{strategy}{limit}",
"thumbnailDetailsStatic": "Статическая {width}×{height}/{kb}KB{fallback}",
"bestSpeed": "максимальная скорость",
"bestSize": "минимальный файл",
"fallbackNote": " ({text})",
"fallbackNoAnimation": "в скелете нет анимаций",
"fallbackAnimatedFailed": "ошибка анимированного создания: {error}",
"limitNote": " (даже минимальный профиль превышает целевой размер; увеличьте размер миниатюры)",
"runSummary": "Успешно {generated}, ошибок {failed}, пропущено {skipped}, время {seconds} с."
},
"progress": {
"title": "Миниатюры Spine",
"generating": "Создание анимированных миниатюр…",
"waiting": "Ожидание запуска…",
"confirmPrompt": "Отменить этот запуск?",
"resume": "Продолжить",
"cancel": "Подтвердить отмену",
"stop": "Остановить",
"confirm": "Готово",
"generatedConfirm": "Создано миниатюр: {done}. Отменить запуск?",
"complete": "Завершено",
"completed": "Завершено {done} / {total} ({percent}%)"
}
}
@@ -0,0 +1,117 @@
{
"manifest": {
"app": {
"name": "Spine缩略图"
}
},
"thumb": {
"title": "Spine缩略图",
"noticeIntro": "导入 Spine 资产(.skel / .json + .atlas + 贴图)后,本插件会为还没设置缩略图的素材生成一张骨骼预览图。",
"noticeSafety": "它只处理本次新导入的素材,不扫描、不修改历史素材,也不会覆盖你已经设置过的自定义缩略图。",
"noticeModes": "动态取骨骼里的第一个动画压成 WebP;静帧始终使用 setup pose。",
"noticeDefault": "自动生成默认关闭,需要你在下面手动启用。",
"autoToggle": "导入时自动生成缩略图",
"clear": "清空日志",
"modeLabel": "生成方式",
"modeAnimated": "动态(第一个动画)",
"modeStatic": "静帧(setup pose)",
"strategyLabel": "生成策略",
"strategySize": "最优体积(慢)",
"strategySpeed": "最优速度(快)",
"statusLabel": "状态",
"statusStarting": "启动中…",
"libraryLabel": "素材库",
"statsLabel": "统计",
"filterAll": "全部",
"filterOk": "成功",
"filterFail": "失败",
"filterWarn": "警告",
"filterError": "错误",
"unknownError": "未知错误",
"scriptError": "脚本错误:{error}",
"promiseError": "未处理的 Promise 错误:{error}",
"uncategorized": "未分类",
"reasonQuiet": "静默",
"reasonFallback": "兜底扫描",
"none": "无",
"complete": "完整",
"incomplete": "不完整",
"statusLoaded": "脚本已加载 {version},等待 Eagle 事件…",
"statusEagleMissing": "Eagle API 未注入",
"statusListening": "监听中",
"statusListenFailed": "监听失败",
"statusAutoOff": "监听中(自动生成已关闭)",
"statusNoLibrary": "没有拿到素材库路径",
"statusPairing": "正在配对新增素材…",
"statusPairingProgress": "正在配对 {current}/{total}",
"statusRendering": "正在渲染动画帧 {current}/{total}(排队 {queued} 个)",
"statusGenerating": "正在生成缩略图…剩余 {queued} 个",
"statusPaused": "已暂停(在进度弹窗里继续或取消)",
"statusAutoSkipped": "自动生成未启用,本批已跳过",
"statusStartFailed": "启动失败:{error}",
"stats": "批次 {batches} · 新增 {added} · Spine {spine} · 完整 {complete} · 已生成 {generated} · 跳过 {skipped} · 失败 {failed}",
"modulesMissing": "本地模块未加载:{modules}",
"moduleLoadError": "本地模块未加载,请检查 index.html 里 script 的顺序:{modules}",
"version": "插件代码版本 {version}",
"pluginCreated": "插件已创建:{name}",
"settingsReadFailed": "读取设置失败,按默认值处理(关闭):{error}",
"settingsSaveFailed": "保存设置失败:{error}",
"autoEnabled": "自动生成已启用。之后导入的 Spine 资产会自动生成缩略图。",
"autoDisabled": "自动生成已关闭,待处理队列已清空。",
"modeStaticLog": "生成方式:静帧(始终 setup pose,PNG)",
"modeAnimatedLog": "生成方式:动态(取第一个动画压成 WebP,没有动画时回退 setup pose)",
"strategySpeedLog": "生成策略:最优速度(粗估挑档,只生成最小的一两档)",
"strategySizeLog": "生成策略:最优体积(十档全生成,取实际体积最小的那一档)",
"missingItem": "跳过 {label}:Eagle 里找不到这个素材",
"suffixFixed": "修正复合后缀 {label} → {name}",
"suffixFailed": "修正复合后缀失败 {label}:{error}",
"existingThumbnail": "跳过 {label}:已有自定义缩略图",
"thumbnailRejected": "Eagle 拒绝了这个缩略图",
"generated": "已生成 {label} | {details} | Spine {version}",
"generateFailed": "生成失败 {label}:{error}",
"cancelled": "已取消本轮生成:丢弃剩余 {dropped} 个素材,已完成 {done} 张(成功 {generated} 张,失败 {failed} 张,跳过 {skipped} 张)",
"batchFailed": "处理批次失败:{error}",
"batchFinished": "这批结束:新增 {added} 个,库内共 {total} 个({reason})",
"recheck": "连带重新检查之前 {count} 个配套不全的资产",
"noSpine": "这批里没有 Spine 资产",
"incompletePending": "有 {count} 个资产配套不全,先记为待观察,等后续批次补齐",
"incompleteIgnored": "有 {count} 个资产配套不全,本批不处理",
"itemSummary": " {name} | {path} | {state} | 骨架 {skeleton} | atlas {atlas} | 贴图页 {pages}(缺 {missing})",
"autoSkipped": "自动生成已关闭,本批 {count} 个资产已跳过",
"queued": "已加入队列 {added} 个,当前排队 {queued} 个{state}",
"queuedRunning": "(正在处理中)",
"libraryInfoNoPath": "library.info() 没有返回路径字段:{info}",
"libraryInfoFailed": "library.info() 调用失败:{error}",
"switchingLibrary": "切换素材库:{path}",
"noCreateEvent": "没有收到创建事件,直接尝试启动",
"watching": "监听 {path}(现有 {count} 个素材视为历史,不处理)",
"watchReadFailed": "读取素材目录失败:{error}",
"watchMissingDir": "素材目录不存在:{path}",
"watchFailed": "建立监听失败:{error}",
"fixSuffixAction": "修正复合后缀 {label}",
"renderAction": "渲染 {label}",
"setThumbnailAction": "设置缩略图 {label}",
"thumbnailDetailsAnimated": "动态 {size}@{fps}fps/q{quality}/{kb}kb(目标 {target}kb)/{frames} 帧/动画 {animation}/{strategy}{limit}",
"thumbnailDetailsStatic": "静帧 {width}*{height}/{kb}kb{fallback}",
"bestSpeed": "最优速度",
"bestSize": "最优体积",
"fallbackNote": "({text})",
"fallbackNoAnimation": "骨骼里没有动画",
"fallbackAnimatedFailed": "动态生成失败:{error}",
"limitNote": "(最小档仍超出目标体积,可以考虑提高缩略图大小)",
"runSummary": "成功 {generated} 张,失败 {failed} 张,跳过 {skipped} 张,用时 {seconds} 秒。"
},
"progress": {
"title": "Spine缩略图",
"generating": "正在生成动态缩略图……",
"waiting": "等待开始…",
"confirmPrompt": "是否确认取消?",
"resume": "继续",
"cancel": "确认取消",
"stop": "停止",
"confirm": "确认",
"generatedConfirm": "已生成 {done} 张缩略图,是否确认取消?",
"complete": "已完成",
"completed": "已完成 {done} / {total}({percent}%)"
}
}
@@ -0,0 +1,117 @@
{
"manifest": {
"app": {
"name": "Spine縮圖"
}
},
"thumb": {
"title": "Spine縮圖",
"noticeIntro": "匯入 Spine 資產(.skel / .json + .atlas + 貼圖)後,此外掛會為尚未設定縮圖的素材產生骨骼預覽圖。",
"noticeSafety": "只處理本次新匯入的素材,不掃描或修改歷史素材,也不會覆寫你已設定的自訂縮圖。",
"noticeModes": "動態會取第一個動畫並壓成 WebP;靜態一律使用 setup pose。",
"noticeDefault": "自動產生預設為關閉,需要時請在下方手動啟用。",
"autoToggle": "匯入時自動產生縮圖",
"clear": "清除記錄",
"modeLabel": "產生方式",
"modeAnimated": "動態(第一個動畫)",
"modeStatic": "靜態(setup pose)",
"strategyLabel": "產生策略",
"strategySize": "最小檔案(慢)",
"strategySpeed": "最快速度(快速)",
"statusLabel": "狀態",
"statusStarting": "啟動中…",
"libraryLabel": "素材庫",
"statsLabel": "統計",
"filterAll": "全部",
"filterOk": "成功",
"filterFail": "失敗",
"filterWarn": "警告",
"filterError": "錯誤",
"unknownError": "未知錯誤",
"scriptError": "指令碼錯誤:{error}",
"promiseError": "未處理的 Promise 錯誤:{error}",
"uncategorized": "未分類",
"reasonQuiet": "靜默",
"reasonFallback": "備援掃描",
"none": "無",
"complete": "完整",
"incomplete": "不完整",
"statusLoaded": "指令碼已載入 {version},等待 Eagle 事件…",
"statusEagleMissing": "未注入 Eagle API",
"statusListening": "監聽中",
"statusListenFailed": "監聽失敗",
"statusAutoOff": "監聽中(自動產生已關閉)",
"statusNoLibrary": "無法取得素材庫路徑",
"statusPairing": "正在配對新增素材…",
"statusPairingProgress": "正在配對 {current}/{total}",
"statusRendering": "正在算繪動畫影格 {current}/{total}(佇列 {queued} 個)",
"statusGenerating": "正在產生縮圖…剩餘 {queued} 個",
"statusPaused": "已暫停(請在進度視窗繼續或取消)",
"statusAutoSkipped": "未啟用自動產生,已略過本批素材",
"statusStartFailed": "啟動失敗:{error}",
"stats": "批次 {batches} · 新增 {added} · Spine {spine} · 完整 {complete} · 已產生 {generated} · 略過 {skipped} · 失敗 {failed}",
"modulesMissing": "本機模組未載入:{modules}",
"moduleLoadError": "本機模組未載入,請檢查 index.html 的 script 順序:{modules}",
"version": "外掛程式碼版本 {version}",
"pluginCreated": "已建立外掛:{name}",
"settingsReadFailed": "讀取設定失敗,改用預設值(關閉):{error}",
"settingsSaveFailed": "儲存設定失敗:{error}",
"autoEnabled": "已啟用自動產生。之後匯入的 Spine 資產會自動產生縮圖。",
"autoDisabled": "已關閉自動產生,待處理佇列已清除。",
"modeStaticLog": "產生方式:靜態(一律 setup pose,PNG)",
"modeAnimatedLog": "產生方式:動態(第一個動畫轉為 WebP,沒有動畫時使用 setup pose)",
"strategySpeedLog": "產生策略:最快速度(粗估後只產生最小的一到兩檔)",
"strategySizeLog": "產生策略:最小檔案(產生全部十檔並保留最小結果)",
"missingItem": "略過 {label}:Eagle 中找不到這個素材",
"suffixFixed": "已修正複合副檔名 {label} → {name}",
"suffixFailed": "修正複合副檔名失敗 {label}:{error}",
"existingThumbnail": "略過 {label}:已有自訂縮圖",
"thumbnailRejected": "Eagle 拒絕了這個縮圖",
"generated": "已產生 {label} | {details} | Spine {version}",
"generateFailed": "產生失敗 {label}:{error}",
"cancelled": "已取消本輪產生:丟棄剩餘 {dropped} 個素材,已完成 {done} 張(成功 {generated} 張,失敗 {failed} 張,略過 {skipped} 張)",
"batchFailed": "處理批次失敗:{error}",
"batchFinished": "本批結束:新增 {added} 個,素材庫共 {total} 個({reason})",
"recheck": "重新檢查先前 {count} 個不完整的資產",
"noSpine": "本批沒有 Spine 資產",
"incompletePending": "有 {count} 個資產不完整,將在後續批次重新檢查",
"incompleteIgnored": "有 {count} 個資產不完整,本批未處理",
"itemSummary": " {name} | {path} | {state} | 骨架 {skeleton} | atlas {atlas} | 貼圖頁 {pages}(缺少 {missing})",
"autoSkipped": "自動產生已關閉,本批已略過 {count} 個資產",
"queued": "已加入佇列 {added} 個,目前等待 {queued} 個{state}",
"queuedRunning": "(處理中)",
"libraryInfoNoPath": "library.info() 未傳回路徑:{info}",
"libraryInfoFailed": "library.info() 呼叫失敗:{error}",
"switchingLibrary": "切換素材庫:{path}",
"noCreateEvent": "未收到建立事件,直接嘗試啟動",
"watching": "監聽 {path}(現有 {count} 個素材視為歷史資料,不處理)",
"watchReadFailed": "讀取素材目錄失敗:{error}",
"watchMissingDir": "素材目錄不存在:{path}",
"watchFailed": "建立監聽失敗:{error}",
"fixSuffixAction": "修正複合副檔名 {label}",
"renderAction": "算繪 {label}",
"setThumbnailAction": "設定縮圖 {label}",
"thumbnailDetailsAnimated": "動態 {size}@{fps}fps/q{quality}/{kb}KB(目標 {target}KB)/ {frames} 幀 / 動畫 {animation}/{strategy}{limit}",
"thumbnailDetailsStatic": "靜態 {width}×{height}/{kb}KB{fallback}",
"bestSpeed": "最快速度",
"bestSize": "最小檔案",
"fallbackNote": "({text})",
"fallbackNoAnimation": "骨骼沒有動畫",
"fallbackAnimatedFailed": "動態產生失敗:{error}",
"limitNote": "(最小檔仍超過目標大小,可考慮提高縮圖尺寸)",
"runSummary": "成功 {generated} 張,失敗 {failed} 張,略過 {skipped} 張,耗時 {seconds} 秒。"
},
"progress": {
"title": "Spine縮圖",
"generating": "正在產生動態縮圖……",
"waiting": "等待開始…",
"confirmPrompt": "確定要取消嗎?",
"resume": "繼續",
"cancel": "確認取消",
"stop": "停止",
"confirm": "確認",
"generatedConfirm": "已產生 {done} 張縮圖,確定要取消嗎?",
"complete": "已完成",
"completed": "已完成 {done} / {total}({percent}%)"
}
}