@hoardodile/i18n 0.1.4 → 0.1.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hoardodile/i18n",
3
- "version": "0.1.4",
3
+ "version": "0.1.6",
4
4
  "license": "MIT",
5
5
  "description": "Shared i18n catalogs and helpers for the hoardodile host surfaces and plugin SDK.",
6
6
  "keywords": [
@@ -46,6 +46,11 @@
46
46
  "development": "./src/catalogs/ui.ts",
47
47
  "default": "./dist/catalogs/ui.js"
48
48
  },
49
+ "./catalogs/shell": {
50
+ "types": "./dist/catalogs/shell.d.ts",
51
+ "development": "./src/catalogs/shell.ts",
52
+ "default": "./dist/catalogs/shell.js"
53
+ },
49
54
  "./workbench": {
50
55
  "types": "./dist/catalogs/workbench.d.ts",
51
56
  "development": "./src/catalogs/workbench.ts",
@@ -132,6 +132,7 @@
132
132
  "marketplace": "Marktplatz",
133
133
  "marketplaceUpdatesBadge": "Plugin-Updates verfügbar",
134
134
  "feedbackAbout": "Feedback & Über",
135
+ "updateAvailableBadge": "Update verfügbar",
135
136
  "help": "Hilfe"
136
137
  },
137
138
  "syncDueBadge": "Eine Sync-Erinnerung ist fällig",
@@ -317,13 +318,16 @@
317
318
  "latest": "Du verwendest die neueste Version.",
318
319
  "outdated": "Version {{version}} ist verfügbar.",
319
320
  "viewRelease": "Release ansehen",
321
+ "updateAvailable": "Eine neue Version {{version}} ist verfügbar.",
320
322
  "updateError": "Die Update-Prüfung ist fehlgeschlagen. Bitte versuche es später erneut.",
321
323
  "downloading": "Herunterladen… {{percent}}%",
322
- "updateReady": "Version {{version}} ist zum Installieren bereit.",
323
- "updateReadyResources": "Ressourcen v{{version}} sind zum Anwenden bereit.",
324
+ "updateReady": "Version {{version}} ist bereit.",
325
+ "updateReadyResources": "Version {{version}} ist bereit.",
326
+ "updateFullReason": "Erneut öffnen, um die Aktualisierung abzuschließen.",
327
+ "updateResourcesReason": "Diese Aktualisierung läuft von selbst — du kannst die App weiter verwenden.",
324
328
  "applyResources": "Anwenden",
325
329
  "resourcesVersion": "Ressourcen v{{version}}",
326
- "restartToUpdate": "Neu starten",
330
+ "restartToUpdate": "App erneut öffnen",
327
331
  "portableHint": "Portable Versionen werden aktualisiert, indem du ein neues ZIP von GitHub herunterlädst."
328
332
  },
329
333
  "connections": {
@@ -410,7 +414,7 @@
410
414
  },
411
415
  "autoUpdate": {
412
416
  "title": "Automatische Updates",
413
- "description": "GitHub-Releases im Hintergrund herunterladen. Ein Neustart wird immer bestätigt."
417
+ "description": "GitHub-Releases im Hintergrund herunterladen. Vor dem erneuten Öffnen der App wirst du gefragt."
414
418
  },
415
419
  "closeAction": {
416
420
  "title": "Beim Schließen des Fensters",
@@ -419,9 +423,9 @@
419
423
  "tray": "Im Infobereich ausblenden",
420
424
  "quit": "App beenden"
421
425
  },
422
- "updateBanner": "Version {{version}} ist zum Installieren bereit.",
423
- "updateBannerResources": "Ressourcen v{{version}} sind zum Anwenden bereit.",
424
- "updateBannerRestart": "Neu starten",
426
+ "updateBanner": "Version {{version}} ist bereit.",
427
+ "updateBannerResources": "Version {{version}} ist bereit.",
428
+ "updateBannerRestart": "App erneut öffnen",
425
429
  "updateBannerApply": "Anwenden",
426
430
  "updateApplying": "Ressourcen-Update wird angewendet…",
427
431
  "updatePhaseStopping": "Lokaler Server wird beendet…",
@@ -550,6 +554,25 @@
550
554
  "uninstallConfirmDescription_other": "{{count}} Ressourcen verwenden dieses Plugin. Nach der Deinstallation werden sie mit dem integrierten Datei-Plugin vorgeschaut; die erneute Installation stellt sie automatisch wieder her. Dies kann nicht rückgängig gemacht werden.",
551
555
  "uninstallConfirmNoUsage": "Keine Ressource verwendet dieses Plugin. Installiere es jederzeit neu, um es wieder zu nutzen. Dies kann nicht rückgängig gemacht werden.",
552
556
  "uninstallSuccess": "{{name}} deinstalliert",
557
+ "replaceContentAction": "Inhalte ersetzen…",
558
+ "replaceContentTitle": "Inhalts-Plugin ersetzen",
559
+ "replaceContentDescription": "Alle Ressourcen, die ein Inhalts-Plugin verarbeitet, zu einem anderen verschieben. Das Inhalts-Plugin jeder Ressource wird neu zugewiesen und die abgeleiteten Metadaten werden zur erneuten Erkennung gelöscht.",
560
+ "replaceContentFrom": "Quell-Plugin",
561
+ "replaceContentTo": "Ziel-Plugin",
562
+ "replaceContentToPlaceholder": "Ein Ziel-Plugin wählen",
563
+ "replaceContentRebuild": "Neu aufbauen",
564
+ "replaceContentRebuildImmediate": "Jetzt neu aufbauen (Hintergrund)",
565
+ "replaceContentRebuildImmediateDescription": "Startet den Metadaten-Neuaufbau für alle betroffenen Ressourcen sofort im Hintergrund.",
566
+ "replaceContentRebuildDefer": "Bei nächster Ansicht neu aufbauen",
567
+ "replaceContentRebuildDeferDescription": "Metadaten jetzt löschen; jede Ressource baut beim nächsten Öffnen neu auf.",
568
+ "replaceContentConfirm": "Ersetzen",
569
+ "replaceContentPassed": "Ersetzt",
570
+ "replaceContentFailed": "Nicht erkannt",
571
+ "replaceContentNoContent": "Dieses Inhalts-Plugin besitzt keine Ressourcen.",
572
+ "replaceContentSamePlugin": "Quell- und Ziel-Plugin müssen sich unterscheiden.",
573
+ "replaceContentInvalidTarget": "Das Ziel-Inhalts-Plugin ist nicht verfügbar.",
574
+ "replaceContentEmptyFrom": "Kein Inhalts-Plugin besitzt zu ersetzende Ressourcen.",
575
+ "replaceContentMissingLabel": "fehlt",
553
576
  "resetAllPluginPrefSuccess": "Alle Plugin-Einstellungen wurden zurückgesetzt",
554
577
  "resetAllPluginPrefConfirmTitle": "Alle Plugin-Einstellungen zurücksetzen?",
555
578
  "resetAllPluginPrefConfirmDescription": "Dies löscht die gespeicherten Einstellungen jedes Plugins. Nach dem Neustart verwenden alle Plugins ihre Standardwerte. Dies kann nicht rückgängig gemacht werden.",
@@ -608,18 +631,18 @@
608
631
  "pluginId": "Plugin-ID",
609
632
  "repository": "Repository",
610
633
  "latestRelease": "Neueste Version",
611
- "manifestVersion": "Manifest-Version",
612
634
  "packageAsset": "Paket",
613
635
  "checksum": "SHA-256",
614
636
  "notInstalled": "Nicht installiert",
615
637
  "reportIssue": "Problem melden",
616
638
  "reportSecurity": "Sicherheitslücke melden",
617
639
  "requestFeature": "Feature anfragen",
618
- "intro": "Einführung",
640
+ "readme": "README",
619
641
  "languages": "Sprachen",
620
- "noIntro": "Diese Version enthält keine Einführung",
642
+ "noReadme": "Diese Version enthält keine README",
621
643
  "noReleaseNotes": "Diese Version enthält keine Versionshinweise",
622
644
  "errorRateLimitedShort": "Neueste Versionsinfos nicht verfügbar — wird automatisch erneut versucht.",
645
+ "updateUnavailableRateLimited": "v{{version}} wurde veröffentlicht, aber das Update ist derzeit nicht verfügbar (GitHub-Limit).",
623
646
  "configureRegistry": "Registry konfigurieren",
624
647
  "pageHint": "Plugins werden als GitHub-Releases veröffentlicht und über ein eigenes Registry-Repository gefunden. Konfiguriere das Registry oben — der Katalog liest Namen, Versionen, Berechtigungen und Versionshinweise direkt aus jedem Repository und seinen Releases.",
625
648
  "registryDialogTitle": "Plugin-Marktplatz-Registry",
@@ -628,6 +651,8 @@
628
651
  "filterInstalled": "Installiert",
629
652
  "filterUpdates": "Updates",
630
653
  "emptyFilterHint": "Keine Plugins entsprechen diesem Filter.",
654
+ "searchPlaceholder": "Plugins durchsuchen",
655
+ "searchEmpty": "Keine Plugins entsprechen deiner Suche.",
631
656
  "requiresAppVersion": "Benötigt hoardodile ≥ v{{version}}",
632
657
  "incompatibleAppVersion": "Dieses Plugin benötigt hoardodile ≥ v{{require}}; diese Installation läuft mit v{{current}}",
633
658
  "registryActive": "Aktuelles Registry: {{url}}"
@@ -2252,8 +2277,8 @@
2252
2277
  "changeLibrary": "Bibliothek wechseln…",
2253
2278
  "copyLanAddress": "LAN-Adresse kopieren",
2254
2279
  "restartServer": "Server neu starten",
2255
- "updateReady": "Update bereit — Öffnen zum Neustart",
2256
- "updateReadyResources": "Ressourcen-Update bereit — Öffnen zum Anwenden",
2280
+ "updateReady": "Update bereit — App erneut öffnen",
2281
+ "updateReadyResources": "Update bereit — Öffnen zum Anwenden",
2257
2282
  "quit": "Beenden",
2258
2283
  "tooltipServerStopped": "hoardodile — Server gestoppt",
2259
2284
  "tooltipUpdateReady": "hoardodile — Update bereit",
@@ -2286,7 +2311,7 @@
2286
2311
  "startInTray": "Im Infobereich starten",
2287
2312
  "startInTrayHint": "Kein Fenster, bis du im Infobereich „Öffnen“ wählst.",
2288
2313
  "continue": "Weiter",
2289
- "missingBridge": "Desktop-Brücke fehlt. Starte die App neu."
2314
+ "missingBridge": "Die App konnte nicht gestartet werden. Öffne die App erneut."
2290
2315
  }
2291
2316
  }
2292
2317
  }
@@ -132,6 +132,7 @@
132
132
  "marketplace": "Marketplace",
133
133
  "marketplaceUpdatesBadge": "Plugin updates available",
134
134
  "feedbackAbout": "Feedback & About",
135
+ "updateAvailableBadge": "Update available",
135
136
  "help": "Help"
136
137
  },
137
138
  "syncDueBadge": "A sync reminder is due",
@@ -317,13 +318,16 @@
317
318
  "latest": "You're on the latest version.",
318
319
  "outdated": "Version {{version}} is available.",
319
320
  "viewRelease": "View release",
321
+ "updateAvailable": "A new version {{version}} is available.",
320
322
  "updateError": "Update check failed. Please try again later.",
321
323
  "downloading": "Downloading… {{percent}}%",
322
- "updateReady": "Version {{version}} is ready to install.",
323
- "updateReadyResources": "Resources v{{version}} are ready to apply.",
324
+ "updateReady": "Version {{version}} is ready.",
325
+ "updateReadyResources": "Version {{version}} is ready.",
326
+ "updateFullReason": "Reopen the app to finish updating.",
327
+ "updateResourcesReason": "This updates automatically — you can keep using the app.",
324
328
  "applyResources": "Apply",
325
329
  "resourcesVersion": "Resources v{{version}}",
326
- "restartToUpdate": "Restart",
330
+ "restartToUpdate": "Reopen the app",
327
331
  "portableHint": "Portable builds update by downloading a new zip from GitHub."
328
332
  },
329
333
  "connections": {
@@ -410,7 +414,7 @@
410
414
  },
411
415
  "autoUpdate": {
412
416
  "title": "Automatic updates",
413
- "description": "Download GitHub releases in the background. Restart is always confirmed."
417
+ "description": "Download GitHub releases in the background. You'll be asked before the app reopens."
414
418
  },
415
419
  "closeAction": {
416
420
  "title": "When closing the window",
@@ -419,9 +423,9 @@
419
423
  "tray": "Hide to tray",
420
424
  "quit": "Quit the app"
421
425
  },
422
- "updateBanner": "Version {{version}} is ready to install.",
423
- "updateBannerResources": "Resources v{{version}} are ready to apply.",
424
- "updateBannerRestart": "Restart",
426
+ "updateBanner": "Version {{version}} is ready.",
427
+ "updateBannerResources": "Version {{version}} is ready.",
428
+ "updateBannerRestart": "Reopen the app",
425
429
  "updateBannerApply": "Apply",
426
430
  "updateApplying": "Applying resources update…",
427
431
  "updatePhaseStopping": "Stopping the local server…",
@@ -550,6 +554,25 @@
550
554
  "uninstallConfirmDescription_other": "{{count}} resources are using this plugin. After uninstalling, they will preview with the built-in file plugin; reinstalling the plugin restores them automatically. This cannot be undone.",
551
555
  "uninstallConfirmNoUsage": "No resources are using this plugin. Reinstall it any time to use it again. This cannot be undone.",
552
556
  "uninstallSuccess": "Uninstalled {{name}}",
557
+ "replaceContentAction": "Replace content…",
558
+ "replaceContentTitle": "Replace content plugin",
559
+ "replaceContentDescription": "Move every resource that one content plugin handles to another. Each resource's content plugin is re-assigned and its derived metadata is cleared for re-detection.",
560
+ "replaceContentFrom": "From plugin",
561
+ "replaceContentTo": "To plugin",
562
+ "replaceContentToPlaceholder": "Choose a target plugin",
563
+ "replaceContentRebuild": "Rebuild",
564
+ "replaceContentRebuildImmediate": "Rebuild now (background)",
565
+ "replaceContentRebuildImmediateDescription": "Start the metadata rebuild for every affected resource in the background immediately.",
566
+ "replaceContentRebuildDefer": "Rebuild when next seen",
567
+ "replaceContentRebuildDeferDescription": "Clear metadata now; each resource rebuilds the next time it is opened.",
568
+ "replaceContentConfirm": "Replace",
569
+ "replaceContentPassed": "Replaced",
570
+ "replaceContentFailed": "Not detected",
571
+ "replaceContentNoContent": "This content plugin owns no resources.",
572
+ "replaceContentSamePlugin": "Source and target plugins must differ.",
573
+ "replaceContentInvalidTarget": "The target content plugin is not available.",
574
+ "replaceContentEmptyFrom": "No content plugin owns any resources to replace.",
575
+ "replaceContentMissingLabel": "missing",
553
576
  "resetAllPluginPrefSuccess": "All plugin settings have been reset",
554
577
  "resetAllPluginPrefConfirmTitle": "Reset all plugin settings?",
555
578
  "resetAllPluginPrefConfirmDescription": "This will delete every plugin's saved settings. All plugins will use their default values after restart. This cannot be undone.",
@@ -608,18 +631,18 @@
608
631
  "pluginId": "Plugin ID",
609
632
  "repository": "Repository",
610
633
  "latestRelease": "Latest release",
611
- "manifestVersion": "Manifest version",
612
634
  "packageAsset": "Asset",
613
635
  "checksum": "SHA-256",
614
636
  "notInstalled": "Not installed",
615
637
  "reportIssue": "Report an issue",
616
638
  "reportSecurity": "Report a security vulnerability",
617
639
  "requestFeature": "Request a feature",
618
- "intro": "Intro",
640
+ "readme": "Readme",
619
641
  "languages": "Languages",
620
- "noIntro": "This release ships no introduction",
642
+ "noReadme": "This release ships no readme",
621
643
  "noReleaseNotes": "This release has no release notes",
622
644
  "errorRateLimitedShort": "Latest release info unavailable — retrying automatically.",
645
+ "updateUnavailableRateLimited": "v{{version}} has been published, but updating is temporarily unavailable (GitHub rate limit)",
623
646
  "configureRegistry": "Configure registry",
624
647
  "pageHint": "Plugins are published as GitHub releases and discovered through a registry repo you own. Configure the registry above — the catalog reads names, versions, permissions and release notes straight from each repo and its releases.",
625
648
  "registryDialogTitle": "Plugin marketplace registry",
@@ -628,6 +651,8 @@
628
651
  "filterInstalled": "Installed",
629
652
  "filterUpdates": "Updates",
630
653
  "emptyFilterHint": "No plugins match this filter.",
654
+ "searchPlaceholder": "Search plugins",
655
+ "searchEmpty": "No plugins match your search.",
631
656
  "requiresAppVersion": "Requires hoardodile ≥ v{{version}}",
632
657
  "incompatibleAppVersion": "This plugin requires hoardodile ≥ v{{require}}; this host runs v{{current}}",
633
658
  "registryActive": "Current registry: {{url}}"
@@ -2252,8 +2277,8 @@
2252
2277
  "changeLibrary": "Change library…",
2253
2278
  "copyLanAddress": "Copy LAN address",
2254
2279
  "restartServer": "Restart server",
2255
- "updateReady": "Update ready — Open to restart",
2256
- "updateReadyResources": "Resources update ready — Open to apply",
2280
+ "updateReady": "Update ready — Reopen the app",
2281
+ "updateReadyResources": "Update ready — Open to apply",
2257
2282
  "quit": "Quit",
2258
2283
  "tooltipServerStopped": "hoardodile — server stopped",
2259
2284
  "tooltipUpdateReady": "hoardodile — update ready",
@@ -2286,7 +2311,7 @@
2286
2311
  "startInTray": "Start in tray",
2287
2312
  "startInTrayHint": "No window until you choose Open from the tray.",
2288
2313
  "continue": "Continue",
2289
- "missingBridge": "Desktop bridge missing. Restart the app."
2314
+ "missingBridge": "The app couldn't start. Reopen the app."
2290
2315
  }
2291
2316
  }
2292
2317
  }
@@ -132,6 +132,7 @@
132
132
  "marketplace": "Mercado",
133
133
  "marketplaceUpdatesBadge": "Hay actualizaciones de plugins",
134
134
  "feedbackAbout": "Comentarios y acerca",
135
+ "updateAvailableBadge": "Actualización disponible",
135
136
  "help": "Ayuda"
136
137
  },
137
138
  "syncDueBadge": "Hay un recordatorio de sincronización pendiente",
@@ -317,13 +318,16 @@
317
318
  "latest": "Ya tienes la versión más reciente.",
318
319
  "outdated": "La versión {{version}} está disponible.",
319
320
  "viewRelease": "Ver la publicación",
321
+ "updateAvailable": "Hay una nueva versión {{version}} disponible.",
320
322
  "updateError": "La comprobación de actualizaciones falló. Inténtalo de nuevo más tarde.",
321
323
  "downloading": "Descargando… {{percent}}%",
322
- "updateReady": "La versión {{version}} está lista para instalar.",
323
- "updateReadyResources": "Los recursos v{{version}} están listos para aplicar.",
324
+ "updateReady": "La versión {{version}} está lista.",
325
+ "updateReadyResources": "La versión {{version}} está lista.",
326
+ "updateFullReason": "Vuelve a abrir la aplicación para completar la actualización.",
327
+ "updateResourcesReason": "Esta actualización se aplica sola: puedes seguir usando la aplicación.",
324
328
  "applyResources": "Aplicar",
325
329
  "resourcesVersion": "Recursos v{{version}}",
326
- "restartToUpdate": "Reiniciar",
330
+ "restartToUpdate": "Volver a abrir la aplicación",
327
331
  "portableHint": "Las versiones portátiles se actualizan descargando un nuevo zip de GitHub."
328
332
  },
329
333
  "connections": {
@@ -410,7 +414,7 @@
410
414
  },
411
415
  "autoUpdate": {
412
416
  "title": "Actualizaciones automáticas",
413
- "description": "Descarga las publicaciones de GitHub en segundo plano. El reinicio siempre se confirma."
417
+ "description": "Descarga las publicaciones de GitHub en segundo plano. Se te preguntará antes de volver a abrir la app."
414
418
  },
415
419
  "closeAction": {
416
420
  "title": "Al cerrar la ventana",
@@ -419,9 +423,9 @@
419
423
  "tray": "Ocultar en la bandeja",
420
424
  "quit": "Salir de la app"
421
425
  },
422
- "updateBanner": "La versión {{version}} está lista para instalar.",
423
- "updateBannerResources": "Los recursos v{{version}} están listos para aplicar.",
424
- "updateBannerRestart": "Reiniciar",
426
+ "updateBanner": "La versión {{version}} está lista.",
427
+ "updateBannerResources": "La versión {{version}} está lista.",
428
+ "updateBannerRestart": "Volver a abrir la aplicación",
425
429
  "updateBannerApply": "Aplicar",
426
430
  "updateApplying": "Aplicando la actualización de recursos…",
427
431
  "updatePhaseStopping": "Deteniendo el servidor local…",
@@ -550,6 +554,25 @@
550
554
  "uninstallConfirmDescription_other": "{{count}} recursos usan este complemento. Tras desinstalarlo, se mostrará la vista previa con el complemento de archivo integrado; al reinstalar el complemento se restauran automáticamente. Esto no se puede deshacer.",
551
555
  "uninstallConfirmNoUsage": "Ningún recurso usa este complemento. Puedes reinstalarlo cuando quieras para usarlo de nuevo. Esto no se puede deshacer.",
552
556
  "uninstallSuccess": "Se desinstaló {{name}}",
557
+ "replaceContentAction": "Reemplazar contenido…",
558
+ "replaceContentTitle": "Reemplazar plugin de contenido",
559
+ "replaceContentDescription": "Mover todos los recursos que gestiona un plugin de contenido a otro. Se reasigna el plugin de contenido de cada recurso y se borran sus metadatos derivados para volver a detectarlos.",
560
+ "replaceContentFrom": "Plugin de origen",
561
+ "replaceContentTo": "Plugin de destino",
562
+ "replaceContentToPlaceholder": "Elige un plugin de destino",
563
+ "replaceContentRebuild": "Reconstruir",
564
+ "replaceContentRebuildImmediate": "Reconstruir ahora (en segundo plano)",
565
+ "replaceContentRebuildImmediateDescription": "Inicia la reconstrucción de metadatos de todos los recursos afectados en segundo plano de inmediato.",
566
+ "replaceContentRebuildDefer": "Reconstruir al verlo",
567
+ "replaceContentRebuildDeferDescription": "Borra los metadatos ahora; cada recurso se reconstruye la próxima vez que se abre.",
568
+ "replaceContentConfirm": "Reemplazar",
569
+ "replaceContentPassed": "Reemplazados",
570
+ "replaceContentFailed": "No detectados",
571
+ "replaceContentNoContent": "Este plugin de contenido no gestiona ningún recurso.",
572
+ "replaceContentSamePlugin": "El plugin de origen y el de destino deben ser distintos.",
573
+ "replaceContentInvalidTarget": "El plugin de contenido de destino no está disponible.",
574
+ "replaceContentEmptyFrom": "Ningún plugin de contenido gestiona recursos que reemplazar.",
575
+ "replaceContentMissingLabel": "faltante",
553
576
  "resetAllPluginPrefSuccess": "Todos los ajustes de los complementos se han restablecido",
554
577
  "resetAllPluginPrefConfirmTitle": "¿Restablecer todos los ajustes de los complementos?",
555
578
  "resetAllPluginPrefConfirmDescription": "Esto eliminará los ajustes guardados de todos los complementos. Todos los complementos usarán sus valores predeterminados tras reiniciar. Esto no se puede deshacer.",
@@ -608,18 +631,18 @@
608
631
  "pluginId": "ID del plugin",
609
632
  "repository": "Repositorio",
610
633
  "latestRelease": "Última versión",
611
- "manifestVersion": "Versión del manifest",
612
634
  "packageAsset": "Paquete",
613
635
  "checksum": "SHA-256",
614
636
  "notInstalled": "No instalado",
615
637
  "reportIssue": "Informar de un problema",
616
638
  "reportSecurity": "Informar de una vulnerabilidad",
617
639
  "requestFeature": "Solicitar una función",
618
- "intro": "Introducción",
640
+ "readme": "README",
619
641
  "languages": "Idiomas",
620
- "noIntro": "Esta versión no incluye una introducción",
642
+ "noReadme": "Esta versión no incluye un README",
621
643
  "noReleaseNotes": "Esta versión no incluye notas",
622
644
  "errorRateLimitedShort": "Información de la última versión no disponible — se reintentará automáticamente.",
645
+ "updateUnavailableRateLimited": "Se ha publicado v{{version}}, pero la actualización no está disponible temporalmente (límite de GitHub).",
623
646
  "configureRegistry": "Configurar registro",
624
647
  "pageHint": "Los plugins se publican como lanzamientos de GitHub y se descubren mediante un repositorio de registro propio. Configura el registro arriba: el catálogo lee nombres, versiones, permisos y notas directamente de cada repositorio y sus lanzamientos.",
625
648
  "registryDialogTitle": "Registro del mercado de plugins",
@@ -628,6 +651,8 @@
628
651
  "filterInstalled": "Instalados",
629
652
  "filterUpdates": "Actualizaciones",
630
653
  "emptyFilterHint": "Ningún plugin coincide con este filtro.",
654
+ "searchPlaceholder": "Buscar complementos",
655
+ "searchEmpty": "Ningún complemento coincide con tu búsqueda.",
631
656
  "requiresAppVersion": "Requiere hoardodile ≥ v{{version}}",
632
657
  "incompatibleAppVersion": "Este plugin requiere hoardodile ≥ v{{require}}; este host usa v{{current}}",
633
658
  "registryActive": "Registro actual: {{url}}"
@@ -2252,8 +2277,8 @@
2252
2277
  "changeLibrary": "Cambiar biblioteca…",
2253
2278
  "copyLanAddress": "Copiar dirección LAN",
2254
2279
  "restartServer": "Reiniciar servidor",
2255
- "updateReady": "Actualización lista — Abrir para reiniciar",
2256
- "updateReadyResources": "Actualización de recursos lista — Abrir para aplicar",
2280
+ "updateReady": "Actualización lista — Volver a abrir la app",
2281
+ "updateReadyResources": "Actualización lista — Abrir para aplicar",
2257
2282
  "quit": "Salir",
2258
2283
  "tooltipServerStopped": "hoardodile — servidor detenido",
2259
2284
  "tooltipUpdateReady": "hoardodile — actualización lista",
@@ -2286,7 +2311,7 @@
2286
2311
  "startInTray": "Iniciar en la bandeja",
2287
2312
  "startInTrayHint": "No se abre ninguna ventana hasta que elijas Abrir desde la bandeja.",
2288
2313
  "continue": "Continuar",
2289
- "missingBridge": "Falta el puente de escritorio. Reinicia la app."
2314
+ "missingBridge": "No se pudo iniciar la app. Vuelve a abrir la app."
2290
2315
  }
2291
2316
  }
2292
2317
  }
@@ -132,6 +132,7 @@
132
132
  "marketplace": "マーケット",
133
133
  "marketplaceUpdatesBadge": "プラグインの更新があります",
134
134
  "feedbackAbout": "フィードバックと情報",
135
+ "updateAvailableBadge": "利用可能な更新があります",
135
136
  "help": "ヘルプ"
136
137
  },
137
138
  "syncDueBadge": "同期リマインダー期限が来ています",
@@ -317,13 +318,16 @@
317
318
  "latest": "最新バージョンです。",
318
319
  "outdated": "バージョン {{version}} が利用可能です。",
319
320
  "viewRelease": "リリースを表示",
321
+ "updateAvailable": "新しいバージョン {{version}} が利用可能です。",
320
322
  "updateError": "更新の確認に失敗しました。後でもう一度お試しください。",
321
323
  "downloading": "ダウンロード中… {{percent}}%",
322
- "updateReady": "バージョン {{version}} のインストール準備が完了しました。",
323
- "updateReadyResources": "リソース v{{version}} の適用準備が完了しました。",
324
+ "updateReady": "バージョン {{version}} の準備が完了しました。",
325
+ "updateReadyResources": "バージョン {{version}} の準備が完了しました。",
326
+ "updateFullReason": "アプリを閉じて開き直して更新を完了してください。",
327
+ "updateResourcesReason": "この更新は自動で完了します。アプリはそのまま使用できます。",
324
328
  "applyResources": "適用する",
325
329
  "resourcesVersion": "リソース v{{version}}",
326
- "restartToUpdate": "再起動",
330
+ "restartToUpdate": "アプリを開き直す",
327
331
  "portableHint": "ポータブル版は GitHub から新しい zip をダウンロードして更新します。"
328
332
  },
329
333
  "connections": {
@@ -410,7 +414,7 @@
410
414
  },
411
415
  "autoUpdate": {
412
416
  "title": "自動更新",
413
- "description": "GitHub リリースをバックグラウンドでダウンロードします。再起動は常に確認されます。"
417
+ "description": "GitHub リリースをバックグラウンドでダウンロードします。アプリを開き直す前に確認されます。"
414
418
  },
415
419
  "closeAction": {
416
420
  "title": "ウィンドウを閉じるとき",
@@ -419,9 +423,9 @@
419
423
  "tray": "トレイに隠す",
420
424
  "quit": "アプリを終了"
421
425
  },
422
- "updateBanner": "バージョン {{version}} のインストール準備が完了しました。",
423
- "updateBannerResources": "リソース v{{version}} の適用準備が完了しました。",
424
- "updateBannerRestart": "再起動",
426
+ "updateBanner": "バージョン {{version}} の準備が完了しました。",
427
+ "updateBannerResources": "バージョン {{version}} の準備が完了しました。",
428
+ "updateBannerRestart": "アプリを開き直す",
425
429
  "updateBannerApply": "適用する",
426
430
  "updateApplying": "リソース更新を適用しています…",
427
431
  "updatePhaseStopping": "ローカルサーバーを停止しています…",
@@ -550,6 +554,25 @@
550
554
  "uninstallConfirmDescription_other": "このプラグインを使用しているリソースが {{count}}件あります。アンインストール後は内蔵のファイルプラグインでプレビューされ、プラグインを再インストールすると自動的に復元されます。これは元に戻せません。",
551
555
  "uninstallConfirmNoUsage": "このプラグインを使用しているリソースはありません。いつでも再インストールして再度使用できます。これは元に戻せません。",
552
556
  "uninstallSuccess": "{{name}} をアンインストールしました",
557
+ "replaceContentAction": "コンテンツを置き換える…",
558
+ "replaceContentTitle": "コンテンツプラグインを置き換える",
559
+ "replaceContentDescription": "あるコンテンツプラグインが扱うすべてのリソースを別のプラグインへ移します。各リソースのコンテンツプラグインを再割り当てし、再検出のため派生メタデータをクリアします。",
560
+ "replaceContentFrom": "元のプラグイン",
561
+ "replaceContentTo": "対象プラグイン",
562
+ "replaceContentToPlaceholder": "対象プラグインを選択",
563
+ "replaceContentRebuild": "再構築",
564
+ "replaceContentRebuildImmediate": "今すぐ再構築(バックグラウンド)",
565
+ "replaceContentRebuildImmediateDescription": "影響を受けるすべてのリソースのメタデータ再構築をすぐバックグラウンドで開始します。",
566
+ "replaceContentRebuildDefer": "次に表示したときに再構築",
567
+ "replaceContentRebuildDeferDescription": "今はメタデータをクリアし、各リソースは次回開いたときに再構築します。",
568
+ "replaceContentConfirm": "置き換える",
569
+ "replaceContentPassed": "置き換え",
570
+ "replaceContentFailed": "認識できず",
571
+ "replaceContentNoContent": "このコンテンツプラグインが持つリソースはありません。",
572
+ "replaceContentSamePlugin": "元と対象のプラグインは異なる必要があります。",
573
+ "replaceContentInvalidTarget": "対象のコンテンツプラグインは利用できません。",
574
+ "replaceContentEmptyFrom": "置き換えるリソースを持つコンテンツプラグインがありません。",
575
+ "replaceContentMissingLabel": "欠落",
553
576
  "resetAllPluginPrefSuccess": "すべてのプラグイン設定をリセットしました",
554
577
  "resetAllPluginPrefConfirmTitle": "すべてのプラグイン設定をリセットしますか?",
555
578
  "resetAllPluginPrefConfirmDescription": "すべてのプラグインの保存済み設定を削除します。再起動後、すべてのプラグインは既定値を使用します。これは元に戻せません。",
@@ -608,18 +631,18 @@
608
631
  "pluginId": "プラグイン ID",
609
632
  "repository": "リポジトリ",
610
633
  "latestRelease": "最新リリース",
611
- "manifestVersion": "マニフェスト版",
612
634
  "packageAsset": "パッケージ",
613
635
  "checksum": "SHA-256",
614
636
  "notInstalled": "未インストール",
615
637
  "reportIssue": "問題を報告",
616
638
  "reportSecurity": "脆弱性を報告",
617
639
  "requestFeature": "機能リクエスト",
618
- "intro": "紹介",
640
+ "readme": "説明",
619
641
  "languages": "言語",
620
- "noIntro": "このリリースには紹介がありません",
642
+ "noReadme": "このリリースには説明がありません",
621
643
  "noReleaseNotes": "このリリースにはノートがありません",
622
644
  "errorRateLimitedShort": "最新リリース情報を取得できません — 自動的に再試行します。",
645
+ "updateUnavailableRateLimited": "v{{version}} が公開されましたが、GitHub のレート制限のため現在は更新できません。",
623
646
  "configureRegistry": "レジストリを構成",
624
647
  "pageHint": "プラグインは GitHub リリースとして公開され、自分のレジストリリポジトリ経由で見つかります。上のレジストリを構成してください。カタログは名前・バージョン・権限・リリースノートを各リポジトリとリリースから直接読み取ります。",
625
648
  "registryDialogTitle": "プラグインマーケットのレジストリ",
@@ -628,6 +651,8 @@
628
651
  "filterInstalled": "インストール済み",
629
652
  "filterUpdates": "更新",
630
653
  "emptyFilterHint": "このフィルターに一致するプラグインはありません。",
654
+ "searchPlaceholder": "プラグインを検索",
655
+ "searchEmpty": "検索に一致するプラグインはありません。",
631
656
  "requiresAppVersion": "hoardodile ≥ v{{version}} が必要",
632
657
  "incompatibleAppVersion": "このプラグインには hoardodile ≥ v{{require}} が必要です(このホストは v{{current}})",
633
658
  "registryActive": "現在のレジストリ:{{url}}"
@@ -2252,8 +2277,8 @@
2252
2277
  "changeLibrary": "ライブラリを変更…",
2253
2278
  "copyLanAddress": "LAN アドレスをコピー",
2254
2279
  "restartServer": "サーバーを再起動",
2255
- "updateReady": "更新準備完了 — 開いて再起動",
2256
- "updateReadyResources": "リソース更新準備完了 — 開いて適用",
2280
+ "updateReady": "更新準備完了 — アプリを開き直す",
2281
+ "updateReadyResources": "更新準備完了 — 開いて適用",
2257
2282
  "quit": "終了",
2258
2283
  "tooltipServerStopped": "hoardodile — サーバー停止",
2259
2284
  "tooltipUpdateReady": "hoardodile — 更新準備完了",
@@ -2286,7 +2311,7 @@
2286
2311
  "startInTray": "トレイで起動",
2287
2312
  "startInTrayHint": "トレイから「開く」を選択するまでウィンドウは表示されません。",
2288
2313
  "continue": "続ける",
2289
- "missingBridge": "デスクトップブリッジが見つかりません。アプリを再起動してください。"
2314
+ "missingBridge": "アプリを起動できませんでした。アプリを開き直してください。"
2290
2315
  }
2291
2316
  }
2292
2317
  }
@@ -0,0 +1,32 @@
1
+ /**
2
+ * The shell catalog registry: the tiny subset of strings the Electron
3
+ * **main process** needs (the `desktopShell` namespace for the tray,
4
+ * dialogs, error pages and wizard, plus the `closeConfirm` block it uses
5
+ * for the native close dialog). Bundling only this subset instead of the
6
+ * whole app `translation` catalog keeps the shell bundle — and therefore
7
+ * the `out/main` bytes the resource channel hashes — stable against
8
+ * app/web string churn.
9
+ *
10
+ * The five JSON modules must stay in lockstep with each other and stay a
11
+ * subset of the source catalogs (`parity.test.ts` enforces both), so a
12
+ * shell string can never drift from the app/`ui` catalogs.
13
+ */
14
+
15
+ import type { SupportedLanguage } from "../core.ts"
16
+ import de from "../shell/de.json"
17
+ import en from "../shell/en.json"
18
+ import es from "../shell/es.json"
19
+ import ja from "../shell/ja.json"
20
+ import zh from "../shell/zh.json"
21
+
22
+ export const SHELL_CATALOGS = { en, zh, ja, de, es } as const satisfies Record<
23
+ SupportedLanguage,
24
+ typeof en
25
+ >
26
+
27
+ /** Resolve the shell catalog for the active language; undefined → English. */
28
+ export function shellCatalogFor(
29
+ language: SupportedLanguage | undefined,
30
+ ): typeof en {
31
+ return language === undefined ? en : SHELL_CATALOGS[language]
32
+ }