From 428bac9873dea4a320b36b4c21d1816a6ef4690d Mon Sep 17 00:00:00 2001 From: Damien Date: Thu, 10 Sep 2026 15:18:45 +0200 Subject: [PATCH 01/22] feat(i18n): add French (fr) localization MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Adds a complete fr translation for both the main app and the FinderSync extension, registers fr in knownRegions, and lists French in the README localization table. - RClick/Localizable.xcstrings: 167 fr strings - FinderSyncExt/Localizable.xcstrings: 149 fr strings - scripts/check-localization.py --languages fr passes (every translatable key rendered, format specifiers preserved in order) Terminology follows Apple's French macOS glossary (Réglages Système, Accès complet au disque, Départ for the home folder, Ouvrir à la connexion). English stays the source language and fallback. No logic, signing, entitlement or bundle-id changes. Co-Authored-By: Claude Fable 5.1 --- FinderSyncExt/Localizable.xcstrings | 890 ++++++++++++++++++++++- RClick.xcodeproj/project.pbxproj | 1 + RClick/Localizable.xcstrings | 1014 ++++++++++++++++++++++++++- README.md | 4 +- 4 files changed, 1904 insertions(+), 5 deletions(-) diff --git a/FinderSyncExt/Localizable.xcstrings b/FinderSyncExt/Localizable.xcstrings index 54cecae..0a225e6 100644 --- a/FinderSyncExt/Localizable.xcstrings +++ b/FinderSyncExt/Localizable.xcstrings @@ -16,6 +16,12 @@ "value": "1. Haz clic en “Ajustes…” a la derecha para abrir Ajustes del Sistema" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "1. Cliquez sur « Réglages… » à droite pour ouvrir Réglages Système" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -45,6 +51,12 @@ "value": "2. Haz clic en el icono del candado y autentícate" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "2. Cliquez sur l’icône de cadenas et authentifiez-vous" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -74,6 +86,12 @@ "value": "3. Haz clic en “+” -> abre “Aplicaciones” -> selecciona “RClick”" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "3. Cliquez sur « + » -> ouvrez « Applications » -> sélectionnez « RClick »" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -103,6 +121,12 @@ "value": "4. Asegúrate de que el interruptor junto a RClick esté activado" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "4. Vérifiez que l’interrupteur à côté de RClick est activé" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -132,6 +156,12 @@ "value": "Acerca de" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "À propos" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -161,6 +191,12 @@ "value": "Accesibilidad" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Accessibilité" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -190,6 +226,12 @@ "value": "Acciones" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Actions" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -219,6 +261,12 @@ "value": "Agregar" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Ajouter" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -248,6 +296,12 @@ "value": "Agregar aplicación" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Ajouter une app" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -277,6 +331,12 @@ "value": "Agregar tipo de archivo" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Ajouter un type de fichier" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -306,6 +366,12 @@ "value": "Agregar carpeta" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Ajouter un dossier" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -335,6 +401,12 @@ "value": "Carpetas agregadas" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Dossiers ajoutés" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -364,6 +436,12 @@ "value": "AirDrop" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "AirDrop" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -393,6 +471,12 @@ "value": "Aplicaciones" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Applications" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -422,6 +506,12 @@ "value": "Apps" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Apps" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -451,6 +541,12 @@ "value": "Argumentos (separados por punto y coma)" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Arguments (séparés par des points-virgules)" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -480,6 +576,12 @@ "value": "Argumentos: %@" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Arguments : %@" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -509,6 +611,12 @@ "value": "Autorizado" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Autorisé" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -538,6 +646,12 @@ "value": "Automático" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Automatique" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -567,6 +681,12 @@ "value": "Respaldo" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Sauvegarde" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -596,6 +716,12 @@ "value": "Cancelar" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Annuler" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -625,6 +751,12 @@ "value": "Cambiar aplicación" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Changer d’app" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -654,6 +786,12 @@ "value": "Cambiar plantilla" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Changer de modèle" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -683,6 +821,12 @@ "value": "Buscar actualizaciones" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Rechercher des mises à jour" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -712,6 +856,12 @@ "value": "Buscando actualizaciones..." } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Recherche de mises à jour…" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -741,6 +891,12 @@ "value": "Elegir aplicación predeterminada" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Choisir l’app par défaut" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -770,6 +926,12 @@ "value": "Elegir archivo de plantilla" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Choisir un fichier modèle" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -799,6 +961,12 @@ "value": "Contraer el menú de acciones" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Réduire le menu Actions" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -828,6 +996,12 @@ "value": "Contraer el menú de aplicaciones" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Réduire le menu Apps" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -857,6 +1031,12 @@ "value": "Contraer el menú" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Réduire le menu" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -886,6 +1066,12 @@ "value": "Contraer el menú de nuevo archivo" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Réduire le menu Nouveau fichier" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -915,6 +1101,12 @@ "value": "Carpetas frecuentes" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Dossiers courants" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -944,6 +1136,12 @@ "value": "Carpetas frecuentes" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Dossiers courants" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -973,6 +1171,12 @@ "value": "Copiar ruta" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Copier le chemin" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -1002,6 +1206,12 @@ "value": "Aplicación predeterminada" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "App d’ouverture par défaut" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -1031,6 +1241,12 @@ "value": "Eliminar aplicación" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Supprimer l’app" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -1060,6 +1276,12 @@ "value": "Eliminar directamente" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Supprimer immédiatement" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -1089,6 +1311,12 @@ "value": "Escritorio" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Bureau" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -1118,6 +1346,12 @@ "value": "Nombre visible" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Nom affiché" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -1147,6 +1381,12 @@ "value": "Documentos" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Documents" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -1176,6 +1416,12 @@ "value": "No preguntar de nuevo" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Ne plus demander" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -1205,6 +1451,12 @@ "value": "Descargar e instalar" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Télécharger et installer" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -1234,6 +1486,12 @@ "value": "Descargar manualmente" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Télécharger manuellement" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -1263,6 +1521,12 @@ "value": "Descargas" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Téléchargements" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -1292,6 +1556,12 @@ "value": "Editar aplicación" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Modifier l’app" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -1321,6 +1591,12 @@ "value": "Editar propiedades de la aplicación" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Modifier les propriétés de l’app" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -1350,6 +1626,12 @@ "value": "Editar tipo de archivo" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Modifier le type de fichier" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -1379,6 +1661,12 @@ "value": "Activar carpetas frecuentes" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Activer les dossiers courants" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -1408,6 +1696,12 @@ "value": "Activar Acceso total al disco" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Activer l’accès complet au disque" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -1437,6 +1731,12 @@ "value": "Activar RClick" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Activer RClick" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -1466,6 +1766,12 @@ "value": "Activa RClick en Proveedor de archivos para que sus acciones aparezcan en los menús contextuales del Finder" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Activez RClick dans Fournisseur de fichiers pour afficher ses actions dans les menus contextuels du Finder" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -1495,6 +1801,12 @@ "value": "Activado" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Activé" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -1524,6 +1836,12 @@ "value": "Inglés" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Anglais" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -1553,6 +1871,12 @@ "value": "Escribe el nombre de un SF Symbol, por ejemplo doc.text o curlybraces" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Saisissez un nom de symbole SF, par exemple doc.text ou curlybraces" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -1582,6 +1906,12 @@ "value": "Variables de entorno" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Variables d’environnement" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -1611,6 +1941,12 @@ "value": "Variables de entorno: %lld" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Variables d’environnement : %lld" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -1640,6 +1976,12 @@ "value": "Exportar registros…" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Exporter les journaux…" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -1669,6 +2011,12 @@ "value": "Exportar…" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Exporter…" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -1698,6 +2046,12 @@ "value": "Extensión: %@" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Extension : %@" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -1727,6 +2081,12 @@ "value": "Error al descomprimir: %@" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Échec de l’extraction : %@" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -1756,6 +2116,12 @@ "value": "No se pudieron buscar actualizaciones" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Échec de la recherche de mises à jour" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -1785,6 +2151,12 @@ "value": "Extensión de archivo" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Extension de fichier" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -1814,6 +2186,12 @@ "value": "Proveedor de archivos: selecciona “RClick” en la lista para activar el menú contextual del Finder" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Fournisseur de fichiers : sélectionnez « RClick » dans la liste pour activer le menu contextuel du Finder" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -1843,6 +2221,12 @@ "value": "Extensión del Finder" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Extension Finder" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -1872,6 +2256,12 @@ "value": "Se necesita permiso de acceso a la carpeta para usar esta función." } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "L’autorisation d’accès au dossier est requise pour utiliser cette fonctionnalité." + } + }, "ja": { "stringUnit": { "state": "translated", @@ -1901,6 +2291,12 @@ "value": "Las carpetas no se pueden compartir por AirDrop: %@" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Les dossiers ne peuvent pas être partagés via AirDrop : %@" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -1930,6 +2326,12 @@ "value": "Por ejemplo: txt, md, json" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Par exemple : txt, md, json" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -1959,6 +2361,12 @@ "value": "Formato: CLAVE=VALOR, uno por línea" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Format : CLÉ=VALEUR, une par ligne" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -1988,6 +2396,12 @@ "value": "Acceso total al disco" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Accès complet au disque" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -2017,6 +2431,12 @@ "value": "Acceso total al disco: se necesita para crear y eliminar archivos en directorios protegidos" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Accès complet au disque : requis pour créer et supprimer des fichiers dans les dossiers protégés" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -2046,6 +2466,12 @@ "value": "General" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Général" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -2075,6 +2501,12 @@ "value": "Otorgar permiso" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Accorder l’autorisation" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -2104,6 +2536,12 @@ "value": "Ocultar" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Masquer" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -2133,6 +2571,12 @@ "value": "Carpeta de inicio" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Départ" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -2162,6 +2606,12 @@ "value": "Icono" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Icône" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -2191,6 +2641,12 @@ "value": "Ignorar esta versión" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Ignorer cette version" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -2220,6 +2676,12 @@ "value": "Importar…" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Importer…" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -2249,6 +2711,12 @@ "value": "Error al instalar: %@" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Échec de l’installation : %@" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -2278,6 +2746,12 @@ "value": "Carpeta no válida" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Dossier non valide" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -2307,6 +2781,12 @@ "value": "Japonés" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Japonais" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -2336,6 +2816,12 @@ "value": "Idioma" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Langue" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -2365,6 +2851,12 @@ "value": "Más tarde" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Plus tard" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -2394,6 +2886,12 @@ "value": "Abrir al iniciar sesión" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Ouvrir à la connexion" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -2423,6 +2921,12 @@ "value": "Registros" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Journaux" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -2449,7 +2953,13 @@ "es": { "stringUnit": { "state": "translated", - "value": "Controles principales" + "value": "Controles principales" + } + }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Commandes principales" } }, "ja": { @@ -2481,6 +2991,12 @@ "value": "Nombre" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Nom" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -2510,6 +3026,12 @@ "value": "Nuevo archivo" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Nouveau fichier" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -2539,6 +3061,12 @@ "value": "Nueva versión disponible" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Nouvelle version disponible" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -2568,6 +3096,12 @@ "value": "No se encontró ninguna aplicación .app en el archivo ZIP." } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Aucune application .app n’a été trouvée dans le fichier ZIP." + } + }, "ja": { "stringUnit": { "state": "translated", @@ -2597,6 +3131,12 @@ "value": "No se encontró ningún paquete de aplicación .app.zip." } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Aucun paquet d’application .app.zip n’a été trouvé." + } + }, "ja": { "stringUnit": { "state": "translated", @@ -2626,6 +3166,12 @@ "value": "No hay actualizaciones disponibles." } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Aucune mise à jour disponible." + } + }, "ja": { "stringUnit": { "state": "translated", @@ -2655,6 +3201,12 @@ "value": "Sin autorización" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Non autorisé" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -2684,6 +3236,12 @@ "value": "Aviso" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Avis" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -2713,6 +3271,12 @@ "value": "OK" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "OK" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -2742,6 +3306,12 @@ "value": "Abrir Ajustes" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Ouvrir les réglages" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -2771,6 +3341,12 @@ "value": "Abrir con" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Ouvrir avec" + } + }, "zh-Hans": { "stringUnit": { "state": "translated", @@ -2794,6 +3370,12 @@ "value": "Permisos" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Autorisations" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -2823,6 +3405,12 @@ "value": "Selecciona la carpeta Aplicaciones correcta." } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Veuillez sélectionner le bon dossier Applications." + } + }, "ja": { "stringUnit": { "state": "translated", @@ -2852,6 +3440,12 @@ "value": "Vista previa:" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Aperçu :" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -2881,6 +3475,12 @@ "value": "No se pueden eliminar las carpetas protegidas del sistema: %@" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Les dossiers système protégés ne peuvent pas être supprimés : %@" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -2910,6 +3510,12 @@ "value": "No se pueden compartir las carpetas protegidas del sistema: %@" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Les dossiers système protégés ne peuvent pas être partagés : %@" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -2939,6 +3545,12 @@ "value": "Salir" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Quitter" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -2968,6 +3580,12 @@ "value": "RClick (cargando...)" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "RClick (chargement…)" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -2997,6 +3615,12 @@ "value": "RClick es una extensión del menú contextual que te permite agregar aplicaciones para abrir carpetas e incluye algunas acciones frecuentes." } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "RClick est une extension du menu clic droit qui vous permet d’ajouter des applications pour ouvrir des dossiers et inclut quelques actions courantes." + } + }, "ja": { "stringUnit": { "state": "translated", @@ -3026,6 +3650,12 @@ "value": "RClick necesita Acceso total al disco para crear archivos, eliminar archivos y administrar archivos ocultos en carpetas protegidas, como Escritorio, Documentos y Descargas.\n\nSin este permiso, algunas operaciones pueden fallar en los directorios protegidos.\n\nPara activarlo:\n1. Haz clic en “Abrir Ajustes” más abajo\n2. Haz clic en el icono del candado y autentícate\n3. Haz clic en “+” y agrega RClick desde tu carpeta Aplicaciones\n4. Activa el interruptor junto a RClick" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "RClick a besoin de l’accès complet au disque pour créer et supprimer des fichiers, et gérer les fichiers masqués dans les dossiers protégés (comme Bureau, Documents et Téléchargements).\n\nSans cette autorisation, certaines opérations peuvent échouer dans les dossiers protégés.\n\nPour l’activer :\n1. Cliquez sur « Ouvrir les réglages » ci-dessous\n2. Cliquez sur l’icône de cadenas et authentifiez-vous\n3. Cliquez sur « + » et ajoutez RClick depuis votre dossier Applications\n4. Activez l’interrupteur à côté de RClick" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -3055,6 +3685,12 @@ "value": "RClick necesita Acceso total al disco para trabajar con archivos en directorios protegidos" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "RClick a besoin de l’accès complet au disque pour manipuler les fichiers des dossiers protégés" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -3084,6 +3720,12 @@ "value": "RClick necesita permiso para instalar la actualización en tu carpeta Aplicaciones." } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "RClick a besoin d’une autorisation pour installer la mise à jour dans votre dossier Applications." + } + }, "ja": { "stringUnit": { "state": "translated", @@ -3113,6 +3755,12 @@ "value": "RClick: haz clic para ver las opciones del menú" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "RClick : cliquez pour afficher les options du menu" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -3142,6 +3790,12 @@ "value": "Restablecer" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Réinitialiser" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -3171,6 +3825,12 @@ "value": "¿Restablecer todos los ajustes?" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Réinitialiser tous les réglages ?" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -3200,6 +3860,12 @@ "value": "Restablecer todos los ajustes…" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Réinitialiser tous les réglages…" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -3229,6 +3895,12 @@ "value": "Restablecer todos los ajustes restaura la configuración predeterminada y no se puede deshacer" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "La réinitialisation de tous les réglages restaure la configuration par défaut et est irréversible" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -3258,6 +3930,12 @@ "value": "Reiniciar más tarde" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Redémarrer plus tard" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -3287,6 +3965,12 @@ "value": "Reiniciar ahora" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Redémarrer maintenant" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -3316,6 +4000,12 @@ "value": "Restaurar valores predeterminados" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Rétablir les valeurs par défaut" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -3345,6 +4035,12 @@ "value": "Argumentos de ejecución" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Arguments d’exécution" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -3374,6 +4070,12 @@ "value": "Guardar" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Enregistrer" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -3403,6 +4105,12 @@ "value": "Separa varios argumentos con punto y coma (;)" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Séparez les arguments par des points-virgules (;)" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -3432,6 +4140,12 @@ "value": "Ajustes" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Réglages" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -3461,6 +4175,12 @@ "value": "Administración de ajustes" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Gestion des réglages" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -3490,6 +4210,12 @@ "value": "Ajustes…" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Réglages…" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -3519,6 +4245,12 @@ "value": "Nombre del SF Symbol" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Nom du symbole SF" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -3548,6 +4280,12 @@ "value": "Mostrar el icono en la barra de menús" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Afficher l’icône dans la barre des menus" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -3577,6 +4315,12 @@ "value": "Chino simplificado" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Chinois simplifié" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -3606,6 +4350,12 @@ "value": "Plantilla" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Modèle" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -3635,6 +4385,12 @@ "value": "El paquete de la aplicación no es válido o está dañado." } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Le paquet de l’application est non valide ou endommagé." + } + }, "ja": { "stringUnit": { "state": "translated", @@ -3664,6 +4420,12 @@ "value": "La aplicación se actualizó correctamente. Reinicia la app para finalizar la actualización." } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "L’application a été mise à jour avec succès. Redémarrez l’app pour terminer la mise à jour." + } + }, "ja": { "stringUnit": { "state": "translated", @@ -3693,6 +4455,12 @@ "value": "No se puede eliminar la carpeta actual. En su lugar, selecciona archivos o subcarpetas." } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Le dossier actuel ne peut pas être supprimé. Sélectionnez plutôt des fichiers ou des sous-dossiers." + } + }, "ja": { "stringUnit": { "state": "translated", @@ -3722,6 +4490,12 @@ "value": "No se puede compartir la carpeta actual. En su lugar, selecciona archivos o subcarpetas." } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Le dossier actuel ne peut pas être partagé. Sélectionnez plutôt des fichiers ou des sous-dossiers." + } + }, "ja": { "stringUnit": { "state": "translated", @@ -3751,6 +4525,12 @@ "value": "La versión actual ya está actualizada." } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "La version actuelle est déjà à jour." + } + }, "ja": { "stringUnit": { "state": "translated", @@ -3780,6 +4560,12 @@ "value": "La carpeta seleccionada es una subcarpeta de otra que ya elegiste. Elige una carpeta diferente." } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Le dossier sélectionné est un sous-dossier d’un dossier déjà sélectionné. Veuillez choisir un autre dossier." + } + }, "ja": { "stringUnit": { "state": "translated", @@ -3809,6 +4595,12 @@ "value": "El usuario canceló la autorización." } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "L’utilisateur a annulé l’autorisation." + } + }, "ja": { "stringUnit": { "state": "translated", @@ -3838,6 +4630,12 @@ "value": "Se eliminarán todas las configuraciones personalizadas y se restaurarán los valores predeterminados. Esta acción no se puede deshacer." } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Toutes les configurations personnalisées seront supprimées et les valeurs par défaut rétablies. Cette action est irréversible." + } + }, "ja": { "stringUnit": { "state": "translated", @@ -3867,6 +4665,12 @@ "value": "Carpeta sin autorización" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Dossier non autorisé" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -3896,6 +4700,12 @@ "value": "Mostrar" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Afficher" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -3925,6 +4735,12 @@ "value": "Desconocido" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Inconnu" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -3954,6 +4770,12 @@ "value": "Sin título" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Sans titre" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -3983,6 +4805,12 @@ "value": "Todo actualizado" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "À jour" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -4012,6 +4840,12 @@ "value": "Actualización instalada" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Mise à jour installée" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -4041,6 +4875,12 @@ "value": "Versión %@" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Version %@" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -4070,6 +4910,12 @@ "value": "Versión %@ (%@)" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Version %@ (%@)" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -4099,6 +4945,12 @@ "value": "Se ignoró la versión %@" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "La version %@ est ignorée" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -4128,6 +4980,12 @@ "value": "Advertencia" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Avertissement" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -4157,6 +5015,12 @@ "value": "RClick no está en ejecución" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "RClick n’est pas lancé" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -4186,6 +5050,12 @@ "value": "Reinicia RClick para restaurar el menú" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Relancez RClick pour rétablir le menu" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -4215,6 +5085,12 @@ "value": "Esta acción requiere que RClick esté en ejecución. Inicia RClick e inténtalo de nuevo." } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Cette action nécessite que RClick soit lancé. Veuillez lancer RClick et réessayer." + } + }, "ja": { "stringUnit": { "state": "translated", @@ -4244,6 +5120,12 @@ "value": "RClick no respondió" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "RClick ne répond pas" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -4273,6 +5155,12 @@ "value": "Es posible que la operación no se haya ejecutado. Comprueba que RClick esté en ejecución." } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "L’opération n’a peut-être pas été exécutée. Vérifiez que RClick est lancé." + } + }, "ja": { "stringUnit": { "state": "translated", diff --git a/RClick.xcodeproj/project.pbxproj b/RClick.xcodeproj/project.pbxproj index 5029b17..5b290b2 100644 --- a/RClick.xcodeproj/project.pbxproj +++ b/RClick.xcodeproj/project.pbxproj @@ -317,6 +317,7 @@ "zh-Hans", ja, es, + fr, ); mainGroup = 5C8A28D12F83D65900FE687C; minimizedProjectReferenceProxies = 1; diff --git a/RClick/Localizable.xcstrings b/RClick/Localizable.xcstrings index 2fdabb0..663fd6e 100644 --- a/RClick/Localizable.xcstrings +++ b/RClick/Localizable.xcstrings @@ -22,6 +22,12 @@ "value": "%1$@(%2$@)" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "%1$@ (%2$@)" + } + }, "zh-Hans": { "stringUnit": { "state": "translated", @@ -46,6 +52,12 @@ "value": "1. Haz clic en “Ajustes…” a la derecha para abrir Ajustes del Sistema" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "1. Cliquez sur « Réglages… » à droite pour ouvrir Réglages Système" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -75,6 +87,12 @@ "value": "2. Haz clic en el icono del candado y autentícate" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "2. Cliquez sur l’icône de cadenas et authentifiez-vous" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -104,6 +122,12 @@ "value": "3. Haz clic en “+” -> abre “Aplicaciones” -> selecciona “RClick”" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "3. Cliquez sur « + » -> ouvrez « Applications » -> sélectionnez « RClick »" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -133,6 +157,12 @@ "value": "4. Asegúrate de que el interruptor junto a RClick esté activado" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "4. Vérifiez que l’interrupteur à côté de RClick est activé" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -162,6 +192,12 @@ "value": "Acerca de" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "À propos" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -191,6 +227,12 @@ "value": "Accesibilidad" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Accessibilité" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -220,6 +262,12 @@ "value": "Acciones" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Actions" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -249,6 +297,12 @@ "value": "Agregar" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Ajouter" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -278,6 +332,12 @@ "value": "Agregar una carpeta…" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Ajouter un dossier…" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -307,6 +367,12 @@ "value": "Agregar aplicación" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Ajouter une app" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -336,6 +402,12 @@ "value": "Agregar tipo de archivo" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Ajouter un type de fichier" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -365,6 +437,12 @@ "value": "Agregar carpeta" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Ajouter un dossier" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -394,6 +472,12 @@ "value": "Carpetas agregadas" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Dossiers ajoutés" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -423,6 +507,12 @@ "value": "AirDrop" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "AirDrop" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -452,6 +542,12 @@ "value": "Aplicaciones" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Applications" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -481,6 +577,12 @@ "value": "Apps" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Apps" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -510,6 +612,12 @@ "value": "¿Seguro que quieres eliminar “%@” (%@)? Esta acción no se puede deshacer." } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Voulez-vous vraiment supprimer « %@ » (%@) ? Cette action est irréversible." + } + }, "ja": { "stringUnit": { "state": "translated", @@ -539,6 +647,12 @@ "value": "Argumentos (separados por punto y coma)" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Arguments (séparés par des points-virgules)" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -568,6 +682,12 @@ "value": "Argumentos: %@" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Arguments : %@" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -597,6 +717,12 @@ "value": "Autoriza carpetas para que RClick pueda crear, eliminar y administrar archivos en ellas." } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Autorisez des dossiers pour permettre à RClick d’y créer, supprimer et gérer des fichiers." + } + }, "ja": { "stringUnit": { "state": "translated", @@ -626,6 +752,12 @@ "value": "Autorizado" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Autorisé" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -655,6 +787,12 @@ "value": "Respaldo" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Sauvegarde" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -684,6 +822,12 @@ "value": "Cancelar" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Annuler" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -713,6 +857,12 @@ "value": "Cambiar aplicación" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Changer d’app" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -742,6 +892,12 @@ "value": "Cambiar plantilla" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Changer de modèle" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -771,6 +927,12 @@ "value": "Buscar actualizaciones" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Rechercher des mises à jour" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -800,6 +962,12 @@ "value": "Buscando actualizaciones..." } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Recherche de mises à jour…" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -829,6 +997,12 @@ "value": "Elige una carpeta a la que RClick pueda acceder." } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Choisissez un dossier auquel RClick pourra accéder." + } + }, "ja": { "stringUnit": { "state": "translated", @@ -858,6 +1032,12 @@ "value": "Elegir aplicación predeterminada" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Choisir l’app par défaut" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -887,6 +1067,12 @@ "value": "Elegir archivo de plantilla" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Choisir un fichier modèle" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -916,6 +1102,12 @@ "value": "Contraer el menú de acciones" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Réduire le menu Actions" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -945,6 +1137,12 @@ "value": "Contraer el menú de aplicaciones" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Réduire le menu Apps" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -974,6 +1172,12 @@ "value": "Contraer el menú" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Réduire le menu" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -1003,6 +1207,12 @@ "value": "Contraer el menú de nuevo archivo" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Réduire le menu Nouveau fichier" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -1032,6 +1242,12 @@ "value": "Carpetas frecuentes" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Dossiers courants" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -1061,6 +1277,12 @@ "value": "Copiar ruta" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Copier le chemin" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -1090,6 +1312,12 @@ "value": "Aplicación predeterminada" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "App d’ouverture par défaut" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -1119,6 +1347,12 @@ "value": "Eliminar" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Supprimer" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -1148,6 +1382,12 @@ "value": "Eliminar aplicación" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Supprimer l’app" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -1177,6 +1417,12 @@ "value": "Eliminar directamente" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Supprimer immédiatement" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -1206,6 +1452,12 @@ "value": "Eliminar tipo de archivo" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Supprimer le type de fichier" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -1235,6 +1487,12 @@ "value": "Escritorio" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Bureau" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -1264,6 +1522,12 @@ "value": "Nombre visible" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Nom affiché" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -1293,6 +1557,12 @@ "value": "Documentos" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Documents" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -1322,6 +1592,12 @@ "value": "No preguntar de nuevo" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Ne plus demander" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -1351,6 +1627,12 @@ "value": "Listo" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Terminé" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -1380,6 +1662,12 @@ "value": "Descargar e instalar" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Télécharger et installer" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -1409,6 +1697,12 @@ "value": "La descarga falló" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Échec du téléchargement" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -1438,6 +1732,12 @@ "value": "Descargar manualmente" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Télécharger manuellement" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -1467,6 +1767,12 @@ "value": "Descargas" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Téléchargements" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -1496,6 +1802,12 @@ "value": "Editar aplicación" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Modifier l’app" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -1525,6 +1837,12 @@ "value": "Editar propiedades de la aplicación" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Modifier les propriétés de l’app" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -1554,6 +1872,12 @@ "value": "Editar tipo de archivo" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Modifier le type de fichier" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -1583,6 +1907,12 @@ "value": "Activar carpetas frecuentes" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Activer les dossiers courants" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -1612,6 +1942,12 @@ "value": "Activar Acceso total al disco" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Activer l’accès complet au disque" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -1641,6 +1977,12 @@ "value": "Activar RClick" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Activer RClick" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -1670,6 +2012,12 @@ "value": "Activa RClick en Proveedor de archivos para que sus acciones aparezcan en los menús contextuales del Finder" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Activez RClick dans Fournisseur de fichiers pour afficher ses actions dans les menus contextuels du Finder" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -1699,6 +2047,12 @@ "value": "Activado" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Activé" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -1728,6 +2082,12 @@ "value": "Escribe el nombre de un SF Symbol, por ejemplo doc.text o curlybraces" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Saisissez un nom de symbole SF, par exemple doc.text ou curlybraces" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -1757,6 +2117,12 @@ "value": "Variables de entorno" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Variables d’environnement" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -1786,6 +2152,12 @@ "value": "Variables de entorno: %lld" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Variables d’environnement : %lld" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -1815,13 +2187,19 @@ "value": "Exportar registros…" } }, - "ja": { + "fr": { "stringUnit": { "state": "translated", - "value": "ログを書き出し…" + "value": "Exporter les journaux…" } }, - "zh-Hans": { + "ja": { + "stringUnit": { + "state": "translated", + "value": "ログを書き出し…" + } + }, + "zh-Hans": { "stringUnit": { "state": "translated", "value": "导出日志…" @@ -1844,6 +2222,12 @@ "value": "Exportar…" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Exporter…" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -1873,6 +2257,12 @@ "value": "Extensión: %@" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Extension : %@" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -1902,6 +2292,12 @@ "value": "Error al descomprimir: %@" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Échec de l’extraction : %@" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -1931,6 +2327,12 @@ "value": "No se pudieron buscar actualizaciones" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Échec de la recherche de mises à jour" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -1960,6 +2362,12 @@ "value": "Extensión de archivo" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Extension de fichier" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -1989,6 +2397,12 @@ "value": "Proveedor de archivos: selecciona “RClick” en la lista para activar el menú contextual del Finder" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Fournisseur de fichiers : sélectionnez « RClick » dans la liste pour activer le menu contextuel du Finder" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -2018,6 +2432,12 @@ "value": "Extensión del Finder" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Extension Finder" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -2047,6 +2467,12 @@ "value": "Se necesita permiso de acceso a la carpeta para usar esta función." } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "L’autorisation d’accès au dossier est requise pour utiliser cette fonctionnalité." + } + }, "ja": { "stringUnit": { "state": "translated", @@ -2076,6 +2502,12 @@ "value": "Permisos de carpetas" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Autorisations de dossiers" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -2105,6 +2537,12 @@ "value": "Las carpetas no se pueden compartir por AirDrop: %@" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Les dossiers ne peuvent pas être partagés via AirDrop : %@" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -2134,6 +2572,12 @@ "value": "Por ejemplo: txt, md, json" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Par exemple : txt, md, json" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -2163,6 +2607,12 @@ "value": "Formato: CLAVE=VALOR, uno por línea" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Format : CLÉ=VALEUR, une par ligne" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -2192,6 +2642,12 @@ "value": "Acceso total al disco" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Accès complet au disque" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -2221,6 +2677,12 @@ "value": "Acceso total al disco: se necesita para crear y eliminar archivos en directorios protegidos" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Accès complet au disque : requis pour créer et supprimer des fichiers dans les dossiers protégés" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -2250,6 +2712,12 @@ "value": "General" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Général" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -2271,6 +2739,12 @@ "state": "translated", "value": "github.com/wflixu/RClick" } + }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "github.com/wflixu/RClick" + } } } }, @@ -2289,6 +2763,12 @@ "value": "Permitir acceso" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Autoriser l’accès" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -2318,6 +2798,12 @@ "value": "Otorgar permiso" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Accorder l’autorisation" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -2347,6 +2833,12 @@ "value": "Otorga a RClick acceso a esta carpeta para realizar operaciones con archivos." } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Autorisez RClick à accéder à ce dossier pour effectuer des opérations sur les fichiers." + } + }, "ja": { "stringUnit": { "state": "translated", @@ -2376,6 +2868,12 @@ "value": "Ocultar" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Masquer" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -2405,6 +2903,12 @@ "value": "Carpeta de inicio" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Départ" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -2434,6 +2938,12 @@ "value": "Icono" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Icône" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -2463,6 +2973,12 @@ "value": "Ignorar esta versión" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Ignorer cette version" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -2492,6 +3008,12 @@ "value": "Importar…" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Importer…" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -2521,6 +3043,12 @@ "value": "Error al instalar: %@" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Échec de l’installation : %@" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -2550,6 +3078,12 @@ "value": "Carpeta no válida" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Dossier non valide" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -2579,6 +3113,12 @@ "value": "Abrir al iniciar sesión" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Ouvrir à la connexion" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -2608,6 +3148,12 @@ "value": "Registros" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Journaux" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -2637,6 +3183,12 @@ "value": "Controles principales" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Commandes principales" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -2666,6 +3218,12 @@ "value": "Administrar…" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Gérer…" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -2695,6 +3253,12 @@ "value": "Nombre" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Nom" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -2724,6 +3288,12 @@ "value": "Nuevo archivo" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Nouveau fichier" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -2753,6 +3323,12 @@ "value": "Nueva versión disponible" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Nouvelle version disponible" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -2782,6 +3358,12 @@ "value": "No se encontró ninguna aplicación .app en el archivo ZIP." } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Aucune application .app n’a été trouvée dans le fichier ZIP." + } + }, "ja": { "stringUnit": { "state": "translated", @@ -2811,6 +3393,12 @@ "value": "No se encontró ningún paquete de aplicación .app.zip." } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Aucun paquet d’application .app.zip n’a été trouvé." + } + }, "ja": { "stringUnit": { "state": "translated", @@ -2840,6 +3428,12 @@ "value": "No hay carpetas autorizadas" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Aucun dossier autorisé" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -2869,6 +3463,12 @@ "value": "No hay actualizaciones disponibles." } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Aucune mise à jour disponible." + } + }, "ja": { "stringUnit": { "state": "translated", @@ -2898,6 +3498,12 @@ "value": "Sin autorización" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Non autorisé" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -2927,6 +3533,12 @@ "value": "Aviso" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Avis" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -2956,6 +3568,12 @@ "value": "OK" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "OK" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -2985,6 +3603,12 @@ "value": "Abrir Ajustes" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Ouvrir les réglages" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -3014,6 +3638,12 @@ "value": "Abrir con" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Ouvrir avec" + } + }, "zh-Hans": { "stringUnit": { "state": "translated", @@ -3037,6 +3667,12 @@ "value": "Abrir con %@" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Ouvrir avec %@" + } + }, "zh-Hans": { "stringUnit": { "state": "translated", @@ -3060,6 +3696,12 @@ "value": "Permisos" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Autorisations" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -3089,6 +3731,12 @@ "value": "Selecciona la carpeta Aplicaciones correcta." } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Veuillez sélectionner le bon dossier Applications." + } + }, "ja": { "stringUnit": { "state": "translated", @@ -3118,6 +3766,12 @@ "value": "PPTX" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "PPTX" + } + }, "zh-Hans": { "stringUnit": { "state": "translated", @@ -3141,6 +3795,12 @@ "value": "Vista previa:" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Aperçu :" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -3170,6 +3830,12 @@ "value": "No se pueden eliminar las carpetas protegidas del sistema: %@" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Les dossiers système protégés ne peuvent pas être supprimés : %@" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -3199,6 +3865,12 @@ "value": "No se pueden compartir las carpetas protegidas del sistema: %@" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Les dossiers système protégés ne peuvent pas être partagés : %@" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -3228,6 +3900,12 @@ "value": "Salir" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Quitter" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -3256,6 +3934,12 @@ "value": "RClick" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "RClick" + } + }, "zh-Hans": { "stringUnit": { "state": "translated", @@ -3279,6 +3963,12 @@ "value": "RClick (cargando...)" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "RClick (chargement…)" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -3308,6 +3998,12 @@ "value": "RClick es una extensión del menú contextual que te permite agregar aplicaciones para abrir carpetas e incluye algunas acciones frecuentes." } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "RClick est une extension du menu clic droit qui vous permet d’ajouter des applications pour ouvrir des dossiers et inclut quelques actions courantes !" + } + }, "zh-Hans": { "stringUnit": { "state": "translated", @@ -3331,6 +4027,12 @@ "value": "RClick es una extensión del menú contextual que te permite agregar aplicaciones para abrir carpetas e incluye algunas acciones frecuentes." } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "RClick est une extension du menu clic droit qui vous permet d’ajouter des applications pour ouvrir des dossiers et inclut quelques actions courantes." + } + }, "ja": { "stringUnit": { "state": "translated", @@ -3360,6 +4062,12 @@ "value": "RClick necesita Acceso total al disco para crear archivos, eliminar archivos y administrar archivos ocultos en carpetas protegidas, como Escritorio, Documentos y Descargas.\n\nSin este permiso, algunas operaciones pueden fallar en los directorios protegidos.\n\nPara activarlo:\n1. Haz clic en “Abrir Ajustes” más abajo\n2. Haz clic en el icono del candado y autentícate\n3. Haz clic en “+” y agrega RClick desde tu carpeta Aplicaciones\n4. Activa el interruptor junto a RClick" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "RClick a besoin de l’accès complet au disque pour créer et supprimer des fichiers, et gérer les fichiers masqués dans les dossiers protégés (comme Bureau, Documents et Téléchargements).\n\nSans cette autorisation, certaines opérations peuvent échouer dans les dossiers protégés.\n\nPour l’activer :\n1. Cliquez sur « Ouvrir les réglages » ci-dessous\n2. Cliquez sur l’icône de cadenas et authentifiez-vous\n3. Cliquez sur « + » et ajoutez RClick depuis votre dossier Applications\n4. Activez l’interrupteur à côté de RClick" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -3389,6 +4097,12 @@ "value": "RClick necesita Acceso total al disco para trabajar con archivos en directorios protegidos" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "RClick a besoin de l’accès complet au disque pour manipuler les fichiers des dossiers protégés" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -3418,6 +4132,12 @@ "value": "RClick necesita permiso para instalar la actualización en tu carpeta Aplicaciones." } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "RClick a besoin d’une autorisation pour installer la mise à jour dans votre dossier Applications." + } + }, "ja": { "stringUnit": { "state": "translated", @@ -3447,6 +4167,12 @@ "value": "Quitar el permiso de la carpeta" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Retirer l’autorisation du dossier" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -3476,6 +4202,12 @@ "value": "Restablecer" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Réinitialiser" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -3505,6 +4237,12 @@ "value": "¿Restablecer todos los ajustes?" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Réinitialiser tous les réglages ?" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -3534,6 +4272,12 @@ "value": "Restablecer todos los ajustes…" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Réinitialiser tous les réglages…" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -3563,6 +4307,12 @@ "value": "Restablecer todos los ajustes restaura la configuración predeterminada y no se puede deshacer" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "La réinitialisation de tous les réglages restaure la configuration par défaut et est irréversible" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -3592,6 +4342,12 @@ "value": "Reiniciar más tarde" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Redémarrer plus tard" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -3621,6 +4377,12 @@ "value": "Reiniciar ahora" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Redémarrer maintenant" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -3650,6 +4412,12 @@ "value": "Restaurar valores predeterminados" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Rétablir les valeurs par défaut" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -3679,6 +4447,12 @@ "value": "Argumentos de ejecución" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Arguments d’exécution" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -3708,6 +4482,12 @@ "value": "Guardar" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Enregistrer" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -3737,6 +4517,12 @@ "value": "Separa varios argumentos con punto y coma (;)" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Séparez les arguments par des points-virgules (;)" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -3766,6 +4552,12 @@ "value": "Ajustes" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Réglages" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -3795,6 +4587,12 @@ "value": "Administración de ajustes" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Gestion des réglages" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -3824,6 +4622,12 @@ "value": "Ajustes…" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Réglages…" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -3853,6 +4657,12 @@ "value": "Nombre del SF Symbol" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Nom du symbole SF" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -3882,6 +4692,12 @@ "value": "Mostrar el icono en la barra de menús" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Afficher l’icône dans la barre des menus" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -3911,6 +4727,12 @@ "value": "Plantilla" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Modèle" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -3940,6 +4762,12 @@ "value": "El paquete de la aplicación no es válido o está dañado." } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Le paquet de l’application est non valide ou endommagé." + } + }, "ja": { "stringUnit": { "state": "translated", @@ -3969,6 +4797,12 @@ "value": "La aplicación se actualizó correctamente. Reinicia la app para finalizar la actualización." } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "L’application a été mise à jour avec succès. Redémarrez l’app pour terminer la mise à jour." + } + }, "ja": { "stringUnit": { "state": "translated", @@ -3998,6 +4832,12 @@ "value": "No se puede eliminar la carpeta actual. En su lugar, selecciona archivos o subcarpetas." } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Le dossier actuel ne peut pas être supprimé. Sélectionnez plutôt des fichiers ou des sous-dossiers." + } + }, "ja": { "stringUnit": { "state": "translated", @@ -4027,6 +4867,12 @@ "value": "No se puede compartir la carpeta actual. En su lugar, selecciona archivos o subcarpetas." } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Le dossier actuel ne peut pas être partagé. Sélectionnez plutôt des fichiers ou des sous-dossiers." + } + }, "ja": { "stringUnit": { "state": "translated", @@ -4056,6 +4902,12 @@ "value": "La versión actual ya está actualizada." } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "La version actuelle est déjà à jour." + } + }, "ja": { "stringUnit": { "state": "translated", @@ -4085,6 +4937,12 @@ "value": "La carpeta seleccionada es una subcarpeta de otra que ya elegiste. Elige una carpeta diferente." } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Le dossier sélectionné est un sous-dossier d’un dossier déjà sélectionné. Veuillez choisir un autre dossier." + } + }, "ja": { "stringUnit": { "state": "translated", @@ -4114,6 +4972,12 @@ "value": "El usuario canceló la autorización." } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "L’utilisateur a annulé l’autorisation." + } + }, "ja": { "stringUnit": { "state": "translated", @@ -4143,6 +5007,12 @@ "value": "Se eliminarán todas las configuraciones personalizadas y se restaurarán los valores predeterminados. Esta acción no se puede deshacer." } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Toutes les configurations personnalisées seront supprimées et les valeurs par défaut rétablies. Cette action est irréversible." + } + }, "ja": { "stringUnit": { "state": "translated", @@ -4172,6 +5042,12 @@ "value": "Carpeta sin autorización" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Dossier non autorisé" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -4201,6 +5077,12 @@ "value": "Mostrar" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Afficher" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -4230,6 +5112,12 @@ "value": "Desconocido" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Inconnu" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -4259,6 +5147,12 @@ "value": "Error desconocido" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Erreur inconnue" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -4288,6 +5182,12 @@ "value": "Sin título" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Sans titre" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -4317,6 +5217,12 @@ "value": "Todo actualizado" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "À jour" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -4346,6 +5252,12 @@ "value": "Actualización instalada" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Mise à jour installée" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -4375,6 +5287,12 @@ "value": "Versión %@" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Version %@" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -4404,6 +5322,12 @@ "value": "Versión %@ (%@)" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Version %@ (%@)" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -4433,6 +5357,12 @@ "value": "Se ignoró la versión %@" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "La version %@ est ignorée" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -4462,6 +5392,12 @@ "value": "¿Quieres proponer una función? Envía tus comentarios aquí." } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Envie d’une nouvelle fonctionnalité ? Donnez votre avis ici." + } + }, "zh-Hans": { "stringUnit": { "state": "translated", @@ -4485,6 +5421,12 @@ "value": "Advertencia" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Avertissement" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -4514,6 +5456,12 @@ "value": "Iniciar sesión automáticamente está pendiente de aprobación en Ajustes del Sistema" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "L’ouverture à la connexion est en attente d’approbation dans Réglages Système" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -4543,6 +5491,12 @@ "value": "Para iniciar sesión automáticamente, RClick debe instalarse en /Applications" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "L’ouverture à la connexion nécessite que RClick soit installé dans /Applications" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -4572,6 +5526,12 @@ "value": "Actualizar desde la Mac App Store" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Mettre à jour via le Mac App Store" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -4601,6 +5561,12 @@ "value": "RClick se instaló desde la Mac App Store. Actualízalo desde la App Store." } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "RClick a été installé depuis le Mac App Store. Veuillez le mettre à jour depuis l’App Store." + } + }, "ja": { "stringUnit": { "state": "translated", @@ -4630,6 +5596,12 @@ "value": "Abrir App Store" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Ouvrir l’App Store" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -4659,6 +5631,12 @@ "value": "Más tarde" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Plus tard" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -4688,6 +5666,12 @@ "value": "RClick necesita acceso a esta carpeta para eliminar, crear y modificar archivos. Elige esta carpeta o una carpeta principal más amplia para cubrir también sus subcarpetas. Puedes administrar estos permisos en Ajustes → Permisos de carpetas." } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "RClick a besoin d’accéder à ce dossier pour supprimer, créer et modifier des fichiers. Choisissez ce dossier ou un dossier parent plus large pour couvrir ses sous-dossiers. Vous pouvez gérer ces autorisations dans Réglages → Autorisations de dossiers." + } + }, "ja": { "stringUnit": { "state": "translated", @@ -4717,6 +5701,12 @@ "value": "Autoriza esta carpeta y todas sus subcarpetas" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Autorise ce dossier et tous ses sous-dossiers" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -4746,6 +5736,12 @@ "value": "Abrir en una nueva ventana" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Ouvrir dans une nouvelle fenêtre" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -4775,6 +5771,12 @@ "value": "Ventana" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Fenêtre" + } + }, "ja": { "stringUnit": { "state": "translated", @@ -4804,6 +5806,12 @@ "value": "Para apps tipo navegador, lanza una nueva instancia en lugar de abrir una pestaña en la ya abierta" } }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Pour les apps de type navigateur, lance une nouvelle instance au lieu d’ouvrir un nouvel onglet dans celle en cours" + } + }, "ja": { "stringUnit": { "state": "translated", diff --git a/README.md b/README.md index a63ba01..6079d8d 100644 --- a/README.md +++ b/README.md @@ -92,13 +92,15 @@ xcodebuild -project RClick.xcodeproj -scheme RClick -configuration Release ### 🌐 Localization -RClick supports three languages with the following priority: +RClick supports five languages with the following priority: | Language | Code | Notes | |----------|------|-------| | **English** | `en` | Default/base language | | **Simplified Chinese** | `zh-Hans` | Primary localization target | | **Japanese** | `ja` | Activated when system language is Japanese | +| **Spanish** | `es` | Activated when system language is Spanish | +| **French** | `fr` | Activated when system language is French | **Principles:** - Default language is English (also the fallback for unsupported system languages) From 1c763a2775baf4b7ac3914cf4ab47e7b9126a52b Mon Sep 17 00:00:00 2001 From: Juns <92599167+Juns-g@users.noreply.github.com> Date: Sun, 13 Sep 2026 00:45:58 +0800 Subject: [PATCH 02/22] feat(menu): support declarative hierarchical tree menu via JSON - Introduce Shared/CustomMenu.swift with declarative tree node schema (item, submenu, separator) - Enable mixed top-level items and nested submenus with recursive NSMenu builder in FinderSyncExt - Support human-friendly references (app paths, extensions, action IDs) - Graceful fallback to default categorized menu if custom_menu.json is absent or invalid - Fix template ID and custom path loss across save/reload in ConfigService - Add robust fallback for opening accessibility system settings on macOS 15+ - Add comprehensive test suite in CustomMenuTests (three-level nesting, leaf dispatch, invalid layouts) --- FinderSyncExt/FinderSyncExt.swift | 100 ++++++++------ RClick/AppState.swift | 2 +- RClick/Model/NewFileTypeEntity.swift | 4 +- RClick/Runtime/ConfigService.swift | 14 +- RClick/Runtime/MenuService.swift | 13 +- RClick/Shared/PermissionChecker.swift | 13 +- RClickTests/ActionServiceTests.swift | 20 +++ RClickTests/CustomMenuTests.swift | 167 ++++++++++++++++++++++++ README.md | 6 + Shared/CustomMenu.swift | 108 +++++++++++++++ Shared/Messager.swift | 2 + examples/README.md | 50 +++++++ examples/custom_menu.json | 32 +++++ examples/screenshots/menu-preview-1.png | Bin 0 -> 435575 bytes examples/screenshots/menu-preview-2.png | Bin 0 -> 456156 bytes examples/screenshots/menu-preview-3.png | Bin 0 -> 430661 bytes 16 files changed, 483 insertions(+), 48 deletions(-) create mode 100644 RClickTests/CustomMenuTests.swift create mode 100644 Shared/CustomMenu.swift create mode 100644 examples/README.md create mode 100644 examples/custom_menu.json create mode 100644 examples/screenshots/menu-preview-1.png create mode 100644 examples/screenshots/menu-preview-2.png create mode 100644 examples/screenshots/menu-preview-3.png diff --git a/FinderSyncExt/FinderSyncExt.swift b/FinderSyncExt/FinderSyncExt.swift index ba3d482..5fe5166 100644 --- a/FinderSyncExt/FinderSyncExt.swift +++ b/FinderSyncExt/FinderSyncExt.swift @@ -269,8 +269,11 @@ class FinderSyncExt: FIFinderSync, @unchecked Sendable { if let appURL = app.appURL { let cacheKey = "app:\(appURL)" if let cached = iconCache[cacheKey] { return cached } - let icon: NSImage = DispatchQueue.main.sync { - NSWorkspace.shared.icon(forFile: appURL) + let icon: NSImage + if Thread.isMainThread { + icon = MainActor.assumeIsolated { NSWorkspace.shared.icon(forFile: appURL) } + } else { + icon = DispatchQueue.main.sync { NSWorkspace.shared.icon(forFile: appURL) } } if icon.size.width > 0 { iconCache[cacheKey] = icon @@ -342,6 +345,18 @@ class FinderSyncExt: FIFinderSync, @unchecked Sendable { return menu } + if let nodes = config.customMenu { + CustomMenu.render(nodes, into: menu, makeItem: { type, id in + switch type { + case .action: return config.actions.first { $0.id == id }.map(self.makeActionItem) + case .app: return config.apps.first { $0.id == id }.map(self.makeAppItem) + case .newFile: return config.newFiles.first { $0.id == id }.map(self.makeNewFileItem) + case .commonDir: return config.commonDirs.first { $0.id == id }.map(self.makeCommonDirItem) + } + }, loadIcon: { self.loadIcon(named: $0, accessibilityDescription: $0) }) + return menu + } + // 构建动作菜单 if !config.actions.isEmpty { if config.actionsCollapsed { @@ -349,12 +364,7 @@ class FinderSyncExt: FIFinderSync, @unchecked Sendable { let actionsTitle = AppLocalization.localized("Actions") let actionsSubMenu = NSMenu(title: actionsTitle) for action in config.actions { - let item = NSMenuItem(title: action.name, action: #selector(handleActionClick(_:)), keyEquivalent: "") - item.tag = hashForAction(action) - item.target = self - if let icon = templateSymbol(action.icon) { - item.image = icon - } + let item = makeActionItem(action) actionsSubMenu.addItem(item) } let actionsItem = NSMenuItem(title: actionsTitle, action: nil, keyEquivalent: "") @@ -364,12 +374,7 @@ class FinderSyncExt: FIFinderSync, @unchecked Sendable { } else { // 不折叠:直接显示菜单项 for action in config.actions { - let item = NSMenuItem(title: action.name, action: #selector(handleActionClick(_:)), keyEquivalent: "") - item.tag = hashForAction(action) - item.target = self - if let icon = templateSymbol(action.icon) { - item.image = icon - } + let item = makeActionItem(action) menu.addItem(item) } } @@ -382,10 +387,7 @@ class FinderSyncExt: FIFinderSync, @unchecked Sendable { let appsTitle = AppLocalization.localized("Open With") let appsSubMenu = NSMenu(title: appsTitle) for app in config.apps { - let item = NSMenuItem(title: app.name, action: #selector(handleAppClick(_:)), keyEquivalent: "") - item.tag = hashForApp(app) - item.target = self - item.image = cachedAppIcon(app: app) + let item = makeAppItem(app) appsSubMenu.addItem(item) } let appsItem = NSMenuItem(title: appsTitle, action: nil, keyEquivalent: "") @@ -395,10 +397,7 @@ class FinderSyncExt: FIFinderSync, @unchecked Sendable { } else { // 不折叠:直接显示菜单项 for app in config.apps { - let item = NSMenuItem(title: app.name, action: #selector(handleAppClick(_:)), keyEquivalent: "") - item.tag = hashForApp(app) - item.target = self - item.image = cachedAppIcon(app: app) + let item = makeAppItem(app) menu.addItem(item) } } @@ -411,11 +410,7 @@ class FinderSyncExt: FIFinderSync, @unchecked Sendable { let newFilesTitle = AppLocalization.localized("New File") let newFilesSubMenu = NSMenu(title: newFilesTitle) for newFile in config.newFiles { - let item = NSMenuItem(title: newFile.name, action: #selector(handleNewFileClick(_:)), keyEquivalent: "") - item.tag = hashForNewFile(newFile) - item.target = self - item.image = iconProvider.icon(for: newFile.ext, fallbackSymbol: newFile.icon) - item.image?.accessibilityDescription = newFile.name + let item = makeNewFileItem(newFile) newFilesSubMenu.addItem(item) } let newFilesItem = NSMenuItem(title: newFilesTitle, action: nil, keyEquivalent: "") @@ -425,11 +420,7 @@ class FinderSyncExt: FIFinderSync, @unchecked Sendable { } else { // 不折叠:直接显示菜单项 for newFile in config.newFiles { - let item = NSMenuItem(title: newFile.name, action: #selector(handleNewFileClick(_:)), keyEquivalent: "") - item.tag = hashForNewFile(newFile) - item.target = self - item.image = iconProvider.icon(for: newFile.ext, fallbackSymbol: newFile.icon) - item.image?.accessibilityDescription = newFile.name + let item = makeNewFileItem(newFile) menu.addItem(item) } } @@ -442,10 +433,7 @@ class FinderSyncExt: FIFinderSync, @unchecked Sendable { let commonDirsTitle = AppLocalization.localized("Common Dirs") let commonDirsSubMenu = NSMenu(title: commonDirsTitle) for commonDir in config.commonDirs { - let item = NSMenuItem(title: commonDir.name, action: #selector(handleCommonDirClick(_:)), keyEquivalent: "") - item.tag = hashForCommonDir(commonDir) - item.target = self - item.image = loadIcon(named: commonDir.icon, accessibilityDescription: commonDir.name) + let item = makeCommonDirItem(commonDir) commonDirsSubMenu.addItem(item) } let commonDirsItem = NSMenuItem(title: commonDirsTitle, action: nil, keyEquivalent: "") @@ -455,10 +443,7 @@ class FinderSyncExt: FIFinderSync, @unchecked Sendable { } else { // 不折叠:直接显示菜单项 for commonDir in config.commonDirs { - let item = NSMenuItem(title: commonDir.name, action: #selector(handleCommonDirClick(_:)), keyEquivalent: "") - item.tag = hashForCommonDir(commonDir) - item.target = self - item.image = loadIcon(named: commonDir.icon, accessibilityDescription: commonDir.name) + let item = makeCommonDirItem(commonDir) menu.addItem(item) } } @@ -467,6 +452,41 @@ class FinderSyncExt: FIFinderSync, @unchecked Sendable { return menu } + private func makeActionItem(_ action: ActionMenuItem) -> NSMenuItem { + let item = NSMenuItem(title: action.name, action: #selector(handleActionClick(_:)), keyEquivalent: "") + item.tag = hashForAction(action) + item.target = self + if let icon = templateSymbol(action.icon) { + item.image = icon + } + return item + } + + private func makeAppItem(_ app: AppMenuItem) -> NSMenuItem { + let item = NSMenuItem(title: app.name, action: #selector(handleAppClick(_:)), keyEquivalent: "") + item.tag = hashForApp(app) + item.target = self + item.image = cachedAppIcon(app: app) + return item + } + + private func makeNewFileItem(_ newFile: NewFileMenuItem) -> NSMenuItem { + let item = NSMenuItem(title: newFile.name, action: #selector(handleNewFileClick(_:)), keyEquivalent: "") + item.tag = hashForNewFile(newFile) + item.target = self + item.image = iconProvider.icon(for: newFile.ext, fallbackSymbol: newFile.icon) + item.image?.accessibilityDescription = newFile.name + return item + } + + private func makeCommonDirItem(_ commonDir: CommonDirMenuItem) -> NSMenuItem { + let item = NSMenuItem(title: commonDir.name, action: #selector(handleCommonDirClick(_:)), keyEquivalent: "") + item.tag = hashForCommonDir(commonDir) + item.target = self + item.image = loadIcon(named: commonDir.icon, accessibilityDescription: commonDir.name) + return item + } + // MARK: - Menu Item Hash Functions private func hashForAction(_ action: ActionMenuItem) -> Int { diff --git a/RClick/AppState.swift b/RClick/AppState.swift index ad3ad48..2e3e43b 100644 --- a/RClick/AppState.swift +++ b/RClick/AppState.swift @@ -92,7 +92,7 @@ class AppState: ObservableObject, ActionStateProviding { } func getAppItem(rid: String) -> OpenWithApp? { - return apps.first { rid.contains($0.id) } + return apps.first { rid == $0.id } } func getFileType(rid: String) -> NewFile? { diff --git a/RClick/Model/NewFileTypeEntity.swift b/RClick/Model/NewFileTypeEntity.swift index dc37b29..265ea7e 100644 --- a/RClick/Model/NewFileTypeEntity.swift +++ b/RClick/Model/NewFileTypeEntity.swift @@ -50,7 +50,9 @@ final class NewFileTypeEntity { name: newFile.name, icon: newFile.icon, isEnabled: newFile.enabled, - sortOrder: newFile.idx + sortOrder: newFile.idx, + templatePath: newFile.template?.path, + openAppPath: newFile.openApp?.path ) } diff --git a/RClick/Runtime/ConfigService.swift b/RClick/Runtime/ConfigService.swift index e8ca654..8c60a81 100644 --- a/RClick/Runtime/ConfigService.swift +++ b/RClick/Runtime/ConfigService.swift @@ -23,7 +23,11 @@ final class ConfigService { @AppLog(category: "ConfigService") private var logger - let modelContext = ModelContext(SharedDataManager.sharedModelContainer) + let modelContext: ModelContext + + init(modelContext: ModelContext? = nil) { + self.modelContext = modelContext ?? ModelContext(SharedDataManager.sharedModelContainer) + } /// 从 SwiftData 读取全部配置 func load() -> AppConfigData { @@ -57,13 +61,17 @@ final class ConfigService { // NewFiles let newFileDescriptor = FetchDescriptor(sortBy: [SortDescriptor(\.sortOrder)]) data.newFiles = (try? modelContext.fetch(newFileDescriptor))?.map { entity in - NewFile( + var file = NewFile( ext: entity.fileExtension, name: entity.name, enabled: entity.isEnabled, idx: entity.sortOrder, - icon: entity.icon + icon: entity.icon, + id: entity.id ) + file.template = entity.templatePath.map { URL(fileURLWithPath: $0) } + file.openApp = entity.openAppPath.map { URL(fileURLWithPath: $0) } + return file } ?? [] // CommonDirs(含旧图标自动修复) diff --git a/RClick/Runtime/MenuService.swift b/RClick/Runtime/MenuService.swift index 656b257..e81c67c 100644 --- a/RClick/Runtime/MenuService.swift +++ b/RClick/Runtime/MenuService.swift @@ -7,6 +7,7 @@ // import Foundation +import OSLog @MainActor final class MenuService { @@ -26,7 +27,7 @@ final class MenuService { menuVersion += 1 - let config = MenuConfigPayload( + var config = MenuConfigPayload( version: menuVersion, actions: actionMenuItems, apps: appMenuItems, @@ -38,6 +39,16 @@ final class MenuService { commonDirsCollapsed: state.foldCommonDirMenu ) + if let directory = FileManager.default.containerURL(forSecurityApplicationGroupIdentifier: Constants.suitName) { + do { + config.customMenu = try CustomMenu.load( + from: directory.appendingPathComponent("custom_menu.json"), config: config + ) + } catch { + Logger(subsystem: "RClick", category: "MenuService").error("Invalid custom_menu.json; using default menu: \(String(describing: error), privacy: .public)") + } + } + lastMenuSnapshot = try? JSONEncoder().encode(config) return config } diff --git a/RClick/Shared/PermissionChecker.swift b/RClick/Shared/PermissionChecker.swift index 0a56072..1694b67 100644 --- a/RClick/Shared/PermissionChecker.swift +++ b/RClick/Shared/PermissionChecker.swift @@ -26,8 +26,17 @@ public class PermissionChecker { /// 打开辅助功能权限设置 @MainActor public static func openAccessibilitySettings() { - if let url = URL(string: "x-apple.systempreferences:com.apple.preference.security?Privacy_Accessibility") { - NSWorkspace.shared.open(url) + let candidates = [ + "x-apple.systempreferences:com.apple.preference.security?Privacy_Accessibility", + "x-apple.systemsettings:com.apple.settings.PrivacySecurity.extension?Privacy_Accessibility" + ] + for path in candidates { + if let url = URL(string: path), NSWorkspace.shared.open(url) { + return + } + } + if let settingsUrl = NSWorkspace.shared.urlForApplication(withBundleIdentifier: "com.apple.systemsettings") { + NSWorkspace.shared.open(settingsUrl) } } diff --git a/RClickTests/ActionServiceTests.swift b/RClickTests/ActionServiceTests.swift index aeff1ac..f9b0027 100644 --- a/RClickTests/ActionServiceTests.swift +++ b/RClickTests/ActionServiceTests.swift @@ -94,4 +94,24 @@ final class ActionServiceTests { let fetched = try context.fetch(FetchDescriptor()) #expect(fetched.first?.opensNewInstance == true) } + @Test func fileTemplateSurvivesSaveAndReload() throws { + let container = try ModelContainer( + for: AppEntity.self, ActionEntity.self, NewFileTypeEntity.self, CommonDirEntity.self, + configurations: ModelConfiguration(isStoredInMemoryOnly: true) + ) + let service = ConfigService(modelContext: container.mainContext) + var file = NewFile(ext: ".txt", name: "Template", idx: 0, id: "stable-template-id") + file.template = URL(fileURLWithPath: "/tmp/template with spaces.txt") + file.openApp = URL(fileURLWithPath: "/Applications/TextEdit.app") + try service.save(AppConfigData(newFiles: [file])) + + for _ in 0..<2 { + let loaded = try #require(service.load().newFiles.first) + #expect(loaded.id == file.id) + #expect(loaded.template == file.template) + #expect(loaded.openApp == file.openApp) + try service.save(AppConfigData(newFiles: [loaded])) + } + } + } diff --git a/RClickTests/CustomMenuTests.swift b/RClickTests/CustomMenuTests.swift new file mode 100644 index 0000000..13b8f91 --- /dev/null +++ b/RClickTests/CustomMenuTests.swift @@ -0,0 +1,167 @@ +import AppKit +import Testing +@testable import RClick + +@MainActor +struct CustomMenuTests { + private var catalog: MenuConfigPayload { + MenuConfigPayload( + actions: [ActionMenuItem(id: "copy-path", name: "Copy Path", icon: "doc", tag: 1)], + apps: [ + AppMenuItem(id: "vscode-id", name: "VS Code", icon: "app", tag: 2, + appURL: "/Applications/Visual Studio Code.app"), + AppMenuItem(id: "warp-id", name: "Warp", icon: "app", tag: 3, + appURL: "/Applications/Warp.app") + ], + newFiles: [ + NewFileMenuItem(id: "txt-id", name: "TXT", ext: ".txt", icon: "doc"), + NewFileMenuItem(id: "md-id", name: "Markdown", ext: ".md", icon: "doc") + ] + ) + } + + private func fixture() throws -> [MenuNode] { + let url = URL(fileURLWithPath: #filePath) + .deletingLastPathComponent().deletingLastPathComponent() + .appendingPathComponent("examples/custom_menu.json") + return try #require(try CustomMenu.load(from: url, config: catalog)) + } + + private func load(_ json: String, config: MenuConfigPayload? = nil) throws -> [MenuNode]? { + let url = FileManager.default.temporaryDirectory.appendingPathComponent("rclick-menu-\(UUID()).json") + try Data(json.utf8).write(to: url) + defer { try? FileManager.default.removeItem(at: url) } + return try CustomMenu.load(from: url, config: config ?? catalog) + } + + @Test func exampleResolvesHumanReadableReferencesToStableIDs() throws { + let nodes = try fixture() + #expect(nodes.count == 4) + #expect(nodes[0].id == "vscode-id") + #expect(nodes[0].appPath == nil) + #expect(nodes[1].id == "warp-id") + let children = try #require(nodes[3].children) + #expect(children[0].id == "copy-path") + let files = try #require(children[2].children) + #expect(files.map(\.id) == ["txt-id", "md-id"]) + #expect(files.allSatisfy { $0.fileExtension == nil }) + } + + @Test func rendersThreeLevelsAndPreservesLeafDispatch() throws { + let nodes = try fixture() + let menu = NSMenu(title: "RClick") + let target = NSObject() + let action = #selector(NSObject.isEqual(_:)) + let leafIcon = NSImage(size: NSSize(width: 16, height: 16)) + let groupIcon = NSImage(size: NSSize(width: 16, height: 16)) + var leaves: [NSMenuItem] = [] + var references: [String] = [] + var symbols: [String] = [] + CustomMenu.render(nodes, into: menu, makeItem: { type, id in + references.append("\(type.rawValue):\(id)") + let item = NSMenuItem(title: id, action: action, keyEquivalent: "") + item.target = target + item.tag = leaves.count + 10 + item.image = leafIcon + leaves.append(item) + return item + }, loadIcon: { symbol in + symbols.append(symbol) + return groupIcon + }) + #expect(menu.items.map(\.title) == ["用 VS Code 打开", "warp-id", "", "更多"]) + #expect(menu.items[2].isSeparatorItem) + #expect(menu.items[0] === leaves[0]) + #expect(menu.items[0].image === leafIcon) + #expect(menu.items[3].image === groupIcon) + let more = try #require(menu.items[3].submenu) + #expect(more.items.count == 3) + #expect(more.items[0] === leaves[2]) + #expect(more.items[1].isSeparatorItem) + #expect(more.items[2].title == "新建文件") + let files = try #require(more.items[2].submenu) + #expect(files.items.count == 2) + #expect(files.items[0] === leaves[3]) + #expect(files.items[1] === leaves[4]) + #expect(references == ["app:vscode-id", "app:warp-id", "action:copy-path", "new-file:txt-id", "new-file:md-id"]) + #expect(symbols == ["doc.badge.plus", "ellipsis.circle"]) + for (index, leaf) in leaves.enumerated() { + #expect(leaf.action == action) + #expect(leaf.target === target) + #expect(leaf.tag == index + 10) + } + } + + @Test func leafPresentationOverridesPreserveDispatch() throws { + let nodes = try #require(try load(#"[{"type":"item","itemType":"action","id":"copy-path","title":"复制路径","icon":"link"}]"#)) + let menu = NSMenu() + let target = NSObject() + let leaf = NSMenuItem(title: "Original", action: #selector(NSObject.isEqual(_:)), keyEquivalent: "") + leaf.target = target + leaf.tag = 42 + let icon = NSImage(size: NSSize(width: 16, height: 16)) + CustomMenu.render(nodes, into: menu, makeItem: { _, _ in leaf }, loadIcon: { symbol in + #expect(symbol == "link") + return icon + }) + #expect(menu.items.first === leaf) + #expect(leaf.title == "复制路径") + #expect(leaf.image === icon) + #expect(leaf.target === target) + #expect(leaf.tag == 42) + #expect(leaf.action == #selector(NSObject.isEqual(_:))) + } + + @Test func missingFileAndEmptyArrayRemainDistinct() throws { + let missing = FileManager.default.temporaryDirectory.appendingPathComponent("absent-\(UUID()).json") + #expect(try CustomMenu.load(from: missing, config: catalog) == nil) + let empty = try #require(try load("[]")) + #expect(empty.isEmpty) + let menu = NSMenu() + CustomMenu.render(empty, into: menu, makeItem: { _, _ in + Issue.record("An empty layout must not construct leaves") + return nil + }, loadIcon: { _ in nil }) + #expect(menu.items.isEmpty) + } + + @Test(arguments: [ + "not JSON", + #"[{"type":"unknown"}]"#, + #"[{"type":"submenu","title":" " ,"children":[]}]"#, + #"[{"type":"submenu","title":"Missing children"}]"#, + #"[{"type":"separator","title":"Unexpected"}]"#, + #"[{"type":"item","itemType":"app"}]"#, + #"[{"type":"item","itemType":"app","id":"vscode-id","appPath":"/Applications/Visual Studio Code.app"}]"#, + #"[{"type":"item","itemType":"action","fileExtension":".txt"}]"#, + #"[{"type":"item","itemType":"action","id":"unknown"}]"#, + #"[{"type":"item","itemType":"action","id":"copy-path","title":" "}]"# + ]) + func invalidLayoutsThrow(json: String) { + #expect(throws: (any Error).self) { try load(json) } + } + + @Test func ambiguousReferenceThrows() { + let config = MenuConfigPayload(newFiles: [ + NewFileMenuItem(id: "one", name: "One", ext: ".txt", icon: "doc"), + NewFileMenuItem(id: "two", name: "Two", ext: ".txt", icon: "doc") + ]) + #expect(throws: (any Error).self) { + try load(#"[{"type":"item","itemType":"new-file","fileExtension":".txt"}]"#, config: config) + } + } + + @Test func oldPayloadDecodesAndCustomTreeRoundTrips() throws { + let oldJSON = #"{"version":1,"actions":[],"apps":[],"newFiles":[],"commonDirs":[],"actionsCollapsed":false,"appsCollapsed":false,"newFilesCollapsed":true,"commonDirsCollapsed":true}"# + let old = try JSONDecoder().decode(MenuConfigPayload.self, from: Data(oldJSON.utf8)) + #expect(old.customMenu == nil) + var config = catalog + config.customMenu = try fixture() + let encoder = JSONEncoder() + encoder.outputFormatting = .sortedKeys + let data = try encoder.encode(config) + let decoded = try JSONDecoder().decode(MenuConfigPayload.self, from: data) + #expect(try encoder.encode(decoded) == data) + #expect(decoded.customMenu?[0].id == "vscode-id") + } +} diff --git a/README.md b/README.md index 6079d8d..d48c688 100644 --- a/README.md +++ b/README.md @@ -133,3 +133,9 @@ We welcome contributions! Here's how you can help: - **[Security Policy](SECURITY.md)** — How to responsibly report vulnerabilities. Please read our [Code of Conduct](CODE_OF_CONDUCT.md) before participating. + +## 自定义菜单层级 + +支持一级常用项与任意嵌套子菜单混排、分隔线及自定义标题/图标。 +将声明式 `custom_menu.json` 放入 App Group 容器即可生效;缺失或无效时保留原有菜单。 +参见 [配置示例与使用说明](examples/README.md)。 diff --git a/Shared/CustomMenu.swift b/Shared/CustomMenu.swift new file mode 100644 index 0000000..fc579ef --- /dev/null +++ b/Shared/CustomMenu.swift @@ -0,0 +1,108 @@ +import AppKit + +/// Layout only: leaves reference existing configured items, never executable commands. +struct MenuNode: Codable { + enum Kind: String, Codable { case item, submenu, separator } + + var type: Kind + var title: String? + var icon: String? + var itemType: MenuItemType? + var id: String? + var appPath: String? + var fileExtension: String? + var children: [MenuNode]? + + /// Resolve human-friendly selectors to the same IDs used by existing click handlers. + func resolved(using config: MenuConfigPayload) throws -> MenuNode { + var node = self + let selectors = [id, appPath, fileExtension].compactMap { $0 } + switch type { + case .separator: + guard title == nil, icon == nil, itemType == nil, selectors.isEmpty, children == nil else { + throw CustomMenuError.invalid("separator cannot contain other fields") + } + case .submenu: + guard let title, !title.trimmingCharacters(in: .whitespacesAndNewlines).isEmpty, + let children, itemType == nil, selectors.isEmpty else { + throw CustomMenuError.invalid("submenu requires a title and children, without an item reference") + } + node.children = try children.map { try $0.resolved(using: config) } + case .item: + guard let itemType, children == nil, selectors.count == 1, + !selectors[0].isEmpty else { + throw CustomMenuError.invalid("item requires itemType and exactly one of id, appPath, fileExtension") + } + let matches: [String] + switch itemType { + case .action: + guard appPath == nil, fileExtension == nil else { throw CustomMenuError.invalid("action requires id") } + matches = config.actions.filter { $0.id == id }.map(\.id) + case .app: + guard fileExtension == nil else { throw CustomMenuError.invalid("app requires id or appPath") } + matches = config.apps.filter { id != nil ? $0.id == id : $0.appURL == appPath }.map(\.id) + case .newFile: + guard appPath == nil else { throw CustomMenuError.invalid("new-file requires id or fileExtension") } + matches = config.newFiles.filter { id != nil ? $0.id == id : $0.ext == fileExtension }.map(\.id) + case .commonDir: + guard appPath == nil, fileExtension == nil else { throw CustomMenuError.invalid("common-dir requires id") } + matches = config.commonDirs.filter { $0.id == id }.map(\.id) + } + guard matches.count == 1 else { + throw CustomMenuError.invalid("\(itemType.rawValue) reference '\(selectors[0])' matched \(matches.count) enabled items") + } + if let title, title.trimmingCharacters(in: .whitespacesAndNewlines).isEmpty { + throw CustomMenuError.invalid("item title cannot be blank") + } + node.id = matches[0] + node.appPath = nil + node.fileExtension = nil + } + return node + } +} + +enum CustomMenuError: Error, CustomStringConvertible { + case invalid(String) + var description: String { + switch self { case .invalid(let message): return message } + } +} + +enum CustomMenu { + /// Missing files mean legacy layout. Invalid files throw so callers can log and fall back. + static func load(from url: URL, config: MenuConfigPayload) throws -> [MenuNode]? { + let data: Data + do { + data = try Data(contentsOf: url) + } catch CocoaError.fileReadNoSuchFile { + return nil + } + let nodes = try JSONDecoder().decode([MenuNode].self, from: data) + return try nodes.map { try $0.resolved(using: config) } + } + + /// Both nested and top-level leaves use the extension's existing item factories. + static func render(_ nodes: [MenuNode], into menu: NSMenu, + makeItem: (MenuItemType, String) -> NSMenuItem?, + loadIcon: (String) -> NSImage?) { + for node in nodes { + let item: NSMenuItem + switch node.type { + case .separator: + item = .separator() + case .submenu: + item = NSMenuItem(title: node.title ?? "", action: nil, keyEquivalent: "") + let submenu = NSMenu(title: item.title) + render(node.children ?? [], into: submenu, makeItem: makeItem, loadIcon: loadIcon) + item.submenu = submenu + case .item: + guard let type = node.itemType, let id = node.id, let leaf = makeItem(type, id) else { continue } + item = leaf + if let title = node.title { item.title = title } + } + if let icon = node.icon { item.image = loadIcon(icon) } + menu.addItem(item) + } + } +} diff --git a/Shared/Messager.swift b/Shared/Messager.swift index ce9e617..3b5b93f 100644 --- a/Shared/Messager.swift +++ b/Shared/Messager.swift @@ -57,6 +57,8 @@ struct MenuConfigPayload: Codable { let newFilesCollapsed: Bool /// 是否折叠常用目录菜单(默认 true) let commonDirsCollapsed: Bool + /// nil preserves the legacy layout; [] intentionally renders no items. + var customMenu: [MenuNode]? init( version: Int = 1, diff --git a/examples/README.md b/examples/README.md new file mode 100644 index 0000000..7baa096 --- /dev/null +++ b/examples/README.md @@ -0,0 +1,50 @@ +# 自定义 Finder 菜单 + +`custom_menu.json` 是菜单根节点数组;顺序就是显示顺序。示例将 VS Code、Warp 平铺,次要动作放在“更多”,TXT / Markdown 放在第三级“新建文件”。 + +## 使用 + +1. 先在 RClick 设置中添加 VS Code、Warp,启用 Copy Path、TXT 和 Markdown。应用路径要与配置完全一致;不存在、禁用或有歧义的引用会导致整份配置回退,控制台会记录原因。 +2. 将本目录的 `custom_menu.json` 复制到 App Group 根目录: + + ```sh + cp examples/custom_menu.json "$HOME/Library/Group Containers/group.cn.wflixu.RClick/custom_menu.json" + ``` + + 目录应由正常签名并运行过的 RClick 创建。实际读取使用 `FileManager.containerURL(forSecurityApplicationGroupIdentifier:)`;若改变 App Group 标识,使用对应容器。 +3. 保持主程序运行。扩展每 10 秒心跳会触发主程序重新读取;等待一次心跳后重新打开右键菜单,或重启 RClick。已展开的菜单不会即时重绘。 +4. 删除或移走该文件即可恢复原来的分类顺序与折叠设置。JSON 错误、结构错误、无法读取或引用不唯一也会回退;`[]` 则有意显示空菜单。 + +## 节点 + +| type | 字段 | 含义 | +| --- | --- | --- | +| `item` | `itemType` + 一个引用字段,可选 `title` / `icon` | 引用已配置项目,保留原来的点击逻辑 | +| `submenu` | `title`、`children`,可选 `icon` | 自定义子菜单,可递归嵌套 | +| `separator` | 无其他字段 | 分隔线 | + +`itemType` 与引用字段: + +- `app`:`appPath`(精确绝对路径,例如 `/Applications/Warp.app`)或持久化 `id`。 +- `action`:`id`,例如 `copy-path`、`delete-direct`、`hide`、`unhide`、`airdrop`。必须在设置中启用。 +- `new-file`:`fileExtension`(包含点,例如 `.txt`)或持久化 `id`。同扩展名有多个模板时必须用 `id`。 +- `common-dir`:`id`,内置值包括 `home`、`desktop`、`documents`、`downloads`、`applications`;须先打开常用目录开关。 + +一个叶子只能使用一种引用方式。自定义项目 ID 来自现有 SwiftData 配置;没有新增 ID 编辑界面。标题原样显示,图标使用扩展内的 Asset 名称或 SF Symbol(例如 `folder`);省略时叶子沿用原图标,无效图标不会阻止菜单构建。 + +配置只控制布局:未列出的项目不显示,原有折叠开关在自定义布局生效时不参与排列。应用参数、文件模板、权限处理继续由主程序现有配置与执行链负责,JSON 不定义命令或修改参数执行语义。 + +## 实现与验证 + +`Shared/CustomMenu.swift` 定义共享 `Codable` 模型、引用校验与递归 NSMenu 构建;`MenuService` 在原有配置推送时读取文件,解析为稳定 ID 后放入可选 `MenuConfigPayload.customMenu`。扩展复用旧菜单的四类叶子工厂和点击处理器,保留 ID、类型、Finder 目标路径及触发来源。此模型可作为以后树形编辑 UI 的存储格式,无需迁移现有业务实体。 + +`RClickTests/CustomMenuTests.swift` 使用同一示例验证解析、三级 NSMenu 结构与叶子绑定;`ActionServiceTests` 验证模板 ID / 路径经过保存与重载仍保持一致。测试不等同于签名安装后的 Finder 实机验收。 + +本地验证命令: + +```sh +xcodebuild -project RClick.xcodeproj -scheme RClick -configuration Release +xcodebuild -project RClick.xcodeproj -scheme RClick -configuration Debug -destination 'platform=macOS' test +``` + +若 Fork 后尚未配置自己的签名团队 / provisioning profile,可在命令末尾加 `CODE_SIGNING_ALLOWED=NO` 验证编译与单元测试。关闭签名不能替代 Finder 扩展的正常签名、安装和实机验证;仓库仍保留原来的签名设置。 diff --git a/examples/custom_menu.json b/examples/custom_menu.json new file mode 100644 index 0000000..788ed8c --- /dev/null +++ b/examples/custom_menu.json @@ -0,0 +1,32 @@ +[ + { + "type": "item", + "itemType": "app", + "appPath": "/Applications/Visual Studio Code.app", + "title": "用 VS Code 打开" + }, + { + "type": "item", + "itemType": "app", + "appPath": "/Applications/Warp.app" + }, + { "type": "separator" }, + { + "type": "submenu", + "title": "更多", + "icon": "ellipsis.circle", + "children": [ + { "type": "item", "itemType": "action", "id": "copy-path" }, + { "type": "separator" }, + { + "type": "submenu", + "title": "新建文件", + "icon": "doc.badge.plus", + "children": [ + { "type": "item", "itemType": "new-file", "fileExtension": ".txt" }, + { "type": "item", "itemType": "new-file", "fileExtension": ".md" } + ] + } + ] + } +] diff --git a/examples/screenshots/menu-preview-1.png b/examples/screenshots/menu-preview-1.png new file mode 100644 index 0000000000000000000000000000000000000000..5b78fdd5475e0a0a92d93427850016590a4cb521 GIT binary patch literal 435575 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 z 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

eo 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 Ur3Ul#7T{xb*7mo;GdJ%23#1IusQ>@~ literal 0 HcmV?d00001 diff --git a/examples/screenshots/menu-preview-2.png b/examples/screenshots/menu-preview-2.png new file mode 100644 index 0000000000000000000000000000000000000000..1a9ed21afd216fcd0c71ce3e4b72f7aad2c4200e GIT binary patch literal 456156 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 z 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%0D(Z{)H10>T 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 JLo$-ZT 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

qe@E7D7*O>9fqTA*M~9Llr+%X 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

xfNTAcn+!F(q9g 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 z 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
86*ju|Vp+uM$aWDAgq}=9?!@h^&jW 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∨`{|*>+E}ui=kejF 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%0AkevS7y97cn|% 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 Date: Sun, 13 Sep 2026 01:02:13 +0800 Subject: [PATCH 03/22] feat(settings): add Advanced Menu Layout section with config actions and AI tip - Add 'Advanced Menu Layout' section in GeneralSettingsTabView with 'Open Config' and 'Reveal in Finder' buttons - Automatically generate initial custom_menu.json based on active apps/actions if missing, without overwriting existing files - Add friendly footer tip guiding users to leverage AI assistants (ChatGPT/Claude) for easy menu customization - Complete multilingual localizations in English, Chinese, French, Spanish, and Japanese - Add unit tests in CustomMenuTests covering safe initialization and non-overwrite semantics --- RClick/Localizable.xcstrings | 315 +++++++++++++++++++ RClick/Runtime/MenuService.swift | 41 ++- RClick/Settings/GeneralSettingsTabView.swift | 48 +++ RClickTests/CustomMenuTests.swift | 32 ++ examples/README.md | 6 + 5 files changed, 440 insertions(+), 2 deletions(-) diff --git a/RClick/Localizable.xcstrings b/RClick/Localizable.xcstrings index 663fd6e..e41417d 100644 --- a/RClick/Localizable.xcstrings +++ b/RClick/Localizable.xcstrings @@ -1,6 +1,321 @@ { "sourceLanguage": "en", "strings": { + "Advanced Menu Layout": { + "extractionState": "manual", + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Advanced Menu Layout" + } + }, + "es": { + "stringUnit": { + "state": "translated", + "value": "Diseño avanzado del menú" + } + }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Disposition avancée du menu" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "詳細なメニューレイアウト" + } + }, + "zh-Hans": { + "stringUnit": { + "state": "translated", + "value": "高级菜单布局" + } + } + } + }, + "Open Config": { + "extractionState": "manual", + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Open Config" + } + }, + "es": { + "stringUnit": { + "state": "translated", + "value": "Abrir configuración" + } + }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Ouvrir la configuration" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "設定ファイルを開く" + } + }, + "zh-Hans": { + "stringUnit": { + "state": "translated", + "value": "打开配置" + } + } + } + }, + "Reveal in Finder": { + "extractionState": "manual", + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Reveal in Finder" + } + }, + "es": { + "stringUnit": { + "state": "translated", + "value": "Mostrar en Finder" + } + }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Afficher dans le Finder" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "Finderに表示" + } + }, + "zh-Hans": { + "stringUnit": { + "state": "translated", + "value": "在访达中显示" + } + } + } + }, + "Customize top-level items and nested submenus with custom_menu.json. 💡 Tip: Give this file to an AI assistant (such as ChatGPT / Claude) to help arrange your menu.": { + "extractionState": "manual", + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Customize top-level items and nested submenus with custom_menu.json. 💡 Tip: Give this file to an AI assistant (such as ChatGPT / Claude) to help arrange your menu." + } + }, + "es": { + "stringUnit": { + "state": "translated", + "value": "Personaliza los elementos del menú principal y los submenús anidados con custom_menu.json. 💡 Consejo: Comparte este archivo con un asistente de IA (como ChatGPT / Claude) para que te ayude a organizar el menú." + } + }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Personnalisez les éléments du menu principal et les sous-menus imbriqués avec custom_menu.json. 💡 Astuce : Confiez ce fichier à un assistant IA (comme ChatGPT / Claude) pour vous aider à organiser votre menu." + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "custom_menu.jsonで最上位の項目や多階層のサブメニューをカスタマイズできます。💡 ヒント:このファイルをAIアシスタント(ChatGPT / Claudeなど)に渡すと、メニュー構成の作成を手伝ってもらえます。" + } + }, + "zh-Hans": { + "stringUnit": { + "state": "translated", + "value": "通过 custom_menu.json 自定义一级平铺与多层子菜单。💡 提示:可直接将此文件提供给 AI 助手(如 ChatGPT / Claude)帮你一键编排结构。" + } + } + } + }, + "Changes appear after reopening the menu within 10 seconds. Remove the file to restore the default layout.": { + "extractionState": "manual", + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Changes appear after reopening the menu within 10 seconds. Remove the file to restore the default layout." + } + }, + "es": { + "stringUnit": { + "state": "translated", + "value": "Los cambios aparecerán al volver a abrir el menú, en un plazo de 10 segundos. Elimina el archivo para restaurar el diseño predeterminado." + } + }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Les modifications apparaissent à la réouverture du menu, dans un délai de 10 secondes. Supprimez le fichier pour rétablir la disposition par défaut." + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "変更は10秒以内に反映されます。メニューを開き直してください。ファイルを削除すると標準のレイアウトに戻ります。" + } + }, + "zh-Hans": { + "stringUnit": { + "state": "translated", + "value": "更改会在 10 秒内重新打开菜单时生效。删除此文件即可恢复默认布局。" + } + } + } + }, + "Unable to Open Menu Config": { + "extractionState": "manual", + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Unable to Open Menu Config" + } + }, + "es": { + "stringUnit": { + "state": "translated", + "value": "No se puede abrir la configuración del menú" + } + }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Impossible d’ouvrir la configuration du menu" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "メニュー設定ファイルを開けません" + } + }, + "zh-Hans": { + "stringUnit": { + "state": "translated", + "value": "无法打开菜单配置" + } + } + } + }, + "The shared configuration folder is unavailable.": { + "extractionState": "manual", + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "The shared configuration folder is unavailable." + } + }, + "es": { + "stringUnit": { + "state": "translated", + "value": "La carpeta de configuración compartida no está disponible." + } + }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Le dossier de configuration partagé est indisponible." + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "共有設定フォルダを利用できません。" + } + }, + "zh-Hans": { + "stringUnit": { + "state": "translated", + "value": "共享配置文件夹不可用。" + } + } + } + }, + "No application could open the configuration file. Try Reveal in Finder and choose a text editor.": { + "extractionState": "manual", + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "No application could open the configuration file. Try Reveal in Finder and choose a text editor." + } + }, + "es": { + "stringUnit": { + "state": "translated", + "value": "Ninguna aplicación pudo abrir el archivo de configuración. Usa «Mostrar en Finder» y elige un editor de texto." + } + }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Aucune application n’a pu ouvrir le fichier de configuration. Utilisez « Afficher dans le Finder » et choisissez un éditeur de texte." + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "設定ファイルを開けるアプリケーションがありません。「Finderに表示」を使い、テキストエディタを選択してください。" + } + }, + "zh-Hans": { + "stringUnit": { + "state": "translated", + "value": "没有应用能够打开配置文件。请使用“在访达中显示”,然后选择文本编辑器打开。" + } + } + } + }, + "More": { + "extractionState": "manual", + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "More" + } + }, + "es": { + "stringUnit": { + "state": "translated", + "value": "Más" + } + }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Plus" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "その他" + } + }, + "zh-Hans": { + "stringUnit": { + "state": "translated", + "value": "更多" + } + } + } + }, "": { "extractionState": "stale", "localizations": { diff --git a/RClick/Runtime/MenuService.swift b/RClick/Runtime/MenuService.swift index e81c67c..b5be5f5 100644 --- a/RClick/Runtime/MenuService.swift +++ b/RClick/Runtime/MenuService.swift @@ -18,6 +18,43 @@ final class MenuService { var lastSnapshot: Data? { lastMenuSnapshot } + static var customMenuURL: URL? { + FileManager.default.containerURL(forSecurityApplicationGroupIdentifier: Constants.suitName)? + .appendingPathComponent("custom_menu.json") + } + + /// Seed only once, using configured IDs so the example works on this installation. + static func prepareCustomMenu(at url: URL, config: MenuConfigPayload) throws { + if FileManager.default.fileExists(atPath: url.path) { return } + var nodes = config.apps.map { MenuNode(type: .item, itemType: .app, id: $0.id) } + nodes += config.actions.map { MenuNode(type: .item, itemType: .action, id: $0.id) } + var groups: [MenuNode] = [] + if !config.newFiles.isEmpty { + groups.append(MenuNode(type: .submenu, title: AppLocalization.localized("New File"), + icon: "doc.badge.plus", children: config.newFiles.map { + MenuNode(type: .item, itemType: .newFile, id: $0.id) + })) + } + if !config.commonDirs.isEmpty { + groups.append(MenuNode(type: .submenu, title: AppLocalization.localized("Common Dirs"), + icon: "folder", children: config.commonDirs.map { + MenuNode(type: .item, itemType: .commonDir, id: $0.id) + })) + } + if !nodes.isEmpty { nodes.append(MenuNode(type: .separator)) } + nodes.append(MenuNode(type: .submenu, title: AppLocalization.localized("More"), + icon: "ellipsis.circle", children: groups)) + let encoder = JSONEncoder() + encoder.outputFormatting = [.prettyPrinted, .sortedKeys, .withoutEscapingSlashes] + let data = try encoder.encode(nodes) + do { + // Exclusive creation also protects edits if another writer wins the race. + try data.write(to: url, options: .withoutOverwriting) + } catch CocoaError.fileWriteFileExists { + return + } + } + /// 从 AppState 实时构建菜单配置 func buildConfig(from state: AppState) -> MenuConfigPayload { let actionMenuItems = state.actions.filter(\.enabled).map { $0.toActionMenuItem() } @@ -39,10 +76,10 @@ final class MenuService { commonDirsCollapsed: state.foldCommonDirMenu ) - if let directory = FileManager.default.containerURL(forSecurityApplicationGroupIdentifier: Constants.suitName) { + if let url = Self.customMenuURL { do { config.customMenu = try CustomMenu.load( - from: directory.appendingPathComponent("custom_menu.json"), config: config + from: url, config: config ) } catch { Logger(subsystem: "RClick", category: "MenuService").error("Invalid custom_menu.json; using default menu: \(String(describing: error), privacy: .public)") diff --git a/RClick/Settings/GeneralSettingsTabView.swift b/RClick/Settings/GeneralSettingsTabView.swift index a345a61..31d40c8 100644 --- a/RClick/Settings/GeneralSettingsTabView.swift +++ b/RClick/Settings/GeneralSettingsTabView.swift @@ -24,6 +24,8 @@ struct GeneralSettingsTabView: View { @State private var finderSyncStatus: PermissionStatus = .unknown @State private var accessibilityStatus: PermissionStatus = .unknown @State private var showFolderPermissionsSheet = false + @State private var menuConfigError: String? + @State private var showMenuConfigError = false @State private var showDirImporter = false @State private var wrongFold = false @@ -92,6 +94,26 @@ struct GeneralSettingsTabView: View { .fixedSize(horizontal: false, vertical: true) } + Section { + HStack { + Button(AppLocalization.localized("Open Config")) { + openMenuConfig(reveal: false) + } + Button(AppLocalization.localized("Reveal in Finder")) { + openMenuConfig(reveal: true) + } + } + } header: { + Text(appLocalized: "Advanced Menu Layout") + } footer: { + VStack(alignment: .leading, spacing: 6) { + Text(appLocalized: "Customize top-level items and nested submenus with custom_menu.json. 💡 Tip: Give this file to an AI assistant (such as ChatGPT / Claude) to help arrange your menu.") + Text(appLocalized: "Changes appear after reopening the menu within 10 seconds. Remove the file to restore the default layout.") + } + .foregroundStyle(.secondary) + .fixedSize(horizontal: false, vertical: true) + } + // MARK: - 第三组:设置管理 Section { // 备份 @@ -159,11 +181,37 @@ struct GeneralSettingsTabView: View { } message: { Text(appLocalized: "Folder access permission is required to use this feature.") } + .alert(AppLocalization.localized("Unable to Open Menu Config"), isPresented: $showMenuConfigError) { + Button(AppLocalization.localized("OK"), role: .cancel) {} + } message: { + Text(menuConfigError ?? "") + } .sheet(isPresented: $showFolderPermissionsSheet) { FolderPermissionsSheetView(bookmarkManager: bookmarkManager) } } + private func openMenuConfig(reveal: Bool) { + do { + guard let url = MenuService.customMenuURL else { + menuConfigError = AppLocalization.localized("The shared configuration folder is unavailable.") + showMenuConfigError = true + return + } + try MenuService.prepareCustomMenu(at: url, config: RCRuntime.shared.menuService.buildConfig(from: store)) + NotificationCenter.default.post(name: .menuConfigShouldUpdate, object: nil) + if reveal { + NSWorkspace.shared.activateFileViewerSelecting([url]) + } else if !NSWorkspace.shared.open(url) { + menuConfigError = AppLocalization.localized("No application could open the configuration file. Try Reveal in Finder and choose a text editor.") + showMenuConfigError = true + } + } catch { + menuConfigError = error.localizedDescription + showMenuConfigError = true + } + } + // MARK: - 权限状态检测 private func updatePermissionStatus() { diff --git a/RClickTests/CustomMenuTests.swift b/RClickTests/CustomMenuTests.swift index 13b8f91..e6a83b1 100644 --- a/RClickTests/CustomMenuTests.swift +++ b/RClickTests/CustomMenuTests.swift @@ -164,4 +164,36 @@ struct CustomMenuTests { #expect(try encoder.encode(decoded) == data) #expect(decoded.customMenu?[0].id == "vscode-id") } + @Test func preparesUsableExampleWithoutOverwritingExistingConfig() throws { + let url = FileManager.default.temporaryDirectory.appendingPathComponent("rclick-seed-\(UUID()).json") + defer { try? FileManager.default.removeItem(at: url) } + try MenuService.prepareCustomMenu(at: url, config: catalog) + let nodes = try #require(try CustomMenu.load(from: url, config: catalog)) + #expect(nodes.prefix(3).map(\.id) == ["vscode-id", "warp-id", "copy-path"]) + #expect(nodes[3].type == .separator) + let more = try #require(nodes.last?.children) + #expect(more.first?.children?.map(\.id) == ["txt-id", "md-id"]) + + // Even malformed user content is preserved for editing, never replaced by a seed. + let edited = Data("unfinished user edit".utf8) + try edited.write(to: url) + try MenuService.prepareCustomMenu(at: url, config: catalog) + #expect(try Data(contentsOf: url) == edited) + } + + @Test func emptyCatalogProducesValidExampleAndWriteErrorsPropagate() throws { + let url = FileManager.default.temporaryDirectory.appendingPathComponent("rclick-empty-\(UUID()).json") + defer { try? FileManager.default.removeItem(at: url) } + try MenuService.prepareCustomMenu(at: url, config: MenuConfigPayload()) + let nodes = try #require(try CustomMenu.load(from: url, config: MenuConfigPayload())) + #expect(nodes.count == 1) + #expect(nodes.first?.type == .submenu) + #expect(nodes.first?.children?.isEmpty == true) + let missingParent = FileManager.default.temporaryDirectory + .appendingPathComponent("absent-\(UUID())/custom_menu.json") + #expect(throws: (any Error).self) { + try MenuService.prepareCustomMenu(at: missingParent, config: catalog) + } + } + } diff --git a/examples/README.md b/examples/README.md index 7baa096..32ee307 100644 --- a/examples/README.md +++ b/examples/README.md @@ -4,6 +4,12 @@ ## 使用 +推荐从 **设置 → 通用 → 高级菜单布局** 点击“打开配置”,系统会用默认关联应用打开 JSON;“在访达中显示”会选中文件。两个入口在文件不存在时都会基于当前已配置项目生成可用示例,保留已有文件(包括尚未编辑完成的 JSON)。首次生成的布局会立即推送;之后保存修改,等待最多一次 10 秒心跳再重新打开菜单。 + +示例将当前应用和动作平铺,文件模板与常用目录放入“更多”下的子菜单。可直接把 JSON 交给 AI 助手调整结构。若尚未配置任何项目,会生成空的“更多”子菜单。 + +以下是手动安装仓库示例的方法: + 1. 先在 RClick 设置中添加 VS Code、Warp,启用 Copy Path、TXT 和 Markdown。应用路径要与配置完全一致;不存在、禁用或有歧义的引用会导致整份配置回退,控制台会记录原因。 2. 将本目录的 `custom_menu.json` 复制到 App Group 根目录: From 1123e2e84724a7a0d4b477ce9b8761263ce9009b Mon Sep 17 00:00:00 2001 From: Juns <92599167+Juns-g@users.noreply.github.com> Date: Sun, 13 Sep 2026 01:38:30 +0800 Subject: [PATCH 04/22] fix: observe mounted volumes and their lifecycle in Finder Sync Register each mounted volume explicitly and apply workspace mount, unmount and rename paths without trusting stale unmount enumeration. Add lifecycle regression coverage and document the real DMG probe and remaining signed Finder verification. Fixes #148 Fixes #150 --- FinderSyncExt/FinderSyncExt.swift | 24 ++--- RClickTests/MountedVolumeObserverTests.swift | 93 ++++++++++++++++++++ Shared/MountedVolumeObserver.swift | 65 ++++++++++++++ specs/external-volumes-observation.md | 51 +++++++++++ 4 files changed, 221 insertions(+), 12 deletions(-) create mode 100644 RClickTests/MountedVolumeObserverTests.swift create mode 100644 Shared/MountedVolumeObserver.swift create mode 100644 specs/external-volumes-observation.md diff --git a/FinderSyncExt/FinderSyncExt.swift b/FinderSyncExt/FinderSyncExt.swift index ba3d482..657936a 100644 --- a/FinderSyncExt/FinderSyncExt.swift +++ b/FinderSyncExt/FinderSyncExt.swift @@ -23,6 +23,8 @@ private let logger = Logger( /// 只负责菜单渲染和事件转发,不读取 SwiftData class FinderSyncExt: FIFinderSync, @unchecked Sendable { + private var volumeObserver: MountedVolumeObserver? + // MARK: - Properties /// 菜单配置缓存(内存缓存,从 Main App 推送) @@ -84,19 +86,17 @@ class FinderSyncExt: FIFinderSync, @unchecked Sendable { // MARK: - Directory Observing - /// 设置监听目录(全盘监听) - /// - /// Observing "/" covers every reachable folder — /Users, /Applications, - /// /opt, /tmp, external and network volumes (mounted under /Volumes) — - /// which is what the original per-path list intended but missed for - /// anything on the system volume outside /Users. FileProvider-backed - /// locations (iCloud Drive, synced Desktop & Documents) still get no - /// FinderSync menus; that is a macOS restriction on all FinderSync - /// extensions, not something an observation URL can change. + /// Register each mounted volume explicitly; filesystem ancestry alone is not + /// a reliable observation boundary for Finder Sync across mount points. private func setupObservingDirectories() { - let directories: Set = [URL(fileURLWithPath: "/")] - FIFinderSyncController.default().directoryURLs = directories - logger.info("Observing directories: \(directories.map { $0.path })") + // Finder Sync requires an initial set during extension startup. + FIFinderSyncController.default().directoryURLs = [URL(fileURLWithPath: "/")] + Task { @MainActor [weak self] in + self?.volumeObserver = MountedVolumeObserver { directories in + FIFinderSyncController.default().directoryURLs = directories + logger.info("Observing \(directories.count) filesystem roots") + } + } } // MARK: - Message Handling diff --git a/RClickTests/MountedVolumeObserverTests.swift b/RClickTests/MountedVolumeObserverTests.swift new file mode 100644 index 0000000..76e54ae --- /dev/null +++ b/RClickTests/MountedVolumeObserverTests.swift @@ -0,0 +1,93 @@ +import AppKit +import Testing +@testable import RClick + +@MainActor +struct MountedVolumeObserverTests { + @Test func tracksStartupMountRenameAndUnmountWithoutRestart() { + let center = NotificationCenter() + let root = URL(fileURLWithPath: "/") + let disk = URL(fileURLWithPath: "/Volumes/External Disk") + let nas = URL(fileURLWithPath: "/Volumes/NAS") + let dmg = URL(fileURLWithPath: "/Volumes/Installer") + let renamed = URL(fileURLWithPath: "/Volumes/Renamed Disk") + let custom = URL(fileURLWithPath: "/mnt/nfs") + var volumes: [URL]? = [root, disk, nas, custom] + var updates: [Set] = [] + let observer = MountedVolumeObserver(center: center, mountedVolumes: { volumes }) { + updates.append($0) + } + withExtendedLifetime(observer) { + #expect(updates.last == [root, disk, nas, custom]) + volumes?.append(dmg) + center.post(name: NSWorkspace.didMountNotification, object: nil) + #expect(updates.last == [root, disk, nas, custom, dmg]) + volumes = [root, renamed, nas, custom, dmg] + center.post(name: NSWorkspace.didRenameVolumeNotification, object: nil) + #expect(updates.last == [root, renamed, nas, custom, dmg]) + volumes = [root, nas, custom] + center.post(name: NSWorkspace.didUnmountNotification, object: nil) + #expect(updates.last == [root, nas, custom]) + #expect(updates.count == 4) + center.post(name: NSWorkspace.didMountNotification, object: nil) + #expect(updates.count == 4) + volumes = nil + center.post(name: NSWorkspace.didUnmountNotification, object: nil) + #expect(updates.last == [root, nas, custom]) + #expect(updates.count == 4) + volumes = [] + center.post(name: NSWorkspace.didUnmountNotification, object: nil) + #expect(updates.last == [root]) + } + } + + @Test func failedInitialEnumerationRecoversAndObserversAreReleased() { + let center = NotificationCenter() + var volumes: [URL]? + var reads = 0 + var updates: [Set] = [] + var observer: MountedVolumeObserver? = MountedVolumeObserver(center: center, mountedVolumes: { + reads += 1 + return volumes + }, update: { updates.append($0) }) + weak var weakObserver = observer + #expect(reads == 1) + #expect(updates.last == [URL(fileURLWithPath: "/")]) + let nas = URL(fileURLWithPath: "/Volumes/Reconnected NAS") + let existing = URL(fileURLWithPath: "/Volumes/Already Mounted") + volumes = [nas, existing] + center.post(name: NSWorkspace.didMountNotification, object: nil, + userInfo: [NSWorkspace.volumeURLUserInfoKey: nas]) + #expect(reads == 2) + #expect(updates.last == [URL(fileURLWithPath: "/"), nas, existing]) + observer = nil + #expect(weakObserver == nil) + center.post(name: NSWorkspace.didMountNotification, object: nil) + #expect(reads == 2) + } + @Test func notificationPathsOverrideStaleVolumeEnumeration() { + let center = NotificationCenter() + let root = URL(fileURLWithPath: "/") + let old = URL(fileURLWithPath: "/Volumes/Old") + let new = URL(fileURLWithPath: "/Volumes/New") + var snapshot = [old] + var latest: Set = [] + let observer = MountedVolumeObserver(center: center, mountedVolumes: { snapshot }) { latest = $0 } + withExtendedLifetime(observer) { + // Real NSWorkspace unmount notifications can precede the enumeration update. + center.post(name: NSWorkspace.didUnmountNotification, object: nil, + userInfo: [NSWorkspace.volumeURLUserInfoKey: old]) + #expect(latest == [root]) + snapshot = [] + center.post(name: NSWorkspace.didMountNotification, object: nil, + userInfo: [NSWorkspace.volumeURLUserInfoKey: old]) + #expect(latest == [root, old]) + snapshot = [old] + center.post(name: NSWorkspace.didRenameVolumeNotification, object: nil, + userInfo: [NSWorkspace.volumeURLUserInfoKey: new, + NSWorkspace.oldVolumeURLUserInfoKey: old]) + #expect(latest == [root, new]) + } + } + +} diff --git a/Shared/MountedVolumeObserver.swift b/Shared/MountedVolumeObserver.swift new file mode 100644 index 0000000..5d31d4a --- /dev/null +++ b/Shared/MountedVolumeObserver.swift @@ -0,0 +1,65 @@ +import AppKit + +/// Keeps Finder's observation roots in sync without traversing mounted filesystems. +@MainActor +final class MountedVolumeObserver { + private let center: NotificationCenter + private var observers: [NSObjectProtocol] = [] + private let mountedVolumes: () -> [URL]? + private let update: (Set) -> Void + private var directories: Set = [] + private var hasVolumeSnapshot = false + + init(center: NotificationCenter = NSWorkspace.shared.notificationCenter, + mountedVolumes: @escaping () -> [URL]? = { + FileManager.default.mountedVolumeURLs(includingResourceValuesForKeys: nil, options: []) + }, + update: @escaping (Set) -> Void) { + self.center = center + self.mountedVolumes = mountedVolumes + self.update = update + // Subscribe before the initial snapshot so a mount during startup is not missed. + for name in [NSWorkspace.didMountNotification, NSWorkspace.didUnmountNotification, + NSWorkspace.didRenameVolumeNotification] { + observers.append(center.addObserver(forName: name, object: nil, queue: .main) { [weak self] notification in + let name = notification.name + let volume = notification.userInfo?[NSWorkspace.volumeURLUserInfoKey] as? URL + let oldVolume = notification.userInfo?[NSWorkspace.oldVolumeURLUserInfoKey] as? URL + MainActor.assumeIsolated { self?.refresh(name: name, volume: volume, oldVolume: oldVolume) } + }) + } + refresh() + } + + private func refresh(name: Notification.Name? = nil, volume: URL? = nil, oldVolume: URL? = nil) { + var next: Set = [URL(fileURLWithPath: "/")] + if volume != nil && hasVolumeSnapshot { + next.formUnion(directories) + } else if let volumes = mountedVolumes() { + // Include network, hidden and custom mount locations. Retry a failed + // initial snapshot on the next event, even if that event carries a URL. + next.formUnion(volumes) + hasVolumeSnapshot = true + } else { + // A failed enumeration is not evidence that all volumes were unmounted. + next.formUnion(directories) + } + if let volume { + // Enumeration can still contain an ejected volume when didUnmount fires. + // Apply the event last so stale enumeration cannot override its paths. + if name == NSWorkspace.didUnmountNotification { + next.remove(volume) + } else { + if let oldVolume { next.remove(oldVolume) } + next.insert(volume) + } + } + guard next != directories else { return } + directories = next + update(next) + } + + isolated deinit { + for observer in observers { center.removeObserver(observer) } + } +} diff --git a/specs/external-volumes-observation.md b/specs/external-volumes-observation.md new file mode 100644 index 0000000..6cef98b --- /dev/null +++ b/specs/external-volumes-observation.md @@ -0,0 +1,51 @@ +# External and network volume observation (#148, #150) + +Finder observation and file-operation authorization are separate. Registering a +security-scoped bookmark in the app does not add a Finder Sync observation root. +The old extension registered only `/`, once at startup. It neither enumerated +mounted volumes nor handled volume lifecycle changes. + +Apple documents recursive subdirectory observation, but does not explicitly +promise traversal across volume boundaries. Adding `/Volumes` alone still relies +on that assumption and misses volumes mounted elsewhere. Register `/` plus all +URLs from `FileManager.mountedVolumeURLs(includingResourceValuesForKeys:nil, +options:[])`, without filtering out network, hidden, or non-removable volumes. +No directory traversal or volume resource-value queries are needed. + +Subscribe to `NSWorkspace.shared.notificationCenter` before taking the initial +snapshot. Apply mount/unmount/rename notification URLs directly to the current +set. A real temporary HFS+ DMG probe demonstrated that, during didUnmount, volume +enumeration can still return the ejected volume. Blindly rescanning on every +notification therefore leaves stale roots. Re-enumerate only when notification +URLs are unavailable or the initial snapshot has not succeeded; preserve the +previous set on enumeration failure and apply event paths after any retry. Assign +`directoryURLs` only when the set changes. Observer lifetime follows the extension; +UI-framework interaction and observer cleanup use the main actor. + +## Validation + +- Release build and the complete existing test suite passed with + `CODE_SIGNING_ALLOWED=NO` under Swift 6. +- Regression test `notificationPathsOverrideStaleVolumeEnumeration` failed with + rescan-only handling and passed after applying notification URLs. +- Tests cover startup volumes, simulated external/NAS/custom mount paths, + mount/unmount/rename, duplicate events, failed enumeration and cleanup. +- A temporary DMG using the production observer and real NSWorkspace notifications + produced `probe-volume-present=false → true → false` without restarting the + observer. The DMG was ejected after the probe. +- Normal signing remains blocked by missing upstream provisioning profiles. + This verifies observation-root management, not a signed Finder installation or + physical USB / SMB / NFS / AFP menu appearance and action execution. + +After signing and enabling the extension, check a volume mounted before launch, +a USB drive and NAS mounted while running, a mounted DMG, rename/eject/remount, +and a normal local folder. Check menus inside each volume as well as on its root; +then verify an innocuous action such as Copy Path. File Provider-managed locations +and sandbox permissions are separate concerns; this change does not bypass them. + +Sources: +- https://developer.apple.com/documentation/findersync/fifindersynccontroller/directoryurls +- https://developer.apple.com/documentation/foundation/filemanager/mountedvolumeurls(includingresourcevaluesforkeys:options:) +- https://developer.apple.com/documentation/appkit/nsworkspace/didmountnotification +- https://developer.apple.com/documentation/appkit/nsworkspace/didunmountnotification +- https://developer.apple.com/documentation/appkit/nsworkspace/didrenamevolumenotification From 27656ddc952b98e0adf5fe516fb66844261446ee Mon Sep 17 00:00:00 2001 From: wflixu Date: Sun, 13 Sep 2026 11:42:50 +0800 Subject: [PATCH 05/22] chore(i18n): normalize string catalog Xcode rewrote RClick/Localizable.xcstrings during a build: - switch to Xcode's JSON style ("key" : "value") - re-sort keys - re-extract an orphan key: %@ -> v%@ No translation changes: 180 keys before and after, zero value differences, identical per-language counts (en 176 / es 176 / fr 177 / ja 169 / zh-Hans 177). Both the removed and the added key were empty entries with no translations, so nothing user-visible is affected. Co-Authored-By: Claude Code --- RClick/Localizable.xcstrings | 8124 +++++++++++++++++----------------- 1 file changed, 4064 insertions(+), 4060 deletions(-) diff --git a/RClick/Localizable.xcstrings b/RClick/Localizable.xcstrings index e41417d..e9b3b4d 100644 --- a/RClick/Localizable.xcstrings +++ b/RClick/Localizable.xcstrings @@ -1,6146 +1,6150 @@ { - "sourceLanguage": "en", - "strings": { - "Advanced Menu Layout": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Advanced Menu Layout" + "sourceLanguage" : "en", + "strings" : { + "" : { + "extractionState" : "stale", + "localizations" : { + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "" } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Diseño avanzado del menú" - } - }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Disposition avancée du menu" + } + } + }, + "%@(%@)" : { + "extractionState" : "stale", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "%1$@(%2$@)" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "詳細なメニューレイアウト" + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "%1$@ (%2$@)" } }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "高级菜单布局" + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "%1$@(%2$@)" } } } }, - "Open Config": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Open Config" + "%lld" : { + + }, + "1. Click \"Settings…\" on the right to open System Settings" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "1. Click \"Settings…\" on the right to open System Settings" } }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Abrir configuración" + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "1. Haz clic en “Ajustes…” a la derecha para abrir Ajustes del Sistema" } }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Ouvrir la configuration" + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "1. Cliquez sur « Réglages… » à droite pour ouvrir Réglages Système" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "設定ファイルを開く" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "1. 右側の「設定…」をクリックしてシステム設定を開きます" } }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "打开配置" + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "1. 点击右侧“设置…”按钮打开系统设置" } } } }, - "Reveal in Finder": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Reveal in Finder" + "2. Click the lock icon and authenticate" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "2. Click the lock icon and authenticate" } }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Mostrar en Finder" + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "2. Haz clic en el icono del candado y autentícate" } }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Afficher dans le Finder" + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "2. Cliquez sur l’icône de cadenas et authentifiez-vous" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "Finderに表示" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "2. 左下の鍵アイコンをクリックして認証します" } }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "在访达中显示" + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "2. 点击左下角锁图标并认证" } } } }, - "Customize top-level items and nested submenus with custom_menu.json. 💡 Tip: Give this file to an AI assistant (such as ChatGPT / Claude) to help arrange your menu.": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Customize top-level items and nested submenus with custom_menu.json. 💡 Tip: Give this file to an AI assistant (such as ChatGPT / Claude) to help arrange your menu." + "3. Click \"+\" -> open \"Applications\" -> select \"RClick\"" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "3. Click \"+\" -> open \"Applications\" -> select \"RClick\"" } }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Personaliza los elementos del menú principal y los submenús anidados con custom_menu.json. 💡 Consejo: Comparte este archivo con un asistente de IA (como ChatGPT / Claude) para que te ayude a organizar el menú." + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "3. Haz clic en “+” -> abre “Aplicaciones” -> selecciona “RClick”" } }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Personnalisez les éléments du menu principal et les sous-menus imbriqués avec custom_menu.json. 💡 Astuce : Confiez ce fichier à un assistant IA (comme ChatGPT / Claude) pour vous aider à organiser votre menu." + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "3. Cliquez sur « + » -> ouvrez « Applications » -> sélectionnez « RClick »" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "custom_menu.jsonで最上位の項目や多階層のサブメニューをカスタマイズできます。💡 ヒント:このファイルをAIアシスタント(ChatGPT / Claudeなど)に渡すと、メニュー構成の作成を手伝ってもらえます。" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "3. 「+」を押して「アプリケーション」から「RClick」を選択します" } }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "通过 custom_menu.json 自定义一级平铺与多层子菜单。💡 提示:可直接将此文件提供给 AI 助手(如 ChatGPT / Claude)帮你一键编排结构。" + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "3. 点击“+”并前往“应用程序”,选择“RClick”" } } } }, - "Changes appear after reopening the menu within 10 seconds. Remove the file to restore the default layout.": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Changes appear after reopening the menu within 10 seconds. Remove the file to restore the default layout." + "4. Make sure the switch next to RClick is turned on" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "4. Make sure the switch next to RClick is turned on" } }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Los cambios aparecerán al volver a abrir el menú, en un plazo de 10 segundos. Elimina el archivo para restaurar el diseño predeterminado." + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "4. Asegúrate de que el interruptor junto a RClick esté activado" } }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Les modifications apparaissent à la réouverture du menu, dans un délai de 10 secondes. Supprimez le fichier pour rétablir la disposition par défaut." + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "4. Vérifiez que l’interrupteur à côté de RClick est activé" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "変更は10秒以内に反映されます。メニューを開き直してください。ファイルを削除すると標準のレイアウトに戻ります。" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "4. RClick の横にあるスイッチがオンになっていることを確認します" } }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "更改会在 10 秒内重新打开菜单时生效。删除此文件即可恢复默认布局。" + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "4. 确保 RClick 旁边的开关已打开" } } } }, - "Unable to Open Menu Config": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Unable to Open Menu Config" + "About" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "About" } }, - "es": { - "stringUnit": { - "state": "translated", - "value": "No se puede abrir la configuración del menú" + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Acerca de" } }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Impossible d’ouvrir la configuration du menu" + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "À propos" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "メニュー設定ファイルを開けません" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "情報" } }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "无法打开菜单配置" + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "关于" } } } }, - "The shared configuration folder is unavailable.": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "The shared configuration folder is unavailable." + "Accessibility" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Accessibility" } }, - "es": { - "stringUnit": { - "state": "translated", - "value": "La carpeta de configuración compartida no está disponible." + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Accesibilidad" } }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Le dossier de configuration partagé est indisponible." + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Accessibilité" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "共有設定フォルダを利用できません。" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "アクセシビリティ" } }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "共享配置文件夹不可用。" + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "辅助功能" } } } }, - "No application could open the configuration file. Try Reveal in Finder and choose a text editor.": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "No application could open the configuration file. Try Reveal in Finder and choose a text editor." + "Actions" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Actions" } }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Ninguna aplicación pudo abrir el archivo de configuración. Usa «Mostrar en Finder» y elige un editor de texto." + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Acciones" } }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Aucune application n’a pu ouvrir le fichier de configuration. Utilisez « Afficher dans le Finder » et choisissez un éditeur de texte." + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Actions" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "設定ファイルを開けるアプリケーションがありません。「Finderに表示」を使い、テキストエディタを選択してください。" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "操作" } }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "没有应用能够打开配置文件。请使用“在访达中显示”,然后选择文本编辑器打开。" + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "操作" } } } }, - "More": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "More" + "Add" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Add" } }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Más" + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Agregar" } }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Plus" + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ajouter" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "その他" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "追加" } }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "更多" + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "添加" } } } }, - "": { - "extractionState": "stale", - "localizations": { - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "" + "Add a Folder…" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Add a Folder…" } - } - } - }, - "%@": {}, - "%@(%@)": { - "extractionState": "stale", - "localizations": { - "en": { - "stringUnit": { - "state": "new", - "value": "%1$@(%2$@)" + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Agregar una carpeta…" } }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "%1$@ (%2$@)" + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ajouter un dossier…" } }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "%1$@(%2$@)" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "フォルダを追加…" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "添加一个文件夹…" } } } }, - "%lld": {}, - "1. Click \"Settings…\" on the right to open System Settings": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "1. Click \"Settings…\" on the right to open System Settings" + "Add App" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Add App" } }, - "es": { - "stringUnit": { - "state": "translated", - "value": "1. Haz clic en “Ajustes…” a la derecha para abrir Ajustes del Sistema" + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Agregar aplicación" } }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "1. Cliquez sur « Réglages… » à droite pour ouvrir Réglages Système" + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ajouter une app" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "1. 右側の「設定…」をクリックしてシステム設定を開きます" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "アプリを追加" } }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "1. 点击右侧“设置…”按钮打开系统设置" + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "添加应用" } } } }, - "2. Click the lock icon and authenticate": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "2. Click the lock icon and authenticate" + "Add File Type" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Add File Type" } }, - "es": { - "stringUnit": { - "state": "translated", - "value": "2. Haz clic en el icono del candado y autentícate" + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Agregar tipo de archivo" } }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "2. Cliquez sur l’icône de cadenas et authentifiez-vous" + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ajouter un type de fichier" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "2. 左下の鍵アイコンをクリックして認証します" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ファイル種類を追加" } }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "2. 点击左下角锁图标并认证" + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "添加文件类型" } } } }, - "3. Click \"+\" -> open \"Applications\" -> select \"RClick\"": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "3. Click \"+\" -> open \"Applications\" -> select \"RClick\"" + "Add Folder" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Add Folder" } }, - "es": { - "stringUnit": { - "state": "translated", - "value": "3. Haz clic en “+” -> abre “Aplicaciones” -> selecciona “RClick”" + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Agregar carpeta" } }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "3. Cliquez sur « + » -> ouvrez « Applications » -> sélectionnez « RClick »" + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ajouter un dossier" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "3. 「+」を押して「アプリケーション」から「RClick」を選択します" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "フォルダを追加" } }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "3. 点击“+”并前往“应用程序”,选择“RClick”" + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "添加文件夹" } } } }, - "4. Make sure the switch next to RClick is turned on": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "4. Make sure the switch next to RClick is turned on" + "Added Folders" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Added Folders" } }, - "es": { - "stringUnit": { - "state": "translated", - "value": "4. Asegúrate de que el interruptor junto a RClick esté activado" + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Carpetas agregadas" } }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "4. Vérifiez que l’interrupteur à côté de RClick est activé" + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Dossiers ajoutés" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "4. RClick の横にあるスイッチがオンになっていることを確認します" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "追加済みフォルダ" } }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "4. 确保 RClick 旁边的开关已打开" + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "已添加的文件夹" } } } }, - "About": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "About" + "Advanced Menu Layout" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Advanced Menu Layout" } }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Acerca de" + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Diseño avanzado del menú" } }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "À propos" + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Disposition avancée du menu" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "情報" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "詳細なメニューレイアウト" } }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "关于" + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "高级菜单布局" } } } }, - "Accessibility": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Accessibility" + "AirDrop" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "AirDrop" } }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Accesibilidad" + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "AirDrop" } }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Accessibilité" + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "AirDrop" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "アクセシビリティ" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "AirDrop" } }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "辅助功能" + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "AirDrop" } } } }, - "Actions": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Actions" + "Applications" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Applications" } }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Acciones" + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Aplicaciones" } }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Actions" + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Applications" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "操作" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "アプリケーション" } }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "操作" + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "应用程序" } } } }, - "Add": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Add" + "Apps" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Apps" } }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Agregar" + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Apps" } }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Ajouter" + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Apps" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "追加" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "アプリ" } }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "添加" + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "应用" } } } }, - "Add a Folder…": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Add a Folder…" + "Are you sure you want to delete \"%@\" (%@)? This action cannot be undone." : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Are you sure you want to delete \"%@\" (%@)? This action cannot be undone." } }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Agregar una carpeta…" + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "¿Seguro que quieres eliminar “%@” (%@)? Esta acción no se puede deshacer." } }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Ajouter un dossier…" + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Voulez-vous vraiment supprimer « %@ » (%@) ? Cette action est irréversible." } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "フォルダを追加…" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "\"%@\"(%@)を削除してもよろしいですか?この操作は取り消せません。" } }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "添加一个文件夹…" + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "确定要删除「%@」(%@)吗?此操作无法撤销。" } } } }, - "Add App": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Add App" + "Arguments (semicolon separated)" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Arguments (semicolon separated)" } }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Agregar aplicación" + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Argumentos (separados por punto y coma)" } }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Ajouter une app" + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Arguments (séparés par des points-virgules)" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "アプリを追加" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "引数(セミコロン区切り)" } }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "添加应用" + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "参数(分号分隔)" } } } }, - "Add File Type": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Add File Type" + "Arguments: %@" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Arguments: %@" } }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Agregar tipo de archivo" + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Argumentos: %@" } }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Ajouter un type de fichier" + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Arguments : %@" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "ファイル種類を追加" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "引数: %@" } }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "添加文件类型" + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "参数:%@" } } } }, - "Add Folder": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Add Folder" + "Authorize folders to let RClick create, delete, and manage files in them." : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Authorize folders to let RClick create, delete, and manage files in them." } }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Agregar carpeta" + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Autoriza carpetas para que RClick pueda crear, eliminar y administrar archivos en ellas." } }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Ajouter un dossier" + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Autorisez des dossiers pour permettre à RClick d’y créer, supprimer et gérer des fichiers." } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "フォルダを追加" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "フォルダを認証して、RClick がファイルの作成、削除、管理を行えるようにします。" } }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "添加文件夹" + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "授权文件夹,让 RClick 可以在其中创建、删除和管理文件。" } } } }, - "Added Folders": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Added Folders" + "Authorized" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Authorized" } }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Carpetas agregadas" + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Autorizado" } }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Dossiers ajoutés" + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Autorisé" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "追加済みフォルダ" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "許可済み" } }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "已添加的文件夹" + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "已授权" } } } }, - "AirDrop": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "AirDrop" + "Authorizes this folder and all its subfolders" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Authorizes this folder and all its subfolders" } }, - "es": { - "stringUnit": { - "state": "translated", - "value": "AirDrop" + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Autoriza esta carpeta y todas sus subcarpetas" } }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "AirDrop" + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Autorise ce dossier et tous ses sous-dossiers" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "AirDrop" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "このフォルダとそのすべてのサブフォルダを許可します" } }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "AirDrop" + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "授权此文件夹及其所有子文件夹" } } } }, - "Applications": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Applications" + "Backup" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Backup" } }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Aplicaciones" + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Respaldo" } }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Applications" + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Sauvegarde" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "アプリケーション" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "バックアップ" } }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "应用程序" + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "备份" } } } }, - "Apps": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Apps" + "Cancel" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Cancel" } }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Apps" + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Cancelar" } }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Apps" + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Annuler" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "アプリ" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "キャンセル" } }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "应用" + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "取消" } } } }, - "Are you sure you want to delete \"%@\" (%@)? This action cannot be undone.": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Are you sure you want to delete \"%@\" (%@)? This action cannot be undone." + "Change App" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Change App" } }, - "es": { - "stringUnit": { - "state": "translated", - "value": "¿Seguro que quieres eliminar “%@” (%@)? Esta acción no se puede deshacer." + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Cambiar aplicación" } }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Voulez-vous vraiment supprimer « %@ » (%@) ? Cette action est irréversible." + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Changer d’app" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "\"%@\"(%@)を削除してもよろしいですか?この操作は取り消せません。" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "アプリを変更" } }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "确定要删除「%@」(%@)吗?此操作无法撤销。" + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "更换应用" } } } }, - "Arguments (semicolon separated)": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Arguments (semicolon separated)" + "Change Template" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Change Template" } }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Argumentos (separados por punto y coma)" + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Cambiar plantilla" } }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Arguments (séparés par des points-virgules)" + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Changer de modèle" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "引数(セミコロン区切り)" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "テンプレートを変更" } }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "参数(分号分隔)" + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "更换模板" } } } }, - "Arguments: %@": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Arguments: %@" + "Changes appear after reopening the menu within 10 seconds. Remove the file to restore the default layout." : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Changes appear after reopening the menu within 10 seconds. Remove the file to restore the default layout." } }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Argumentos: %@" + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Los cambios aparecerán al volver a abrir el menú, en un plazo de 10 segundos. Elimina el archivo para restaurar el diseño predeterminado." } }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Arguments : %@" + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Les modifications apparaissent à la réouverture du menu, dans un délai de 10 secondes. Supprimez le fichier pour rétablir la disposition par défaut." } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "引数: %@" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "変更は10秒以内に反映されます。メニューを開き直してください。ファイルを削除すると標準のレイアウトに戻ります。" } }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "参数:%@" + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "更改会在 10 秒内重新打开菜单时生效。删除此文件即可恢复默认布局。" } } } }, - "Authorize folders to let RClick create, delete, and manage files in them.": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Authorize folders to let RClick create, delete, and manage files in them." + "Check for Updates" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Check for Updates" } }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Autoriza carpetas para que RClick pueda crear, eliminar y administrar archivos en ellas." + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Buscar actualizaciones" } }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Autorisez des dossiers pour permettre à RClick d’y créer, supprimer et gérer des fichiers." + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Rechercher des mises à jour" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "フォルダを認証して、RClick がファイルの作成、削除、管理を行えるようにします。" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "アップデートを確認" } }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "授权文件夹,让 RClick 可以在其中创建、删除和管理文件。" + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "检查更新" } } } }, - "Authorized": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Authorized" + "Checking for updates..." : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Checking for updates..." } }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Autorizado" + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Buscando actualizaciones..." } }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Autorisé" + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Recherche de mises à jour…" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "許可済み" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "アップデートを確認中..." } }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "已授权" + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "正在检查更新..." } } } }, - "Backup": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Backup" + "Choose a folder for RClick to access." : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Choose a folder for RClick to access." } }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Respaldo" + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Elige una carpeta a la que RClick pueda acceder." } }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Sauvegarde" + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Choisissez un dossier auquel RClick pourra accéder." } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "バックアップ" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "RClick がアクセスできるフォルダを選択してください。" } }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "备份" + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "选择 RClick 可以访问的文件夹。" } } } }, - "Cancel": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Cancel" + "Choose Default App" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Choose Default App" } }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Cancelar" + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Elegir aplicación predeterminada" } }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Annuler" + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Choisir l’app par défaut" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "キャンセル" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "既定アプリを選択" } }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "取消" + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "选择默认打开应用" } } } }, - "Change App": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Change App" + "Choose Template File" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Choose Template File" } }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Cambiar aplicación" + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Elegir archivo de plantilla" } }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Changer d’app" + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Choisir un fichier modèle" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "アプリを変更" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "テンプレートファイルを選択" } }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "更换应用" + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "选择模板文件" } } } }, - "Change Template": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Change Template" + "Collapse actions menu" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Collapse actions menu" } }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Cambiar plantilla" + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Contraer el menú de acciones" } }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Changer de modèle" + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Réduire le menu Actions" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "テンプレートを変更" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "操作メニューを折りたたむ" } }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "更换模板" + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "折叠动作菜单" } } } }, - "Check for Updates": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Check for Updates" + "Collapse apps menu" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Collapse apps menu" } }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Buscar actualizaciones" + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Contraer el menú de aplicaciones" } }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Rechercher des mises à jour" + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Réduire le menu Apps" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "アップデートを確認" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "アプリメニューを折りたたむ" } }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "检查更新" + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "折叠应用菜单" } } } }, - "Checking for updates...": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Checking for updates..." + "Collapse menu" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Collapse menu" } }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Buscando actualizaciones..." + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Contraer el menú" } }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Recherche de mises à jour…" + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Réduire le menu" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "アップデートを確認中..." + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "メニューを折りたたむ" } }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "正在检查更新..." + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "折叠菜单" } } } }, - "Choose a folder for RClick to access.": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Choose a folder for RClick to access." + "Collapse new file menu" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Collapse new file menu" } }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Elige una carpeta a la que RClick pueda acceder." + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Contraer el menú de nuevo archivo" } }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Choisissez un dossier auquel RClick pourra accéder." + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Réduire le menu Nouveau fichier" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "RClick がアクセスできるフォルダを選択してください。" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "新規ファイルメニューを折りたたむ" } }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "选择 RClick 可以访问的文件夹。" + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "折叠新建文件菜单" } } } }, - "Choose Default App": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Choose Default App" + "Common Dir" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Common Folders" } }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Elegir aplicación predeterminada" + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Carpetas frecuentes" } }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Choisir l’app par défaut" + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Dossiers courants" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "既定アプリを選択" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "よく使うフォルダ" } }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "选择默认打开应用" + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "常用文件夹" } } } }, - "Choose Template File": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Choose Template File" + "Copy Path" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Copy Path" } }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Elegir archivo de plantilla" + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Copiar ruta" } }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Choisir un fichier modèle" + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Copier le chemin" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "テンプレートファイルを選択" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "パスをコピー" } }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "选择模板文件" + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "复制路径" } } } }, - "Collapse actions menu": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Collapse actions menu" + "Customize top-level items and nested submenus with custom_menu.json. 💡 Tip: Give this file to an AI assistant (such as ChatGPT / Claude) to help arrange your menu." : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Customize top-level items and nested submenus with custom_menu.json. 💡 Tip: Give this file to an AI assistant (such as ChatGPT / Claude) to help arrange your menu." } }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Contraer el menú de acciones" + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Personaliza los elementos del menú principal y los submenús anidados con custom_menu.json. 💡 Consejo: Comparte este archivo con un asistente de IA (como ChatGPT / Claude) para que te ayude a organizar el menú." } }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Réduire le menu Actions" + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Personnalisez les éléments du menu principal et les sous-menus imbriqués avec custom_menu.json. 💡 Astuce : Confiez ce fichier à un assistant IA (comme ChatGPT / Claude) pour vous aider à organiser votre menu." } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "操作メニューを折りたたむ" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "custom_menu.jsonで最上位の項目や多階層のサブメニューをカスタマイズできます。💡 ヒント:このファイルをAIアシスタント(ChatGPT / Claudeなど)に渡すと、メニュー構成の作成を手伝ってもらえます。" } }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "折叠动作菜单" + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "通过 custom_menu.json 自定义一级平铺与多层子菜单。💡 提示:可直接将此文件提供给 AI 助手(如 ChatGPT / Claude)帮你一键编排结构。" } } } }, - "Collapse apps menu": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Collapse apps menu" + "Default Open App" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Default Open App" } }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Contraer el menú de aplicaciones" + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Aplicación predeterminada" } }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Réduire le menu Apps" + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "App d’ouverture par défaut" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "アプリメニューを折りたたむ" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "既定で開くアプリ" } }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "折叠应用菜单" + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "默认打开应用" } } } }, - "Collapse menu": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Collapse menu" + "Delete" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Delete" } }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Contraer el menú" + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Eliminar" } }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Réduire le menu" + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Supprimer" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "メニューを折りたたむ" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "削除" } }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "折叠菜单" + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "删除" } } } }, - "Collapse new file menu": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Collapse new file menu" + "Delete App" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Delete App" } }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Contraer el menú de nuevo archivo" + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Eliminar aplicación" } }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Réduire le menu Nouveau fichier" + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Supprimer l’app" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "新規ファイルメニューを折りたたむ" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "アプリを削除" } }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "折叠新建文件菜单" + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "删除应用" } } } }, - "Common Dir": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Common Folders" + "Delete Direct" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Delete Direct" } }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Carpetas frecuentes" + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Eliminar directamente" } }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Dossiers courants" + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Supprimer immédiatement" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "よく使うフォルダ" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "直接削除" } }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "常用文件夹" + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "直接删除" } } } }, - "Copy Path": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Copy Path" + "Delete File Type" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Delete File Type" } }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Copiar ruta" + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Eliminar tipo de archivo" } }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Copier le chemin" + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Supprimer le type de fichier" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "パスをコピー" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ファイル種類を削除" } }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "复制路径" + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "删除文件类型" } } } }, - "Default Open App": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Default Open App" + "Desktop" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Desktop" } }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Aplicación predeterminada" + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Escritorio" } }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "App d’ouverture par défaut" + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Bureau" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "既定で開くアプリ" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "デスクトップ" } }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "默认打开应用" + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "桌面" } } } }, - "Delete": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Delete" + "Display Name" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Display Name" } }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Eliminar" + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Nombre visible" } }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Supprimer" + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Nom affiché" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "削除" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "表示名" } }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "删除" + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "显示名称" } } } }, - "Delete App": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Delete App" + "Documents" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Documents" } }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Eliminar aplicación" + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Documentos" } }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Supprimer l’app" + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Documents" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "アプリを削除" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "書類" } }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "删除应用" + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "文档" } } } }, - "Delete Direct": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Delete Direct" + "Don't Ask Again" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Don't Ask Again" } }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Eliminar directamente" + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "No preguntar de nuevo" } }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Supprimer immédiatement" + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ne plus demander" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "直接削除" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "今後表示しない" } }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "直接删除" + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "不再询问" } } } }, - "Delete File Type": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Delete File Type" + "Done" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Done" } }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Eliminar tipo de archivo" + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Listo" } }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Supprimer le type de fichier" + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Terminé" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "ファイル種類を削除" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "完了" } }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "删除文件类型" + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "完成" } } } }, - "Desktop": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Desktop" + "Download and Install" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Download and Install" } }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Escritorio" + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Descargar e instalar" } }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Bureau" + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Télécharger et installer" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "デスクトップ" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ダウンロードしてインストール" } }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "桌面" + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "下载并安装" } } } }, - "Display Name": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Display Name" + "Download failed" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Download failed" } }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Nombre visible" + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "La descarga falló" } }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Nom affiché" + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Échec du téléchargement" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "表示名" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ダウンロードに失敗しました" } }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "显示名称" + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "下载失败" } } } }, - "Documents": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Documents" + "Download Manually" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Download Manually" } }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Documentos" + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Descargar manualmente" } }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Documents" + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Télécharger manuellement" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "書類" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "手動でダウンロード" } }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "文档" + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "手动下载" } } } }, - "Don't Ask Again": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Don't Ask Again" + "Downloads" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Downloads" } }, - "es": { - "stringUnit": { - "state": "translated", - "value": "No preguntar de nuevo" + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Descargas" } }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Ne plus demander" + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Téléchargements" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "今後表示しない" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ダウンロード" } }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "不再询问" + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "下载" } } } }, - "Done": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Done" + "Edit App" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Edit App" } }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Listo" + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Editar aplicación" } }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Terminé" + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Modifier l’app" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "完了" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "アプリを編集" } }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "完成" + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "编辑应用" } } } }, - "Download and Install": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Download and Install" + "Edit App Properties" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Edit App Properties" } }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Descargar e instalar" + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Editar propiedades de la aplicación" } }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Télécharger et installer" + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Modifier les propriétés de l’app" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "ダウンロードしてインストール" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "アプリ設定を編集" } }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "下载并安装" + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "编辑应用属性" } } } }, - "Download failed": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Download failed" + "Edit File Type" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Edit File Type" } }, - "es": { - "stringUnit": { - "state": "translated", - "value": "La descarga falló" + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Editar tipo de archivo" } }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Échec du téléchargement" + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Modifier le type de fichier" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "ダウンロードに失敗しました" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ファイル種類を編集" } }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "下载失败" + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "编辑文件类型" } } } }, - "Download Manually": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Download Manually" + "Enable common folders" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Enable common folders" } }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Descargar manualmente" + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Activar carpetas frecuentes" } }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Télécharger manuellement" + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Activer les dossiers courants" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "手動でダウンロード" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "よく使うフォルダを有効化" } }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "手动下载" + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "启用常用文件夹" } } } }, - "Downloads": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Downloads" + "Enable Full Disk Access" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Enable Full Disk Access" } }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Descargas" + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Activar Acceso total al disco" } }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Téléchargements" + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Activer l’accès complet au disque" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "ダウンロード" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "フルディスクアクセスを有効にする" } }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "下载" + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "启用完全磁盘访问权限" } } } }, - "Edit App": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Edit App" + "Enable RClick" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Enable RClick" } }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Editar aplicación" + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Activar RClick" } }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Modifier l’app" + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Activer RClick" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "アプリを編集" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "RClick を有効にする" } }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "编辑应用" + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "启用 RClick" } } } }, - "Edit App Properties": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Edit App Properties" + "Enable RClick in File Provider to show its actions in Finder context menus" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Enable RClick in File Provider to show its actions in Finder context menus" } }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Editar propiedades de la aplicación" + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Activa RClick en Proveedor de archivos para que sus acciones aparezcan en los menús contextuales del Finder" } }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Modifier les propriétés de l’app" + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Activez RClick dans Fournisseur de fichiers pour afficher ses actions dans les menus contextuels du Finder" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "アプリ設定を編集" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ファイルプロバイダで RClick を有効にすると Finder の右クリックメニューに表示されます" } }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "编辑应用属性" + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "在文件提供程序中启用 RClick 以在 Finder 右键菜单中显示功能" } } } }, - "Edit File Type": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Edit File Type" + "Enabled" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Enabled" } }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Editar tipo de archivo" + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Activado" } }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Modifier le type de fichier" + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Activé" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "ファイル種類を編集" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "有効" } }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "编辑文件类型" + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "启用" } } } }, - "Enable common folders": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Enable common folders" + "Enter an SF Symbol name, for example doc.text or curlybraces" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Enter an SF Symbol name, for example doc.text or curlybraces" } }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Activar carpetas frecuentes" + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Escribe el nombre de un SF Symbol, por ejemplo doc.text o curlybraces" } }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Activer les dossiers courants" + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Saisissez un nom de symbole SF, par exemple doc.text ou curlybraces" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "よく使うフォルダを有効化" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "SF Symbol 名を入力してください。例: doc.text、curlybraces" } }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "启用常用文件夹" + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "输入 SF Symbol 名称,例如 doc.text、curlybraces" } } } }, - "Enable Full Disk Access": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Enable Full Disk Access" + "Environment Variables" : { + "extractionState" : "stale", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Environment Variables" } }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Activar Acceso total al disco" + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Variables de entorno" } }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Activer l’accès complet au disque" + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Variables d’environnement" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "フルディスクアクセスを有効にする" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "環境変数" } }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "启用完全磁盘访问权限" + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "环境变量" } } } }, - "Enable RClick": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Enable RClick" + "Environment variables: %lld" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Environment variables: %lld" } }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Activar RClick" + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Variables de entorno: %lld" } }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Activer RClick" + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Variables d’environnement : %lld" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "RClick を有効にする" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "環境変数: %lld 個" } }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "启用 RClick" + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "环境变量:%lld 个" } } } }, - "Enable RClick in File Provider to show its actions in Finder context menus": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Enable RClick in File Provider to show its actions in Finder context menus" + "Export Logs…" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Export Logs…" } }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Activa RClick en Proveedor de archivos para que sus acciones aparezcan en los menús contextuales del Finder" + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Exportar registros…" } }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Activez RClick dans Fournisseur de fichiers pour afficher ses actions dans les menus contextuels du Finder" + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Exporter les journaux…" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "ファイルプロバイダで RClick を有効にすると Finder の右クリックメニューに表示されます" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ログを書き出し…" } }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "在文件提供程序中启用 RClick 以在 Finder 右键菜单中显示功能" + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "导出日志…" } } } }, - "Enabled": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Enabled" + "Export…" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Export…" } }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Activado" + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Exportar…" } }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Activé" + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Exporter…" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "有効" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "書き出し…" } }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "启用" + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "导出…" } } } }, - "Enter an SF Symbol name, for example doc.text or curlybraces": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Enter an SF Symbol name, for example doc.text or curlybraces" + "Extension: %@" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Extension: %@" } }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Escribe el nombre de un SF Symbol, por ejemplo doc.text o curlybraces" + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Extensión: %@" } }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Saisissez un nom de symbole SF, par exemple doc.text ou curlybraces" + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Extension : %@" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "SF Symbol 名を入力してください。例: doc.text、curlybraces" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "拡張子: %@" } }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "输入 SF Symbol 名称,例如 doc.text、curlybraces" + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "扩展名:%@" } } } }, - "Environment Variables": { - "extractionState": "stale", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Environment Variables" + "Extraction failed: %@" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Extraction failed: %@" } }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Variables de entorno" + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Error al descomprimir: %@" } }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Variables d’environnement" + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Échec de l’extraction : %@" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "環境変数" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "展開に失敗しました: %@" } }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "环境变量" + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "解压失败:%@" } } } }, - "Environment variables: %lld": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Environment variables: %lld" + "Failed to Check for Updates" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Failed to Check for Updates" } }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Variables de entorno: %lld" + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "No se pudieron buscar actualizaciones" } }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Variables d’environnement : %lld" + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Échec de la recherche de mises à jour" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "環境変数: %lld 個" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "アップデートの確認に失敗しました" } }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "环境变量:%lld 个" + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "检查更新失败" } } } }, - "Export Logs…": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Export Logs…" + "File Extension" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "File Extension" } }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Exportar registros…" + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Extensión de archivo" } }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Exporter les journaux…" + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Extension de fichier" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "ログを書き出し…" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ファイル拡張子" } }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "导出日志…" + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "文件扩展名" } } } }, - "Export…": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Export…" + "File Provider: Select \"RClick\" in the list to enable the Finder context menu" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "File Provider: Select \"RClick\" in the list to enable the Finder context menu" } }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Exportar…" + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Proveedor de archivos: selecciona “RClick” en la lista para activar el menú contextual del Finder" } }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Exporter…" + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Fournisseur de fichiers : sélectionnez « RClick » dans la liste pour activer le menu contextuel du Finder" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "書き出し…" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ファイルプロバイダ一覧で「RClick」を選択すると Finder の右クリックメニューを有効にできます" } }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "导出…" + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "文件提供程序:在列表中选择“RClick”以启用 Finder 右键菜单" } } } }, - "Extension: %@": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Extension: %@" + "Finder Extension" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Finder Extension" } }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Extensión: %@" + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Extensión del Finder" } }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Extension : %@" + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Extension Finder" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "拡張子: %@" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "Finder 拡張" } }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "扩展名:%@" + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "Finder 扩展" } } } }, - "Extraction failed: %@": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Extraction failed: %@" + "Folder access permission is required to use this feature." : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Folder access permission is required to use this feature." } }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Error al descomprimir: %@" + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Se necesita permiso de acceso a la carpeta para usar esta función." } }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Échec de l’extraction : %@" + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "L’autorisation d’accès au dossier est requise pour utiliser cette fonctionnalité." } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "展開に失敗しました: %@" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "この機能を使うにはフォルダへのアクセス許可が必要です。" } }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "解压失败:%@" + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "必须授予文件夹访问权限才能使用此功能。" } } } }, - "Failed to Check for Updates": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Failed to Check for Updates" + "Folder Permissions" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Folder Permissions" } }, - "es": { - "stringUnit": { - "state": "translated", - "value": "No se pudieron buscar actualizaciones" + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Permisos de carpetas" } }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Échec de la recherche de mises à jour" + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Autorisations de dossiers" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "アップデートの確認に失敗しました" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "フォルダ権限" } }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "检查更新失败" + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "文件夹权限" } } } }, - "File Extension": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "File Extension" + "Folders cannot be shared via AirDrop: %@" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Folders cannot be shared via AirDrop: %@" } }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Extensión de archivo" + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Las carpetas no se pueden compartir por AirDrop: %@" } }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Extension de fichier" + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Les dossiers ne peuvent pas être partagés via AirDrop : %@" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "ファイル拡張子" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "フォルダは AirDrop で共有できません: %@" } }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "文件扩展名" + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "不能通过 AirDrop 分享文件夹:%@" } } } }, - "File Provider: Select \"RClick\" in the list to enable the Finder context menu": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "File Provider: Select \"RClick\" in the list to enable the Finder context menu" + "For browser-like apps, launch a new instance instead of opening a new tab in the running one" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "For browser-like apps, launch a new instance instead of opening a new tab in the running one" } }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Proveedor de archivos: selecciona “RClick” en la lista para activar el menú contextual del Finder" + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Para apps tipo navegador, lanza una nueva instancia en lugar de abrir una pestaña en la ya abierta" } }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Fournisseur de fichiers : sélectionnez « RClick » dans la liste pour activer le menu contextuel du Finder" + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Pour les apps de type navigateur, lance une nouvelle instance au lieu d’ouvrir un nouvel onglet dans celle en cours" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "ファイルプロバイダ一覧で「RClick」を選択すると Finder の右クリックメニューを有効にできます" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ブラウザ系アプリの場合、起動中のインスタンスに新しいタブを開く代わりに、新しいインスタンスを起動します" } }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "文件提供程序:在列表中选择“RClick”以启用 Finder 右键菜单" + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "对浏览器类 app,改为启动新实例,而不是在已运行的实例中新开标签页" } } } }, - "Finder Extension": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Finder Extension" + "For example: txt, md, json" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "For example: txt, md, json" } }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Extensión del Finder" + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Por ejemplo: txt, md, json" } }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Extension Finder" + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Par exemple : txt, md, json" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "Finder 拡張" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "例: txt、md、json" } }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "Finder 扩展" + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "例如:txt、md、json" } } } }, - "Folder access permission is required to use this feature.": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Folder access permission is required to use this feature." + "Format: KEY=VALUE, one per line" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Format: KEY=VALUE, one per line" } }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Se necesita permiso de acceso a la carpeta para usar esta función." + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Formato: CLAVE=VALOR, uno por línea" } }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "L’autorisation d’accès au dossier est requise pour utiliser cette fonctionnalité." + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Format : CLÉ=VALEUR, une par ligne" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "この機能を使うにはフォルダへのアクセス許可が必要です。" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "形式: KEY=VALUE を1行ずつ入力" } }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "必须授予文件夹访问权限才能使用此功能。" + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "格式:KEY=VALUE,每行一个" } } } }, - "Folder Permissions": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Folder Permissions" + "Full Disk Access" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Full Disk Access" } }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Permisos de carpetas" + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Acceso total al disco" } }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Autorisations de dossiers" + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Accès complet au disque" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "フォルダ権限" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "フルディスクアクセス" } }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "文件夹权限" + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "完全磁盘访问权限" } } } }, - "Folders cannot be shared via AirDrop: %@": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Folders cannot be shared via AirDrop: %@" + "Full Disk Access: Required to create and delete files in protected directories" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Full Disk Access: Required to create and delete files in protected directories" } }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Las carpetas no se pueden compartir por AirDrop: %@" + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Acceso total al disco: se necesita para crear y eliminar archivos en directorios protegidos" } }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Les dossiers ne peuvent pas être partagés via AirDrop : %@" + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Accès complet au disque : requis pour créer et supprimer des fichiers dans les dossiers protégés" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "フォルダは AirDrop で共有できません: %@" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "フルディスクアクセスは保護されたディレクトリでのファイル作成と削除に必要です" } }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "不能通过 AirDrop 分享文件夹:%@" + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "完全磁盘访问权限:用于在受保护目录中创建和删除文件" } } } }, - "For example: txt, md, json": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "For example: txt, md, json" + "General" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "General" } }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Por ejemplo: txt, md, json" + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "General" } }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Par exemple : txt, md, json" + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Général" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "例: txt、md、json" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "一般" } }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "例如:txt、md、json" + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "通用" } } } }, - "Format: KEY=VALUE, one per line": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Format: KEY=VALUE, one per line" - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Formato: CLAVE=VALOR, uno por línea" + "github.com/wflixu/RClick" : { + "localizations" : { + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "github.com/wflixu/RClick" } }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Format : CLÉ=VALEUR, une par ligne" - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "形式: KEY=VALUE を1行ずつ入力" - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "格式:KEY=VALUE,每行一个" + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "github.com/wflixu/RClick" } } } }, - "Full Disk Access": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Full Disk Access" + "Grant Access" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Grant Access" } }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Acceso total al disco" + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Permitir acceso" } }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Accès complet au disque" + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Autoriser l’accès" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "フルディスクアクセス" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "アクセスを許可" } }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "完全磁盘访问权限" + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "授权访问" } } } }, - "Full Disk Access: Required to create and delete files in protected directories": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Full Disk Access: Required to create and delete files in protected directories" + "Grant Permission" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Grant Permission" } }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Acceso total al disco: se necesita para crear y eliminar archivos en directorios protegidos" + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Otorgar permiso" } }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Accès complet au disque : requis pour créer et supprimer des fichiers dans les dossiers protégés" + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Accorder l’autorisation" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "フルディスクアクセスは保護されたディレクトリでのファイル作成と削除に必要です" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "権限を付与" } }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "完全磁盘访问权限:用于在受保护目录中创建和删除文件" + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "授予权限" } } } }, - "General": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "General" + "Grant RClick access to this folder to perform file operations." : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Grant RClick access to this folder to perform file operations." } }, - "es": { - "stringUnit": { - "state": "translated", - "value": "General" + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Otorga a RClick acceso a esta carpeta para realizar operaciones con archivos." } }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Général" + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Autorisez RClick à accéder à ce dossier pour effectuer des opérations sur les fichiers." } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "一般" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ファイル操作を実行するために、RClick にこのフォルダへのアクセスを許可してください。" } }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "通用" + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "授权 RClick 访问此文件夹以执行文件操作。" } } } }, - "github.com/wflixu/RClick": { - "localizations": { - "es": { - "stringUnit": { - "state": "translated", - "value": "github.com/wflixu/RClick" + "Hide" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Hide" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ocultar" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Masquer" } }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "github.com/wflixu/RClick" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "隠す" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "隐藏" } } } }, - "Grant Access": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Grant Access" + "Home" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Home" } }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Permitir acceso" + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Carpeta de inicio" } }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Autoriser l’accès" + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Départ" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "アクセスを許可" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ホーム" } }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "授权访问" + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "用户主目录" } } } }, - "Grant Permission": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Grant Permission" + "Icon" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Icon" } }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Otorgar permiso" + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Icono" } }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Accorder l’autorisation" + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Icône" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "権限を付与" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "アイコン" } }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "授予权限" + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "图标" } } } }, - "Grant RClick access to this folder to perform file operations.": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Grant RClick access to this folder to perform file operations." + "Ignore This Version" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ignore This Version" } }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Otorga a RClick acceso a esta carpeta para realizar operaciones con archivos." + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ignorar esta versión" } }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Autorisez RClick à accéder à ce dossier pour effectuer des opérations sur les fichiers." + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ignorer cette version" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "ファイル操作を実行するために、RClick にこのフォルダへのアクセスを許可してください。" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "このバージョンを無視" } }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "授权 RClick 访问此文件夹以执行文件操作。" + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "忽略此版本" } } } }, - "Hide": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Hide" + "Import…" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Import…" } }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Ocultar" + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Importar…" } }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Masquer" + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Importer…" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "隠す" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "読み込み…" } }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "隐藏" + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "导入…" } } } }, - "Home": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Home" + "Installation failed: %@" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Installation failed: %@" } }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Carpeta de inicio" + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Error al instalar: %@" } }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Départ" + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Échec de l’installation : %@" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "ホーム" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "インストールに失敗しました: %@" } }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "用户主目录" + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "安装失败:%@" } } } }, - "Icon": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Icon" + "Invalid Folder" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Invalid Folder" } }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Icono" + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Carpeta no válida" } }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Icône" + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Dossier non valide" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "アイコン" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "無効なフォルダ" } }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "图标" + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "无效文件夹" } } } }, - "Ignore This Version": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Ignore This Version" + "Later" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Later" } }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Ignorar esta versión" + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Más tarde" } }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Ignorer cette version" + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Plus tard" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "このバージョンを無視" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "後で" } }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "忽略此版本" + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "稍后" } } } }, - "Import…": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Import…" + "Launch at login" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Launch at login" } }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Importar…" + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Abrir al iniciar sesión" } }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Importer…" + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ouvrir à la connexion" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "読み込み…" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ログイン時に起動" } }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "导入…" + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "登录时启动" } } } }, - "Installation failed: %@": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Installation failed: %@" + "Launch at login is pending approval in System Settings" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Launch at login is pending approval in System Settings" } }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Error al instalar: %@" + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Iniciar sesión automáticamente está pendiente de aprobación en Ajustes del Sistema" } }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Échec de l’installation : %@" + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "L’ouverture à la connexion est en attente d’approbation dans Réglages Système" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "インストールに失敗しました: %@" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ログイン時に起動するにはシステム設定での承認が必要です" } }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "安装失败:%@" + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "开机启动需在系统设置中批准" } } } }, - "Invalid Folder": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Invalid Folder" + "Launch at login requires RClick to be installed in /Applications" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Launch at login requires RClick to be installed in /Applications" } }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Carpeta no válida" + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Para iniciar sesión automáticamente, RClick debe instalarse en /Applications" } }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Dossier non valide" + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "L’ouverture à la connexion nécessite que RClick soit installé dans /Applications" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "無効なフォルダ" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ログイン時に起動するには RClick を /Applications にインストールする必要があります" } }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "无效文件夹" + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "开机启动需要将 RClick 安装到 /Applications 目录" } } } }, - "Launch at login": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Launch at login" + "Logs" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Logs" } }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Abrir al iniciar sesión" + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Registros" } }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Ouvrir à la connexion" + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Journaux" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "ログイン時に起動" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ログ" } }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "登录时启动" + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "日志" } } } }, - "Logs": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Logs" + "Main Controls" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Main Controls" } }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Registros" + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Controles principales" } }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Journaux" + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Commandes principales" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "ログ" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "メイン設定" } }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "日志" + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "主要控制" } } } }, - "Main Controls": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Main Controls" + "Manage…" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Manage…" } }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Controles principales" + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Administrar…" } }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Commandes principales" + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Gérer…" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "メイン設定" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "管理…" } }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "主要控制" + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "管理…" } } } }, - "Manage…": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Manage…" + "More" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "More" } }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Administrar…" + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Más" } }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Gérer…" + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Plus" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "管理…" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "その他" } }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "管理…" + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "更多" } } } }, - "Name": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Name" + "Name" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Name" } }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Nombre" + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Nombre" } }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Nom" + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Nom" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "名称" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "名称" } }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "名称" + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "名称" } } } }, - "New File": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "New File" + "New File" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "New File" } }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Nuevo archivo" + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Nuevo archivo" } }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Nouveau fichier" + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Nouveau fichier" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "新規ファイル" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "新規ファイル" } }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "新建文件" + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "新建文件" } } } }, - "New Version Available": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "New Version Available" + "New Version Available" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "New Version Available" } }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Nueva versión disponible" + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Nueva versión disponible" } }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Nouvelle version disponible" + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Nouvelle version disponible" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "新しいバージョンがあります" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "新しいバージョンがあります" } }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "发现新版本" + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "发现新版本" } } } }, - "No .app application was found in the ZIP file.": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "No .app application was found in the ZIP file." + "No .app application was found in the ZIP file." : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "No .app application was found in the ZIP file." } }, - "es": { - "stringUnit": { - "state": "translated", - "value": "No se encontró ninguna aplicación .app en el archivo ZIP." + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "No se encontró ninguna aplicación .app en el archivo ZIP." } }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Aucune application .app n’a été trouvée dans le fichier ZIP." + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Aucune application .app n’a été trouvée dans le fichier ZIP." } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "ZIP ファイル内に .app アプリケーションが見つかりません。" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ZIP ファイル内に .app アプリケーションが見つかりません。" } }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "在 ZIP 文件中未找到 .app 应用程序。" + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "在 ZIP 文件中未找到 .app 应用程序。" } } } }, - "No .app.zip application package was found.": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "No .app.zip application package was found." + "No .app.zip application package was found." : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "No .app.zip application package was found." } }, - "es": { - "stringUnit": { - "state": "translated", - "value": "No se encontró ningún paquete de aplicación .app.zip." + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "No se encontró ningún paquete de aplicación .app.zip." } }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Aucun paquet d’application .app.zip n’a été trouvé." + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Aucun paquet d’application .app.zip n’a été trouvé." } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": ".app.zip 形式のアプリケーションパッケージが見つかりません。" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : ".app.zip 形式のアプリケーションパッケージが見つかりません。" } }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "未找到 .app.zip 格式的应用程序包。" + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "未找到 .app.zip 格式的应用程序包。" } } } }, - "No folders authorized": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "No folders authorized" + "No application could open the configuration file. Try Reveal in Finder and choose a text editor." : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "No application could open the configuration file. Try Reveal in Finder and choose a text editor." } }, - "es": { - "stringUnit": { - "state": "translated", - "value": "No hay carpetas autorizadas" + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ninguna aplicación pudo abrir el archivo de configuración. Usa «Mostrar en Finder» y elige un editor de texto." } }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Aucun dossier autorisé" + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Aucune application n’a pu ouvrir le fichier de configuration. Utilisez « Afficher dans le Finder » et choisissez un éditeur de texte." } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "認証されたフォルダはありません" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "設定ファイルを開けるアプリケーションがありません。「Finderに表示」を使い、テキストエディタを選択してください。" } }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "尚未授权任何文件夹" + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "没有应用能够打开配置文件。请使用“在访达中显示”,然后选择文本编辑器打开。" } } } }, - "No update is available.": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "No update is available." + "No folders authorized" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "No folders authorized" } }, - "es": { - "stringUnit": { - "state": "translated", - "value": "No hay actualizaciones disponibles." + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "No hay carpetas autorizadas" } }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Aucune mise à jour disponible." + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Aucun dossier autorisé" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "利用可能なアップデートはありません。" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "認証されたフォルダはありません" } }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "没有可用的更新。" + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "尚未授权任何文件夹" } } } }, - "Not Authorized": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Not Authorized" + "No update is available." : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "No update is available." } }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Sin autorización" + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "No hay actualizaciones disponibles." } }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Non autorisé" + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Aucune mise à jour disponible." } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "未許可" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "利用可能なアップデートはありません。" } }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "未授权" + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "没有可用的更新。" } } } }, - "Notice": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Notice" + "Not Authorized" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Not Authorized" } }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Aviso" + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Sin autorización" } }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Avis" + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Non autorisé" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "お知らせ" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "未許可" } }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "提示" + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "未授权" } } } }, - "OK": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "OK" + "Notice" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Notice" } }, - "es": { - "stringUnit": { - "state": "translated", - "value": "OK" + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Aviso" } }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "OK" + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Avis" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "OK" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "お知らせ" } }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "确定" + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "提示" } } } }, - "Open Settings": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Open Settings" + "OK" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "OK" } }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Abrir Ajustes" + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "OK" } }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Ouvrir les réglages" + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "OK" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "設定を開く" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "OK" } }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "打开设置" + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "确定" } } } }, - "Open With": { - "extractionState": "stale", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Open With" + "Open App Store" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Open App Store" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Abrir App Store" } }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Abrir con" + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ouvrir l’App Store" } }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Ouvrir avec" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "App Store を開く" } }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "用...打开" + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "打开 App Store" } } } }, - "Open With %@": { - "extractionState": "stale", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Open With %@" + "Open Config" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Open Config" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Abrir configuración" } }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Abrir con %@" + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ouvrir la configuration" } }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Ouvrir avec %@" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "設定ファイルを開く" } }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "用 %@ 打开" + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "打开配置" } } } }, - "Permissions": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Permissions" + "Open in a new window" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Open in a new window" } }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Permisos" + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Abrir en una nueva ventana" } }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Autorisations" + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ouvrir dans une nouvelle fenêtre" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "権限" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "新しいウィンドウで開く" } }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "权限" + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "在新窗口中打开" } } } }, - "Please select the correct Applications folder.": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Please select the correct Applications folder." + "Open Settings" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Open Settings" } }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Selecciona la carpeta Aplicaciones correcta." + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Abrir Ajustes" } }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Veuillez sélectionner le bon dossier Applications." + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ouvrir les réglages" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "正しいアプリケーションフォルダを選択してください。" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "設定を開く" } }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "请选择正确的“应用程序”文件夹。" + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "打开设置" } } } }, - "PPTX": { - "extractionState": "stale", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "PPTX" + "Open With" : { + "extractionState" : "stale", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Open With" } }, - "es": { - "stringUnit": { - "state": "translated", - "value": "PPTX" + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Abrir con" } }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "PPTX" + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ouvrir avec" } }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "PowerPoint 演示文稿" + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "用...打开" } } } }, - "Preview:": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Preview:" + "Open With %@" : { + "extractionState" : "stale", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Open With %@" } }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Vista previa:" + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Abrir con %@" } }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Aperçu :" + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ouvrir avec %@" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "プレビュー:" - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "预览:" + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "用 %@ 打开" } } } }, - "Protected system folders cannot be deleted: %@": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Protected system folders cannot be deleted: %@" + "Permissions" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Permissions" } }, - "es": { - "stringUnit": { - "state": "translated", - "value": "No se pueden eliminar las carpetas protegidas del sistema: %@" + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Permisos" } }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Les dossiers système protégés ne peuvent pas être supprimés : %@" + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Autorisations" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "保護されたシステムフォルダは削除できません: %@" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "権限" } }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "无法删除系统保护文件夹:%@" + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "权限" } } } }, - "Protected system folders cannot be shared: %@": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Protected system folders cannot be shared: %@" + "Please select the correct Applications folder." : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Please select the correct Applications folder." } }, - "es": { - "stringUnit": { - "state": "translated", - "value": "No se pueden compartir las carpetas protegidas del sistema: %@" + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Selecciona la carpeta Aplicaciones correcta." } }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Les dossiers système protégés ne peuvent pas être partagés : %@" + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Veuillez sélectionner le bon dossier Applications." } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "保護されたシステムフォルダは共有できません: %@" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "正しいアプリケーションフォルダを選択してください。" } }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "无法分享系统保护文件夹:%@" + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "请选择正确的“应用程序”文件夹。" } } } }, - "Quit": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Quit" - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Salir" + "PPTX" : { + "extractionState" : "stale", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "PPTX" } }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Quitter" + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "PPTX" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "終了" + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "PPTX" } }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "退出" + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "PowerPoint 演示文稿" } } } }, - "RClick": { - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "RClick" + "Preview:" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Preview:" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Vista previa:" } }, - "es": { - "stringUnit": { - "state": "translated", - "value": "RClick" + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Aperçu :" } }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "RClick" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "プレビュー:" } }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "RClick" + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "预览:" } } } }, - "RClick (loading...)": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "RClick (loading...)" + "Protected system folders cannot be deleted: %@" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Protected system folders cannot be deleted: %@" } }, - "es": { - "stringUnit": { - "state": "translated", - "value": "RClick (cargando...)" + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "No se pueden eliminar las carpetas protegidas del sistema: %@" } }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "RClick (chargement…)" + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Les dossiers système protégés ne peuvent pas être supprimés : %@" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "RClick(読み込み中...)" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "保護されたシステムフォルダは削除できません: %@" } }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "RClick(加载中...)" + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "无法删除系统保护文件夹:%@" } } } }, - "RClick is a right-click menu extension that allows you to add applications for opening folders and includes some common actions!": { - "extractionState": "stale", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "RClick is a right-click menu extension that allows you to add applications for opening folders and includes some common actions!" + "Protected system folders cannot be shared: %@" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Protected system folders cannot be shared: %@" } }, - "es": { - "stringUnit": { - "state": "translated", - "value": "RClick es una extensión del menú contextual que te permite agregar aplicaciones para abrir carpetas e incluye algunas acciones frecuentes." + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "No se pueden compartir las carpetas protegidas del sistema: %@" } }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "RClick est une extension du menu clic droit qui vous permet d’ajouter des applications pour ouvrir des dossiers et inclut quelques actions courantes !" + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Les dossiers système protégés ne peuvent pas être partagés : %@" } }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "RClick 是一个右键菜单扩展,可以添加打开文件夹的应用,可以添加一些常用的操作!" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "保護されたシステムフォルダは共有できません: %@" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "无法分享系统保护文件夹:%@" } } } }, - "RClick is a right-click menu extension that allows you to add applications for opening folders and includes some common actions.": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "RClick is a right-click menu extension that allows you to add applications for opening folders and includes some common actions." + "Quit" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Quit" } }, - "es": { - "stringUnit": { - "state": "translated", - "value": "RClick es una extensión del menú contextual que te permite agregar aplicaciones para abrir carpetas e incluye algunas acciones frecuentes." + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Salir" } }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "RClick est une extension du menu clic droit qui vous permet d’ajouter des applications pour ouvrir des dossiers et inclut quelques actions courantes." + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Quitter" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "RClick はフォルダを開くアプリを追加できる右クリックメニュー拡張で、いくつかの便利な操作も含まれています。" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "終了" } }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "RClick 是一个右键菜单扩展,可以添加打开文件夹的应用,并提供一些常用操作。" + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "退出" } } } }, - "RClick needs Full Disk Access to create files, delete files, and manage hidden files in protected folders (like Desktop, Documents, and Downloads).\n\nWithout this permission, some operations may fail on protected directories.\n\nTo enable:\n1. Click \"Open Settings\" below\n2. Click the lock icon and authenticate\n3. Click \"+\" and add RClick from your Applications folder\n4. Toggle the switch next to RClick to ON": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "RClick needs Full Disk Access to create files, delete files, and manage hidden files in protected folders (like Desktop, Documents, and Downloads).\n\nWithout this permission, some operations may fail on protected directories.\n\nTo enable:\n1. Click \"Open Settings\" below\n2. Click the lock icon and authenticate\n3. Click \"+\" and add RClick from your Applications folder\n4. Toggle the switch next to RClick to ON" - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "RClick necesita Acceso total al disco para crear archivos, eliminar archivos y administrar archivos ocultos en carpetas protegidas, como Escritorio, Documentos y Descargas.\n\nSin este permiso, algunas operaciones pueden fallar en los directorios protegidos.\n\nPara activarlo:\n1. Haz clic en “Abrir Ajustes” más abajo\n2. Haz clic en el icono del candado y autentícate\n3. Haz clic en “+” y agrega RClick desde tu carpeta Aplicaciones\n4. Activa el interruptor junto a RClick" + "RClick" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "RClick" } }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "RClick a besoin de l’accès complet au disque pour créer et supprimer des fichiers, et gérer les fichiers masqués dans les dossiers protégés (comme Bureau, Documents et Téléchargements).\n\nSans cette autorisation, certaines opérations peuvent échouer dans les dossiers protégés.\n\nPour l’activer :\n1. Cliquez sur « Ouvrir les réglages » ci-dessous\n2. Cliquez sur l’icône de cadenas et authentifiez-vous\n3. Cliquez sur « + » et ajoutez RClick depuis votre dossier Applications\n4. Activez l’interrupteur à côté de RClick" + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "RClick" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "RClick がデスクトップ、書類、ダウンロードなどの保護されたフォルダでファイルの作成、削除、隠しファイルの管理を行うには、フルディスクアクセスが必要です。\n\nこの権限がない場合、保護されたディレクトリで一部の操作が失敗することがあります。\n\n有効にするには:\n1. 下の「設定を開く」をクリックします\n2. 鍵アイコンをクリックして認証します\n3. 「+」をクリックし、アプリケーションフォルダから RClick を追加します\n4. RClick の横にあるスイッチをオンにします" + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "RClick" } }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "RClick 需要完全磁盘访问权限,才能在受保护文件夹中创建文件、删除文件和管理隐藏文件,例如桌面、文稿和下载。\n\n没有此权限时,某些操作可能会在受保护目录中失败。\n\n启用方法:\n1. 点击下方“打开设置”\n2. 点击锁图标并认证\n3. 点击“+”,从“应用程序”文件夹添加 RClick\n4. 打开 RClick 旁边的开关" + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "RClick" } } } }, - "RClick needs Full Disk Access to work with files in protected directories": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "RClick needs Full Disk Access to work with files in protected directories" + "RClick (loading...)" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "RClick (loading...)" } }, - "es": { - "stringUnit": { - "state": "translated", - "value": "RClick necesita Acceso total al disco para trabajar con archivos en directorios protegidos" + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "RClick (cargando...)" } }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "RClick a besoin de l’accès complet au disque pour manipuler les fichiers des dossiers protégés" + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "RClick (chargement…)" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "RClick が保護されたディレクトリ内のファイルを操作するにはフルディスクアクセスが必要です" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "RClick(読み込み中...)" } }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "RClick 需要完全磁盘访问权限才能正常操作受保护目录中的文件" + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "RClick(加载中...)" } } } }, - "RClick needs permission to install the update into your Applications folder.": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "RClick needs permission to install the update into your Applications folder." - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "RClick necesita permiso para instalar la actualización en tu carpeta Aplicaciones." + "RClick is a right-click menu extension that allows you to add applications for opening folders and includes some common actions!" : { + "extractionState" : "stale", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "RClick is a right-click menu extension that allows you to add applications for opening folders and includes some common actions!" } }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "RClick a besoin d’une autorisation pour installer la mise à jour dans votre dossier Applications." + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "RClick es una extensión del menú contextual que te permite agregar aplicaciones para abrir carpetas e incluye algunas acciones frecuentes." } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "RClick がアップデートをアプリケーションフォルダにインストールするには権限が必要です。" + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "RClick est une extension du menu clic droit qui vous permet d’ajouter des applications pour ouvrir des dossiers et inclut quelques actions courantes !" } }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "RClick 需要权限以将更新安装到您的“应用程序”文件夹中。" + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "RClick 是一个右键菜单扩展,可以添加打开文件夹的应用,可以添加一些常用的操作!" } } } }, - "Remove folder permission": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Remove folder permission" + "RClick is a right-click menu extension that allows you to add applications for opening folders and includes some common actions." : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "RClick is a right-click menu extension that allows you to add applications for opening folders and includes some common actions." } }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Quitar el permiso de la carpeta" + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "RClick es una extensión del menú contextual que te permite agregar aplicaciones para abrir carpetas e incluye algunas acciones frecuentes." } }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Retirer l’autorisation du dossier" + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "RClick est une extension du menu clic droit qui vous permet d’ajouter des applications pour ouvrir des dossiers et inclut quelques actions courantes." } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "フォルダ権限を削除" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "RClick はフォルダを開くアプリを追加できる右クリックメニュー拡張で、いくつかの便利な操作も含まれています。" } }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "移除文件夹权限" + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "RClick 是一个右键菜单扩展,可以添加打开文件夹的应用,并提供一些常用操作。" } } } }, - "Reset": { - "extractionState": "stale", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Reset" + "RClick is installed from the Mac App Store. Please update it from the App Store." : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "RClick is installed from the Mac App Store. Please update it from the App Store." } }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Restablecer" + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "RClick se instaló desde la Mac App Store. Actualízalo desde la App Store." } }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Réinitialiser" + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "RClick a été installé depuis le Mac App Store. Veuillez le mettre à jour depuis l’App Store." } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "リセット" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "RClick は Mac App Store からインストールされています。App Store からアップデートしてください。" } }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "重置" + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "RClick 是从 Mac App Store 安装的。请从 App Store 更新。" } } } }, - "Reset All Settings?": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Reset All Settings?" + "RClick needs access to this folder to delete, create, and modify files. Choose this folder or a broader parent folder to cover its subfolders. You can manage these grants in Settings → Folder Permissions." : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "RClick needs access to this folder to delete, create, and modify files. Choose this folder or a broader parent folder to cover its subfolders. You can manage these grants in Settings → Folder Permissions." } }, - "es": { - "stringUnit": { - "state": "translated", - "value": "¿Restablecer todos los ajustes?" + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "RClick necesita acceso a esta carpeta para eliminar, crear y modificar archivos. Elige esta carpeta o una carpeta principal más amplia para cubrir también sus subcarpetas. Puedes administrar estos permisos en Ajustes → Permisos de carpetas." } }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Réinitialiser tous les réglages ?" + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "RClick a besoin d’accéder à ce dossier pour supprimer, créer et modifier des fichiers. Choisissez ce dossier ou un dossier parent plus large pour couvrir ses sous-dossiers. Vous pouvez gérer ces autorisations dans Réglages → Autorisations de dossiers." } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "すべての設定をリセットしますか?" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "RClick がこのフォルダ内のファイルを削除・作成・変更するにはアクセス権が必要です。このフォルダ、またはより上位のフォルダを選択するとサブフォルダもカバーされます。許可は設定 → フォルダ権限で管理できます。" } }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "重置所有设置?" + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "RClick 需要访问此文件夹以删除、创建和修改文件。请选择此文件夹或更上层的父文件夹以覆盖其子文件夹。可在 设置 → 文件夹权限 中管理这些授权。" } } } }, - "Reset All Settings…": { - "extractionState": "stale", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Reset All Settings…" + "RClick needs Full Disk Access to create files, delete files, and manage hidden files in protected folders (like Desktop, Documents, and Downloads).\n\nWithout this permission, some operations may fail on protected directories.\n\nTo enable:\n1. Click \"Open Settings\" below\n2. Click the lock icon and authenticate\n3. Click \"+\" and add RClick from your Applications folder\n4. Toggle the switch next to RClick to ON" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "RClick needs Full Disk Access to create files, delete files, and manage hidden files in protected folders (like Desktop, Documents, and Downloads).\n\nWithout this permission, some operations may fail on protected directories.\n\nTo enable:\n1. Click \"Open Settings\" below\n2. Click the lock icon and authenticate\n3. Click \"+\" and add RClick from your Applications folder\n4. Toggle the switch next to RClick to ON" } }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Restablecer todos los ajustes…" + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "RClick necesita Acceso total al disco para crear archivos, eliminar archivos y administrar archivos ocultos en carpetas protegidas, como Escritorio, Documentos y Descargas.\n\nSin este permiso, algunas operaciones pueden fallar en los directorios protegidos.\n\nPara activarlo:\n1. Haz clic en “Abrir Ajustes” más abajo\n2. Haz clic en el icono del candado y autentícate\n3. Haz clic en “+” y agrega RClick desde tu carpeta Aplicaciones\n4. Activa el interruptor junto a RClick" } }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Réinitialiser tous les réglages…" + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "RClick a besoin de l’accès complet au disque pour créer et supprimer des fichiers, et gérer les fichiers masqués dans les dossiers protégés (comme Bureau, Documents et Téléchargements).\n\nSans cette autorisation, certaines opérations peuvent échouer dans les dossiers protégés.\n\nPour l’activer :\n1. Cliquez sur « Ouvrir les réglages » ci-dessous\n2. Cliquez sur l’icône de cadenas et authentifiez-vous\n3. Cliquez sur « + » et ajoutez RClick depuis votre dossier Applications\n4. Activez l’interrupteur à côté de RClick" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "すべての設定をリセット…" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "RClick がデスクトップ、書類、ダウンロードなどの保護されたフォルダでファイルの作成、削除、隠しファイルの管理を行うには、フルディスクアクセスが必要です。\n\nこの権限がない場合、保護されたディレクトリで一部の操作が失敗することがあります。\n\n有効にするには:\n1. 下の「設定を開く」をクリックします\n2. 鍵アイコンをクリックして認証します\n3. 「+」をクリックし、アプリケーションフォルダから RClick を追加します\n4. RClick の横にあるスイッチをオンにします" } }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "重置所有设置…" + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "RClick 需要完全磁盘访问权限,才能在受保护文件夹中创建文件、删除文件和管理隐藏文件,例如桌面、文稿和下载。\n\n没有此权限时,某些操作可能会在受保护目录中失败。\n\n启用方法:\n1. 点击下方“打开设置”\n2. 点击锁图标并认证\n3. 点击“+”,从“应用程序”文件夹添加 RClick\n4. 打开 RClick 旁边的开关" } } } }, - "Resetting all settings restores the default configuration and cannot be undone": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Resetting all settings restores the default configuration and cannot be undone" + "RClick needs Full Disk Access to work with files in protected directories" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "RClick needs Full Disk Access to work with files in protected directories" } }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Restablecer todos los ajustes restaura la configuración predeterminada y no se puede deshacer" + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "RClick necesita Acceso total al disco para trabajar con archivos en directorios protegidos" } }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "La réinitialisation de tous les réglages restaure la configuration par défaut et est irréversible" + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "RClick a besoin de l’accès complet au disque pour manipuler les fichiers des dossiers protégés" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "すべての設定をリセットすると既定値に戻り、この操作は元に戻せません" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "RClick が保護されたディレクトリ内のファイルを操作するにはフルディスクアクセスが必要です" } }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "重置所有设置将恢复默认配置,此操作不可逆" + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "RClick 需要完全磁盘访问权限才能正常操作受保护目录中的文件" } } } }, - "Restart Later": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Restart Later" + "RClick needs permission to install the update into your Applications folder." : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "RClick needs permission to install the update into your Applications folder." } }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Reiniciar más tarde" + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "RClick necesita permiso para instalar la actualización en tu carpeta Aplicaciones." } }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Redémarrer plus tard" + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "RClick a besoin d’une autorisation pour installer la mise à jour dans votre dossier Applications." } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "あとで再起動" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "RClick がアップデートをアプリケーションフォルダにインストールするには権限が必要です。" } }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "稍后重启" + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "RClick 需要权限以将更新安装到您的“应用程序”文件夹中。" } } } }, - "Restart Now": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Restart Now" + "Remove folder permission" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Remove folder permission" } }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Reiniciar ahora" + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Quitar el permiso de la carpeta" } }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Redémarrer maintenant" + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Retirer l’autorisation du dossier" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "今すぐ再起動" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "フォルダ権限を削除" } }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "立即重启" + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "移除文件夹权限" } } } }, - "Restore Defaults": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Restore Defaults" + "Reset" : { + "extractionState" : "stale", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Reset" } }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Restaurar valores predeterminados" + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Restablecer" } }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Rétablir les valeurs par défaut" + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Réinitialiser" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "デフォルトに戻す" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "リセット" } }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "恢复默认" + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "重置" } } } }, - "Run Arguments": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Run Arguments" + "Reset All Settings?" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Reset All Settings?" } }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Argumentos de ejecución" + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "¿Restablecer todos los ajustes?" } }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Arguments d’exécution" + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Réinitialiser tous les réglages ?" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "実行引数" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "すべての設定をリセットしますか?" } }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "运行参数" + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "重置所有设置?" } } } }, - "Save": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Save" + "Reset All Settings…" : { + "extractionState" : "stale", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Reset All Settings…" } }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Guardar" + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Restablecer todos los ajustes…" } }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Enregistrer" + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Réinitialiser tous les réglages…" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "保存" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "すべての設定をリセット…" } }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "保存" + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "重置所有设置…" } } } }, - "Separate multiple arguments with semicolons (;)": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Separate multiple arguments with semicolons (;)" + "Resetting all settings restores the default configuration and cannot be undone" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Resetting all settings restores the default configuration and cannot be undone" } }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Separa varios argumentos con punto y coma (;)" + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Restablecer todos los ajustes restaura la configuración predeterminada y no se puede deshacer" } }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Séparez les arguments par des points-virgules (;)" + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "La réinitialisation de tous les réglages restaure la configuration par défaut et est irréversible" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "複数の引数はセミコロン(;)で区切ってください" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "すべての設定をリセットすると既定値に戻り、この操作は元に戻せません" } }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "多个参数用分号(;)分隔" + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "重置所有设置将恢复默认配置,此操作不可逆" } } } }, - "Settings": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Settings" + "Restart Later" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Restart Later" } }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Ajustes" + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Reiniciar más tarde" } }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Réglages" + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Redémarrer plus tard" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "設定" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "あとで再起動" } }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "设置" + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "稍后重启" } } } }, - "Settings Management": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Settings Management" + "Restart Now" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Restart Now" } }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Administración de ajustes" + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Reiniciar ahora" } }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Gestion des réglages" + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Redémarrer maintenant" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "設定管理" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "今すぐ再起動" } }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "设置管理" + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "立即重启" } } } }, - "Settings…": { - "extractionState": "stale", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Settings…" + "Restore Defaults" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Restore Defaults" } }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Ajustes…" + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Restaurar valores predeterminados" } }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Réglages…" + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Rétablir les valeurs par défaut" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "設定…" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "デフォルトに戻す" } }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "设置…" + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "恢复默认" } } } }, - "SF Symbol Name": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "SF Symbol Name" + "Reveal in Finder" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Reveal in Finder" } }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Nombre del SF Symbol" + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Mostrar en Finder" } }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Nom du symbole SF" + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Afficher dans le Finder" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "SF Symbol 名" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "Finderに表示" } }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "SF Symbol 名称" + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "在访达中显示" } } } }, - "Show icon in menu bar": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Show icon in menu bar" + "Run Arguments" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Run Arguments" } }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Mostrar el icono en la barra de menús" + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Argumentos de ejecución" } }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Afficher l’icône dans la barre des menus" + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Arguments d’exécution" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "メニューバーにアイコンを表示" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "実行引数" } }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "在菜单栏显示图标" + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "运行参数" } } } }, - "Template": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Template" + "Save" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Save" } }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Plantilla" + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Guardar" } }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Modèle" + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Enregistrer" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "テンプレート" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "保存" } }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "模板" + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "保存" } } } }, - "The application bundle is invalid or damaged.": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "The application bundle is invalid or damaged." + "Separate multiple arguments with semicolons (;)" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Separate multiple arguments with semicolons (;)" } }, - "es": { - "stringUnit": { - "state": "translated", - "value": "El paquete de la aplicación no es válido o está dañado." + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Separa varios argumentos con punto y coma (;)" } }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Le paquet de l’application est non valide ou endommagé." + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Séparez les arguments par des points-virgules (;)" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "アプリケーションバンドルが無効または破損しています。" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "複数の引数はセミコロン(;)で区切ってください" } }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "应用程序包无效或损坏。" + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "多个参数用分号(;)分隔" } } } }, - "The application has been updated successfully. Restart the app to finish the update.": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "The application has been updated successfully. Restart the app to finish the update." + "Settings" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Settings" } }, - "es": { - "stringUnit": { - "state": "translated", - "value": "La aplicación se actualizó correctamente. Reinicia la app para finalizar la actualización." + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ajustes" } }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "L’application a été mise à jour avec succès. Redémarrez l’app pour terminer la mise à jour." + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Réglages" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "アプリケーションは正常に更新されました。更新を完了するにはアプリを再起動してください。" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "設定" } }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "应用程序已成功更新。需要重启应用来完成更新过程。" + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "设置" } } } }, - "The current folder cannot be deleted. Please select files or subfolders instead.": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "The current folder cannot be deleted. Please select files or subfolders instead." + "Settings Management" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Settings Management" } }, - "es": { - "stringUnit": { - "state": "translated", - "value": "No se puede eliminar la carpeta actual. En su lugar, selecciona archivos o subcarpetas." + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Administración de ajustes" } }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Le dossier actuel ne peut pas être supprimé. Sélectionnez plutôt des fichiers ou des sous-dossiers." + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Gestion des réglages" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "現在のフォルダは削除できません。代わりにファイルまたはサブフォルダを選択してください。" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "設定管理" } }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "无法删除当前文件夹,请选择文件或子文件夹进行删除。" + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "设置管理" } } } }, - "The current folder cannot be shared. Please select files or subfolders instead.": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "The current folder cannot be shared. Please select files or subfolders instead." + "Settings…" : { + "extractionState" : "stale", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Settings…" } }, - "es": { - "stringUnit": { - "state": "translated", - "value": "No se puede compartir la carpeta actual. En su lugar, selecciona archivos o subcarpetas." + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ajustes…" } }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Le dossier actuel ne peut pas être partagé. Sélectionnez plutôt des fichiers ou des sous-dossiers." + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Réglages…" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "現在のフォルダは共有できません。代わりにファイルまたはサブフォルダを選択してください。" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "設定…" } }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "无法共享当前文件夹,请选择文件或子文件夹进行共享。" + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "设置…" } } } }, - "The current version is already up to date.": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "The current version is already up to date." + "SF Symbol Name" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "SF Symbol Name" } }, - "es": { - "stringUnit": { - "state": "translated", - "value": "La versión actual ya está actualizada." + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Nombre del SF Symbol" } }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "La version actuelle est déjà à jour." + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Nom du symbole SF" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "現在のバージョンはすでに最新です。" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "SF Symbol 名" } }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "当前版本已是最新,无需更新。" + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "SF Symbol 名称" } } } }, - "The selected folder is a subfolder of an already selected folder. Please choose a different folder.": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "The selected folder is a subfolder of an already selected folder. Please choose a different folder." + "Show icon in menu bar" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Show icon in menu bar" } }, - "es": { - "stringUnit": { - "state": "translated", - "value": "La carpeta seleccionada es una subcarpeta de otra que ya elegiste. Elige una carpeta diferente." + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Mostrar el icono en la barra de menús" } }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Le dossier sélectionné est un sous-dossier d’un dossier déjà sélectionné. Veuillez choisir un autre dossier." + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Afficher l’icône dans la barre des menus" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "選択したフォルダは既に選択済みのフォルダのサブフォルダです。別のフォルダを選択してください。" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "メニューバーにアイコンを表示" } }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "所选文件夹是已选文件夹的子目录,请选择其他文件夹。" + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "在菜单栏显示图标" } } } }, - "The user cancelled authorization.": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "The user cancelled authorization." + "Template" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Template" } }, - "es": { - "stringUnit": { - "state": "translated", - "value": "El usuario canceló la autorización." + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Plantilla" } }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "L’utilisateur a annulé l’autorisation." + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Modèle" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "ユーザーが認証をキャンセルしました。" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "テンプレート" } }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "用户取消了授权。" + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "模板" } } } }, - "This will delete all custom configurations and restore the defaults. This action cannot be undone.": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "This will delete all custom configurations and restore the defaults. This action cannot be undone." + "The application bundle is invalid or damaged." : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "The application bundle is invalid or damaged." } }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Se eliminarán todas las configuraciones personalizadas y se restaurarán los valores predeterminados. Esta acción no se puede deshacer." + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "El paquete de la aplicación no es válido o está dañado." } }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Toutes les configurations personnalisées seront supprimées et les valeurs par défaut rétablies. Cette action est irréversible." + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Le paquet de l’application est non valide ou endommagé." } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "この操作によりすべてのカスタム設定が削除され、既定値に戻ります。元に戻すことはできません。" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "アプリケーションバンドルが無効または破損しています。" } }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "此操作将删除所有自定义配置,恢复到默认状态。此操作不可逆。" + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "应用程序包无效或损坏。" } } } }, - "Unauthorized Folder": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Unauthorized Folder" + "The application has been updated successfully. Restart the app to finish the update." : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "The application has been updated successfully. Restart the app to finish the update." } }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Carpeta sin autorización" + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "La aplicación se actualizó correctamente. Reinicia la app para finalizar la actualización." } }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Dossier non autorisé" + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "L’application a été mise à jour avec succès. Redémarrez l’app pour terminer la mise à jour." } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "未承認のフォルダ" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "アプリケーションは正常に更新されました。更新を完了するにはアプリを再起動してください。" } }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "未授权文件夹" + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "应用程序已成功更新。需要重启应用来完成更新过程。" } } } }, - "Unhide": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Unhide" + "The current folder cannot be deleted. Please select files or subfolders instead." : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "The current folder cannot be deleted. Please select files or subfolders instead." } }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Mostrar" + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "No se puede eliminar la carpeta actual. En su lugar, selecciona archivos o subcarpetas." } }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Afficher" + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Le dossier actuel ne peut pas être supprimé. Sélectionnez plutôt des fichiers ou des sous-dossiers." } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "再表示" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "現在のフォルダは削除できません。代わりにファイルまたはサブフォルダを選択してください。" } }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "显示" + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "无法删除当前文件夹,请选择文件或子文件夹进行删除。" } } } }, - "Unknown": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Unknown" + "The current folder cannot be shared. Please select files or subfolders instead." : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "The current folder cannot be shared. Please select files or subfolders instead." } }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Desconocido" + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "No se puede compartir la carpeta actual. En su lugar, selecciona archivos o subcarpetas." } }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Inconnu" + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Le dossier actuel ne peut pas être partagé. Sélectionnez plutôt des fichiers ou des sous-dossiers." } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "不明" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "現在のフォルダは共有できません。代わりにファイルまたはサブフォルダを選択してください。" } }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "未知" + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "无法共享当前文件夹,请选择文件或子文件夹进行共享。" } } } }, - "Unknown error": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Unknown error" + "The current version is already up to date." : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "The current version is already up to date." } }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Error desconocido" + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "La versión actual ya está actualizada." } }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Erreur inconnue" + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "La version actuelle est déjà à jour." } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "不明なエラー" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "現在のバージョンはすでに最新です。" } }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "未知错误" + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "当前版本已是最新,无需更新。" } } } }, - "Untitled": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Untitled" + "The selected folder is a subfolder of an already selected folder. Please choose a different folder." : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "The selected folder is a subfolder of an already selected folder. Please choose a different folder." } }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Sin título" + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "La carpeta seleccionada es una subcarpeta de otra que ya elegiste. Elige una carpeta diferente." } }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Sans titre" + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Le dossier sélectionné est un sous-dossier d’un dossier déjà sélectionné. Veuillez choisir un autre dossier." } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "名称未設定" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "選択したフォルダは既に選択済みのフォルダのサブフォルダです。別のフォルダを選択してください。" } }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "未命名" + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "所选文件夹是已选文件夹的子目录,请选择其他文件夹。" } } } }, - "Up to Date": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Up to Date" + "The shared configuration folder is unavailable." : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "The shared configuration folder is unavailable." } }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Todo actualizado" + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "La carpeta de configuración compartida no está disponible." } }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "À jour" + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Le dossier de configuration partagé est indisponible." } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "最新です" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "共有設定フォルダを利用できません。" } }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "已是最新版本" + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "共享配置文件夹不可用。" } } } }, - "Update Installed": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Update Installed" + "The user cancelled authorization." : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "The user cancelled authorization." } }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Actualización instalada" + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "El usuario canceló la autorización." } }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Mise à jour installée" + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "L’utilisateur a annulé l’autorisation." } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "アップデートがインストールされました" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ユーザーが認証をキャンセルしました。" } }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "更新安装完成" + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "用户取消了授权。" } } } }, - "Version %@": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Version %@" + "This will delete all custom configurations and restore the defaults. This action cannot be undone." : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "This will delete all custom configurations and restore the defaults. This action cannot be undone." } }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Versión %@" + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Se eliminarán todas las configuraciones personalizadas y se restaurarán los valores predeterminados. Esta acción no se puede deshacer." } }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Version %@" + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Toutes les configurations personnalisées seront supprimées et les valeurs par défaut rétablies. Cette action est irréversible." } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "バージョン %@" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "この操作によりすべてのカスタム設定が削除され、既定値に戻ります。元に戻すことはできません。" } }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "版本 %@" + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "此操作将删除所有自定义配置,恢复到默认状态。此操作不可逆。" } } } }, - "Version %@ (%@)": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Version %@ (%@)" + "Unable to Open Menu Config" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Unable to Open Menu Config" } }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Versión %@ (%@)" + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "No se puede abrir la configuración del menú" } }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Version %@ (%@)" + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Impossible d’ouvrir la configuration du menu" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "バージョン %@ (%@)" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "メニュー設定ファイルを開けません" } }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "版本 %@ (%@)" + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "无法打开菜单配置" } } } }, - "Version %@ is ignored": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Version %@ is ignored" + "Unauthorized Folder" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Unauthorized Folder" } }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Se ignoró la versión %@" + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Carpeta sin autorización" } }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "La version %@ est ignorée" + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Dossier non autorisé" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "バージョン %@ は無視されています" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "未承認のフォルダ" } }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "已忽略版本 %@" + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "未授权文件夹" } } } }, - "Want to add a feature? Give feedback here.": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Want to add a feature? Give feedback here." + "Unhide" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Unhide" } }, - "es": { - "stringUnit": { - "state": "translated", - "value": "¿Quieres proponer una función? Envía tus comentarios aquí." + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Mostrar" } }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Envie d’une nouvelle fonctionnalité ? Donnez votre avis ici." + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Afficher" } }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "需要添加新功能,在这里反馈" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "再表示" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "显示" } } } }, - "Warning": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Warning" + "Unknown" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Unknown" } }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Advertencia" + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Desconocido" } }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Avertissement" + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Inconnu" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "警告" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "不明" } }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "警告" + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "未知" } } } }, - "Launch at login is pending approval in System Settings": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Launch at login is pending approval in System Settings" + "Unknown error" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Unknown error" } }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Iniciar sesión automáticamente está pendiente de aprobación en Ajustes del Sistema" + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Error desconocido" } }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "L’ouverture à la connexion est en attente d’approbation dans Réglages Système" + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Erreur inconnue" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "ログイン時に起動するにはシステム設定での承認が必要です" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "不明なエラー" } }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "开机启动需在系统设置中批准" + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "未知错误" } } } }, - "Launch at login requires RClick to be installed in /Applications": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Launch at login requires RClick to be installed in /Applications" + "Untitled" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Untitled" } }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Para iniciar sesión automáticamente, RClick debe instalarse en /Applications" + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Sin título" } }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "L’ouverture à la connexion nécessite que RClick soit installé dans /Applications" + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Sans titre" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "ログイン時に起動するには RClick を /Applications にインストールする必要があります" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "名称未設定" } }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "开机启动需要将 RClick 安装到 /Applications 目录" + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "未命名" } } } }, - "Update via Mac App Store": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Update via Mac App Store" + "Up to Date" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Up to Date" } }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Actualizar desde la Mac App Store" + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Todo actualizado" } }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Mettre à jour via le Mac App Store" + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "À jour" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "Mac App Store からアップデート" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "最新です" } }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "通过 Mac App Store 更新" + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "已是最新版本" } } } }, - "RClick is installed from the Mac App Store. Please update it from the App Store.": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "RClick is installed from the Mac App Store. Please update it from the App Store." + "Update Installed" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Update Installed" } }, - "es": { - "stringUnit": { - "state": "translated", - "value": "RClick se instaló desde la Mac App Store. Actualízalo desde la App Store." + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Actualización instalada" } }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "RClick a été installé depuis le Mac App Store. Veuillez le mettre à jour depuis l’App Store." + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Mise à jour installée" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "RClick は Mac App Store からインストールされています。App Store からアップデートしてください。" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "アップデートがインストールされました" } }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "RClick 是从 Mac App Store 安装的。请从 App Store 更新。" + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "更新安装完成" } } } }, - "Open App Store": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Open App Store" + "Update via Mac App Store" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Update via Mac App Store" } }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Abrir App Store" + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Actualizar desde la Mac App Store" } }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Ouvrir l’App Store" + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Mettre à jour via le Mac App Store" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "App Store を開く" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "Mac App Store からアップデート" } }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "打开 App Store" + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "通过 Mac App Store 更新" } } } }, - "Later": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Later" + "v%@" : { + + }, + "Version %@" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Version %@" } }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Más tarde" + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Versión %@" } }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Plus tard" + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Version %@" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "後で" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "バージョン %@" } }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "稍后" + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "版本 %@" } } } }, - "RClick needs access to this folder to delete, create, and modify files. Choose this folder or a broader parent folder to cover its subfolders. You can manage these grants in Settings → Folder Permissions.": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "RClick needs access to this folder to delete, create, and modify files. Choose this folder or a broader parent folder to cover its subfolders. You can manage these grants in Settings → Folder Permissions." + "Version %@ (%@)" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Version %@ (%@)" } }, - "es": { - "stringUnit": { - "state": "translated", - "value": "RClick necesita acceso a esta carpeta para eliminar, crear y modificar archivos. Elige esta carpeta o una carpeta principal más amplia para cubrir también sus subcarpetas. Puedes administrar estos permisos en Ajustes → Permisos de carpetas." + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Versión %@ (%@)" } }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "RClick a besoin d’accéder à ce dossier pour supprimer, créer et modifier des fichiers. Choisissez ce dossier ou un dossier parent plus large pour couvrir ses sous-dossiers. Vous pouvez gérer ces autorisations dans Réglages → Autorisations de dossiers." + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Version %@ (%@)" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "RClick がこのフォルダ内のファイルを削除・作成・変更するにはアクセス権が必要です。このフォルダ、またはより上位のフォルダを選択するとサブフォルダもカバーされます。許可は設定 → フォルダ権限で管理できます。" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "バージョン %@ (%@)" } }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "RClick 需要访问此文件夹以删除、创建和修改文件。请选择此文件夹或更上层的父文件夹以覆盖其子文件夹。可在 设置 → 文件夹权限 中管理这些授权。" + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "版本 %@ (%@)" } } } }, - "Authorizes this folder and all its subfolders": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Authorizes this folder and all its subfolders" + "Version %@ is ignored" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Version %@ is ignored" } }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Autoriza esta carpeta y todas sus subcarpetas" + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Se ignoró la versión %@" } }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Autorise ce dossier et tous ses sous-dossiers" + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "La version %@ est ignorée" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "このフォルダとそのすべてのサブフォルダを許可します" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "バージョン %@ は無視されています" } }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "授权此文件夹及其所有子文件夹" + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "已忽略版本 %@" } } } }, - "Open in a new window": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Open in a new window" - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Abrir en una nueva ventana" + "Want to add a feature? Give feedback here." : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Want to add a feature? Give feedback here." } }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Ouvrir dans une nouvelle fenêtre" + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "¿Quieres proponer una función? Envía tus comentarios aquí." } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "新しいウィンドウで開く" + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Envie d’une nouvelle fonctionnalité ? Donnez votre avis ici." } }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "在新窗口中打开" + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "需要添加新功能,在这里反馈" } } } }, - "Window": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Window" + "Warning" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Warning" } }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Ventana" + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Advertencia" } }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Fenêtre" + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Avertissement" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "ウィンドウ" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "警告" } }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "窗口" + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "警告" } } } }, - "For browser-like apps, launch a new instance instead of opening a new tab in the running one": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "For browser-like apps, launch a new instance instead of opening a new tab in the running one" + "Window" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Window" } }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Para apps tipo navegador, lanza una nueva instancia en lugar de abrir una pestaña en la ya abierta" + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ventana" } }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Pour les apps de type navigateur, lance une nouvelle instance au lieu d’ouvrir un nouvel onglet dans celle en cours" + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Fenêtre" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "ブラウザ系アプリの場合、起動中のインスタンスに新しいタブを開く代わりに、新しいインスタンスを起動します" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ウィンドウ" } }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "对浏览器类 app,改为启动新实例,而不是在已运行的实例中新开标签页" + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "窗口" } } } } }, - "version": "1.0" -} + "version" : "1.0" +} \ No newline at end of file From ea2d4b28eb3cc590167e588c6c122f153ef2d0cd Mon Sep 17 00:00:00 2001 From: wflixu Date: Sun, 13 Sep 2026 11:42:56 +0800 Subject: [PATCH 06/22] chore: bump version to 2.2.1 - MARKETING_VERSION 2.2.0 -> 2.2.1 - CURRENT_PROJECT_VERSION 20260823001 -> 20260913001 Applies to the RClick and FinderSyncExt targets (Debug + Release), keeping the app and its embedded extension in sync. The build number follows the repo convention of YYYYMMDD plus a daily sequence. Co-Authored-By: Claude Code --- RClick.xcodeproj/project.pbxproj | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/RClick.xcodeproj/project.pbxproj b/RClick.xcodeproj/project.pbxproj index 5b290b2..e099602 100644 --- a/RClick.xcodeproj/project.pbxproj +++ b/RClick.xcodeproj/project.pbxproj @@ -563,7 +563,7 @@ CODE_SIGN_ENTITLEMENTS = RClick/RClickDebug.entitlements; CODE_SIGN_STYLE = Automatic; COMBINE_HIDPI_IMAGES = YES; - CURRENT_PROJECT_VERSION = 20260823001; + CURRENT_PROJECT_VERSION = 20260913001; DEAD_CODE_STRIPPING = YES; DEVELOPMENT_TEAM = 4L3563XCBN; ENABLE_APP_SANDBOX = YES; @@ -578,7 +578,7 @@ "@executable_path/../Frameworks", ); MACOSX_DEPLOYMENT_TARGET = 15.6; - MARKETING_VERSION = 2.2.0; + MARKETING_VERSION = 2.2.1; PRODUCT_BUNDLE_IDENTIFIER = cn.wflixu.RClick; PRODUCT_NAME = "$(TARGET_NAME)"; REGISTER_APP_GROUPS = YES; @@ -600,7 +600,7 @@ CODE_SIGN_ENTITLEMENTS = RClick/RClick.entitlements; CODE_SIGN_STYLE = Automatic; COMBINE_HIDPI_IMAGES = YES; - CURRENT_PROJECT_VERSION = 20260823001; + CURRENT_PROJECT_VERSION = 20260913001; DEAD_CODE_STRIPPING = YES; DEVELOPMENT_TEAM = 4L3563XCBN; ENABLE_APP_SANDBOX = YES; @@ -615,7 +615,7 @@ "@executable_path/../Frameworks", ); MACOSX_DEPLOYMENT_TARGET = 15.6; - MARKETING_VERSION = 2.2.0; + MARKETING_VERSION = 2.2.1; PRODUCT_BUNDLE_IDENTIFIER = cn.wflixu.RClick; PRODUCT_NAME = "$(TARGET_NAME)"; REGISTER_APP_GROUPS = YES; @@ -678,7 +678,7 @@ CODE_SIGN_ENTITLEMENTS = FinderSyncExt/FinderSyncExt.entitlements; CODE_SIGN_STYLE = Automatic; COMBINE_HIDPI_IMAGES = YES; - CURRENT_PROJECT_VERSION = 20260823001; + CURRENT_PROJECT_VERSION = 20260913001; DEAD_CODE_STRIPPING = YES; DEVELOPMENT_TEAM = 4L3563XCBN; ENABLE_APP_SANDBOX = YES; @@ -694,7 +694,7 @@ "@executable_path/../../../../Frameworks", ); MACOSX_DEPLOYMENT_TARGET = 15.6; - MARKETING_VERSION = 2.2.0; + MARKETING_VERSION = 2.2.1; PRODUCT_BUNDLE_IDENTIFIER = cn.wflixu.RClick.FinderSyncExt; PRODUCT_NAME = "$(TARGET_NAME)"; REGISTER_APP_GROUPS = YES; @@ -713,7 +713,7 @@ CODE_SIGN_ENTITLEMENTS = FinderSyncExt/FinderSyncExt.entitlements; CODE_SIGN_STYLE = Automatic; COMBINE_HIDPI_IMAGES = YES; - CURRENT_PROJECT_VERSION = 20260823001; + CURRENT_PROJECT_VERSION = 20260913001; DEAD_CODE_STRIPPING = YES; DEVELOPMENT_TEAM = 4L3563XCBN; ENABLE_APP_SANDBOX = YES; @@ -729,7 +729,7 @@ "@executable_path/../../../../Frameworks", ); MACOSX_DEPLOYMENT_TARGET = 15.6; - MARKETING_VERSION = 2.2.0; + MARKETING_VERSION = 2.2.1; PRODUCT_BUNDLE_IDENTIFIER = cn.wflixu.RClick.FinderSyncExt; PRODUCT_NAME = "$(TARGET_NAME)"; REGISTER_APP_GROUPS = YES; From 7e4aafa66e77bbd72297e1ede3a757a645743400 Mon Sep 17 00:00:00 2001 From: wflixu Date: Sun, 13 Sep 2026 11:43:43 +0800 Subject: [PATCH 07/22] refactor(menu): attach menu item paths to custom menu errors CustomMenuError now conforms to LocalizedError. Without it error.localizedDescription degraded to the generic "The operation couldn't be completed." message, so the settings alert could never show the real validation reason. resolved(using:) gains an optional 1-based path, e.g. "3" or "2.1", wrapped around the existing body so the ~12 throw sites stay untouched. Children already carry their full path, so only the innermost error is wrapped. Adds an in-memory decode(_:config:) so callers holding the bytes do not read the file twice. No behaviour change for existing callers: the new parameter is defaulted, and the existing tests only assert that invalid layouts throw, not the message. Co-Authored-By: Claude Code --- Shared/CustomMenu.swift | 46 ++++++++++++++++++++++++++++++++++++----- 1 file changed, 41 insertions(+), 5 deletions(-) diff --git a/Shared/CustomMenu.swift b/Shared/CustomMenu.swift index fc579ef..5b08ae0 100644 --- a/Shared/CustomMenu.swift +++ b/Shared/CustomMenu.swift @@ -14,7 +14,20 @@ struct MenuNode: Codable { var children: [MenuNode]? /// Resolve human-friendly selectors to the same IDs used by existing click handlers. - func resolved(using config: MenuConfigPayload) throws -> MenuNode { + /// + /// `path` is a 1-based menu item path such as "3" or "2.1". It is attached to + /// validation errors so the settings UI can point at the offending entry. + func resolved(using config: MenuConfigPayload, path: String = "") throws -> MenuNode { + do { + return try resolveBody(using: config, path: path) + } catch let error as CustomMenuError { + // Children already carry their full path, so only wrap the innermost message. + guard case .invalid(let message) = error, !path.isEmpty else { throw error } + throw CustomMenuError.invalidAt(path: path, message: message) + } + } + + private func resolveBody(using config: MenuConfigPayload, path: String) throws -> MenuNode { var node = self let selectors = [id, appPath, fileExtension].compactMap { $0 } switch type { @@ -27,7 +40,12 @@ struct MenuNode: Codable { let children, itemType == nil, selectors.isEmpty else { throw CustomMenuError.invalid("submenu requires a title and children, without an item reference") } - node.children = try children.map { try $0.resolved(using: config) } + node.children = try children.enumerated().map { index, child in + try child.resolved( + using: config, + path: path.isEmpty ? "\(index + 1)" : "\(path).\(index + 1)" + ) + } case .item: guard let itemType, children == nil, selectors.count == 1, !selectors[0].isEmpty else { @@ -62,11 +80,21 @@ struct MenuNode: Codable { } } -enum CustomMenuError: Error, CustomStringConvertible { +enum CustomMenuError: Error, CustomStringConvertible, LocalizedError { case invalid(String) + /// A validation failure pinned to a 1-based menu item path, e.g. "3" or "2.1". + case invalidAt(path: String, message: String) + var description: String { - switch self { case .invalid(let message): return message } + switch self { + case .invalid(let message): return message + case .invalidAt(let path, let message): return "[\(path)] \(message)" + } } + + /// Without this, `error.localizedDescription` degrades to the generic + /// "The operation couldn't be completed." and the real reason is lost. + var errorDescription: String? { description } } enum CustomMenu { @@ -78,8 +106,16 @@ enum CustomMenu { } catch CocoaError.fileReadNoSuchFile { return nil } + return try decode(data, config: config) + } + + /// In-memory counterpart of `load`, so callers that already hold the bytes + /// (validation, transfer) do not read the file twice. + static func decode(_ data: Data, config: MenuConfigPayload) throws -> [MenuNode] { let nodes = try JSONDecoder().decode([MenuNode].self, from: data) - return try nodes.map { try $0.resolved(using: config) } + return try nodes.enumerated().map { index, node in + try node.resolved(using: config, path: "\(index + 1)") + } } /// Both nested and top-level leaves use the extension's existing item factories. From 6dbbe07ebb498ded6a57d2b4fb6d7e1ff95c56ed Mon Sep 17 00:00:00 2001 From: wflixu Date: Sun, 13 Sep 2026 11:43:43 +0800 Subject: [PATCH 08/22] chore: drop unused menu config snapshot lastMenuSnapshot / lastSnapshot had no readers anywhere in the repo; the "for diagnostics / fallback" comment described something that was never implemented. Removing it also drops a try? that silently swallowed encoding failures. Co-Authored-By: Claude Code --- RClick/Runtime/MenuService.swift | 5 ----- 1 file changed, 5 deletions(-) diff --git a/RClick/Runtime/MenuService.swift b/RClick/Runtime/MenuService.swift index b5be5f5..29ede0c 100644 --- a/RClick/Runtime/MenuService.swift +++ b/RClick/Runtime/MenuService.swift @@ -13,10 +13,6 @@ import OSLog final class MenuService { /// 菜单版本号(防重复 / 防乱序) private var menuVersion = 0 - /// 最近一次构建的配置快照(编码后,供诊断/兜底) - private var lastMenuSnapshot: Data? - - var lastSnapshot: Data? { lastMenuSnapshot } static var customMenuURL: URL? { FileManager.default.containerURL(forSecurityApplicationGroupIdentifier: Constants.suitName)? @@ -86,7 +82,6 @@ final class MenuService { } } - lastMenuSnapshot = try? JSONEncoder().encode(config) return config } } From ece85f8637a5796bcb79e6004c587d54f5de510e Mon Sep 17 00:00:00 2001 From: wflixu Date: Sun, 13 Sep 2026 11:48:06 +0800 Subject: [PATCH 09/22] feat(settings): apply and restore the custom menu layout The custom menu was opt-in and silent: an invalid custom_menu.json reverted to the default layout with nothing but a console log, and the settings alert could not report anything useful because CustomMenuError did not conform to LocalizedError. Advanced Menu Layout now shows the current state (not enabled / enabled / configuration invalid) and, when invalid, the specific offending entry, e.g. "[2.1] app reference ... matched 0 enabled items". Two buttons are added: - Apply Custom Menu re-reads and applies immediately instead of waiting for the extension heartbeat. It deliberately drives the same .menuConfigShouldUpdate path the heartbeat does, so pressing it and waiting 10 seconds must produce identical menus. - Restore Default Layout deletes the file and keeps a copy as custom_menu.backup.json, making the action reversible. The status is derived on demand rather than cached in buildConfig: that method only runs when the extension asks for a config, which never happens while the extension is disabled - exactly when someone opens Settings to investigate. Each button carries a tooltip stating whether it modifies the file, because "Open Config" also creates the file the first time. Error messages now point at the offending entry. MenuNode paths are attached by wrapping resolved(using:) so the existing throw sites stay untouched, and DecodingError coding paths are rendered as 1-based item paths ([2.1]) using key.intValue to find array indices. CocoaError keeps the system's own localized sentence, which is more accurate than anything hand-written here. Docs: examples/README.md documents the four buttons and the two equivalent ways changes take effect, and warns that the strings in the screenshots are author-written title overrides rather than built-in text. Co-Authored-By: Claude Code --- RClick/Localizable.xcstrings | 735 +++++++++++++++++++ RClick/Runtime/CustomMenuDiagnostics.swift | 80 ++ RClick/Runtime/MenuService.swift | 87 ++- RClick/Settings/GeneralSettingsTabView.swift | 158 +++- RClickTests/CustomMenuStatusTests.swift | 159 ++++ README.md | 2 +- examples/README.md | 21 +- 7 files changed, 1219 insertions(+), 23 deletions(-) create mode 100644 RClick/Runtime/CustomMenuDiagnostics.swift create mode 100644 RClickTests/CustomMenuStatusTests.swift diff --git a/RClick/Localizable.xcstrings b/RClick/Localizable.xcstrings index e9b3b4d..2d40fea 100644 --- a/RClick/Localizable.xcstrings +++ b/RClick/Localizable.xcstrings @@ -6144,6 +6144,741 @@ } } } + }, + "Apply Custom Menu" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Apply Custom Menu" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Aplicar menú personalizado" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Appliquer le menu personnalisé" + } + }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "カスタムメニューを適用" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "应用自定义菜单" + } + } + } + }, + "Restore Default Layout" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Restore Default Layout" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Restaurar diseño predeterminado" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Restaurer la disposition par défaut" + } + }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "デフォルトのレイアウトに戻す" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "恢复默认布局" + } + } + } + }, + "Creates the file from your current menu the first time, then just opens it. Neither changes its contents." : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Creates the file from your current menu the first time, then just opens it. Neither changes its contents." + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "La primera vez crea el archivo a partir de tu menú actual y luego solo lo abre. Ninguna de las dos acciones cambia su contenido." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "La première fois, crée le fichier à partir de votre menu actuel, puis ne fait que l'ouvrir. Ni l'une ni l'autre ne modifie son contenu." + } + }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "初回は現在のメニューからファイルを作成し、以降は開くだけです。どちらも内容は変更しません。" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "首次会按当前菜单生成该文件,之后仅打开它。两者都不会改动文件内容。" + } + } + } + }, + "Shows the file in Finder. Changes nothing." : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Shows the file in Finder. Changes nothing." + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Muestra el archivo en el Finder. No cambia nada." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Affiche le fichier dans le Finder. Ne modifie rien." + } + }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "Finder でファイルを表示します。何も変更しません。" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "在访达中显示该文件。不做任何改动。" + } + } + } + }, + "Applies now instead of waiting up to 10 seconds. Does not change the file." : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Applies now instead of waiting up to 10 seconds. Does not change the file." + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Aplica ahora en lugar de esperar hasta 10 segundos. No modifica el archivo." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Applique immédiatement au lieu d'attendre jusqu'à 10 secondes. Ne modifie pas le fichier." + } + }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "最大10秒待たずにすぐ適用します。ファイルは変更しません。" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "立即生效,无需等待最多 10 秒。不会修改文件。" + } + } + } + }, + "Deletes the file and returns to the default layout, keeping a backup." : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Deletes the file and returns to the default layout, keeping a backup." + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Elimina el archivo y vuelve al diseño predeterminado, conservando una copia." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Supprime le fichier et revient à la disposition par défaut, en conservant une sauvegarde." + } + }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ファイルを削除してデフォルトのレイアウトに戻します。バックアップは保持されます。" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "删除该文件并恢复默认布局,同时保留一份备份。" + } + } + } + }, + "Changes apply on their own within 10 seconds. Removing the file restores the default layout." : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Changes apply on their own within 10 seconds. Removing the file restores the default layout." + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Los cambios se aplican solos en 10 segundos. Eliminar el archivo restaura el diseño predeterminado." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Les modifications s'appliquent d'elles-mêmes sous 10 secondes. Supprimer le fichier restaure la disposition par défaut." + } + }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "変更は10秒以内に自動で適用されます。ファイルを削除するとデフォルトのレイアウトに戻ります。" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "改动会在 10 秒内自动生效。删除该文件即可恢复默认布局。" + } + } + } + }, + "Unavailable" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Unavailable" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "No disponible" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Indisponible" + } + }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "利用できません" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "不可用" + } + } + } + }, + "Not enabled" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Not enabled" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "No activado" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Non activé" + } + }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "未有効" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "未启用" + } + } + } + }, + "Configuration invalid" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Configuration invalid" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Configuración no válida" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Configuration non valide" + } + }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "設定が無効" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "配置无效" + } + } + } + }, + "Using the default layout" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Using the default layout" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Usando el diseño predeterminado" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Disposition par défaut utilisée" + } + }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "デフォルトレイアウトを使用中" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "正在使用默认布局" + } + } + } + }, + "Empty menu" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Empty menu" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Menú vacío" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Menu vide" + } + }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "空のメニュー" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "空菜单" + } + } + } + }, + "%lld items" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "%lld items" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "%lld elementos" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "%lld éléments" + } + }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "%lld 項目" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "%lld 个项目" + } + } + } + }, + "Configuration Not Applied" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Configuration Not Applied" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Configuración no aplicada" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Configuration non appliquée" + } + }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "設定は適用されませんでした" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "配置未生效" + } + } + } + }, + "Unable to Restore Default Layout" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Unable to Restore Default Layout" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "No se puede restaurar el diseño predeterminado" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Impossible de restaurer la disposition par défaut" + } + }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "デフォルトのレイアウトに戻せません" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "无法恢复默认布局" + } + } + } + }, + "Restore the default layout?" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Restore the default layout?" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "¿Restaurar el diseño predeterminado?" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Restaurer la disposition par défaut ?" + } + }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "デフォルトのレイアウトに戻しますか?" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "恢复默认布局?" + } + } + } + }, + "This deletes custom_menu.json and returns to the default menu. A copy is kept as custom_menu.backup.json." : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "This deletes custom_menu.json and returns to the default menu. A copy is kept as custom_menu.backup.json." + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Esto elimina custom_menu.json y vuelve al menú predeterminado. Se guarda una copia como custom_menu.backup.json." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Cela supprime custom_menu.json et revient au menu par défaut. Une copie est conservée sous custom_menu.backup.json." + } + }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "custom_menu.json を削除してデフォルトのメニューに戻します。コピーは custom_menu.backup.json として保存されます。" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "这将删除 custom_menu.json 并恢复默认菜单。副本会保留为 custom_menu.backup.json。" + } + } + } + }, + "Restore" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Restore" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Restaurar" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Restaurer" + } + }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "戻す" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "恢复" + } + } + } + }, + "Missing required field" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Missing required field" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Falta el campo obligatorio" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Champ obligatoire manquant" + } + }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "必須フィールドがありません" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "缺少必填字段" + } + } + } + }, + "Invalid value" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Invalid value" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Valor no válido" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Valeur non valide" + } + }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "値が無効" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "值无效" + } + } + } + }, + "The JSON file is malformed." : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "The JSON file is malformed." + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "El archivo JSON está mal formado." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Le fichier JSON est mal formé." + } + }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "JSON ファイルの形式が正しくありません。" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "JSON 文件格式有误。" + } + } + } } }, "version" : "1.0" diff --git a/RClick/Runtime/CustomMenuDiagnostics.swift b/RClick/Runtime/CustomMenuDiagnostics.swift new file mode 100644 index 0000000..3267e6a --- /dev/null +++ b/RClick/Runtime/CustomMenuDiagnostics.swift @@ -0,0 +1,80 @@ +// +// CustomMenuDiagnostics.swift +// RClick +// +// 把自定义菜单的加载失败翻译成用户能据以行动的一句话。 +// + +import Foundation + +/// Turns custom menu load failures into something the user can act on. +/// +/// Only the wrapper sentences are localized. The parts that carry the actual +/// diagnosis - a JSON position, or the reference that failed to match - are +/// appended verbatim: they are the precise bit, and they are also what the +/// "hand the file to an assistant" workflow in examples/README.md relies on. +enum CustomMenuDiagnostics { + + /// `DecodingError.Context.underlyingError` stores the JSON parser's line and + /// column readout under this key. There is no Swift constant for it. + private static let debugDescriptionKey = "NSDebugDescription" + + static func message(for error: any Error) -> String { + switch error { + case let error as CustomMenuError: + // Already a full, specific sentence from the layout validator. + return error.description + case let error as DecodingError: + return decodingMessage(for: error) + default: + // CocoaError and friends: the system already produces a localized, + // accurate sentence ("...you don't have permission to view it."), + // which beats anything we would hand-write here. + return error.localizedDescription + } + } + + // MARK: - Decoding failures + + private static func decodingMessage(for error: DecodingError) -> String { + switch error { + case let .keyNotFound(key, context): + return located(context) + AppLocalization.localized("Missing required field") + " \"\(key.stringValue)\"" + case let .typeMismatch(_, context), let .valueNotFound(_, context): + return located(context) + AppLocalization.localized("Invalid value") + ": " + context.debugDescription + case let .dataCorrupted(context): + // A malformed document has no coding path; the parser's line/column + // lives in the underlying error instead. + guard !context.codingPath.isEmpty else { return syntaxMessage(context) } + return located(context) + AppLocalization.localized("Invalid value") + ": " + context.debugDescription + @unknown default: + return AppLocalization.localized("The JSON file is malformed.") + } + } + + private static func syntaxMessage(_ context: DecodingError.Context) -> String { + let base = AppLocalization.localized("The JSON file is malformed.") + guard let nsError = context.underlyingError as? NSError, + let detail = nsError.userInfo[debugDescriptionKey] as? String + else { return base } + // Already reads "around line 5, column 3" and is localized by the system. + return base + " " + detail + } + + /// Renders a coding path as a 1-based menu item path. + /// + /// JSONDecoder only emits integer keys for array positions, so `intValue` + /// reliably identifies the element index and everything else is a field name. + /// `[Index 1, "title"]` becomes `[2] title `, `[Index 1, Index 0]` becomes `[2.1]`. + private static func located(_ context: DecodingError.Context) -> String { + var indices: [Int] = [] + var field: String? + for key in context.codingPath { + if let index = key.intValue { indices.append(index + 1) } else { field = key.stringValue } + } + guard !indices.isEmpty else { + return field.map { "\"\($0)\" " } ?? "" + } + return "[" + indices.map(String.init).joined(separator: ".") + "]" + (field.map { " \($0) " } ?? " ") + } +} diff --git a/RClick/Runtime/MenuService.swift b/RClick/Runtime/MenuService.swift index 29ede0c..cc9d9b9 100644 --- a/RClick/Runtime/MenuService.swift +++ b/RClick/Runtime/MenuService.swift @@ -9,11 +9,36 @@ import Foundation import OSLog +/// What the on-disk custom menu file means for this installation right now. +enum CustomMenuStatus: Equatable { + /// The App Group container is unavailable (signing or entitlement problem). + case unavailable + /// No file: the default categorized layout applies. Not a problem. + case defaultLayout + /// An empty array: the user asked for an intentionally empty menu. Not a problem. + case empty + /// Parsed and resolved; carries the number of top-level entries. + case active(topLevelItems: Int) + /// Present but unusable, so the default layout applies instead. + case invalid(reason: String) + + /// Whether this state is worth telling the user about. + var isProblem: Bool { + switch self { + case .unavailable, .invalid: true + case .defaultLayout, .empty, .active: false + } + } +} + @MainActor final class MenuService { /// 菜单版本号(防重复 / 防乱序) private var menuVersion = 0 + /// Copy kept beside the live file when the custom layout is removed. + static let customMenuBackupName = "custom_menu.backup.json" + static var customMenuURL: URL? { FileManager.default.containerURL(forSecurityApplicationGroupIdentifier: Constants.suitName)? .appendingPathComponent("custom_menu.json") @@ -51,17 +76,19 @@ final class MenuService { } } - /// 从 AppState 实时构建菜单配置 - func buildConfig(from state: AppState) -> MenuConfigPayload { + /// Builds the payload from `AppState` without touching the version counter or + /// the disk. + /// + /// Status checks use this so that merely inspecting the custom menu cannot + /// perturb the configuration that gets sent to the extension. + static func makePayload(from state: AppState, version: Int = 0) -> MenuConfigPayload { let actionMenuItems = state.actions.filter(\.enabled).map { $0.toActionMenuItem() } let appMenuItems = state.apps.map { $0.toAppMenuItem() } let newFileMenuItems = state.newFiles.filter(\.enabled).map { NewFileMenuItem(id: $0.id, name: $0.name, ext: $0.ext, icon: $0.icon) } let commonDirMenuItems = state.showCommonDirs ? state.cdirs.map { CommonDirMenuItem(id: $0.id, name: $0.displayName, icon: $0.icon, url: $0.url.path) } : [] - menuVersion += 1 - - var config = MenuConfigPayload( - version: menuVersion, + return MenuConfigPayload( + version: version, actions: actionMenuItems, apps: appMenuItems, newFiles: newFileMenuItems, @@ -71,17 +98,57 @@ final class MenuService { newFilesCollapsed: state.foldNewFileMenu, commonDirsCollapsed: state.foldCommonDirMenu ) + } + + /// 从 AppState 实时构建菜单配置 + func buildConfig(from state: AppState) -> MenuConfigPayload { + menuVersion += 1 + var config = Self.makePayload(from: state, version: menuVersion) if let url = Self.customMenuURL { do { - config.customMenu = try CustomMenu.load( - from: url, config: config - ) + config.customMenu = try CustomMenu.load(from: url, config: config) } catch { - Logger(subsystem: "RClick", category: "MenuService").error("Invalid custom_menu.json; using default menu: \(String(describing: error), privacy: .public)") + // Fall back to the default layout, but keep the reason readable in + // the log. `.private` because messages can quote user paths. + Logger(subsystem: "RClick", category: "MenuService") + .error("Invalid custom_menu.json; using default menu: \(CustomMenuDiagnostics.message(for: error), privacy: .private)") } } return config } + + // MARK: - Custom menu status + + /// Reports what the custom menu file currently means for this installation. + /// + /// Derived on demand rather than cached inside `buildConfig`: that method only + /// runs when the extension asks for a config, which never happens while the + /// extension is disabled - exactly when someone opens Settings to investigate. + static func customMenuStatus(at url: URL?, config: MenuConfigPayload) -> CustomMenuStatus { + guard let url else { return .unavailable } + do { + guard let nodes = try CustomMenu.load(from: url, config: config) else { return .defaultLayout } + return nodes.isEmpty ? .empty : .active(topLevelItems: nodes.count) + } catch { + return .invalid(reason: CustomMenuDiagnostics.message(for: error)) + } + } + + func customMenuStatus(from state: AppState) -> CustomMenuStatus { + Self.customMenuStatus(at: Self.customMenuURL, config: Self.makePayload(from: state)) + } + + // MARK: - Custom menu removal + + /// Deletes the custom layout, keeping a copy so the action stays reversible. + static func removeCustomMenu(at url: URL) throws { + guard FileManager.default.fileExists(atPath: url.path) else { return } + let backup = url.deletingLastPathComponent().appendingPathComponent(customMenuBackupName) + try? FileManager.default.removeItem(at: backup) + // A failed backup must never block a request the user explicitly made. + try? FileManager.default.copyItem(at: url, to: backup) + try FileManager.default.removeItem(at: url) + } } diff --git a/RClick/Settings/GeneralSettingsTabView.swift b/RClick/Settings/GeneralSettingsTabView.swift index 31d40c8..7962460 100644 --- a/RClick/Settings/GeneralSettingsTabView.swift +++ b/RClick/Settings/GeneralSettingsTabView.swift @@ -25,7 +25,9 @@ struct GeneralSettingsTabView: View { @State private var accessibilityStatus: PermissionStatus = .unknown @State private var showFolderPermissionsSheet = false @State private var menuConfigError: String? + @State private var menuConfigErrorTitle = "Unable to Open Menu Config" @State private var showMenuConfigError = false + @State private var customMenuStatus: CustomMenuStatus = .defaultLayout @State private var showDirImporter = false @State private var wrongFold = false @@ -95,20 +97,54 @@ struct GeneralSettingsTabView: View { } Section { + LabeledContent { + Text(customMenuStatusDetail) + .foregroundStyle(.secondary) + .multilineTextAlignment(.trailing) + } label: { + Label(customMenuStatusTitle, systemImage: customMenuStatusIcon) + .foregroundStyle(customMenuStatusColor) + } + + if case .invalid(let reason) = customMenuStatus { + Text(reason) + .font(.caption) + .foregroundStyle(.secondary) + .textSelection(.enabled) + .fixedSize(horizontal: false, vertical: true) + } + HStack { Button(AppLocalization.localized("Open Config")) { openMenuConfig(reveal: false) } + .help(AppLocalization.localized("Creates the file from your current menu the first time, then just opens it. Neither changes its contents.")) + Button(AppLocalization.localized("Reveal in Finder")) { openMenuConfig(reveal: true) } + .help(AppLocalization.localized("Shows the file in Finder. Changes nothing.")) + } + + HStack { + Button(AppLocalization.localized("Apply Custom Menu")) { + applyCustomMenu() + } + .disabled(!customMenuIsPresent) + .help(AppLocalization.localized("Applies now instead of waiting up to 10 seconds. Does not change the file.")) + + Button(AppLocalization.localized("Restore Default Layout")) { + restoreDefaultLayout() + } + .disabled(!customMenuIsPresent) + .help(AppLocalization.localized("Deletes the file and returns to the default layout, keeping a backup.")) } } header: { Text(appLocalized: "Advanced Menu Layout") } footer: { VStack(alignment: .leading, spacing: 6) { Text(appLocalized: "Customize top-level items and nested submenus with custom_menu.json. 💡 Tip: Give this file to an AI assistant (such as ChatGPT / Claude) to help arrange your menu.") - Text(appLocalized: "Changes appear after reopening the menu within 10 seconds. Remove the file to restore the default layout.") + Text(appLocalized: "Changes apply on their own within 10 seconds. Removing the file restores the default layout.") } .foregroundStyle(.secondary) .fixedSize(horizontal: false, vertical: true) @@ -157,9 +193,11 @@ struct GeneralSettingsTabView: View { .formStyle(.grouped) .onAppear { updatePermissionStatus() + refreshCustomMenuStatus() } .onForeground { updatePermissionStatus() + refreshCustomMenuStatus() } .alert( Text(appLocalized: "Invalid Folder"), @@ -181,7 +219,7 @@ struct GeneralSettingsTabView: View { } message: { Text(appLocalized: "Folder access permission is required to use this feature.") } - .alert(AppLocalization.localized("Unable to Open Menu Config"), isPresented: $showMenuConfigError) { + .alert(menuConfigErrorTitle, isPresented: $showMenuConfigError) { Button(AppLocalization.localized("OK"), role: .cancel) {} } message: { Text(menuConfigError ?? "") @@ -194,22 +232,124 @@ struct GeneralSettingsTabView: View { private func openMenuConfig(reveal: Bool) { do { guard let url = MenuService.customMenuURL else { - menuConfigError = AppLocalization.localized("The shared configuration folder is unavailable.") - showMenuConfigError = true + presentConfigError( + title: "Unable to Open Menu Config", + message: AppLocalization.localized("The shared configuration folder is unavailable.") + ) return } - try MenuService.prepareCustomMenu(at: url, config: RCRuntime.shared.menuService.buildConfig(from: store)) + // Seeding only reads the current configuration, so the payload is built + // without bumping the menu version or re-reading the file we are about + // to open. + try MenuService.prepareCustomMenu(at: url, config: MenuService.makePayload(from: store)) NotificationCenter.default.post(name: .menuConfigShouldUpdate, object: nil) if reveal { NSWorkspace.shared.activateFileViewerSelecting([url]) } else if !NSWorkspace.shared.open(url) { - menuConfigError = AppLocalization.localized("No application could open the configuration file. Try Reveal in Finder and choose a text editor.") - showMenuConfigError = true + presentConfigError( + title: "Unable to Open Menu Config", + message: AppLocalization.localized("No application could open the configuration file. Try Reveal in Finder and choose a text editor.") + ) } } catch { - menuConfigError = error.localizedDescription - showMenuConfigError = true + presentConfigError(title: "Unable to Open Menu Config", message: CustomMenuDiagnostics.message(for: error)) + } + refreshCustomMenuStatus() + } + + // MARK: - 自定义菜单 + + private var customMenuIsPresent: Bool { + switch customMenuStatus { + case .defaultLayout, .unavailable: false + case .empty, .active, .invalid: true + } + } + + private var customMenuStatusTitle: String { + switch customMenuStatus { + case .unavailable: AppLocalization.localized("Unavailable") + case .defaultLayout: AppLocalization.localized("Not enabled") + case .empty, .active: AppLocalization.localized("Enabled") + case .invalid: AppLocalization.localized("Configuration invalid") + } + } + + private var customMenuStatusDetail: String { + switch customMenuStatus { + case .unavailable: "" + case .defaultLayout, .invalid: AppLocalization.localized("Using the default layout") + case .empty: AppLocalization.localized("Empty menu") + case .active(let count): String(format: AppLocalization.localized("%lld items"), count) + } + } + + private var customMenuStatusIcon: String { + switch customMenuStatus { + case .unavailable, .invalid: "exclamationmark.triangle.fill" + case .defaultLayout: "circle.dashed" + case .empty, .active: "checkmark.circle.fill" + } + } + + private var customMenuStatusColor: Color { + switch customMenuStatus { + case .unavailable, .invalid: .orange + case .defaultLayout: .secondary + case .empty, .active: .green + } + } + + private func refreshCustomMenuStatus() { + customMenuStatus = RCRuntime.shared.menuService.customMenuStatus(from: store) + } + + private func presentConfigError(title: String, message: String) { + menuConfigErrorTitle = AppLocalization.localized(title) + menuConfigError = message + showMenuConfigError = true + } + + /// Applies the file immediately. + /// + /// Deliberately the same path the extension heartbeat drives, so pressing this + /// and waiting 10 seconds must yield identical menus - this is an accelerator, + /// not a second way of applying configuration. + private func applyCustomMenu() { + let status = RCRuntime.shared.menuService.customMenuStatus(from: store) + NotificationCenter.default.post(name: .menuConfigShouldUpdate, object: nil) + customMenuStatus = status + if case .invalid(let reason) = status { + presentConfigError(title: "Configuration Not Applied", message: reason) + } + } + + private func restoreDefaultLayout() { + guard let url = MenuService.customMenuURL else { + presentConfigError( + title: "Unable to Restore Default Layout", + message: AppLocalization.localized("The shared configuration folder is unavailable.") + ) + return + } + + let alert = NSAlert() + alert.messageText = AppLocalization.localized("Restore the default layout?") + alert.informativeText = AppLocalization.localized("This deletes custom_menu.json and returns to the default menu. A copy is kept as custom_menu.backup.json.") + alert.alertStyle = .warning + alert.addButton(withTitle: AppLocalization.localized("Restore")) + alert.addButton(withTitle: AppLocalization.localized("Cancel")) + alert.buttons[0].hasDestructiveAction = true + + guard alert.runModal() == .alertFirstButtonReturn else { return } + + do { + try MenuService.removeCustomMenu(at: url) + NotificationCenter.default.post(name: .menuConfigShouldUpdate, object: nil) + } catch { + presentConfigError(title: "Unable to Restore Default Layout", message: CustomMenuDiagnostics.message(for: error)) } + refreshCustomMenuStatus() } // MARK: - 权限状态检测 diff --git a/RClickTests/CustomMenuStatusTests.swift b/RClickTests/CustomMenuStatusTests.swift new file mode 100644 index 0000000..13a84fc --- /dev/null +++ b/RClickTests/CustomMenuStatusTests.swift @@ -0,0 +1,159 @@ +import AppKit +import Testing + +@testable import RClick + +/// Covers what the custom menu file currently *means*, and how failures are +/// explained. Every case passes an explicit URL: under the test host +/// `MenuService.customMenuURL` resolves to the real App Group container, which +/// tests must never touch. +@MainActor +struct CustomMenuStatusTests { + private var catalog: MenuConfigPayload { + MenuConfigPayload( + actions: [ActionMenuItem(id: "copy-path", name: "Copy Path", icon: "doc", tag: 1)], + apps: [ + AppMenuItem(id: "zed-id", name: "Zed", icon: "app", tag: 2, + appURL: "/Applications/Zed.app") + ], + newFiles: [ + NewFileMenuItem(id: "txt-id", name: "TXT", ext: ".txt", icon: "doc") + ] + ) + } + + private func temporaryFile(_ json: String) throws -> URL { + let url = FileManager.default.temporaryDirectory + .appendingPathComponent("rclick-status-\(UUID()).json") + try Data(json.utf8).write(to: url) + return url + } + + private func temporaryDirectory() -> URL { + FileManager.default.temporaryDirectory + .appendingPathComponent("rclick-status-\(UUID())") + } + + private func status(of json: String) throws -> CustomMenuStatus { + let url = try temporaryFile(json) + defer { try? FileManager.default.removeItem(at: url) } + return MenuService.customMenuStatus(at: url, config: catalog) + } + + /// Loads `json` expecting rejection, and hands back the error it raised. + private func rejection(of json: String) throws -> any Error { + let url = try temporaryFile(json) + defer { try? FileManager.default.removeItem(at: url) } + let thrown = #expect(throws: (any Error).self) { + _ = try CustomMenu.load(from: url, config: catalog) + } + return try #require(thrown) + } + + // MARK: - The three states must stay distinguishable + + @Test func noFileMeansDefaultLayout() { + let url = FileManager.default.temporaryDirectory + .appendingPathComponent("rclick-absent-\(UUID()).json") + #expect(MenuService.customMenuStatus(at: url, config: catalog) == .defaultLayout) + } + + @Test func noContainerMeansUnavailable() { + // Previously indistinguishable from "no file": both produced a nil payload. + #expect(MenuService.customMenuStatus(at: nil, config: catalog) == .unavailable) + } + + @Test func emptyArrayIsEmptyNotInvalid() throws { + // An empty array is a deliberate request for an empty menu, not a failure. + #expect(try status(of: "[]") == .empty) + } + + @Test func validLayoutReportsTopLevelCount() throws { + let json = #"[{"type":"item","itemType":"action","id":"copy-path"},{"type":"separator"}]"# + #expect(try status(of: json) == .active(topLevelItems: 2)) + } + + @Test func malformedFileIsInvalidWithAReason() throws { + guard case .invalid(let reason) = try status(of: "not JSON") else { + Issue.record("expected .invalid") + return + } + #expect(!reason.isEmpty) + } + + @Test func unreadablePathIsNotReportedAsAMalformedDocument() throws { + // A folder where a file was expected. The syntax of that file is not the + // problem, so the user must not be sent to fix its JSON. + let directory = temporaryDirectory() + try FileManager.default.createDirectory(at: directory, withIntermediateDirectories: true) + defer { try? FileManager.default.removeItem(at: directory) } + + guard case .invalid(let reason) = MenuService.customMenuStatus(at: directory, config: catalog) else { + Issue.record("expected .invalid") + return + } + #expect(reason != AppLocalization.localized("The JSON file is malformed.")) + } + + @Test(arguments: [CustomMenuStatus.unavailable, .invalid(reason: "boom")]) + func problemStatesAreFlagged(status: CustomMenuStatus) { + #expect(status.isProblem) + } + + @Test(arguments: [CustomMenuStatus.defaultLayout, .empty, .active(topLevelItems: 1)]) + func normalStatesAreNotFlagged(status: CustomMenuStatus) { + #expect(!status.isProblem) + } + + // MARK: - Messages must say what is actually wrong + + @Test func layoutErrorExposesItsReasonThroughLocalizedDescription() { + // Regression: CustomMenuError conformed only to CustomStringConvertible, so + // the settings alert rendered the generic system sentence instead of this. + #expect(CustomMenuError.invalid("boom").localizedDescription == "boom") + } + + @Test func nestedReferenceErrorsPointAtTheMenuItemPath() throws { + let json = #"[{"type":"submenu","title":"Outer","children":[{"type":"item","itemType":"app","id":"missing"}]}]"# + let message = CustomMenuDiagnostics.message(for: try rejection(of: json)) + #expect(message.contains("[1.1]")) + } + + @Test func decodingErrorsPointAtTheOffendingElement() throws { + let json = #"[{"type":"item","itemType":"action","id":"copy-path"},{"type":"nope"}]"# + let message = CustomMenuDiagnostics.message(for: try rejection(of: json)) + #expect(message.contains("[2]")) + } + + @Test func syntaxErrorsAppendAParserPosition() throws { + let base = AppLocalization.localized("The JSON file is malformed.") + let message = CustomMenuDiagnostics.message(for: try rejection(of: "not JSON at all")) + #expect(message.hasPrefix(base)) + // The line/column readout is appended on top of the generic sentence. + #expect(message != base) + } + + // MARK: - Removing the custom layout + + @Test func removingKeepsABackupAndDeletesTheLiveFile() throws { + let directory = temporaryDirectory() + try FileManager.default.createDirectory(at: directory, withIntermediateDirectories: true) + defer { try? FileManager.default.removeItem(at: directory) } + + let live = directory.appendingPathComponent("custom_menu.json") + let contents = #"[{"type":"separator"}]"# + try Data(contents.utf8).write(to: live) + + try MenuService.removeCustomMenu(at: live) + + #expect(!FileManager.default.fileExists(atPath: live.path)) + let backup = directory.appendingPathComponent(MenuService.customMenuBackupName) + #expect(try Data(contentsOf: backup) == Data(contents.utf8)) + } + + @Test func removingWhenThereIsNoFileIsNotAnError() throws { + let url = temporaryDirectory().appendingPathComponent("custom_menu.json") + try MenuService.removeCustomMenu(at: url) + #expect(!FileManager.default.fileExists(atPath: url.path)) + } +} diff --git a/README.md b/README.md index d48c688..72f88fa 100644 --- a/README.md +++ b/README.md @@ -137,5 +137,5 @@ Please read our [Code of Conduct](CODE_OF_CONDUCT.md) before participating. ## 自定义菜单层级 支持一级常用项与任意嵌套子菜单混排、分隔线及自定义标题/图标。 -将声明式 `custom_menu.json` 放入 App Group 容器即可生效;缺失或无效时保留原有菜单。 +将声明式 `custom_menu.json` 放入 App Group 容器即可生效;保存后 10 秒内自动应用,也可在设置中点「应用自定义菜单」立即生效。缺失时使用默认布局;配置无效时回退默认布局,并在设置中显示具体出错项。 参见 [配置示例与使用说明](examples/README.md)。 diff --git a/examples/README.md b/examples/README.md index 32ee307..08209c8 100644 --- a/examples/README.md +++ b/examples/README.md @@ -4,7 +4,20 @@ ## 使用 -推荐从 **设置 → 通用 → 高级菜单布局** 点击“打开配置”,系统会用默认关联应用打开 JSON;“在访达中显示”会选中文件。两个入口在文件不存在时都会基于当前已配置项目生成可用示例,保留已有文件(包括尚未编辑完成的 JSON)。首次生成的布局会立即推送;之后保存修改,等待最多一次 10 秒心跳再重新打开菜单。 +**设置 → 通用 → 高级菜单布局** 下有四个按钮: + +| 按钮 | 行为 | +| --- | --- | +| 打开配置 | 文件不存在时基于当前已配置项目生成可用示例,然后用默认关联应用打开;已存在则仅打开。**两者都不改动文件内容** | +| 在访达中显示 | 同上,末步改为在访达中选中文件 | +| 应用自定义菜单 | 立即重读并生效,不必等心跳;**不修改文件** | +| 恢复默认布局 | 删除 `custom_menu.json` 回到默认布局,删除前把副本保留为 `custom_menu.backup.json` | + +生成与打开都不会覆盖已有文件(包括尚未编辑完成的 JSON)。 + +**生效方式有两条,结果相同**:保存修改后,扩展每 10 秒的心跳会让主程序重读文件,最多 10 秒自动生效;点「应用自定义菜单」则立刻生效。后者只是省去等待,**不是必须的步骤**。 + +设置页顶部会显示当前状态(未启用 / 已启用 / 配置无效)。配置无效时**会列出具体哪一项出错**,例如 `[2.1] app reference '/Applications/Warp.app' matched 0 enabled items` —— 方括号是菜单项路径,`[2.1]` 指第 2 项里的第 1 项。 示例将当前应用和动作平铺,文件模板与常用目录放入“更多”下的子菜单。可直接把 JSON 交给 AI 助手调整结构。若尚未配置任何项目,会生成空的“更多”子菜单。 @@ -19,7 +32,7 @@ 目录应由正常签名并运行过的 RClick 创建。实际读取使用 `FileManager.containerURL(forSecurityApplicationGroupIdentifier:)`;若改变 App Group 标识,使用对应容器。 3. 保持主程序运行。扩展每 10 秒心跳会触发主程序重新读取;等待一次心跳后重新打开右键菜单,或重启 RClick。已展开的菜单不会即时重绘。 -4. 删除或移走该文件即可恢复原来的分类顺序与折叠设置。JSON 错误、结构错误、无法读取或引用不唯一也会回退;`[]` 则有意显示空菜单。 +4. 删除或移走该文件即可恢复原来的分类顺序与折叠设置(设置里的「恢复默认布局」按钮做的也是这件事,还会留一份备份)。JSON 错误、结构错误、无法读取或引用不唯一也会回退到默认布局,并在设置中显示具体原因;`[]` 则有意显示空菜单。 ## 节点 @@ -38,13 +51,15 @@ 一个叶子只能使用一种引用方式。自定义项目 ID 来自现有 SwiftData 配置;没有新增 ID 编辑界面。标题原样显示,图标使用扩展内的 Asset 名称或 SF Symbol(例如 `folder`);省略时叶子沿用原图标,无效图标不会阻止菜单构建。 +> ⚠️ **截图里的文案是自定义标题,不是 App 内置文案。** `screenshots/` 预览中的“隐藏选中文件”“显示隐藏文件”“直接删除 (绕过废纸篓)”等字样,是作者在 JSON 里用 `title` 字段手写的说明性标题。不写 `title` 时显示的是 App 的实际文案:隐藏 / 显示 / 复制路径 / 直接删除 / AirDrop。若以为是内置文案而照抄,会得到一份看起来“官方”实则自造的菜单。 + 配置只控制布局:未列出的项目不显示,原有折叠开关在自定义布局生效时不参与排列。应用参数、文件模板、权限处理继续由主程序现有配置与执行链负责,JSON 不定义命令或修改参数执行语义。 ## 实现与验证 `Shared/CustomMenu.swift` 定义共享 `Codable` 模型、引用校验与递归 NSMenu 构建;`MenuService` 在原有配置推送时读取文件,解析为稳定 ID 后放入可选 `MenuConfigPayload.customMenu`。扩展复用旧菜单的四类叶子工厂和点击处理器,保留 ID、类型、Finder 目标路径及触发来源。此模型可作为以后树形编辑 UI 的存储格式,无需迁移现有业务实体。 -`RClickTests/CustomMenuTests.swift` 使用同一示例验证解析、三级 NSMenu 结构与叶子绑定;`ActionServiceTests` 验证模板 ID / 路径经过保存与重载仍保持一致。测试不等同于签名安装后的 Finder 实机验收。 +`RClickTests/CustomMenuTests.swift` 使用同一示例验证解析、三级 NSMenu 结构与叶子绑定;`CustomMenuStatusTests` 验证三态区分(缺文件 / `[]` / 无效)、错误消息定位(`[1.1]`)与删除时保留备份;`ActionServiceTests` 验证模板 ID / 路径经过保存与重载仍保持一致。测试不等同于签名安装后的 Finder 实机验收。 本地验证命令: From 19b05f596c527a916cfc59ba288ce061644fe9c4 Mon Sep 17 00:00:00 2001 From: wflixu Date: Sun, 13 Sep 2026 12:10:30 +0800 Subject: [PATCH 10/22] fix(settings): ask before enabling the custom menu, and stop adding a stray separator Three problems reported after testing the new controls. Clicking "Open Config" with no file present generated a config and silently switched the whole menu to the custom layout. A tooltip was not enough for an action with an invisible side effect, so generating now asks first and spells out that the right-click menu will change. An existing file still opens without a prompt. The seed inserted a separator between the flat items and "More". Because "More" is the last item and already reads as a submenu, the line grouped nothing and looked like a glitch, so it is gone. The existing seed test asserted that separator; it now asserts the new shape. "Common Dirs" existed only in the FinderSyncExt catalog, so seeding wrote the raw English key into custom_menu.json while its siblings were translated. The RClick catalog now carries the same five translations the extension already had. "Collapse menu" was the only one of the four collapse switches without a category in its label. Renamed to "Collapse common folders menu" to match its siblings. Also covers the common folders trap with a test: "Enable common folders" is not a pure layout switch, since MenuService only fills payload.commonDirs when it is on. Turning it off makes every common-dir reference match nothing and takes the whole custom layout down, not just those entries. examples/README.md now warns about it. Co-Authored-By: Claude Code --- RClick/Localizable.xcstrings | 152 +++++++++++++++++- RClick/Runtime/MenuService.swift | 1 - .../Settings/CommonDirsSettingTabView.swift | 2 +- RClick/Settings/GeneralSettingsTabView.swift | 17 ++ RClickTests/CustomMenuStatusTests.swift | 24 +++ RClickTests/CustomMenuTests.swift | 5 +- examples/README.md | 6 +- 7 files changed, 197 insertions(+), 10 deletions(-) diff --git a/RClick/Localizable.xcstrings b/RClick/Localizable.xcstrings index 2d40fea..f600276 100644 --- a/RClick/Localizable.xcstrings +++ b/RClick/Localizable.xcstrings @@ -1263,37 +1263,37 @@ } } }, - "Collapse menu" : { + "Collapse common folders menu" : { "extractionState" : "manual", "localizations" : { "en" : { "stringUnit" : { "state" : "translated", - "value" : "Collapse menu" + "value" : "Collapse common folders menu" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Contraer el menú" + "value" : "Contraer el menú de carpetas frecuentes" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Réduire le menu" + "value" : "Réduire le menu Dossiers courants" } }, "ja" : { "stringUnit" : { "state" : "translated", - "value" : "メニューを折りたたむ" + "value" : "よく使うフォルダメニューを折りたたむ" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "折叠菜单" + "value" : "折叠常用文件夹菜单" } } } @@ -6879,6 +6879,146 @@ } } } + }, + "Common Dirs" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Common Folders" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Carpetas frecuentes" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Dossiers courants" + } + }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "よく使うフォルダ" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "常用文件夹" + } + } + } + }, + "No custom menu configuration yet" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "No custom menu configuration yet" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Aún no hay configuración de menú personalizado" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Aucune configuration de menu personnalisé" + } + }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "カスタムメニューの設定がまだありません" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "尚无自定义菜单配置" + } + } + } + }, + "RClick will generate one from your current menu and switch to the custom layout right away, so the right-click menu will change to match it." : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "RClick will generate one from your current menu and switch to the custom layout right away, so the right-click menu will change to match it." + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "RClick generará una a partir de tu menú actual y cambiará al diseño personalizado de inmediato, por lo que el menú contextual cambiará para reflejarlo." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "RClick en générera une à partir de votre menu actuel et passera immédiatement à la disposition personnalisée ; le menu contextuel changera en conséquence." + } + }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "現在のメニューから生成し、すぐにカスタムレイアウトに切り替わります。右クリックメニューもそのレイアウトに変わります。" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "RClick 将基于你当前的菜单生成一份,并立即切换到自定义布局,右键菜单也会随之改变。" + } + } + } + }, + "Generate and Enable" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Generate and Enable" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Generar y activar" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Générer et activer" + } + }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "生成して有効にする" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "生成并启用" + } + } + } } }, "version" : "1.0" diff --git a/RClick/Runtime/MenuService.swift b/RClick/Runtime/MenuService.swift index cc9d9b9..9e79f48 100644 --- a/RClick/Runtime/MenuService.swift +++ b/RClick/Runtime/MenuService.swift @@ -62,7 +62,6 @@ final class MenuService { MenuNode(type: .item, itemType: .commonDir, id: $0.id) })) } - if !nodes.isEmpty { nodes.append(MenuNode(type: .separator)) } nodes.append(MenuNode(type: .submenu, title: AppLocalization.localized("More"), icon: "ellipsis.circle", children: groups)) let encoder = JSONEncoder() diff --git a/RClick/Settings/CommonDirsSettingTabView.swift b/RClick/Settings/CommonDirsSettingTabView.swift index 7eb72f0..faebf6b 100644 --- a/RClick/Settings/CommonDirsSettingTabView.swift +++ b/RClick/Settings/CommonDirsSettingTabView.swift @@ -31,7 +31,7 @@ struct CommonDirsSettingTabView: View { NotificationCenter.default.post(name: .menuConfigShouldUpdate, object: nil) } Toggle(isOn: $store.foldCommonDirMenu) { - Text(appLocalized: "Collapse menu") + Text(appLocalized: "Collapse common folders menu") } .disabled(!store.showCommonDirs) .onChange(of: store.foldCommonDirMenu) { diff --git a/RClick/Settings/GeneralSettingsTabView.swift b/RClick/Settings/GeneralSettingsTabView.swift index 7962460..c4184d1 100644 --- a/RClick/Settings/GeneralSettingsTabView.swift +++ b/RClick/Settings/GeneralSettingsTabView.swift @@ -238,6 +238,11 @@ struct GeneralSettingsTabView: View { ) return } + // Generating the file also switches the menu over to the custom layout, + // so the user decides rather than discovering it in Finder. + if !FileManager.default.fileExists(atPath: url.path), !confirmGeneratingCustomMenu() { + return + } // Seeding only reads the current configuration, so the payload is built // without bumping the menu version or re-reading the file we are about // to open. @@ -304,6 +309,18 @@ struct GeneralSettingsTabView: View { customMenuStatus = RCRuntime.shared.menuService.customMenuStatus(from: store) } + /// Generating the config also enables the custom layout, so ask first: a + /// tooltip is not enough for an action with a side effect the user cannot see. + private func confirmGeneratingCustomMenu() -> Bool { + let alert = NSAlert() + alert.messageText = AppLocalization.localized("No custom menu configuration yet") + alert.informativeText = AppLocalization.localized("RClick will generate one from your current menu and switch to the custom layout right away, so the right-click menu will change to match it.") + alert.alertStyle = .informational + alert.addButton(withTitle: AppLocalization.localized("Generate and Enable")) + alert.addButton(withTitle: AppLocalization.localized("Cancel")) + return alert.runModal() == .alertFirstButtonReturn + } + private func presentConfigError(title: String, message: String) { menuConfigErrorTitle = AppLocalization.localized(title) menuConfigError = message diff --git a/RClickTests/CustomMenuStatusTests.swift b/RClickTests/CustomMenuStatusTests.swift index 13a84fc..454ba5c 100644 --- a/RClickTests/CustomMenuStatusTests.swift +++ b/RClickTests/CustomMenuStatusTests.swift @@ -156,4 +156,28 @@ struct CustomMenuStatusTests { try MenuService.removeCustomMenu(at: url) #expect(!FileManager.default.fileExists(atPath: url.path)) } + + // MARK: - Interaction with the common folders toggle + + @Test func hidingCommonFoldersTakesDownAConfigThatReferencesThem() throws { + // "Enable common folders" is not a pure layout switch: MenuService only + // fills payload.commonDirs when it is on. A custom menu referencing a + // common dir therefore stops resolving once the switch is turned off, and + // the whole custom layout falls back - not just the common dir entries. + let json = #"[{"type":"item","itemType":"common-dir","id":"desktop"}]"# + let url = try temporaryFile(json) + defer { try? FileManager.default.removeItem(at: url) } + + let shown = MenuConfigPayload(commonDirs: [ + CommonDirMenuItem(id: "desktop", name: "Desktop", icon: "folder", url: "/Users/x/Desktop") + ]) + #expect(MenuService.customMenuStatus(at: url, config: shown) == .active(topLevelItems: 1)) + + let hidden = MenuConfigPayload(commonDirs: []) + guard case .invalid(let reason) = MenuService.customMenuStatus(at: url, config: hidden) else { + Issue.record("expected .invalid once common folders are hidden") + return + } + #expect(reason.contains("matched 0 enabled items")) + } } diff --git a/RClickTests/CustomMenuTests.swift b/RClickTests/CustomMenuTests.swift index e6a83b1..5003d1a 100644 --- a/RClickTests/CustomMenuTests.swift +++ b/RClickTests/CustomMenuTests.swift @@ -170,7 +170,10 @@ struct CustomMenuTests { try MenuService.prepareCustomMenu(at: url, config: catalog) let nodes = try #require(try CustomMenu.load(from: url, config: catalog)) #expect(nodes.prefix(3).map(\.id) == ["vscode-id", "warp-id", "copy-path"]) - #expect(nodes[3].type == .separator) + // No separator before "More": it drew a stray blank line above a single + // trailing submenu, which grouped nothing and read as a glitch. + #expect(nodes.count == 4) + #expect(nodes[3].type == .submenu) let more = try #require(nodes.last?.children) #expect(more.first?.children?.map(\.id) == ["txt-id", "md-id"]) diff --git a/examples/README.md b/examples/README.md index 08209c8..15b9c62 100644 --- a/examples/README.md +++ b/examples/README.md @@ -8,13 +8,17 @@ | 按钮 | 行为 | | --- | --- | -| 打开配置 | 文件不存在时基于当前已配置项目生成可用示例,然后用默认关联应用打开;已存在则仅打开。**两者都不改动文件内容** | +| 打开配置 | 文件不存在时会先弹确认;确认后基于当前已配置项目生成,**并立即切换到自定义布局**,再用默认关联应用打开。已存在则仅打开,不询问。**两者都不改动文件内容** | | 在访达中显示 | 同上,末步改为在访达中选中文件 | | 应用自定义菜单 | 立即重读并生效,不必等心跳;**不修改文件** | | 恢复默认布局 | 删除 `custom_menu.json` 回到默认布局,删除前把副本保留为 `custom_menu.backup.json` | 生成与打开都不会覆盖已有文件(包括尚未编辑完成的 JSON)。 +生成时不会在「更多」之前插入分隔线(旧版本会,容易被看成多余的空白行)。想要分组可以自己在 JSON 里加 `{"type": "separator"}`。 + +> ⚠️ **关掉「启用常用文件夹」会让整份自定义菜单回退。** 这个开关不只是布局开关:它在 `MenuService` 里决定 payload 到底有没有 `commonDirs` 数组。一旦关掉,配置里所有 `common-dir` 引用都会匹配到 0 个,按规则整份回退到默认布局(设置页会提示具体是哪一项)。要保留自定义菜单,就得让这个开关保持开启。 + **生效方式有两条,结果相同**:保存修改后,扩展每 10 秒的心跳会让主程序重读文件,最多 10 秒自动生效;点「应用自定义菜单」则立刻生效。后者只是省去等待,**不是必须的步骤**。 设置页顶部会显示当前状态(未启用 / 已启用 / 配置无效)。配置无效时**会列出具体哪一项出错**,例如 `[2.1] app reference '/Applications/Warp.app' matched 0 enabled items` —— 方括号是菜单项路径,`[2.1]` 指第 2 项里的第 1 项。 From 4ed2984d1defc6b649a96b85cca04d049aa9889c Mon Sep 17 00:00:00 2001 From: wflixu Date: Sun, 13 Sep 2026 12:43:42 +0800 Subject: [PATCH 11/22] feat(menu): apply the custom menu on request instead of on a timer The main app re-read custom_menu.json on every extension heartbeat, so edits made in an external editor went live within ten seconds. That cannot tell "finished editing" from "half way through typing": a half-written file took the menu down, silently, mid-keystroke. The file is now a draft. MenuService keeps the bytes that are actually in effect and buildConfig renders from that snapshot, so nothing on disk moves the menu until "Apply Custom Menu" re-reads and validates it. A rejected edit throws and leaves the live menu exactly as it was rather than falling back to the default layout behind the user's back. Deleting the file stays the one exception - unambiguous and non-transient - and still returns to the default layout right away. CustomMenuStatus grows a second axis to say so: one value for what the menu is rendering, another for how the file relates to it. Without it "edited since it was applied" and "broken" collapsed into one state, and the case worth explaining - a settings change that invalidates an applied file, which is how turning off common folders takes the whole layout down - had nowhere to live. The settings screen drops from five elements to two. "Open Config" and "Reveal in Finder" merge into "Edit Menu Config...", which locates the file rather than opening it with whatever editor the system happens to have; its old tooltip claimed it changed nothing while it seeded the file and switched the layout. Apply Config greys out once the file matches what is in effect, so the grey is the receipt. The first-run confirmation alert is gone: seeding no longer switches anything, so the side effect it warned about no longer exists. MenuService now takes an injectable customMenuURL. buildConfig resolves the real App Group container, which is how the most important new test - an edit stays invisible until applied - was impossible to write. AppLocalization is nonisolated. Default main-actor isolation made it unreachable from LocalizedError.errorDescription, which has to stay nonisolated. Twelve string-catalog keys the old screen used are deleted. The catalog was edited by exact-line removal, not by re-serialising it. Co-Authored-By: Claude Code --- RClick/Localizable.xcstrings | 557 +++++++------------ RClick/Runtime/MenuService.swift | 240 ++++++-- RClick/Runtime/RCRuntime.swift | 2 +- RClick/Settings/GeneralSettingsTabView.swift | 200 ++++--- RClickTests/CustomMenuApplyTests.swift | 160 ++++++ RClickTests/CustomMenuStatusTests.swift | 111 +++- README.md | 2 +- Shared/AppLocalization.swift | 5 +- Shared/CustomMenu.swift | 4 + examples/README.md | 27 +- 10 files changed, 778 insertions(+), 530 deletions(-) create mode 100644 RClickTests/CustomMenuApplyTests.swift diff --git a/RClick/Localizable.xcstrings b/RClick/Localizable.xcstrings index f600276..31b9ca5 100644 --- a/RClick/Localizable.xcstrings +++ b/RClick/Localizable.xcstrings @@ -493,41 +493,6 @@ } } }, - "Advanced Menu Layout" : { - "extractionState" : "manual", - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Advanced Menu Layout" - } - }, - "es" : { - "stringUnit" : { - "state" : "translated", - "value" : "Diseño avanzado del menú" - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Disposition avancée du menu" - } - }, - "ja" : { - "stringUnit" : { - "state" : "translated", - "value" : "詳細なメニューレイアウト" - } - }, - "zh-Hans" : { - "stringUnit" : { - "state" : "translated", - "value" : "高级菜单布局" - } - } - } - }, "AirDrop" : { "extractionState" : "manual", "localizations" : { @@ -983,37 +948,37 @@ } } }, - "Changes appear after reopening the menu within 10 seconds. Remove the file to restore the default layout." : { + "Changed since it was applied, so the menu still shows the previous layout." : { "extractionState" : "manual", "localizations" : { "en" : { "stringUnit" : { "state" : "translated", - "value" : "Changes appear after reopening the menu within 10 seconds. Remove the file to restore the default layout." + "value" : "Changed since it was applied, so the menu still shows the previous layout." } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Los cambios aparecerán al volver a abrir el menú, en un plazo de 10 segundos. Elimina el archivo para restaurar el diseño predeterminado." + "value" : "Se modificó después de aplicarse, así que el menú sigue mostrando el diseño anterior." } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Les modifications apparaissent à la réouverture du menu, dans un délai de 10 secondes. Supprimez le fichier pour rétablir la disposition par défaut." + "value" : "Modifié depuis son application : le menu affiche toujours la disposition précédente." } }, "ja" : { "stringUnit" : { "state" : "translated", - "value" : "変更は10秒以内に反映されます。メニューを開き直してください。ファイルを削除すると標準のレイアウトに戻ります。" + "value" : "適用後に変更されたため、メニューは前回のレイアウトのままです。" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "更改会在 10 秒内重新打开菜单时生效。删除此文件即可恢复默认布局。" + "value" : "文件已修改,尚未应用,菜单仍是上一次生效的布局。" } } } @@ -1403,6 +1368,41 @@ } } }, + "Custom Menu" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Custom Menu" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Menú personalizado" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Menu personnalisé" + } + }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "カスタムメニュー" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "自定义菜单" + } + } + } + }, "Customize top-level items and nested submenus with custom_menu.json. 💡 Tip: Give this file to an AI assistant (such as ChatGPT / Claude) to help arrange your menu." : { "extractionState" : "manual", "localizations" : { @@ -3414,6 +3414,41 @@ } } }, + "Locates custom_menu.json in Finder so you can open it with the editor you prefer. Creates it first if it does not exist yet." : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Locates custom_menu.json in Finder so you can open it with the editor you prefer. Creates it first if it does not exist yet." + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Localiza custom_menu.json en el Finder para que lo abras con el editor que prefieras. Si aún no existe, lo crea primero." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Localise custom_menu.json dans le Finder pour que vous puissiez l'ouvrir avec l'éditeur de votre choix. Le crée d'abord s'il n'existe pas encore." + } + }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "custom_menu.json を Finder で表示するので、お好みのエディタで開けます。存在しない場合は先に作成します。" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "在访达中定位 custom_menu.json,让你用自己习惯的编辑器打开。文件不存在时会先生成一份。" + } + } + } + }, "Logs" : { "extractionState" : "manual", "localizations" : { @@ -3729,41 +3764,6 @@ } } }, - "No application could open the configuration file. Try Reveal in Finder and choose a text editor." : { - "extractionState" : "manual", - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "No application could open the configuration file. Try Reveal in Finder and choose a text editor." - } - }, - "es" : { - "stringUnit" : { - "state" : "translated", - "value" : "Ninguna aplicación pudo abrir el archivo de configuración. Usa «Mostrar en Finder» y elige un editor de texto." - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Aucune application n’a pu ouvrir le fichier de configuration. Utilisez « Afficher dans le Finder » et choisissez un éditeur de texte." - } - }, - "ja" : { - "stringUnit" : { - "state" : "translated", - "value" : "設定ファイルを開けるアプリケーションがありません。「Finderに表示」を使い、テキストエディタを選択してください。" - } - }, - "zh-Hans" : { - "stringUnit" : { - "state" : "translated", - "value" : "没有应用能够打开配置文件。请使用“在访达中显示”,然后选择文本编辑器打开。" - } - } - } - }, "No folders authorized" : { "extractionState" : "manual", "localizations" : { @@ -3974,41 +3974,6 @@ } } }, - "Open Config" : { - "extractionState" : "manual", - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Open Config" - } - }, - "es" : { - "stringUnit" : { - "state" : "translated", - "value" : "Abrir configuración" - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Ouvrir la configuration" - } - }, - "ja" : { - "stringUnit" : { - "state" : "translated", - "value" : "設定ファイルを開く" - } - }, - "zh-Hans" : { - "stringUnit" : { - "state" : "translated", - "value" : "打开配置" - } - } - } - }, "Open in a new window" : { "extractionState" : "manual", "localizations" : { @@ -4678,6 +4643,41 @@ } } }, + "Reads the file again and puts it into effect. If it has errors the menu is left as it was." : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Reads the file again and puts it into effect. If it has errors the menu is left as it was." + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Vuelve a leer el archivo y lo aplica. Si contiene errores, el menú se deja tal como estaba." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Relit le fichier et l'applique. En cas d'erreur, le menu reste inchangé." + } + }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ファイルを読み直して反映します。エラーがある場合はメニューを変更しません。" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "重新读取文件并生效。如果文件有错误,菜单保持不变。" + } + } + } + }, "Remove folder permission" : { "extractionState" : "manual", "localizations" : { @@ -4958,41 +4958,6 @@ } } }, - "Reveal in Finder" : { - "extractionState" : "manual", - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Reveal in Finder" - } - }, - "es" : { - "stringUnit" : { - "state" : "translated", - "value" : "Mostrar en Finder" - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Afficher dans le Finder" - } - }, - "ja" : { - "stringUnit" : { - "state" : "translated", - "value" : "Finderに表示" - } - }, - "zh-Hans" : { - "stringUnit" : { - "state" : "translated", - "value" : "在访达中显示" - } - } - } - }, "Run Arguments" : { "extractionState" : "manual", "localizations" : { @@ -5483,6 +5448,41 @@ } } }, + "The menu is unchanged." : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "The menu is unchanged." + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "El menú no ha cambiado." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Le menu reste inchangé." + } + }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "メニューは変更されていません。" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "菜单保持不变。" + } + } + } + }, "The selected folder is a subfolder of an already selected folder. Please choose a different folder." : { "extractionState" : "manual", "localizations" : { @@ -5653,7 +5653,7 @@ "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "无法打开菜单配置" + "value" : "无法打开配置文件夹" } } } @@ -6175,7 +6175,7 @@ "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "应用自定义菜单" + "value" : "应用配置" } } } @@ -6210,322 +6210,252 @@ "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "恢复默认布局" + "value" : "恢复默认…" } } } }, - "Creates the file from your current menu the first time, then just opens it. Neither changes its contents." : { - "extractionState" : "manual", - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Creates the file from your current menu the first time, then just opens it. Neither changes its contents." - } - }, - "es" : { - "stringUnit" : { - "state" : "translated", - "value" : "La primera vez crea el archivo a partir de tu menú actual y luego solo lo abre. Ninguna de las dos acciones cambia su contenido." - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "La première fois, crée le fichier à partir de votre menu actuel, puis ne fait que l'ouvrir. Ni l'une ni l'autre ne modifie son contenu." - } - }, - "ja" : { - "stringUnit" : { - "state" : "translated", - "value" : "初回は現在のメニューからファイルを作成し、以降は開くだけです。どちらも内容は変更しません。" - } - }, - "zh-Hans" : { - "stringUnit" : { - "state" : "translated", - "value" : "首次会按当前菜单生成该文件,之后仅打开它。两者都不会改动文件内容。" - } - } - } - }, - "Shows the file in Finder. Changes nothing." : { - "extractionState" : "manual", - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Shows the file in Finder. Changes nothing." - } - }, - "es" : { - "stringUnit" : { - "state" : "translated", - "value" : "Muestra el archivo en el Finder. No cambia nada." - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Affiche le fichier dans le Finder. Ne modifie rien." - } - }, - "ja" : { - "stringUnit" : { - "state" : "translated", - "value" : "Finder でファイルを表示します。何も変更しません。" - } - }, - "zh-Hans" : { - "stringUnit" : { - "state" : "translated", - "value" : "在访达中显示该文件。不做任何改动。" - } - } - } - }, - "Applies now instead of waiting up to 10 seconds. Does not change the file." : { + "Deletes the file and returns to the default layout, keeping a backup." : { "extractionState" : "manual", "localizations" : { "en" : { "stringUnit" : { "state" : "translated", - "value" : "Applies now instead of waiting up to 10 seconds. Does not change the file." + "value" : "Deletes the file and returns to the default layout, keeping a backup." } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Aplica ahora en lugar de esperar hasta 10 segundos. No modifica el archivo." + "value" : "Elimina el archivo y vuelve al diseño predeterminado, conservando una copia." } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Applique immédiatement au lieu d'attendre jusqu'à 10 secondes. Ne modifie pas le fichier." + "value" : "Supprime le fichier et revient à la disposition par défaut, en conservant une sauvegarde." } }, "ja" : { "stringUnit" : { "state" : "translated", - "value" : "最大10秒待たずにすぐ適用します。ファイルは変更しません。" + "value" : "ファイルを削除してデフォルトのレイアウトに戻します。バックアップは保持されます。" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "立即生效,无需等待最多 10 秒。不会修改文件。" + "value" : "删除该文件并恢复默认布局,同时保留一份备份。" } } } }, - "Deletes the file and returns to the default layout, keeping a backup." : { + "Unavailable" : { "extractionState" : "manual", "localizations" : { "en" : { "stringUnit" : { "state" : "translated", - "value" : "Deletes the file and returns to the default layout, keeping a backup." + "value" : "Unavailable" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Elimina el archivo y vuelve al diseño predeterminado, conservando una copia." + "value" : "No disponible" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Supprime le fichier et revient à la disposition par défaut, en conservant une sauvegarde." + "value" : "Indisponible" } }, "ja" : { "stringUnit" : { "state" : "translated", - "value" : "ファイルを削除してデフォルトのレイアウトに戻します。バックアップは保持されます。" + "value" : "利用できません" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "删除该文件并恢复默认布局,同时保留一份备份。" + "value" : "不可用" } } } }, - "Changes apply on their own within 10 seconds. Removing the file restores the default layout." : { + "Not enabled" : { "extractionState" : "manual", "localizations" : { "en" : { "stringUnit" : { "state" : "translated", - "value" : "Changes apply on their own within 10 seconds. Removing the file restores the default layout." + "value" : "Not enabled" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Los cambios se aplican solos en 10 segundos. Eliminar el archivo restaura el diseño predeterminado." + "value" : "No activado" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Les modifications s'appliquent d'elles-mêmes sous 10 secondes. Supprimer le fichier restaure la disposition par défaut." + "value" : "Non activé" } }, "ja" : { "stringUnit" : { "state" : "translated", - "value" : "変更は10秒以内に自動で適用されます。ファイルを削除するとデフォルトのレイアウトに戻ります。" + "value" : "未有効" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "改动会在 10 秒内自动生效。删除该文件即可恢复默认布局。" + "value" : "未启用" } } } }, - "Unavailable" : { + "Configuration invalid" : { "extractionState" : "manual", "localizations" : { "en" : { "stringUnit" : { "state" : "translated", - "value" : "Unavailable" + "value" : "Configuration invalid" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "No disponible" + "value" : "Configuración no válida" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Indisponible" + "value" : "Configuration non valide" } }, "ja" : { "stringUnit" : { "state" : "translated", - "value" : "利用できません" + "value" : "設定が無効" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "不可用" + "value" : "配置无效" } } } }, - "Not enabled" : { + "Using the default layout" : { "extractionState" : "manual", "localizations" : { "en" : { "stringUnit" : { "state" : "translated", - "value" : "Not enabled" + "value" : "Using the default layout" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "No activado" + "value" : "Usando el diseño predeterminado" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Non activé" + "value" : "Disposition par défaut utilisée" } }, "ja" : { "stringUnit" : { "state" : "translated", - "value" : "未有効" + "value" : "デフォルトレイアウトを使用中" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "未启用" + "value" : "正在使用默认布局" } } } }, - "Configuration invalid" : { + "Edit Menu Config…" : { "extractionState" : "manual", "localizations" : { "en" : { "stringUnit" : { "state" : "translated", - "value" : "Configuration invalid" + "value" : "Edit Menu Config…" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Configuración no válida" + "value" : "Editar configuración del menú…" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Configuration non valide" + "value" : "Modifier la configuration du menu…" } }, "ja" : { "stringUnit" : { "state" : "translated", - "value" : "設定が無効" + "value" : "メニュー設定を編集…" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "配置无效" + "value" : "编辑菜单配置…" } } } }, - "Using the default layout" : { + "Editing the file changes nothing until you apply it." : { "extractionState" : "manual", "localizations" : { "en" : { "stringUnit" : { "state" : "translated", - "value" : "Using the default layout" + "value" : "Editing the file changes nothing until you apply it." } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Usando el diseño predeterminado" + "value" : "Editar el archivo no cambia nada hasta que lo apliques." } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Disposition par défaut utilisée" + "value" : "Modifier le fichier ne change rien tant que vous ne l'appliquez pas." } }, "ja" : { "stringUnit" : { "state" : "translated", - "value" : "デフォルトレイアウトを使用中" + "value" : "ファイルを編集しても、適用するまで何も変わりません。" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "正在使用默认布局" + "value" : "改完文件后,点「应用配置」才会生效。" } } } @@ -6914,111 +6844,6 @@ } } } - }, - "No custom menu configuration yet" : { - "extractionState" : "manual", - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "No custom menu configuration yet" - } - }, - "es" : { - "stringUnit" : { - "state" : "translated", - "value" : "Aún no hay configuración de menú personalizado" - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Aucune configuration de menu personnalisé" - } - }, - "ja" : { - "stringUnit" : { - "state" : "translated", - "value" : "カスタムメニューの設定がまだありません" - } - }, - "zh-Hans" : { - "stringUnit" : { - "state" : "translated", - "value" : "尚无自定义菜单配置" - } - } - } - }, - "RClick will generate one from your current menu and switch to the custom layout right away, so the right-click menu will change to match it." : { - "extractionState" : "manual", - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "RClick will generate one from your current menu and switch to the custom layout right away, so the right-click menu will change to match it." - } - }, - "es" : { - "stringUnit" : { - "state" : "translated", - "value" : "RClick generará una a partir de tu menú actual y cambiará al diseño personalizado de inmediato, por lo que el menú contextual cambiará para reflejarlo." - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "RClick en générera une à partir de votre menu actuel et passera immédiatement à la disposition personnalisée ; le menu contextuel changera en conséquence." - } - }, - "ja" : { - "stringUnit" : { - "state" : "translated", - "value" : "現在のメニューから生成し、すぐにカスタムレイアウトに切り替わります。右クリックメニューもそのレイアウトに変わります。" - } - }, - "zh-Hans" : { - "stringUnit" : { - "state" : "translated", - "value" : "RClick 将基于你当前的菜单生成一份,并立即切换到自定义布局,右键菜单也会随之改变。" - } - } - } - }, - "Generate and Enable" : { - "extractionState" : "manual", - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Generate and Enable" - } - }, - "es" : { - "stringUnit" : { - "state" : "translated", - "value" : "Generar y activar" - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Générer et activer" - } - }, - "ja" : { - "stringUnit" : { - "state" : "translated", - "value" : "生成して有効にする" - } - }, - "zh-Hans" : { - "stringUnit" : { - "state" : "translated", - "value" : "生成并启用" - } - } - } } }, "version" : "1.0" diff --git a/RClick/Runtime/MenuService.swift b/RClick/Runtime/MenuService.swift index 9e79f48..ffcb278 100644 --- a/RClick/Runtime/MenuService.swift +++ b/RClick/Runtime/MenuService.swift @@ -9,25 +9,45 @@ import Foundation import OSLog -/// What the on-disk custom menu file means for this installation right now. -enum CustomMenuStatus: Equatable { - /// The App Group container is unavailable (signing or entitlement problem). - case unavailable - /// No file: the default categorized layout applies. Not a problem. - case defaultLayout - /// An empty array: the user asked for an intentionally empty menu. Not a problem. - case empty - /// Parsed and resolved; carries the number of top-level entries. - case active(topLevelItems: Int) - /// Present but unusable, so the default layout applies instead. - case invalid(reason: String) - - /// Whether this state is worth telling the user about. +/// What the settings page reports about the custom menu. +/// +/// Two axes rather than one, because the menu and the file can disagree: an +/// external editor can change the file without it taking effect, and a change in +/// Settings can invalidate an applied file without the file itself changing. +struct CustomMenuStatus: Equatable { + /// What the Finder menu is rendering right now. + enum Applied: Equatable { + /// The App Group container is unavailable (signing or entitlement problem). + case unavailable + /// The default categorized layout. Not a problem. + case defaultLayout + /// An empty array is in effect: an intentionally empty menu. Not a problem. + case empty + /// In effect, carrying the number of top-level entries. + case custom(topLevelItems: Int) + } + + /// How the file on disk relates to what is in effect. + enum Notice: Equatable { + /// Nothing to report. + case none + /// Edited since it was applied, so the menu still shows the old layout. + case edited + /// Unusable: it does not parse, or no longer matches the enabled items. + case broken(reason: String) + } + + var applied: Applied + var notice: Notice + + /// Whether this state is worth flagging as something going wrong. + /// + /// `.edited` is deliberately not one: an edit waiting to be applied is the + /// normal working state this whole screen is built around, not a fault. var isProblem: Bool { - switch self { - case .unavailable, .invalid: true - case .defaultLayout, .empty, .active: false - } + if applied == .unavailable { return true } + if case .broken = notice { return true } + return false } } @@ -36,10 +56,36 @@ final class MenuService { /// 菜单版本号(防重复 / 防乱序) private var menuVersion = 0 + /// Bytes of the custom menu currently in effect; `nil` means the default layout. + /// + /// Raw bytes rather than resolved nodes, because `AppState` keeps moving + /// underneath: disabling an app, or turning common folders off, empties part of + /// the payload and the layout has to be re-resolved against it. Bytes also turn + /// "has the file been edited since?" into a comparison instead of a re-read. + private var appliedCustomMenuData: Data? + + /// Separate from the data being `nil`, because "nothing is applied" must not + /// re-read the disk on every one of the three build triggers. + private var hasLoadedAppliedCustomMenu = false + /// Copy kept beside the live file when the custom layout is removed. static let customMenuBackupName = "custom_menu.backup.json" - static var customMenuURL: URL? { + /// The file the menu is built from. `nil` means there is no container at all, + /// so the default layout always applies. + /// + /// Explicitly injectable so tests can point at a temporary file: nothing in this + /// type may reach the real App Group container while a test runs. There is + /// deliberately no default argument, because `nil` is a meaningful value here + /// and would otherwise be indistinguishable from "use the real container". + let customMenuURL: URL? + + init(customMenuURL: URL?) { + self.customMenuURL = customMenuURL + } + + /// The real location, in the shared App Group container. + static var defaultCustomMenuURL: URL? { FileManager.default.containerURL(forSecurityApplicationGroupIdentifier: Constants.suitName)? .appendingPathComponent("custom_menu.json") } @@ -103,40 +149,156 @@ final class MenuService { func buildConfig(from state: AppState) -> MenuConfigPayload { menuVersion += 1 var config = Self.makePayload(from: state, version: menuVersion) + config.customMenu = customMenu(for: config) + return config + } - if let url = Self.customMenuURL { - do { - config.customMenu = try CustomMenu.load(from: url, config: config) - } catch { - // Fall back to the default layout, but keep the reason readable in - // the log. `.private` because messages can quote user paths. - Logger(subsystem: "RClick", category: "MenuService") - .error("Invalid custom_menu.json; using default menu: \(CustomMenuDiagnostics.message(for: error), privacy: .private)") - } + /// The custom layout to render for `config`, or `nil` for the default one. + /// + /// Takes the payload rather than reading `AppState`, so tests can drive it + /// against a temporary file instead of the real SwiftData store. + func customMenu(for config: MenuConfigPayload) -> [MenuNode]? { + guard let data = currentAppliedCustomMenuData() else { return nil } + do { + return try CustomMenu.decode(data, config: config) + } catch { + // Fall back to the default layout, but keep the reason readable in the + // log. `.private` because messages can quote user paths. + Logger(subsystem: "RClick", category: "MenuService") + .error("Invalid custom_menu.json; using default menu: \(CustomMenuDiagnostics.message(for: error), privacy: .private)") + return nil } + } - return config + /// The bytes to render from, or `nil` for the default layout. + /// + /// The file is read only on first use and when the user applies it. Edits made + /// in an external editor are deliberately ignored until then, so a + /// half-written file cannot take the menu down mid-edit. Deleting the file is + /// the one exception: that is unambiguous and non-transient, so it still means + /// "back to the default layout" right away. + private func currentAppliedCustomMenuData() -> Data? { + ensureAppliedCustomMenuLoaded() + guard let url = customMenuURL, + FileManager.default.fileExists(atPath: url.path) else { return nil } + return appliedCustomMenuData } // MARK: - Custom menu status - /// Reports what the custom menu file currently means for this installation. + /// Reports what the custom menu means for this installation right now. /// - /// Derived on demand rather than cached inside `buildConfig`: that method only - /// runs when the extension asks for a config, which never happens while the - /// extension is disabled - exactly when someone opens Settings to investigate. - static func customMenuStatus(at url: URL?, config: MenuConfigPayload) -> CustomMenuStatus { - guard let url else { return .unavailable } + /// Takes the applied snapshot as a parameter rather than reading the property, + /// so tests can drive it without an App Group container. + static func customMenuStatus(at url: URL?, appliedData: Data?, config: MenuConfigPayload) -> CustomMenuStatus { + guard let url else { return CustomMenuStatus(applied: .unavailable, notice: .none) } + + let fileData: Data do { - guard let nodes = try CustomMenu.load(from: url, config: config) else { return .defaultLayout } - return nodes.isEmpty ? .empty : .active(topLevelItems: nodes.count) + fileData = try Data(contentsOf: url) + } catch CocoaError.fileReadNoSuchFile { + // No file, so nothing is in effect and there is nothing to apply. + return CustomMenuStatus(applied: .defaultLayout, notice: .none) } catch { - return .invalid(reason: CustomMenuDiagnostics.message(for: error)) + // Unreadable for some other reason - a folder where a file was expected, + // say. That is not a missing file, and sending the user off to fix the + // JSON syntax of something that has none would be a wrong turn. + return CustomMenuStatus(applied: .defaultLayout, + notice: .broken(reason: CustomMenuDiagnostics.message(for: error))) + } + + // The snapshot only counts while the file is still there: deleting the file + // is the documented way back to the default layout. + var appliedReason: String? + let applied: CustomMenuStatus.Applied + if let appliedData { + switch resolve(appliedData, config: config) { + case .unusable(let reason): + applied = .defaultLayout + appliedReason = reason + case .usable(let nodes): + applied = nodes.isEmpty ? .empty : .custom(topLevelItems: nodes.count) + } + } else { + applied = .defaultLayout + } + + switch resolve(fileData, config: config) { + case .unusable(let reason): + return CustomMenuStatus(applied: applied, notice: .broken(reason: reason)) + case .usable: + guard fileData == appliedData else { + return CustomMenuStatus(applied: applied, notice: .edited) + } + // Same bytes. If they no longer resolve, the menu fell back anyway and + // this reason is the only explanation the user is going to get. + return CustomMenuStatus(applied: applied, + notice: appliedReason.map { .broken(reason: $0) } ?? .none) } } func customMenuStatus(from state: AppState) -> CustomMenuStatus { - Self.customMenuStatus(at: Self.customMenuURL, config: Self.makePayload(from: state)) + ensureAppliedCustomMenuLoaded() + return Self.customMenuStatus(at: customMenuURL, + appliedData: appliedCustomMenuData, + config: Self.makePayload(from: state)) + } + + /// Deliberately not named `.none`: that would shadow `Optional.none` and make + /// every use site ambiguous. + private enum Resolution { + case unusable(reason: String) + case usable([MenuNode]) + } + + private static func resolve(_ data: Data, config: MenuConfigPayload) -> Resolution { + do { + return .usable(try CustomMenu.decode(data, config: config)) + } catch { + return .unusable(reason: CustomMenuDiagnostics.message(for: error)) + } + } + + // MARK: - Custom menu application + + /// Re-reads the file, validates it against `config`, and only then makes it the + /// layout in effect. + /// + /// Throws without touching the snapshot, so a bad edit leaves the menu exactly + /// as it was instead of falling back to the default layout behind the user's back. + func applyCustomMenu(at url: URL, config: MenuConfigPayload) throws { + let data = try Data(contentsOf: url) + // Validate against the payload the extension will actually receive, so a + // reference that no longer matches enabled items is rejected here instead + // of quietly dropping out of the menu. + _ = try CustomMenu.decode(data, config: config) + appliedCustomMenuData = data + hasLoadedAppliedCustomMenu = true + } + + /// Applies whatever is at `customMenuURL`, or throws when there is no container. + func applyCustomMenu(config: MenuConfigPayload) throws { + guard let url = customMenuURL else { + throw CustomMenuError.containerUnavailable + } + try applyCustomMenu(at: url, config: config) + } + + func applyCustomMenu(from state: AppState) throws { + try applyCustomMenu(config: Self.makePayload(from: state)) + } + + /// Forgets the applied layout so a stale snapshot cannot bring it back. + func discardAppliedCustomMenu() { + appliedCustomMenuData = nil + hasLoadedAppliedCustomMenu = true + } + + private func ensureAppliedCustomMenuLoaded() { + guard !hasLoadedAppliedCustomMenu else { return } + hasLoadedAppliedCustomMenu = true + guard let url = customMenuURL else { return } + appliedCustomMenuData = try? Data(contentsOf: url) } // MARK: - Custom menu removal diff --git a/RClick/Runtime/RCRuntime.swift b/RClick/Runtime/RCRuntime.swift index 7771c6c..869efe5 100644 --- a/RClick/Runtime/RCRuntime.swift +++ b/RClick/Runtime/RCRuntime.swift @@ -29,7 +29,7 @@ final class RCRuntime { self.state = AppState.shared self.configService = state.configService self.permissionService = PermissionService(bookmarkManager: state.bookmarkManager) - self.menuService = MenuService() + self.menuService = MenuService(customMenuURL: MenuService.defaultCustomMenuURL) self.actionService = ActionService(state: state, permission: permissionService) self.messager = Messager.shared } diff --git a/RClick/Settings/GeneralSettingsTabView.swift b/RClick/Settings/GeneralSettingsTabView.swift index c4184d1..2ba0276 100644 --- a/RClick/Settings/GeneralSettingsTabView.swift +++ b/RClick/Settings/GeneralSettingsTabView.swift @@ -7,6 +7,7 @@ import AppKit import Cocoa +import Combine import FinderSync import Foundation import OSLog @@ -27,7 +28,7 @@ struct GeneralSettingsTabView: View { @State private var menuConfigError: String? @State private var menuConfigErrorTitle = "Unable to Open Menu Config" @State private var showMenuConfigError = false - @State private var customMenuStatus: CustomMenuStatus = .defaultLayout + @State private var customMenuStatus = CustomMenuStatus(applied: .defaultLayout, notice: .none) @State private var showDirImporter = false @State private var wrongFold = false @@ -106,45 +107,54 @@ struct GeneralSettingsTabView: View { .foregroundStyle(customMenuStatusColor) } - if case .invalid(let reason) = customMenuStatus { - Text(reason) + switch customMenuStatus.notice { + case .none: + EmptyView() + case .edited: + Text(appLocalized: "Changed since it was applied, so the menu still shows the previous layout.") .font(.caption) .foregroundStyle(.secondary) - .textSelection(.enabled) .fixedSize(horizontal: false, vertical: true) + case .broken(let reason): + Label { + Text(reason) + .textSelection(.enabled) + } icon: { + Image(systemName: "exclamationmark.triangle.fill") + } + .font(.caption) + .foregroundStyle(.secondary) + .fixedSize(horizontal: false, vertical: true) } HStack { - Button(AppLocalization.localized("Open Config")) { - openMenuConfig(reveal: false) + Button(AppLocalization.localized("Edit Menu Config…")) { + revealMenuConfig() } - .help(AppLocalization.localized("Creates the file from your current menu the first time, then just opens it. Neither changes its contents.")) - - Button(AppLocalization.localized("Reveal in Finder")) { - openMenuConfig(reveal: true) - } - .help(AppLocalization.localized("Shows the file in Finder. Changes nothing.")) - } + .help(AppLocalization.localized("Locates custom_menu.json in Finder so you can open it with the editor you prefer. Creates it first if it does not exist yet.")) - HStack { Button(AppLocalization.localized("Apply Custom Menu")) { applyCustomMenu() } - .disabled(!customMenuIsPresent) - .help(AppLocalization.localized("Applies now instead of waiting up to 10 seconds. Does not change the file.")) + .disabled(!customMenuHasPendingChanges) + .help(AppLocalization.localized("Reads the file again and puts it into effect. If it has errors the menu is left as it was.")) + + Spacer() Button(AppLocalization.localized("Restore Default Layout")) { restoreDefaultLayout() } - .disabled(!customMenuIsPresent) + .disabled(!customMenuFileExists) .help(AppLocalization.localized("Deletes the file and returns to the default layout, keeping a backup.")) } } header: { - Text(appLocalized: "Advanced Menu Layout") + Text(appLocalized: "Custom Menu") } footer: { VStack(alignment: .leading, spacing: 6) { - Text(appLocalized: "Customize top-level items and nested submenus with custom_menu.json. 💡 Tip: Give this file to an AI assistant (such as ChatGPT / Claude) to help arrange your menu.") - Text(appLocalized: "Changes apply on their own within 10 seconds. Removing the file restores the default layout.") + if customMenuStatus.applied == .defaultLayout { + Text(appLocalized: "Customize top-level items and nested submenus with custom_menu.json. 💡 Tip: Give this file to an AI assistant (such as ChatGPT / Claude) to help arrange your menu.") + } + Text(appLocalized: "Editing the file changes nothing until you apply it.") } .foregroundStyle(.secondary) .fixedSize(horizontal: false, vertical: true) @@ -199,6 +209,13 @@ struct GeneralSettingsTabView: View { updatePermissionStatus() refreshCustomMenuStatus() } + // Keeps the Apply button's enabled state honest. App activation covers the + // normal "edit elsewhere, switch back" path; this covers a writer that never + // takes activation away - a script, a sync tool, another process. Without + // it a stale status would leave the button disabled and unclickable. + .onReceive(Timer.publish(every: 2, on: .main, in: .common).autoconnect()) { _ in + refreshCustomMenuStatus() + } .alert( Text(appLocalized: "Invalid Folder"), isPresented: $wrongFold @@ -229,96 +246,95 @@ struct GeneralSettingsTabView: View { } } - private func openMenuConfig(reveal: Bool) { + /// Locates the file in Finder so the user can open it with an editor they chose. + /// + /// Deliberately does not open it: the system default editor is whatever happens + /// to be installed, which is not a choice the user made. A missing file is + /// seeded first so there is something to reveal - and that no longer changes + /// the menu, which now waits for Apply. + private func revealMenuConfig() { + guard let url = RCRuntime.shared.menuService.customMenuURL else { + presentConfigError( + title: "Unable to Open Menu Config", + message: AppLocalization.localized("The shared configuration folder is unavailable.") + ) + return + } do { - guard let url = MenuService.customMenuURL else { - presentConfigError( - title: "Unable to Open Menu Config", - message: AppLocalization.localized("The shared configuration folder is unavailable.") - ) - return - } - // Generating the file also switches the menu over to the custom layout, - // so the user decides rather than discovering it in Finder. - if !FileManager.default.fileExists(atPath: url.path), !confirmGeneratingCustomMenu() { - return - } - // Seeding only reads the current configuration, so the payload is built - // without bumping the menu version or re-reading the file we are about - // to open. try MenuService.prepareCustomMenu(at: url, config: MenuService.makePayload(from: store)) - NotificationCenter.default.post(name: .menuConfigShouldUpdate, object: nil) - if reveal { - NSWorkspace.shared.activateFileViewerSelecting([url]) - } else if !NSWorkspace.shared.open(url) { - presentConfigError( - title: "Unable to Open Menu Config", - message: AppLocalization.localized("No application could open the configuration file. Try Reveal in Finder and choose a text editor.") - ) - } } catch { presentConfigError(title: "Unable to Open Menu Config", message: CustomMenuDiagnostics.message(for: error)) } + NSWorkspace.shared.activateFileViewerSelecting([url]) refreshCustomMenuStatus() } // MARK: - 自定义菜单 - private var customMenuIsPresent: Bool { - switch customMenuStatus { - case .defaultLayout, .unavailable: false - case .empty, .active, .invalid: true + private var customMenuFileExists: Bool { + guard let url = RCRuntime.shared.menuService.customMenuURL else { return false } + return FileManager.default.fileExists(atPath: url.path) + } + + /// Whether the file differs from what is in effect. Also what makes the button + /// going grey a form of confirmation that applying worked. + private var customMenuHasPendingChanges: Bool { + switch customMenuStatus.notice { + case .edited, .broken: true + case .none: false } } + private var customMenuIsBroken: Bool { + if case .broken = customMenuStatus.notice { return true } + return false + } + private var customMenuStatusTitle: String { - switch customMenuStatus { - case .unavailable: AppLocalization.localized("Unavailable") - case .defaultLayout: AppLocalization.localized("Not enabled") - case .empty, .active: AppLocalization.localized("Enabled") - case .invalid: AppLocalization.localized("Configuration invalid") + switch customMenuStatus.applied { + case .unavailable: + AppLocalization.localized("Unavailable") + case .defaultLayout: + customMenuIsBroken + ? AppLocalization.localized("Configuration invalid") + : AppLocalization.localized("Not enabled") + case .empty, .custom: + AppLocalization.localized("Enabled") } } private var customMenuStatusDetail: String { - switch customMenuStatus { + switch customMenuStatus.applied { case .unavailable: "" - case .defaultLayout, .invalid: AppLocalization.localized("Using the default layout") + case .defaultLayout: AppLocalization.localized("Using the default layout") case .empty: AppLocalization.localized("Empty menu") - case .active(let count): String(format: AppLocalization.localized("%lld items"), count) + case .custom(let count): String(format: AppLocalization.localized("%lld items"), count) } } private var customMenuStatusIcon: String { - switch customMenuStatus { - case .unavailable, .invalid: "exclamationmark.triangle.fill" - case .defaultLayout: "circle.dashed" - case .empty, .active: "checkmark.circle.fill" + switch customMenuStatus.applied { + case .unavailable: "exclamationmark.triangle.fill" + case .defaultLayout: customMenuIsBroken ? "exclamationmark.triangle.fill" : "circle.dashed" + case .empty, .custom: "checkmark.circle.fill" } } private var customMenuStatusColor: Color { - switch customMenuStatus { - case .unavailable, .invalid: .orange - case .defaultLayout: .secondary - case .empty, .active: .green + switch customMenuStatus.applied { + case .unavailable: .orange + case .defaultLayout: customMenuIsBroken ? .orange : .secondary + case .empty, .custom: .green } } + /// Guarded by an equality check so the polling timer does not dirty the view on + /// every tick. private func refreshCustomMenuStatus() { - customMenuStatus = RCRuntime.shared.menuService.customMenuStatus(from: store) - } - - /// Generating the config also enables the custom layout, so ask first: a - /// tooltip is not enough for an action with a side effect the user cannot see. - private func confirmGeneratingCustomMenu() -> Bool { - let alert = NSAlert() - alert.messageText = AppLocalization.localized("No custom menu configuration yet") - alert.informativeText = AppLocalization.localized("RClick will generate one from your current menu and switch to the custom layout right away, so the right-click menu will change to match it.") - alert.alertStyle = .informational - alert.addButton(withTitle: AppLocalization.localized("Generate and Enable")) - alert.addButton(withTitle: AppLocalization.localized("Cancel")) - return alert.runModal() == .alertFirstButtonReturn + let fresh = RCRuntime.shared.menuService.customMenuStatus(from: store) + if fresh != customMenuStatus { + customMenuStatus = fresh + } } private func presentConfigError(title: String, message: String) { @@ -327,22 +343,26 @@ struct GeneralSettingsTabView: View { showMenuConfigError = true } - /// Applies the file immediately. + /// Re-reads the file and only then commits it. /// - /// Deliberately the same path the extension heartbeat drives, so pressing this - /// and waiting 10 seconds must yield identical menus - this is an accelerator, - /// not a second way of applying configuration. + /// Nothing is pushed unless the file validated, so a bad edit leaves the live + /// menu exactly as it was instead of taking it down behind the user's back. private func applyCustomMenu() { - let status = RCRuntime.shared.menuService.customMenuStatus(from: store) - NotificationCenter.default.post(name: .menuConfigShouldUpdate, object: nil) - customMenuStatus = status - if case .invalid(let reason) = status { - presentConfigError(title: "Configuration Not Applied", message: reason) + do { + try RCRuntime.shared.menuService.applyCustomMenu(from: store) + NotificationCenter.default.post(name: .menuConfigShouldUpdate, object: nil) + } catch { + presentConfigError( + title: "Configuration Not Applied", + message: CustomMenuDiagnostics.message(for: error) + + "\n\n" + AppLocalization.localized("The menu is unchanged.") + ) } + refreshCustomMenuStatus() } private func restoreDefaultLayout() { - guard let url = MenuService.customMenuURL else { + guard let url = RCRuntime.shared.menuService.customMenuURL else { presentConfigError( title: "Unable to Restore Default Layout", message: AppLocalization.localized("The shared configuration folder is unavailable.") @@ -362,6 +382,10 @@ struct GeneralSettingsTabView: View { do { try MenuService.removeCustomMenu(at: url) + // Forgetting the snapshot matters: without it, recreating the file with + // the same bytes (restoring the backup, say) would silently bring the + // custom layout back without an Apply. + RCRuntime.shared.menuService.discardAppliedCustomMenu() NotificationCenter.default.post(name: .menuConfigShouldUpdate, object: nil) } catch { presentConfigError(title: "Unable to Restore Default Layout", message: CustomMenuDiagnostics.message(for: error)) diff --git a/RClickTests/CustomMenuApplyTests.swift b/RClickTests/CustomMenuApplyTests.swift new file mode 100644 index 0000000..65d4858 --- /dev/null +++ b/RClickTests/CustomMenuApplyTests.swift @@ -0,0 +1,160 @@ +import AppKit +import Testing + +@testable import RClick + +/// Covers the explicit-apply model: the file on disk is a draft, and only +/// `applyCustomMenu` commits it. +/// +/// Every service here is built over a temporary URL. The default URL resolves to +/// the real App Group container, which tests must never touch. +@MainActor +struct CustomMenuApplyTests { + private var catalog: MenuConfigPayload { + MenuConfigPayload( + actions: [ActionMenuItem(id: "copy-path", name: "Copy Path", icon: "doc", tag: 1)], + commonDirs: [ + CommonDirMenuItem(id: "desktop", name: "Desktop", icon: "folder", url: "/Users/x/Desktop") + ] + ) + } + + /// `MenuNode` is deliberately not `Equatable`, so compare counts. + private func nodeCount(_ nodes: [MenuNode]?) -> Int? { + nodes?.count + } + + private func temporaryFile(_ json: String) throws -> URL { + let url = FileManager.default.temporaryDirectory + .appendingPathComponent("rclick-apply-\(UUID()).json") + try Data(json.utf8).write(to: url) + return url + } + + // MARK: - The core of the change + + @Test func anEditOnDiskStaysInvisibleUntilItIsApplied() throws { + let url = try temporaryFile(#"[{"type":"separator"}]"#) + defer { try? FileManager.default.removeItem(at: url) } + let service = MenuService(customMenuURL: url) + + try service.applyCustomMenu(at: url, config: catalog) + #expect(nodeCount(service.customMenu(for: catalog)) == 1) + + // The user saves a longer draft. The extension heartbeat fires every ten + // seconds and rebuilds the config every time; not one of those may pick + // this up, which is the entire point of the change. + try Data(#"[{"type":"separator"},{"type":"separator"}]"#.utf8).write(to: url) + #expect(nodeCount(service.customMenu(for: catalog)) == 1) + + // Only an explicit apply moves the menu. + try service.applyCustomMenu(at: url, config: catalog) + #expect(nodeCount(service.customMenu(for: catalog)) == 2) + } + + @Test func anInvalidEditThrowsAndLeavesTheMenuAlone() throws { + let url = try temporaryFile(#"[{"type":"separator"}]"#) + defer { try? FileManager.default.removeItem(at: url) } + let service = MenuService(customMenuURL: url) + try service.applyCustomMenu(at: url, config: catalog) + + try Data("not JSON".utf8).write(to: url) + + let thrown = #expect(throws: (any Error).self) { + try service.applyCustomMenu(at: url, config: catalog) + } + #expect(thrown != nil) + // The live menu must not have collapsed to the default layout. + #expect(nodeCount(service.customMenu(for: catalog)) == 1) + } + + @Test func applyingTheSameFileTwiceIsHarmless() throws { + let url = try temporaryFile(#"[{"type":"separator"}]"#) + defer { try? FileManager.default.removeItem(at: url) } + let service = MenuService(customMenuURL: url) + + try service.applyCustomMenu(at: url, config: catalog) + try service.applyCustomMenu(at: url, config: catalog) + + #expect(nodeCount(service.customMenu(for: catalog)) == 1) + } + + @Test func aFileThatNoLongerMatchesTheSettingsIsRejectedAtApplyTime() throws { + // Applying with common folders off must fail loudly rather than commit a + // layout whose only entry would silently drop out of the menu. + let url = try temporaryFile(#"[{"type":"item","itemType":"common-dir","id":"desktop"}]"#) + defer { try? FileManager.default.removeItem(at: url) } + let service = MenuService(customMenuURL: url) + try service.applyCustomMenu(at: url, config: catalog) + #expect(nodeCount(service.customMenu(for: catalog)) == 1) + + let thrown = #expect(throws: (any Error).self) { + try service.applyCustomMenu(at: url, config: MenuConfigPayload()) + } + let message = CustomMenuDiagnostics.message(for: try #require(thrown)) + #expect(message.contains("matched 0 enabled items")) + // The layout that was already in effect survived the rejection. + #expect(nodeCount(service.customMenu(for: catalog)) == 1) + } + + // MARK: - Going back to the default layout + + @Test func deletingTheFileClearsTheMenuOnTheNextBuild() throws { + let url = try temporaryFile(#"[{"type":"separator"}]"#) + let service = MenuService(customMenuURL: url) + try service.applyCustomMenu(at: url, config: catalog) + #expect(nodeCount(service.customMenu(for: catalog)) == 1) + + try FileManager.default.removeItem(at: url) + + // Deleting the file is unambiguous and non-transient, so unlike an edit it + // does not wait for an apply. + #expect(nodeCount(service.customMenu(for: catalog)) == nil) + } + + @Test func discardingForgetsTheLayoutEvenIfTheSameFileComesBack() throws { + // Restoring the default layout must not be undone by reinstating the file + // from the backup: that would bring the custom menu back with no Apply. + let json = #"[{"type":"separator"}]"# + let url = try temporaryFile(json) + defer { try? FileManager.default.removeItem(at: url) } + let service = MenuService(customMenuURL: url) + try service.applyCustomMenu(at: url, config: catalog) + + service.discardAppliedCustomMenu() + #expect(nodeCount(service.customMenu(for: catalog)) == nil) + + try Data(json.utf8).write(to: url) + #expect(nodeCount(service.customMenu(for: catalog)) == nil) + } + + // MARK: - Degenerate containers + + @Test func noContainerMeansTheDefaultLayout() { + let service = MenuService(customMenuURL: nil) + #expect(nodeCount(service.customMenu(for: catalog)) == nil) + } + + @Test func noContainerMakesApplyingFail() throws { + let service = MenuService(customMenuURL: nil) + + let thrown = #expect(throws: (any Error).self) { + try service.applyCustomMenu(config: catalog) + } + #expect(thrown is CustomMenuError) + } + + // MARK: - The empty array keeps its meaning + + @Test func anAppliedEmptyArrayRendersNoItemsRatherThanTheDefaultLayout() throws { + // `[]` must stay distinguishable from "no file": the extension renders an + // empty menu for the former and the categorized layout for the latter. + let url = try temporaryFile("[]") + defer { try? FileManager.default.removeItem(at: url) } + let service = MenuService(customMenuURL: url) + + try service.applyCustomMenu(at: url, config: catalog) + + #expect(nodeCount(service.customMenu(for: catalog)) == 0) + } +} diff --git a/RClickTests/CustomMenuStatusTests.swift b/RClickTests/CustomMenuStatusTests.swift index 454ba5c..16d55ca 100644 --- a/RClickTests/CustomMenuStatusTests.swift +++ b/RClickTests/CustomMenuStatusTests.swift @@ -4,9 +4,8 @@ import Testing @testable import RClick /// Covers what the custom menu file currently *means*, and how failures are -/// explained. Every case passes an explicit URL: under the test host -/// `MenuService.customMenuURL` resolves to the real App Group container, which -/// tests must never touch. +/// explained. Every case passes an explicit URL: under the test host the default +/// URL resolves to the real App Group container, which tests must never touch. @MainActor struct CustomMenuStatusTests { private var catalog: MenuConfigPayload { @@ -34,10 +33,19 @@ struct CustomMenuStatusTests { .appendingPathComponent("rclick-status-\(UUID())") } - private func status(of json: String) throws -> CustomMenuStatus { + /// The settled state: the file on disk is exactly what is in effect. + private func appliedStatus(of json: String, config: MenuConfigPayload? = nil) throws -> CustomMenuStatus { let url = try temporaryFile(json) defer { try? FileManager.default.removeItem(at: url) } - return MenuService.customMenuStatus(at: url, config: catalog) + return MenuService.customMenuStatus(at: url, appliedData: Data(json.utf8), + config: config ?? catalog) + } + + /// The file exists but was never applied, so nothing of it is in effect. + private func draftStatus(of json: String, config: MenuConfigPayload? = nil) throws -> CustomMenuStatus { + let url = try temporaryFile(json) + defer { try? FileManager.default.removeItem(at: url) } + return MenuService.customMenuStatus(at: url, appliedData: nil, config: config ?? catalog) } /// Loads `json` expecting rejection, and hands back the error it raised. @@ -50,32 +58,70 @@ struct CustomMenuStatusTests { return try #require(thrown) } - // MARK: - The three states must stay distinguishable + // MARK: - What the menu is rendering @Test func noFileMeansDefaultLayout() { let url = FileManager.default.temporaryDirectory .appendingPathComponent("rclick-absent-\(UUID()).json") - #expect(MenuService.customMenuStatus(at: url, config: catalog) == .defaultLayout) + #expect(MenuService.customMenuStatus(at: url, appliedData: nil, config: catalog) + == CustomMenuStatus(applied: .defaultLayout, notice: .none)) } @Test func noContainerMeansUnavailable() { // Previously indistinguishable from "no file": both produced a nil payload. - #expect(MenuService.customMenuStatus(at: nil, config: catalog) == .unavailable) + #expect(MenuService.customMenuStatus(at: nil, appliedData: nil, config: catalog) + == CustomMenuStatus(applied: .unavailable, notice: .none)) } @Test func emptyArrayIsEmptyNotInvalid() throws { // An empty array is a deliberate request for an empty menu, not a failure. - #expect(try status(of: "[]") == .empty) + #expect(try appliedStatus(of: "[]") == CustomMenuStatus(applied: .empty, notice: .none)) } - @Test func validLayoutReportsTopLevelCount() throws { + @Test func appliedLayoutReportsTopLevelCount() throws { let json = #"[{"type":"item","itemType":"action","id":"copy-path"},{"type":"separator"}]"# - #expect(try status(of: json) == .active(topLevelItems: 2)) + #expect(try appliedStatus(of: json) + == CustomMenuStatus(applied: .custom(topLevelItems: 2), notice: .none)) + } + + // MARK: - The file relative to what is applied + + @Test func aFileThatWasNeverAppliedIsPendingAndChangesNothing() throws { + // Generating the file no longer switches the layout, so this is what a + // first-time user sees: a file, and a menu that has not moved. + let status = try draftStatus(of: #"[{"type":"separator"}]"#) + #expect(status == CustomMenuStatus(applied: .defaultLayout, notice: .edited)) + } + + @Test func editingAnAppliedFileIsPendingUntilItIsAppliedAgain() throws { + let url = try temporaryFile(#"[{"type":"separator"}]"#) + defer { try? FileManager.default.removeItem(at: url) } + let applied = try Data(contentsOf: url) + + try Data(#"[{"type":"separator"},{"type":"separator"}]"#.utf8).write(to: url) + + // Editing the file is not enough: the applied bytes still describe one item. + #expect(MenuService.customMenuStatus(at: url, appliedData: applied, config: catalog) + == CustomMenuStatus(applied: .custom(topLevelItems: 1), notice: .edited)) + // Once the new bytes are applied, the menu catches up and nothing is pending. + let reapplied = try Data(contentsOf: url) + #expect(MenuService.customMenuStatus(at: url, appliedData: reapplied, config: catalog) + == CustomMenuStatus(applied: .custom(topLevelItems: 2), notice: .none)) } - @Test func malformedFileIsInvalidWithAReason() throws { - guard case .invalid(let reason) = try status(of: "not JSON") else { - Issue.record("expected .invalid") + @Test func deletingTheFileReturnsToTheDefaultLayout() throws { + // The documented escape hatch, and it must survive explicit-apply: a + // snapshot that outlives its file would strand the user on a layout they + // cannot get rid of. + let url = temporaryDirectory().appendingPathComponent("custom_menu.json") + let applied = Data(#"[{"type":"separator"}]"#.utf8) + #expect(MenuService.customMenuStatus(at: url, appliedData: applied, config: catalog) + == CustomMenuStatus(applied: .defaultLayout, notice: .none)) + } + + @Test func malformedFileIsBrokenWithAReason() throws { + guard case .broken(let reason) = try draftStatus(of: "not JSON").notice else { + Issue.record("expected .broken") return } #expect(!reason.isEmpty) @@ -88,19 +134,33 @@ struct CustomMenuStatusTests { try FileManager.default.createDirectory(at: directory, withIntermediateDirectories: true) defer { try? FileManager.default.removeItem(at: directory) } - guard case .invalid(let reason) = MenuService.customMenuStatus(at: directory, config: catalog) else { - Issue.record("expected .invalid") + guard case .broken(let reason) = MenuService.customMenuStatus( + at: directory, appliedData: nil, config: catalog + ).notice else { + Issue.record("expected .broken") return } #expect(reason != AppLocalization.localized("The JSON file is malformed.")) } - @Test(arguments: [CustomMenuStatus.unavailable, .invalid(reason: "boom")]) + // MARK: - isProblem + + @Test(arguments: [ + CustomMenuStatus(applied: .unavailable, notice: .none), + CustomMenuStatus(applied: .defaultLayout, notice: .broken(reason: "boom")), + CustomMenuStatus(applied: .custom(topLevelItems: 1), notice: .broken(reason: "boom")) + ]) func problemStatesAreFlagged(status: CustomMenuStatus) { #expect(status.isProblem) } - @Test(arguments: [CustomMenuStatus.defaultLayout, .empty, .active(topLevelItems: 1)]) + @Test(arguments: [ + CustomMenuStatus(applied: .defaultLayout, notice: .none), + CustomMenuStatus(applied: .empty, notice: .none), + CustomMenuStatus(applied: .custom(topLevelItems: 1), notice: .none), + // An edit waiting to be applied is the normal working state, not a problem. + CustomMenuStatus(applied: .custom(topLevelItems: 1), notice: .edited) + ]) func normalStatesAreNotFlagged(status: CustomMenuStatus) { #expect(!status.isProblem) } @@ -157,25 +217,32 @@ struct CustomMenuStatusTests { #expect(!FileManager.default.fileExists(atPath: url.path)) } - // MARK: - Interaction with the common folders toggle + // MARK: - A settings change can invalidate an applied file @Test func hidingCommonFoldersTakesDownAConfigThatReferencesThem() throws { // "Enable common folders" is not a pure layout switch: MenuService only // fills payload.commonDirs when it is on. A custom menu referencing a // common dir therefore stops resolving once the switch is turned off, and // the whole custom layout falls back - not just the common dir entries. + // + // The file itself is untouched, which is why the reason has to be surfaced: + // otherwise the menu would simply change with nothing to explain it. let json = #"[{"type":"item","itemType":"common-dir","id":"desktop"}]"# let url = try temporaryFile(json) defer { try? FileManager.default.removeItem(at: url) } + let applied = Data(json.utf8) let shown = MenuConfigPayload(commonDirs: [ CommonDirMenuItem(id: "desktop", name: "Desktop", icon: "folder", url: "/Users/x/Desktop") ]) - #expect(MenuService.customMenuStatus(at: url, config: shown) == .active(topLevelItems: 1)) + #expect(MenuService.customMenuStatus(at: url, appliedData: applied, config: shown) + == CustomMenuStatus(applied: .custom(topLevelItems: 1), notice: .none)) let hidden = MenuConfigPayload(commonDirs: []) - guard case .invalid(let reason) = MenuService.customMenuStatus(at: url, config: hidden) else { - Issue.record("expected .invalid once common folders are hidden") + let status = MenuService.customMenuStatus(at: url, appliedData: applied, config: hidden) + #expect(status.applied == .defaultLayout) + guard case .broken(let reason) = status.notice else { + Issue.record("expected .broken once common folders are hidden") return } #expect(reason.contains("matched 0 enabled items")) diff --git a/README.md b/README.md index 72f88fa..91909a5 100644 --- a/README.md +++ b/README.md @@ -137,5 +137,5 @@ Please read our [Code of Conduct](CODE_OF_CONDUCT.md) before participating. ## 自定义菜单层级 支持一级常用项与任意嵌套子菜单混排、分隔线及自定义标题/图标。 -将声明式 `custom_menu.json` 放入 App Group 容器即可生效;保存后 10 秒内自动应用,也可在设置中点「应用自定义菜单」立即生效。缺失时使用默认布局;配置无效时回退默认布局,并在设置中显示具体出错项。 +把声明式 `custom_menu.json` 放进 App Group 容器后,需到 **设置 → 通用 → 自定义菜单** 点「应用配置」才会生效——改动文件本身不会自动应用,这样编辑到一半的半成品不至于把菜单弄坏。缺失文件时使用默认布局;配置无效时菜单保持原样,并在设置中显示具体出错项。 参见 [配置示例与使用说明](examples/README.md)。 diff --git a/Shared/AppLocalization.swift b/Shared/AppLocalization.swift index 16b1ab2..54f80e1 100644 --- a/Shared/AppLocalization.swift +++ b/Shared/AppLocalization.swift @@ -8,7 +8,10 @@ import Foundation import SwiftUI -enum AppLocalization { +// `nonisolated` because lookup is thread-safe and the default main-actor isolation +// makes it unreachable from `LocalizedError.errorDescription`, which has to stay +// nonisolated. +nonisolated enum AppLocalization { static let tableName = "Localizable" static func localized(_ key: String) -> String { diff --git a/Shared/CustomMenu.swift b/Shared/CustomMenu.swift index 5b08ae0..388ab8b 100644 --- a/Shared/CustomMenu.swift +++ b/Shared/CustomMenu.swift @@ -84,11 +84,15 @@ enum CustomMenuError: Error, CustomStringConvertible, LocalizedError { case invalid(String) /// A validation failure pinned to a 1-based menu item path, e.g. "3" or "2.1". case invalidAt(path: String, message: String) + /// The App Group container is missing, so there is nothing to read or write. + case containerUnavailable var description: String { switch self { case .invalid(let message): return message case .invalidAt(let path, let message): return "[\(path)] \(message)" + case .containerUnavailable: + return AppLocalization.localized("The shared configuration folder is unavailable.") } } diff --git a/examples/README.md b/examples/README.md index 15b9c62..f81b038 100644 --- a/examples/README.md +++ b/examples/README.md @@ -4,24 +4,27 @@ ## 使用 -**设置 → 通用 → 高级菜单布局** 下有四个按钮: +**设置 → 通用 → 自定义菜单** 下有三个按钮: | 按钮 | 行为 | | --- | --- | -| 打开配置 | 文件不存在时会先弹确认;确认后基于当前已配置项目生成,**并立即切换到自定义布局**,再用默认关联应用打开。已存在则仅打开,不询问。**两者都不改动文件内容** | -| 在访达中显示 | 同上,末步改为在访达中选中文件 | -| 应用自定义菜单 | 立即重读并生效,不必等心跳;**不修改文件** | -| 恢复默认布局 | 删除 `custom_menu.json` 回到默认布局,删除前把副本保留为 `custom_menu.backup.json` | +| 编辑菜单配置… | 在访达中定位 `custom_menu.json`,由你用自己的编辑器打开。文件不存在时先基于当前已配置项目生成一份。**不改动已有文件,也不改变菜单** | +| 应用配置 | 重读文件并生效——**这是菜单发生变化的唯一途径**。文件有错误时会提示具体原因,菜单保持原样 | +| 恢复默认… | 删除 `custom_menu.json` 回到默认布局,删除前把副本保留为 `custom_menu.backup.json`。会先弹确认 | -生成与打开都不会覆盖已有文件(包括尚未编辑完成的 JSON)。 +生成不会覆盖已有文件(包括尚未编辑完成的 JSON)。 + +### 为什么不再自动生效 + +早期版本会在最多 10 秒内自动应用文件改动。问题是它**无法分辨"改完了"和"正打到一半"**——你在编辑器里敲到一半,菜单就被换成一份残缺的半成品,而且没有任何提示。现在文件是草稿,「应用配置」才是提交:改坏了点一下就会告诉你哪里错了,菜单不动。 生成时不会在「更多」之前插入分隔线(旧版本会,容易被看成多余的空白行)。想要分组可以自己在 JSON 里加 `{"type": "separator"}`。 > ⚠️ **关掉「启用常用文件夹」会让整份自定义菜单回退。** 这个开关不只是布局开关:它在 `MenuService` 里决定 payload 到底有没有 `commonDirs` 数组。一旦关掉,配置里所有 `common-dir` 引用都会匹配到 0 个,按规则整份回退到默认布局(设置页会提示具体是哪一项)。要保留自定义菜单,就得让这个开关保持开启。 -**生效方式有两条,结果相同**:保存修改后,扩展每 10 秒的心跳会让主程序重读文件,最多 10 秒自动生效;点「应用自定义菜单」则立刻生效。后者只是省去等待,**不是必须的步骤**。 +设置页顶部会显示两件事:**菜单现在是什么**(未启用 / 已启用 / 配置无效)和**文件相对它有什么变化**(已修改未应用 / 有错误)。配置有问题时**会列出具体哪一项出错**,例如 `[2.1] app reference '/Applications/Warp.app' matched 0 enabled items` —— 方括号是菜单项路径,`[2.1]` 指第 2 项里的第 1 项。 -设置页顶部会显示当前状态(未启用 / 已启用 / 配置无效)。配置无效时**会列出具体哪一项出错**,例如 `[2.1] app reference '/Applications/Warp.app' matched 0 enabled items` —— 方括号是菜单项路径,`[2.1]` 指第 2 项里的第 1 项。 +「应用配置」在文件与已生效内容一致时会变灰,所以它变灰本身就是一次"应用成功"的回执。 示例将当前应用和动作平铺,文件模板与常用目录放入“更多”下的子菜单。可直接把 JSON 交给 AI 助手调整结构。若尚未配置任何项目,会生成空的“更多”子菜单。 @@ -35,8 +38,8 @@ ``` 目录应由正常签名并运行过的 RClick 创建。实际读取使用 `FileManager.containerURL(forSecurityApplicationGroupIdentifier:)`;若改变 App Group 标识,使用对应容器。 -3. 保持主程序运行。扩展每 10 秒心跳会触发主程序重新读取;等待一次心跳后重新打开右键菜单,或重启 RClick。已展开的菜单不会即时重绘。 -4. 删除或移走该文件即可恢复原来的分类顺序与折叠设置(设置里的「恢复默认布局」按钮做的也是这件事,还会留一份备份)。JSON 错误、结构错误、无法读取或引用不唯一也会回退到默认布局,并在设置中显示具体原因;`[]` 则有意显示空菜单。 +3. 回到 **设置 → 通用 → 自定义菜单** 点「应用配置」。菜单只在点它之后才改变;只把文件放进去不会生效。 +4. 删除或移走该文件即恢复原来的分类顺序与折叠设置——删除是例外,它不等待应用,下一次心跳就会回到默认布局(设置里的「恢复默认…」按钮做的也是这件事,还会留一份备份)。JSON 错误、结构错误、无法读取或引用不唯一则**不会**改变菜单:点「应用配置」时弹提示说明原因,当前菜单保持原样;`[]` 是有意显示空菜单。 ## 节点 @@ -61,9 +64,9 @@ ## 实现与验证 -`Shared/CustomMenu.swift` 定义共享 `Codable` 模型、引用校验与递归 NSMenu 构建;`MenuService` 在原有配置推送时读取文件,解析为稳定 ID 后放入可选 `MenuConfigPayload.customMenu`。扩展复用旧菜单的四类叶子工厂和点击处理器,保留 ID、类型、Finder 目标路径及触发来源。此模型可作为以后树形编辑 UI 的存储格式,无需迁移现有业务实体。 +`Shared/CustomMenu.swift` 定义共享 `Codable` 模型、引用校验与递归 NSMenu 构建;`MenuService` 持有一份「已应用」的字节快照,每次推送配置时用它重新解析为稳定 ID 后放入可选 `MenuConfigPayload.customMenu`。快照只在 App 启动首次用到时、以及点「应用配置」时读盘——心跳不会重读,这正是"改动不自动生效"的实现方式。扩展复用旧菜单的四类叶子工厂和点击处理器,保留 ID、类型、Finder 目标路径及触发来源。此模型可作为以后树形编辑 UI 的存储格式,无需迁移现有业务实体。 -`RClickTests/CustomMenuTests.swift` 使用同一示例验证解析、三级 NSMenu 结构与叶子绑定;`CustomMenuStatusTests` 验证三态区分(缺文件 / `[]` / 无效)、错误消息定位(`[1.1]`)与删除时保留备份;`ActionServiceTests` 验证模板 ID / 路径经过保存与重载仍保持一致。测试不等同于签名安装后的 Finder 实机验收。 +`RClickTests/CustomMenuTests.swift` 使用同一示例验证解析、三级 NSMenu 结构与叶子绑定;`CustomMenuStatusTests` 验证状态两轴(菜单现在是什么 / 文件相对它怎样)、错误消息定位(`[1.1]`)与删除时保留备份;`CustomMenuApplyTests` 验证"改盘不生效,直到调用应用"、无效配置被拒且菜单不变、以及删除文件与显式丢弃快照都回到默认布局;`ActionServiceTests` 验证模板 ID / 路径经过保存与重载仍保持一致。测试不等同于签名安装后的 Finder 实机验收。 本地验证命令: From 315f6fd554a2498fa76d3a791417d374c63b5398 Mon Sep 17 00:00:00 2001 From: wflixu Date: Sun, 13 Sep 2026 18:11:00 +0800 Subject: [PATCH 12/22] style(settings): lead with launch-at-login and use a clearer folder icon The launch-at-login switch is the one people come to this page for, so it now sits above the menu bar icon toggle. The folder permissions row used folder.badge.person.crop, which reads as "shared with people"; the row is about granting RClick access to folders, so folder.badge.gearshape fits. Co-Authored-By: Claude Code --- RClick/Settings/GeneralSettingsTabView.swift | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/RClick/Settings/GeneralSettingsTabView.swift b/RClick/Settings/GeneralSettingsTabView.swift index 2ba0276..3964d6a 100644 --- a/RClick/Settings/GeneralSettingsTabView.swift +++ b/RClick/Settings/GeneralSettingsTabView.swift @@ -40,13 +40,13 @@ struct GeneralSettingsTabView: View { Form { // MARK: - 第一组:主要控制 Section { - Toggle(isOn: $showMenuBarExtra) { - Text(appLocalized: "Show icon in menu bar") - } - LaunchAtLogin.Toggle { Text(appLocalized: "Launch at login") } + + Toggle(isOn: $showMenuBarExtra) { + Text(appLocalized: "Show icon in menu bar") + } } header: { Text(appLocalized: "Main Controls") } @@ -87,7 +87,7 @@ struct GeneralSettingsTabView: View { } } } label: { - Label(AppLocalization.localized("Folder Permissions"), systemImage: "folder.badge.person.crop") + Label(AppLocalization.localized("Folder Permissions"), systemImage: "folder.badge.gearshape") } } header: { Text(appLocalized: "Permissions") From 7dc8a3e652eb72ff7adf13816ea1b6283831e27a Mon Sep 17 00:00:00 2001 From: wflixu Date: Sun, 13 Sep 2026 18:11:08 +0800 Subject: [PATCH 13/22] fix(defaults): keep the layout toggles in the shared app group The five menu-layout switches lived in UserDefaults.standard while the menu bar toggle lived in the app group, so the same page read from two stores and two of its toggles disagreed about where they were saved. Swapping the store alone would have silently dropped every user's setting, because the old values become invisible and each switch falls back to its declaration default. "Enable common folders" is the one that bites: an empty payload.commonDirs makes any custom menu referencing a common folder stop resolving, which reverts the whole custom layout. Hence the one-time migration, which takes both stores explicitly so a test can drive it with throwaway suites instead of the real ones. Also drops a second, unread showMenuBar declaration whose store disagreed with the live one. Co-Authored-By: Claude Code --- RClick/AppState.swift | 50 ++++++-- .../AppStateDefaultsMigrationTests.swift | 107 ++++++++++++++++++ 2 files changed, 150 insertions(+), 7 deletions(-) create mode 100644 RClickTests/AppStateDefaultsMigrationTests.swift diff --git a/RClick/AppState.swift b/RClick/AppState.swift index 2e3e43b..c282ec9 100644 --- a/RClick/AppState.swift +++ b/RClick/AppState.swift @@ -29,20 +29,56 @@ class AppState: ObservableObject, ActionStateProviding { let bookmarkManager = BookmarkManager() // 折叠开关状态 - 每个分类独立控制 - @AppStorage("foldAppsMenu") var foldAppsMenu: Bool = false - @AppStorage("foldActionsMenu") var foldActionsMenu: Bool = false - @AppStorage("foldNewFileMenu") var foldNewFileMenu: Bool = true - @AppStorage("foldCommonDirMenu") var foldCommonDirMenu: Bool = true + // + // 全部存在 App Group 里,和 showMenuBarExtra 一致,全项目只剩一个 store。 + // 注意收益仅止于"不再有两个 store":扩展并不读这些键,它拿到的是 MenuService + // 算好的 MenuConfigPayload,所以这不是功能性改进,别高估它。 + // + // 它们原本在 UserDefaults.standard,靠 init 里那一次 migrateLayoutToggles 搬过来。 + @AppStorage("foldAppsMenu", store: .group) var foldAppsMenu: Bool = false + @AppStorage("foldActionsMenu", store: .group) var foldActionsMenu: Bool = false + @AppStorage("foldNewFileMenu", store: .group) var foldNewFileMenu: Bool = true + @AppStorage("foldCommonDirMenu", store: .group) var foldCommonDirMenu: Bool = true // 常用文件夹总开关(默认关闭) - @AppStorage("showCommonDirs") var showCommonDirs: Bool = false + @AppStorage("showCommonDirs", store: .group) var showCommonDirs: Bool = false - // 菜单栏显示 - @AppStorage(Key.showMenuBarExtra) var showMenuBar: Bool = true + // 菜单栏显示走 RClickApp / GeneralSettingsTabView 里的那份(store: .group)。 + // 这里曾有一份重复声明,没有任何地方读它;两份 store 不同,留着就是个陷阱。 /// 配置持久化服务 let configService = ConfigService() + /// Layout toggles that used to live in `UserDefaults.standard`. + /// + /// Listed by name because the migration has to find them in the old store, and + /// because renaming one without updating this list would silently strand the + /// user's value there. + nonisolated static let layoutToggleKeys = [ + "foldAppsMenu", "foldActionsMenu", "foldNewFileMenu", "foldCommonDirMenu", "showCommonDirs", + ] + + /// Moves the layout toggles into the shared group, once. + /// + /// Splitting these across two stores is the defect this fixes. It needs a + /// migration rather than a plain store swap because the old values would + /// otherwise become invisible and every switch would fall back to its + /// declaration default. "Enable common folders" going back to off is the one + /// that bites: it empties `payload.commonDirs`, so any custom menu referencing a + /// common folder stops resolving and the whole custom layout reverts. + /// + /// Takes both stores explicitly so a test can drive it with throwaway suites + /// rather than the real ones. + nonisolated static func migrateLayoutToggles(from old: UserDefaults, to new: UserDefaults) { + for key in layoutToggleKeys { + guard new.object(forKey: key) == nil, let existing = old.object(forKey: key) else { continue } + new.set(existing, forKey: key) + old.removeObject(forKey: key) + } + } + init(inExt: Bool = false) { + // Before anything reads the switches above. + Self.migrateLayoutToggles(from: .standard, to: .group) self.inExt = inExt Task { @MainActor in logger.debug("start load") diff --git a/RClickTests/AppStateDefaultsMigrationTests.swift b/RClickTests/AppStateDefaultsMigrationTests.swift new file mode 100644 index 0000000..9241bae --- /dev/null +++ b/RClickTests/AppStateDefaultsMigrationTests.swift @@ -0,0 +1,107 @@ +import Foundation +import Testing + +@testable import RClick + +/// Covers the one-time move of the layout toggles out of the app's own defaults and +/// into the shared group. +/// +/// Both stores are throwaway suites. The real ones - and the real App Group - must +/// never be touched by a test. +@MainActor +struct AppStateDefaultsMigrationTests { + private struct ScratchStore { + let name: String + let defaults: UserDefaults + + static func make() throws -> ScratchStore { + let name = "rclick-migration-\(UUID().uuidString)" + let defaults = try #require(UserDefaults(suiteName: name)) + return ScratchStore(name: name, defaults: defaults) + } + + func cleanUp() { + defaults.removePersistentDomain(forName: name) + } + } + + private func withStores(_ body: (UserDefaults, UserDefaults) throws -> Void) throws { + let old = try ScratchStore.make() + let new = try ScratchStore.make() + defer { + old.cleanUp() + new.cleanUp() + } + try body(old.defaults, new.defaults) + } + + @Test func existingValuesSurviveTheMove() throws { + try withStores { old, new in + // The value that matters: leaving it behind would turn common folders + // off, which takes any custom menu referencing one down with it. + old.set(true, forKey: "showCommonDirs") + old.set(false, forKey: "foldAppsMenu") + + AppState.migrateLayoutToggles(from: old, to: new) + + #expect(new.bool(forKey: "showCommonDirs")) + #expect(new.object(forKey: "foldAppsMenu") as? Bool == false) + } + } + + @Test func theOldCopyIsRemovedSoThereIsOnlyOneSourceOfTruth() throws { + try withStores { old, new in + old.set(true, forKey: "showCommonDirs") + + AppState.migrateLayoutToggles(from: old, to: new) + + #expect(old.object(forKey: "showCommonDirs") == nil) + } + } + + @Test func aValueAlreadyInTheNewStoreWins() throws { + try withStores { old, new in + old.set(true, forKey: "showCommonDirs") + new.set(false, forKey: "showCommonDirs") + + AppState.migrateLayoutToggles(from: old, to: new) + + #expect(new.object(forKey: "showCommonDirs") as? Bool == false) + } + } + + @Test func untouchedSwitchesStayAbsent() throws { + try withStores { old, new in + // Nothing stored anywhere. The migration must not materialise a value, + // or every switch would be pinned to `false` instead of falling back to + // its declared default - `foldNewFileMenu` and `foldCommonDirMenu` + // default to true. + AppState.migrateLayoutToggles(from: old, to: new) + + for key in AppState.layoutToggleKeys { + #expect(new.object(forKey: key) == nil, "\(key) should not have been written") + } + } + } + + @Test func runningItAgainIsHarmless() throws { + try withStores { old, new in + old.set(true, forKey: "showCommonDirs") + AppState.migrateLayoutToggles(from: old, to: new) + + // Second launch: the old store is empty and the new one already has the + // value, so nothing moves and nothing is lost. + AppState.migrateLayoutToggles(from: old, to: new) + + #expect(new.bool(forKey: "showCommonDirs")) + } + } + + @Test func everyDeclaredToggleKeyIsCovered() { + // A new layout switch added without joining this list would silently keep + // whatever the old store held. + #expect(AppState.layoutToggleKeys.contains("showCommonDirs")) + #expect(AppState.layoutToggleKeys.contains("foldCommonDirMenu")) + #expect(AppState.layoutToggleKeys.count == 5) + } +} From 9da3517f314357653b7bc8e2dc444d20c2ef9bfa Mon Sep 17 00:00:00 2001 From: wflixu Date: Sun, 13 Sep 2026 18:12:55 +0800 Subject: [PATCH 14/22] fix(settings): make a failed save visible and never skip the menu refresh Adding or deleting an app sometimes left the Finder menu unchanged, and a save that failed looked exactly like one that succeeded. Both had the same root cause: every mutation persisted and notified by hand, and the call sites disagreed about both halves. Most threw the error away, and adding an app, adding a file type, resetting either list and syncing common folders skipped the notification entirely, so the menu stayed stale until the next heartbeat. Collapsing both halves into a single persist() means a mutation cannot get one without the other. That closes the two reported bugs and four more of the same class structurally, rather than by patching each site. Failures were also invisible because they were logged at .info, which never reaches the log store, so the only symptom was a setting that quietly was not kept. They now land in lastSaveError, which the settings window surfaces as an alert, and are logged at .error. Co-Authored-By: Claude Code --- RClick/AppState.swift | 86 +++++++++++++----------- RClick/Localizable.xcstrings | 35 ++++++++++ RClick/Settings/SettingsView.swift | 13 ++++ RClickTests/ConfigServiceSaveTests.swift | 74 ++++++++++++++++++++ 4 files changed, 168 insertions(+), 40 deletions(-) create mode 100644 RClickTests/ConfigServiceSaveTests.swift diff --git a/RClick/AppState.swift b/RClick/AppState.swift index c282ec9..5a07794 100644 --- a/RClick/AppState.swift +++ b/RClick/AppState.swift @@ -91,27 +91,19 @@ class AppState: ObservableObject, ActionStateProviding { @MainActor func deleteApp(index: Int) { apps.remove(at: index) - do { - try save() - } catch { - logger.info("save error: \(error.localizedDescription)") - } + persist() } @MainActor func addApp(item: OpenWithApp) { logger.debug("start add app") apps.append(item) - do { - try save() - } catch { - logger.info("save error: \(error.localizedDescription)") - } + persist() } @MainActor func moveApps(from source: IndexSet, to destination: Int) { apps.move(fromOffsets: source, toOffset: destination) - persistMenuOrder() + persist() } @MainActor @@ -123,7 +115,7 @@ class AppState: ObservableObject, ActionStateProviding { updatedApp.environment = environment updatedApp.opensNewInstance = opensNewInstance apps[index] = updatedApp - try? save() + persist() } } @@ -141,28 +133,19 @@ class AppState: ObservableObject, ActionStateProviding { @MainActor func deleteNewFile(id: String) { newFiles.removeAll { $0.id == id } - do { - try save() - } catch { - logger.info("save error: \(error.localizedDescription)") - } - NotificationCenter.default.post(name: .menuConfigShouldUpdate, object: nil) + persist() } @MainActor func addNewFile(_ item: NewFile) { logger.debug("start add new file type") newFiles.append(item) - do { - try save() - } catch { - logger.info("save error: \(error.localizedDescription)") - } + persist() } @MainActor func moveNewFiles(from source: IndexSet, to destination: Int) { newFiles.move(fromOffsets: source, toOffset: destination) - persistMenuOrder() + persist() } // MARK: - Actions @@ -174,23 +157,22 @@ class AppState: ObservableObject, ActionStateProviding { } @MainActor func toggleActionItem() { - try? save() - NotificationCenter.default.post(name: .menuConfigShouldUpdate, object: nil) + persist() } @MainActor func moveActions(from source: IndexSet, to destination: Int) { actions.move(fromOffsets: source, toOffset: destination) - persistMenuOrder() + persist() } @MainActor func resetActionItems() { actions = RCAction.all - try? save() + persist() } @MainActor func resetFiletypeItems() { newFiles = NewFile.all - try? save() + persist() } @MainActor func refresh() { @@ -202,20 +184,50 @@ class AppState: ObservableObject, ActionStateProviding { } @MainActor func sync() { - try? save() + persist() } // MARK: - 持久化 + /// Set when the last write to SwiftData failed, cleared on the next success. + /// + /// Persistence failures used to be logged at `.info`, which never reaches the + /// log store: a failed save looked exactly like a successful one, and the only + /// symptom was a setting that had silently not been kept. + @Published private(set) var lastSaveError: String? + + /// Dismisses the alert in the settings window and arms it for the next failure. @MainActor - private func persistMenuOrder() { + func clearSaveError() { + lastSaveError = nil + } + + /// Writes the in-memory configuration to SwiftData and tells the app to rebuild + /// the menu from it. + /// + /// One entry point on purpose. Every mutation used to persist and notify by + /// hand and the call sites disagreed about both halves: most dropped the error, + /// and several skipped the notification entirely - adding an app, adding a file + /// type, resetting either list and syncing common folders all stayed invisible + /// until the next heartbeat. Doing both here means a mutation cannot get one + /// without the other. + /// + /// Deliberately non-throwing; a failure lands in `lastSaveError` for the + /// settings window to show, and is logged at `.error`. + @MainActor + private func persist() { reindexMenuItems() do { - try save() - NotificationCenter.default.post(name: .menuConfigShouldUpdate, object: nil) + try configService.save(AppConfigData(apps: apps, actions: actions, newFiles: newFiles, commonDirs: cdirs)) + lastSaveError = nil } catch { - logger.info("save error: \(error.localizedDescription)") + lastSaveError = error.localizedDescription + logger.error("save error: \(error.localizedDescription)") } + // Posted even when persisting failed: the menu is built from these in-memory + // arrays, so suppressing it would leave the app and the menu disagreeing + // about what is configured. + NotificationCenter.default.post(name: .menuConfigShouldUpdate, object: nil) } @MainActor @@ -231,10 +243,4 @@ class AppState: ObservableObject, ActionStateProviding { return newFile } } - - @MainActor - private func save() throws { - reindexMenuItems() - try configService.save(AppConfigData(apps: apps, actions: actions, newFiles: newFiles, commonDirs: cdirs)) - } } diff --git a/RClick/Localizable.xcstrings b/RClick/Localizable.xcstrings index 31b9ca5..e61233b 100644 --- a/RClick/Localizable.xcstrings +++ b/RClick/Localizable.xcstrings @@ -5098,6 +5098,41 @@ } } }, + "Settings could not be saved" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Settings could not be saved" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "No se pudo guardar la configuración" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Impossible d'enregistrer les réglages" + } + }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "設定を保存できませんでした" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "设置保存失败" + } + } + } + }, "Settings Management" : { "extractionState" : "manual", "localizations" : { diff --git a/RClick/Settings/SettingsView.swift b/RClick/Settings/SettingsView.swift index 7a19fbc..a343895 100644 --- a/RClick/Settings/SettingsView.swift +++ b/RClick/Settings/SettingsView.swift @@ -146,6 +146,19 @@ struct SettingsView: View { } .navigationTitle(AppLocalization.localized(selectedTab.rawValue)) .background(Color(NSColor.windowBackgroundColor)) + // A failed write used to be invisible: the change stayed on screen but was + // never stored, so the only way to notice was losing it on the next launch. + .alert( + Text(appLocalized: "Settings could not be saved"), + isPresented: Binding( + get: { appState.lastSaveError != nil }, + set: { if !$0 { appState.clearSaveError() } } + ) + ) { + Button(AppLocalization.localized("OK"), role: .cancel) { appState.clearSaveError() } + } message: { + Text(appState.lastSaveError ?? "") + } } func getAppVersion() -> String { diff --git a/RClickTests/ConfigServiceSaveTests.swift b/RClickTests/ConfigServiceSaveTests.swift new file mode 100644 index 0000000..4430b3c --- /dev/null +++ b/RClickTests/ConfigServiceSaveTests.swift @@ -0,0 +1,74 @@ +import Foundation +import SwiftData +import Testing + +@testable import RClick + +/// `ConfigService.save` replaces the whole store: it deletes every row of each +/// entity and inserts the in-memory arrays back. +/// +/// Every entity carries `@Attribute(.unique)` on its `id`, and the ids survive the +/// round trip (`OpenWithApp(id: entity.id, ...)`), so the second save re-inserts +/// ids the context is still holding as pending deletions. These tests use an +/// in-memory container - the real store in the App Group must not be touched. +@MainActor +struct ConfigServiceSaveTests { + /// Backed by a real file, not `isStoredInMemoryOnly`: the failure this is + /// chasing only shows up against actual SQLite, and a temp file is as close to + /// the App Group store as a test may get. + private func makeService() throws -> (ConfigService, ModelContext) { + let url = FileManager.default.temporaryDirectory + .appendingPathComponent("rclick-config-\(UUID()).sqlite") + let configuration = ModelConfiguration(url: url, allowsSave: true, cloudKitDatabase: .none) + let container = try ModelContainer( + for: AppEntity.self, + ActionEntity.self, + NewFileTypeEntity.self, + CommonDirEntity.self, + BookmarkEntity.self, + DataVersion.self, + configurations: configuration + ) + let context = ModelContext(container) + return (ConfigService(modelContext: context), context) + } + + private var payload: AppConfigData { + AppConfigData( + apps: [OpenWithApp(id: "zed-id", appURL: URL(fileURLWithPath: "/Applications/Zed.app"))], + actions: [RCAction(id: "copy-path", name: "Copy Path", enabled: true, idx: 0, icon: "doc")], + newFiles: [NewFile(ext: ".txt", name: "TXT", enabled: true, idx: 0, icon: "doc", id: "txt-id")], + commonDirs: [CommonDir(id: "desktop", name: "Desktop", + url: URL(fileURLWithPath: "/Users/x/Desktop"), icon: "folder")] + ) + } + + @Test func theFirstSaveStoresEverything() throws { + let (service, context) = try makeService() + + try service.save(payload) + + #expect(try context.fetch(FetchDescriptor()).count == 1) + #expect(try context.fetch(FetchDescriptor()).count == 1) + } + + @Test func savingAgainWithTheSameIDsDoesNotThrow() throws { + let (service, _) = try makeService() + try service.save(payload) + + // This is what every mutation in AppState does to an already-populated store. + try service.save(payload) + } + + @Test func savingAfterAddingAnAppKeepsBoth() throws { + let (service, context) = try makeService() + try service.save(payload) + + var grown = payload + grown.apps.append(OpenWithApp(id: "ghostty-id", + appURL: URL(fileURLWithPath: "/Applications/Ghostty.app"))) + try service.save(grown) + + #expect(try context.fetch(FetchDescriptor()).count == 2) + } +} From 9c180f6e58805551db8860836e65933457803141 Mon Sep 17 00:00:00 2001 From: wflixu Date: Sun, 13 Sep 2026 18:13:02 +0800 Subject: [PATCH 15/22] feat(i18n): localize the built-in new-file names and prune the dead keys MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Four gaps, found by auditing both string catalogs against the code: 1. The extension's "Open With" submenu had no Japanese, so Japanese users saw the English title. The extension catalog was 148 keys, of which only 12 are ever rendered, so the gap was invisible. It is now 17. 2. AirDrop was untranslated in Simplified Chinese; it is 隔空投送 in Apple's terminology. Japanese correctly keeps "AirDrop". 3. The "New File" submenu was untranslated in every language. NewFile was the only model without a displayName, unlike RCAction and CommonDir, so the built-in names could never resolve. A translation for PPTX had been sitting unused in the catalog, which shows this was intended. Its `all` literals also omitted `id`, so they took the init default of UUID(). "Restore Defaults" therefore wrote random ids into the database while the seeded rows use "txt"/"pptx", which breaks the id lookup the new displayName depends on. Both now match createDefaultFileTypes(). JSON/TXT/Markdown/Pages/Keynote/Numbers deliberately stay out of the catalog: they are format acronyms and Apple product names that no language translates, and a missing key falls back to the key itself. 4. 20 keys that nothing references were deleted, most of them leftovers from a permission-onboarding UI that has since been rewritten, and 130 more that the extension catalog had inherited as a copy of the main app's. "v%@" is deliberately kept despite looking unreferenced: Xcode extracts it from Text("v\(version)") in SettingsView, where the literal never appears. Co-Authored-By: Claude Code --- FinderSyncExt/Localizable.xcstrings | 4711 +----------------- RClick/Localizable.xcstrings | 676 +-- RClick/Runtime/MenuService.swift | 2 +- RClick/Settings/NewFileSettingsTabView.swift | 4 +- Shared/RCBase.swift | 48 +- 5 files changed, 164 insertions(+), 5277 deletions(-) diff --git a/FinderSyncExt/Localizable.xcstrings b/FinderSyncExt/Localizable.xcstrings index 0a225e6..9dd030e 100644 --- a/FinderSyncExt/Localizable.xcstrings +++ b/FinderSyncExt/Localizable.xcstrings @@ -1,216 +1,6 @@ { "sourceLanguage": "en", "strings": { - "1. Click \"Settings…\" on the right to open System Settings": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "1. Click \"Settings…\" on the right to open System Settings" - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "1. Haz clic en “Ajustes…” a la derecha para abrir Ajustes del Sistema" - } - }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "1. Cliquez sur « Réglages… » à droite pour ouvrir Réglages Système" - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "1. 右側の「設定…」をクリックしてシステム設定を開きます" - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "1. 点击右侧“设置…”按钮打开系统设置" - } - } - } - }, - "2. Click the lock icon and authenticate": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "2. Click the lock icon and authenticate" - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "2. Haz clic en el icono del candado y autentícate" - } - }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "2. Cliquez sur l’icône de cadenas et authentifiez-vous" - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "2. 左下の鍵アイコンをクリックして認証します" - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "2. 点击左下角锁图标并认证" - } - } - } - }, - "3. Click \"+\" -> open \"Applications\" -> select \"RClick\"": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "3. Click \"+\" -> open \"Applications\" -> select \"RClick\"" - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "3. Haz clic en “+” -> abre “Aplicaciones” -> selecciona “RClick”" - } - }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "3. Cliquez sur « + » -> ouvrez « Applications » -> sélectionnez « RClick »" - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "3. 「+」を押して「アプリケーション」から「RClick」を選択します" - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "3. 点击“+”并前往“应用程序”,选择“RClick”" - } - } - } - }, - "4. Make sure the switch next to RClick is turned on": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "4. Make sure the switch next to RClick is turned on" - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "4. Asegúrate de que el interruptor junto a RClick esté activado" - } - }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "4. Vérifiez que l’interrupteur à côté de RClick est activé" - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "4. RClick の横にあるスイッチがオンになっていることを確認します" - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "4. 确保 RClick 旁边的开关已打开" - } - } - } - }, - "About": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "About" - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Acerca de" - } - }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "À propos" - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "情報" - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "关于" - } - } - } - }, - "Accessibility": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Accessibility" - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Accesibilidad" - } - }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Accessibilité" - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "アクセシビリティ" - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "辅助功能" - } - } - } - }, "Actions": { "extractionState": "manual", "localizations": { @@ -246,4756 +36,387 @@ } } }, - "Add": { + "Common Dir": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Add" + "value": "Common Folders" } }, "es": { "stringUnit": { "state": "translated", - "value": "Agregar" + "value": "Carpetas frecuentes" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Ajouter" + "value": "Dossiers courants" } }, "ja": { "stringUnit": { "state": "translated", - "value": "追加" + "value": "よく使うフォルダ" } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "添加" + "value": "常用文件夹" } } } }, - "Add App": { + "Common Dirs": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Add App" + "value": "Common Folders" } }, "es": { "stringUnit": { "state": "translated", - "value": "Agregar aplicación" + "value": "Carpetas frecuentes" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Ajouter une app" + "value": "Dossiers courants" } }, "ja": { "stringUnit": { "state": "translated", - "value": "アプリを追加" + "value": "よく使うフォルダ" } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "添加应用" + "value": "常用文件夹" } } } }, - "Add File Type": { + "Enabled": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Add File Type" + "value": "Enabled" } }, "es": { "stringUnit": { "state": "translated", - "value": "Agregar tipo de archivo" + "value": "Activado" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Ajouter un type de fichier" + "value": "Activé" } }, "ja": { "stringUnit": { "state": "translated", - "value": "ファイル種類を追加" + "value": "有効" } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "添加文件类型" + "value": "启用" } } } }, - "Add Folder": { + "Icon": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Add Folder" + "value": "Icon" } }, "es": { "stringUnit": { "state": "translated", - "value": "Agregar carpeta" + "value": "Icono" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Ajouter un dossier" + "value": "Icône" } }, "ja": { "stringUnit": { "state": "translated", - "value": "フォルダを追加" + "value": "アイコン" } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "添加文件夹" + "value": "图标" } } } }, - "Added Folders": { + "Name": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Added Folders" + "value": "Name" } }, "es": { "stringUnit": { "state": "translated", - "value": "Carpetas agregadas" + "value": "Nombre" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Dossiers ajoutés" + "value": "Nom" } }, "ja": { "stringUnit": { "state": "translated", - "value": "追加済みフォルダ" + "value": "名称" } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "已添加的文件夹" + "value": "名称" } } } }, - "AirDrop": { + "New File": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "AirDrop" + "value": "New File" } }, "es": { "stringUnit": { "state": "translated", - "value": "AirDrop" + "value": "Nuevo archivo" } }, "fr": { "stringUnit": { "state": "translated", - "value": "AirDrop" + "value": "Nouveau fichier" } }, "ja": { "stringUnit": { "state": "translated", - "value": "AirDrop" + "value": "新規ファイル" } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "AirDrop" + "value": "新建文件" } } } }, - "Applications": { + "OK": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Applications" + "value": "OK" } }, "es": { "stringUnit": { "state": "translated", - "value": "Aplicaciones" + "value": "OK" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Applications" + "value": "OK" } }, "ja": { "stringUnit": { "state": "translated", - "value": "アプリケーション" + "value": "OK" } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "应用程序" + "value": "确定" } } } }, - "Apps": { + "Open With": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Apps" + "value": "Open With" } }, "es": { "stringUnit": { "state": "translated", - "value": "Apps" + "value": "Abrir con" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Apps" + "value": "Ouvrir avec" } }, "ja": { "stringUnit": { "state": "translated", - "value": "アプリ" + "value": "アプリで開く" } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "应用" + "value": "用...打开" } } } }, - "Arguments (semicolon separated)": { + "RClick (loading...)": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Arguments (semicolon separated)" + "value": "RClick (loading...)" } }, "es": { "stringUnit": { "state": "translated", - "value": "Argumentos (separados por punto y coma)" + "value": "RClick (cargando...)" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Arguments (séparés par des points-virgules)" + "value": "RClick (chargement…)" } }, "ja": { "stringUnit": { "state": "translated", - "value": "引数(セミコロン区切り)" + "value": "RClick(読み込み中...)" } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "参数(分号分隔)" + "value": "RClick(加载中...)" } } } }, - "Arguments: %@": { + "RClick: Click for menu options": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Arguments: %@" + "value": "RClick: Click for menu options" } }, "es": { "stringUnit": { "state": "translated", - "value": "Argumentos: %@" + "value": "RClick: haz clic para ver las opciones del menú" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Arguments : %@" + "value": "RClick : cliquez pour afficher les options du menu" } }, "ja": { "stringUnit": { "state": "translated", - "value": "引数: %@" + "value": "RClick: クリックしてメニューオプションを表示" } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "参数:%@" + "value": "RClick:点按以显示菜单选项" } } } }, - "Authorized": { + "Template": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Authorized" + "value": "Template" } }, "es": { "stringUnit": { "state": "translated", - "value": "Autorizado" + "value": "Plantilla" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Autorisé" + "value": "Modèle" } }, "ja": { "stringUnit": { "state": "translated", - "value": "許可済み" + "value": "テンプレート" } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "已授权" - } - } - } - }, - "Automatic": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Automatic" - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Automático" - } - }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Automatique" - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "自動" - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "自动" - } - } - } - }, - "Backup": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Backup" - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Respaldo" - } - }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Sauvegarde" - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "バックアップ" - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "备份" - } - } - } - }, - "Cancel": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Cancel" - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Cancelar" - } - }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Annuler" - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "キャンセル" - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "取消" - } - } - } - }, - "Change App": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Change App" - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Cambiar aplicación" - } - }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Changer d’app" - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "アプリを変更" - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "更换应用" - } - } - } - }, - "Change Template": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Change Template" - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Cambiar plantilla" - } - }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Changer de modèle" - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "テンプレートを変更" - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "更换模板" - } - } - } - }, - "Check for Updates": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Check for Updates" - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Buscar actualizaciones" - } - }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Rechercher des mises à jour" - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "アップデートを確認" - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "检查更新" - } - } - } - }, - "Checking for updates...": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Checking for updates..." - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Buscando actualizaciones..." - } - }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Recherche de mises à jour…" - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "アップデートを確認中..." - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "正在检查更新..." - } - } - } - }, - "Choose Default App": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Choose Default App" - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Elegir aplicación predeterminada" - } - }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Choisir l’app par défaut" - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "既定アプリを選択" - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "选择默认打开应用" - } - } - } - }, - "Choose Template File": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Choose Template File" - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Elegir archivo de plantilla" - } - }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Choisir un fichier modèle" - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "テンプレートファイルを選択" - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "选择模板文件" - } - } - } - }, - "Collapse actions menu": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Collapse actions menu" - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Contraer el menú de acciones" - } - }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Réduire le menu Actions" - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "操作メニューを折りたたむ" - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "折叠动作菜单" - } - } - } - }, - "Collapse apps menu": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Collapse apps menu" - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Contraer el menú de aplicaciones" - } - }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Réduire le menu Apps" - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "アプリメニューを折りたたむ" - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "折叠应用菜单" - } - } - } - }, - "Collapse menu": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Collapse menu" - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Contraer el menú" - } - }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Réduire le menu" - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "メニューを折りたたむ" - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "折叠菜单" - } - } - } - }, - "Collapse new file menu": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Collapse new file menu" - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Contraer el menú de nuevo archivo" - } - }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Réduire le menu Nouveau fichier" - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "新規ファイルメニューを折りたたむ" - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "折叠新建文件菜单" - } - } - } - }, - "Common Dir": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Common Folders" - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Carpetas frecuentes" - } - }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Dossiers courants" - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "よく使うフォルダ" - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "常用文件夹" - } - } - } - }, - "Common Dirs": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Common Folders" - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Carpetas frecuentes" - } - }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Dossiers courants" - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "よく使うフォルダ" - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "常用文件夹" - } - } - } - }, - "Copy Path": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Copy Path" - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Copiar ruta" - } - }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Copier le chemin" - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "パスをコピー" - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "复制路径" - } - } - } - }, - "Default Open App": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Default Open App" - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Aplicación predeterminada" - } - }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "App d’ouverture par défaut" - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "既定で開くアプリ" - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "默认打开应用" - } - } - } - }, - "Delete App": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Delete App" - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Eliminar aplicación" - } - }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Supprimer l’app" - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "アプリを削除" - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "删除应用" - } - } - } - }, - "Delete Direct": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Delete Direct" - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Eliminar directamente" - } - }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Supprimer immédiatement" - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "直接削除" - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "直接删除" - } - } - } - }, - "Desktop": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Desktop" - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Escritorio" - } - }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Bureau" - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "デスクトップ" - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "桌面" - } - } - } - }, - "Display Name": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Display Name" - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Nombre visible" - } - }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Nom affiché" - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "表示名" - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "显示名称" - } - } - } - }, - "Documents": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Documents" - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Documentos" - } - }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Documents" - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "書類" - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "文档" - } - } - } - }, - "Don't Ask Again": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Don't Ask Again" - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "No preguntar de nuevo" - } - }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Ne plus demander" - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "今後表示しない" - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "不再询问" - } - } - } - }, - "Download and Install": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Download and Install" - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Descargar e instalar" - } - }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Télécharger et installer" - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "ダウンロードしてインストール" - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "下载并安装" - } - } - } - }, - "Download Manually": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Download Manually" - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Descargar manualmente" - } - }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Télécharger manuellement" - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "手動でダウンロード" - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "手动下载" - } - } - } - }, - "Downloads": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Downloads" - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Descargas" - } - }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Téléchargements" - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "ダウンロード" - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "下载" - } - } - } - }, - "Edit App": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Edit App" - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Editar aplicación" - } - }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Modifier l’app" - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "アプリを編集" - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "编辑应用" - } - } - } - }, - "Edit App Properties": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Edit App Properties" - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Editar propiedades de la aplicación" - } - }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Modifier les propriétés de l’app" - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "アプリ設定を編集" - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "编辑应用属性" - } - } - } - }, - "Edit File Type": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Edit File Type" - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Editar tipo de archivo" - } - }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Modifier le type de fichier" - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "ファイル種類を編集" - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "编辑文件类型" - } - } - } - }, - "Enable common folders": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Enable common folders" - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Activar carpetas frecuentes" - } - }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Activer les dossiers courants" - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "よく使うフォルダを有効化" - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "启用常用文件夹" - } - } - } - }, - "Enable Full Disk Access": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Enable Full Disk Access" - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Activar Acceso total al disco" - } - }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Activer l’accès complet au disque" - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "フルディスクアクセスを有効にする" - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "启用完全磁盘访问权限" - } - } - } - }, - "Enable RClick": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Enable RClick" - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Activar RClick" - } - }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Activer RClick" - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "RClick を有効にする" - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "启用 RClick" - } - } - } - }, - "Enable RClick in File Provider to show its actions in Finder context menus": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Enable RClick in File Provider to show its actions in Finder context menus" - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Activa RClick en Proveedor de archivos para que sus acciones aparezcan en los menús contextuales del Finder" - } - }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Activez RClick dans Fournisseur de fichiers pour afficher ses actions dans les menus contextuels du Finder" - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "ファイルプロバイダで RClick を有効にすると Finder の右クリックメニューに表示されます" - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "在文件提供程序中启用 RClick 以在 Finder 右键菜单中显示功能" - } - } - } - }, - "Enabled": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Enabled" - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Activado" - } - }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Activé" - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "有効" - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "启用" - } - } - } - }, - "English": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "English" - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Inglés" - } - }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Anglais" - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "English" - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "English" - } - } - } - }, - "Enter an SF Symbol name, for example doc.text or curlybraces": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Enter an SF Symbol name, for example doc.text or curlybraces" - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Escribe el nombre de un SF Symbol, por ejemplo doc.text o curlybraces" - } - }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Saisissez un nom de symbole SF, par exemple doc.text ou curlybraces" - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "SF Symbol 名を入力してください。例: doc.text、curlybraces" - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "输入 SF Symbol 名称,例如 doc.text、curlybraces" - } - } - } - }, - "Environment Variables": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Environment Variables" - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Variables de entorno" - } - }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Variables d’environnement" - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "環境変数" - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "环境变量" - } - } - } - }, - "Environment variables: %lld": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Environment variables: %lld" - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Variables de entorno: %lld" - } - }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Variables d’environnement : %lld" - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "環境変数: %lld 個" - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "环境变量:%lld 个" - } - } - } - }, - "Export Logs…": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Export Logs…" - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Exportar registros…" - } - }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Exporter les journaux…" - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "ログを書き出し…" - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "导出日志…" - } - } - } - }, - "Export…": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Export…" - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Exportar…" - } - }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Exporter…" - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "書き出し…" - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "导出…" - } - } - } - }, - "Extension: %@": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Extension: %@" - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Extensión: %@" - } - }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Extension : %@" - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "拡張子: %@" - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "扩展名:%@" - } - } - } - }, - "Extraction failed: %@": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Extraction failed: %@" - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Error al descomprimir: %@" - } - }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Échec de l’extraction : %@" - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "展開に失敗しました: %@" - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "解压失败:%@" - } - } - } - }, - "Failed to Check for Updates": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Failed to Check for Updates" - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "No se pudieron buscar actualizaciones" - } - }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Échec de la recherche de mises à jour" - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "アップデートの確認に失敗しました" - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "检查更新失败" - } - } - } - }, - "File Extension": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "File Extension" - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Extensión de archivo" - } - }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Extension de fichier" - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "ファイル拡張子" - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "文件扩展名" - } - } - } - }, - "File Provider: Select \"RClick\" in the list to enable the Finder context menu": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "File Provider: Select \"RClick\" in the list to enable the Finder context menu" - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Proveedor de archivos: selecciona “RClick” en la lista para activar el menú contextual del Finder" - } - }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Fournisseur de fichiers : sélectionnez « RClick » dans la liste pour activer le menu contextuel du Finder" - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "ファイルプロバイダ一覧で「RClick」を選択すると Finder の右クリックメニューを有効にできます" - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "文件提供程序:在列表中选择“RClick”以启用 Finder 右键菜单" - } - } - } - }, - "Finder Extension": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Finder Extension" - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Extensión del Finder" - } - }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Extension Finder" - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "Finder 拡張" - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "Finder 扩展" - } - } - } - }, - "Folder access permission is required to use this feature.": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Folder access permission is required to use this feature." - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Se necesita permiso de acceso a la carpeta para usar esta función." - } - }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "L’autorisation d’accès au dossier est requise pour utiliser cette fonctionnalité." - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "この機能を使うにはフォルダへのアクセス許可が必要です。" - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "必须授予文件夹访问权限才能使用此功能。" - } - } - } - }, - "Folders cannot be shared via AirDrop: %@": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Folders cannot be shared via AirDrop: %@" - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Las carpetas no se pueden compartir por AirDrop: %@" - } - }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Les dossiers ne peuvent pas être partagés via AirDrop : %@" - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "フォルダは AirDrop で共有できません: %@" - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "不能通过 AirDrop 分享文件夹:%@" - } - } - } - }, - "For example: txt, md, json": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "For example: txt, md, json" - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Por ejemplo: txt, md, json" - } - }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Par exemple : txt, md, json" - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "例: txt、md、json" - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "例如:txt、md、json" - } - } - } - }, - "Format: KEY=VALUE, one per line": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Format: KEY=VALUE, one per line" - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Formato: CLAVE=VALOR, uno por línea" - } - }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Format : CLÉ=VALEUR, une par ligne" - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "形式: KEY=VALUE を1行ずつ入力" - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "格式:KEY=VALUE,每行一个" - } - } - } - }, - "Full Disk Access": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Full Disk Access" - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Acceso total al disco" - } - }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Accès complet au disque" - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "フルディスクアクセス" - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "完全磁盘访问权限" - } - } - } - }, - "Full Disk Access: Required to create and delete files in protected directories": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Full Disk Access: Required to create and delete files in protected directories" - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Acceso total al disco: se necesita para crear y eliminar archivos en directorios protegidos" - } - }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Accès complet au disque : requis pour créer et supprimer des fichiers dans les dossiers protégés" - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "フルディスクアクセスは保護されたディレクトリでのファイル作成と削除に必要です" - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "完全磁盘访问权限:用于在受保护目录中创建和删除文件" - } - } - } - }, - "General": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "General" - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "General" - } - }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Général" - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "一般" - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "通用" - } - } - } - }, - "Grant Permission": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Grant Permission" - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Otorgar permiso" - } - }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Accorder l’autorisation" - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "権限を付与" - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "授予权限" - } - } - } - }, - "Hide": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Hide" - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Ocultar" - } - }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Masquer" - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "隠す" - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "隐藏" - } - } - } - }, - "Home": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Home" - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Carpeta de inicio" - } - }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Départ" - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "ホーム" - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "用户主目录" - } - } - } - }, - "Icon": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Icon" - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Icono" - } - }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Icône" - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "アイコン" - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "图标" - } - } - } - }, - "Ignore This Version": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Ignore This Version" - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Ignorar esta versión" - } - }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Ignorer cette version" - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "このバージョンを無視" - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "忽略此版本" - } - } - } - }, - "Import…": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Import…" - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Importar…" - } - }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Importer…" - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "読み込み…" - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "导入…" - } - } - } - }, - "Installation failed: %@": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Installation failed: %@" - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Error al instalar: %@" - } - }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Échec de l’installation : %@" - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "インストールに失敗しました: %@" - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "安装失败:%@" - } - } - } - }, - "Invalid Folder": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Invalid Folder" - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Carpeta no válida" - } - }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Dossier non valide" - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "無効なフォルダ" - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "无效文件夹" - } - } - } - }, - "Japanese": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Japanese" - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Japonés" - } - }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Japonais" - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "日本語" - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "日本語" - } - } - } - }, - "Language": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Language" - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Idioma" - } - }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Langue" - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "言語" - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "语言" - } - } - } - }, - "Later": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Later" - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Más tarde" - } - }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Plus tard" - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "あとで" - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "稍后" - } - } - } - }, - "Launch at login": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Launch at login" - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Abrir al iniciar sesión" - } - }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Ouvrir à la connexion" - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "ログイン時に起動" - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "登录时启动" - } - } - } - }, - "Logs": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Logs" - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Registros" - } - }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Journaux" - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "ログ" - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "日志" - } - } - } - }, - "Main Controls": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Main Controls" - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Controles principales" - } - }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Commandes principales" - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "メイン設定" - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "主要控制" - } - } - } - }, - "Name": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Name" - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Nombre" - } - }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Nom" - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "名称" - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "名称" - } - } - } - }, - "New File": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "New File" - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Nuevo archivo" - } - }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Nouveau fichier" - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "新規ファイル" - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "新建文件" - } - } - } - }, - "New Version Available": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "New Version Available" - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Nueva versión disponible" - } - }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Nouvelle version disponible" - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "新しいバージョンがあります" - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "发现新版本" - } - } - } - }, - "No .app application was found in the ZIP file.": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "No .app application was found in the ZIP file." - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "No se encontró ninguna aplicación .app en el archivo ZIP." - } - }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Aucune application .app n’a été trouvée dans le fichier ZIP." - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "ZIP ファイル内に .app アプリケーションが見つかりません。" - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "在 ZIP 文件中未找到 .app 应用程序。" - } - } - } - }, - "No .app.zip application package was found.": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "No .app.zip application package was found." - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "No se encontró ningún paquete de aplicación .app.zip." - } - }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Aucun paquet d’application .app.zip n’a été trouvé." - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": ".app.zip 形式のアプリケーションパッケージが見つかりません。" - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "未找到 .app.zip 格式的应用程序包。" - } - } - } - }, - "No update is available.": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "No update is available." - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "No hay actualizaciones disponibles." - } - }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Aucune mise à jour disponible." - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "利用可能なアップデートはありません。" - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "没有可用的更新。" - } - } - } - }, - "Not Authorized": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Not Authorized" - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Sin autorización" - } - }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Non autorisé" - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "未許可" - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "未授权" - } - } - } - }, - "Notice": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Notice" - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Aviso" - } - }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Avis" - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "お知らせ" - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "提示" - } - } - } - }, - "OK": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "OK" - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "OK" - } - }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "OK" - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "OK" - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "确定" - } - } - } - }, - "Open Settings": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Open Settings" - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Abrir Ajustes" - } - }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Ouvrir les réglages" - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "設定を開く" - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "打开设置" - } - } - } - }, - "Open With": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Open With" - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Abrir con" - } - }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Ouvrir avec" - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "用...打开" - } - } - } - }, - "Permissions": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Permissions" - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Permisos" - } - }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Autorisations" - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "権限" - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "权限" - } - } - } - }, - "Please select the correct Applications folder.": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Please select the correct Applications folder." - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Selecciona la carpeta Aplicaciones correcta." - } - }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Veuillez sélectionner le bon dossier Applications." - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "正しいアプリケーションフォルダを選択してください。" - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "请选择正确的“应用程序”文件夹。" - } - } - } - }, - "Preview:": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Preview:" - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Vista previa:" - } - }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Aperçu :" - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "プレビュー:" - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "预览:" - } - } - } - }, - "Protected system folders cannot be deleted: %@": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Protected system folders cannot be deleted: %@" - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "No se pueden eliminar las carpetas protegidas del sistema: %@" - } - }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Les dossiers système protégés ne peuvent pas être supprimés : %@" - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "保護されたシステムフォルダは削除できません: %@" - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "无法删除系统保护文件夹:%@" - } - } - } - }, - "Protected system folders cannot be shared: %@": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Protected system folders cannot be shared: %@" - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "No se pueden compartir las carpetas protegidas del sistema: %@" - } - }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Les dossiers système protégés ne peuvent pas être partagés : %@" - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "保護されたシステムフォルダは共有できません: %@" - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "无法分享系统保护文件夹:%@" - } - } - } - }, - "Quit": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Quit" - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Salir" - } - }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Quitter" - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "終了" - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "退出" - } - } - } - }, - "RClick (loading...)": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "RClick (loading...)" - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "RClick (cargando...)" - } - }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "RClick (chargement…)" - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "RClick(読み込み中...)" - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "RClick(加载中...)" - } - } - } - }, - "RClick is a right-click menu extension that allows you to add applications for opening folders and includes some common actions.": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "RClick is a right-click menu extension that allows you to add applications for opening folders and includes some common actions." - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "RClick es una extensión del menú contextual que te permite agregar aplicaciones para abrir carpetas e incluye algunas acciones frecuentes." - } - }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "RClick est une extension du menu clic droit qui vous permet d’ajouter des applications pour ouvrir des dossiers et inclut quelques actions courantes." - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "RClick はフォルダを開くアプリを追加できる右クリックメニュー拡張で、いくつかの便利な操作も含まれています。" - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "RClick 是一个右键菜单扩展,可以添加打开文件夹的应用,并提供一些常用操作。" - } - } - } - }, - "RClick needs Full Disk Access to create files, delete files, and manage hidden files in protected folders (like Desktop, Documents, and Downloads).\n\nWithout this permission, some operations may fail on protected directories.\n\nTo enable:\n1. Click \"Open Settings\" below\n2. Click the lock icon and authenticate\n3. Click \"+\" and add RClick from your Applications folder\n4. Toggle the switch next to RClick to ON": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "RClick needs Full Disk Access to create files, delete files, and manage hidden files in protected folders (like Desktop, Documents, and Downloads).\n\nWithout this permission, some operations may fail on protected directories.\n\nTo enable:\n1. Click \"Open Settings\" below\n2. Click the lock icon and authenticate\n3. Click \"+\" and add RClick from your Applications folder\n4. Toggle the switch next to RClick to ON" - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "RClick necesita Acceso total al disco para crear archivos, eliminar archivos y administrar archivos ocultos en carpetas protegidas, como Escritorio, Documentos y Descargas.\n\nSin este permiso, algunas operaciones pueden fallar en los directorios protegidos.\n\nPara activarlo:\n1. Haz clic en “Abrir Ajustes” más abajo\n2. Haz clic en el icono del candado y autentícate\n3. Haz clic en “+” y agrega RClick desde tu carpeta Aplicaciones\n4. Activa el interruptor junto a RClick" - } - }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "RClick a besoin de l’accès complet au disque pour créer et supprimer des fichiers, et gérer les fichiers masqués dans les dossiers protégés (comme Bureau, Documents et Téléchargements).\n\nSans cette autorisation, certaines opérations peuvent échouer dans les dossiers protégés.\n\nPour l’activer :\n1. Cliquez sur « Ouvrir les réglages » ci-dessous\n2. Cliquez sur l’icône de cadenas et authentifiez-vous\n3. Cliquez sur « + » et ajoutez RClick depuis votre dossier Applications\n4. Activez l’interrupteur à côté de RClick" - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "RClick がデスクトップ、書類、ダウンロードなどの保護されたフォルダでファイルの作成、削除、隠しファイルの管理を行うには、フルディスクアクセスが必要です。\n\nこの権限がない場合、保護されたディレクトリで一部の操作が失敗することがあります。\n\n有効にするには:\n1. 下の「設定を開く」をクリックします\n2. 鍵アイコンをクリックして認証します\n3. 「+」をクリックし、アプリケーションフォルダから RClick を追加します\n4. RClick の横にあるスイッチをオンにします" - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "RClick 需要完全磁盘访问权限,才能在受保护文件夹中创建文件、删除文件和管理隐藏文件,例如桌面、文稿和下载。\n\n没有此权限时,某些操作可能会在受保护目录中失败。\n\n启用方法:\n1. 点击下方“打开设置”\n2. 点击锁图标并认证\n3. 点击“+”,从“应用程序”文件夹添加 RClick\n4. 打开 RClick 旁边的开关" - } - } - } - }, - "RClick needs Full Disk Access to work with files in protected directories": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "RClick needs Full Disk Access to work with files in protected directories" - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "RClick necesita Acceso total al disco para trabajar con archivos en directorios protegidos" - } - }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "RClick a besoin de l’accès complet au disque pour manipuler les fichiers des dossiers protégés" - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "RClick が保護されたディレクトリ内のファイルを操作するにはフルディスクアクセスが必要です" - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "RClick 需要完全磁盘访问权限才能正常操作受保护目录中的文件" - } - } - } - }, - "RClick needs permission to install the update into your Applications folder.": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "RClick needs permission to install the update into your Applications folder." - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "RClick necesita permiso para instalar la actualización en tu carpeta Aplicaciones." - } - }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "RClick a besoin d’une autorisation pour installer la mise à jour dans votre dossier Applications." - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "RClick がアップデートをアプリケーションフォルダにインストールするには権限が必要です。" - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "RClick 需要权限以将更新安装到您的“应用程序”文件夹中。" - } - } - } - }, - "RClick: Click for menu options": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "RClick: Click for menu options" - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "RClick: haz clic para ver las opciones del menú" - } - }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "RClick : cliquez pour afficher les options du menu" - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "RClick: クリックしてメニューオプションを表示" - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "RClick:点按以显示菜单选项" - } - } - } - }, - "Reset": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Reset" - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Restablecer" - } - }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Réinitialiser" - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "リセット" - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "重置" - } - } - } - }, - "Reset All Settings?": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Reset All Settings?" - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "¿Restablecer todos los ajustes?" - } - }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Réinitialiser tous les réglages ?" - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "すべての設定をリセットしますか?" - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "重置所有设置?" - } - } - } - }, - "Reset All Settings…": { - "extractionState": "stale", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Reset All Settings…" - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Restablecer todos los ajustes…" - } - }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Réinitialiser tous les réglages…" - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "すべての設定をリセット…" - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "重置所有设置…" - } - } - } - }, - "Resetting all settings restores the default configuration and cannot be undone": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Resetting all settings restores the default configuration and cannot be undone" - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Restablecer todos los ajustes restaura la configuración predeterminada y no se puede deshacer" - } - }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "La réinitialisation de tous les réglages restaure la configuration par défaut et est irréversible" - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "すべての設定をリセットすると既定値に戻り、この操作は元に戻せません" - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "重置所有设置将恢复默认配置,此操作不可逆" - } - } - } - }, - "Restart Later": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Restart Later" - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Reiniciar más tarde" - } - }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Redémarrer plus tard" - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "あとで再起動" - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "稍后重启" - } - } - } - }, - "Restart Now": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Restart Now" - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Reiniciar ahora" - } - }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Redémarrer maintenant" - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "今すぐ再起動" - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "立即重启" - } - } - } - }, - "Restore Defaults": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Restore Defaults" - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Restaurar valores predeterminados" - } - }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Rétablir les valeurs par défaut" - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "デフォルトに戻す" - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "恢复默认" - } - } - } - }, - "Run Arguments": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Run Arguments" - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Argumentos de ejecución" - } - }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Arguments d’exécution" - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "実行引数" - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "运行参数" - } - } - } - }, - "Save": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Save" - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Guardar" - } - }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Enregistrer" - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "保存" - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "保存" - } - } - } - }, - "Separate multiple arguments with semicolons (;)": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Separate multiple arguments with semicolons (;)" - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Separa varios argumentos con punto y coma (;)" - } - }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Séparez les arguments par des points-virgules (;)" - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "複数の引数はセミコロン(;)で区切ってください" - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "多个参数用分号(;)分隔" - } - } - } - }, - "Settings": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Settings" - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Ajustes" - } - }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Réglages" - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "設定" - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "设置" - } - } - } - }, - "Settings Management": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Settings Management" - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Administración de ajustes" - } - }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Gestion des réglages" - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "設定管理" - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "设置管理" - } - } - } - }, - "Settings…": { - "extractionState": "stale", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Settings…" - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Ajustes…" - } - }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Réglages…" - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "設定…" - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "设置…" - } - } - } - }, - "SF Symbol Name": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "SF Symbol Name" - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Nombre del SF Symbol" - } - }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Nom du symbole SF" - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "SF Symbol 名" - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "SF Symbol 名称" - } - } - } - }, - "Show icon in menu bar": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Show icon in menu bar" - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Mostrar el icono en la barra de menús" - } - }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Afficher l’icône dans la barre des menus" - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "メニューバーにアイコンを表示" - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "在菜单栏显示图标" - } - } - } - }, - "Simplified Chinese": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Simplified Chinese" - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Chino simplificado" - } - }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Chinois simplifié" - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "简体中文" - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "简体中文" - } - } - } - }, - "Template": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Template" - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Plantilla" - } - }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Modèle" - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "テンプレート" - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "模板" - } - } - } - }, - "The application bundle is invalid or damaged.": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "The application bundle is invalid or damaged." - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "El paquete de la aplicación no es válido o está dañado." - } - }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Le paquet de l’application est non valide ou endommagé." - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "アプリケーションバンドルが無効または破損しています。" - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "应用程序包无效或损坏。" - } - } - } - }, - "The application has been updated successfully. Restart the app to finish the update.": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "The application has been updated successfully. Restart the app to finish the update." - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "La aplicación se actualizó correctamente. Reinicia la app para finalizar la actualización." - } - }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "L’application a été mise à jour avec succès. Redémarrez l’app pour terminer la mise à jour." - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "アプリケーションは正常に更新されました。更新を完了するにはアプリを再起動してください。" - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "应用程序已成功更新。需要重启应用来完成更新过程。" - } - } - } - }, - "The current folder cannot be deleted. Please select files or subfolders instead.": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "The current folder cannot be deleted. Please select files or subfolders instead." - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "No se puede eliminar la carpeta actual. En su lugar, selecciona archivos o subcarpetas." - } - }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Le dossier actuel ne peut pas être supprimé. Sélectionnez plutôt des fichiers ou des sous-dossiers." - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "現在のフォルダは削除できません。代わりにファイルまたはサブフォルダを選択してください。" - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "无法删除当前文件夹,请选择文件或子文件夹进行删除。" - } - } - } - }, - "The current folder cannot be shared. Please select files or subfolders instead.": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "The current folder cannot be shared. Please select files or subfolders instead." - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "No se puede compartir la carpeta actual. En su lugar, selecciona archivos o subcarpetas." - } - }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Le dossier actuel ne peut pas être partagé. Sélectionnez plutôt des fichiers ou des sous-dossiers." - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "現在のフォルダは共有できません。代わりにファイルまたはサブフォルダを選択してください。" - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "无法共享当前文件夹,请选择文件或子文件夹进行共享。" - } - } - } - }, - "The current version is already up to date.": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "The current version is already up to date." - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "La versión actual ya está actualizada." - } - }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "La version actuelle est déjà à jour." - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "現在のバージョンはすでに最新です。" - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "当前版本已是最新,无需更新。" - } - } - } - }, - "The selected folder is a subfolder of an already selected folder. Please choose a different folder.": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "The selected folder is a subfolder of an already selected folder. Please choose a different folder." - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "La carpeta seleccionada es una subcarpeta de otra que ya elegiste. Elige una carpeta diferente." - } - }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Le dossier sélectionné est un sous-dossier d’un dossier déjà sélectionné. Veuillez choisir un autre dossier." - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "選択したフォルダは既に選択済みのフォルダのサブフォルダです。別のフォルダを選択してください。" - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "所选文件夹是已选文件夹的子目录,请选择其他文件夹。" - } - } - } - }, - "The user cancelled authorization.": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "The user cancelled authorization." - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "El usuario canceló la autorización." - } - }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "L’utilisateur a annulé l’autorisation." - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "ユーザーが認証をキャンセルしました。" - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "用户取消了授权。" - } - } - } - }, - "This will delete all custom configurations and restore the defaults. This action cannot be undone.": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "This will delete all custom configurations and restore the defaults. This action cannot be undone." - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Se eliminarán todas las configuraciones personalizadas y se restaurarán los valores predeterminados. Esta acción no se puede deshacer." - } - }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Toutes les configurations personnalisées seront supprimées et les valeurs par défaut rétablies. Cette action est irréversible." - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "この操作によりすべてのカスタム設定が削除され、既定値に戻ります。元に戻すことはできません。" - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "此操作将删除所有自定义配置,恢复到默认状态。此操作不可逆。" - } - } - } - }, - "Unauthorized Folder": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Unauthorized Folder" - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Carpeta sin autorización" - } - }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Dossier non autorisé" - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "未承認のフォルダ" - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "未授权文件夹" - } - } - } - }, - "Unhide": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Unhide" - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Mostrar" - } - }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Afficher" - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "再表示" - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "显示" - } - } - } - }, - "Unknown": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Unknown" - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Desconocido" - } - }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Inconnu" - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "不明" - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "未知" - } - } - } - }, - "Untitled": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Untitled" - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Sin título" - } - }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Sans titre" - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "名称未設定" - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "未命名" - } - } - } - }, - "Up to Date": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Up to Date" - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Todo actualizado" - } - }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "À jour" - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "最新です" - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "已是最新版本" - } - } - } - }, - "Update Installed": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Update Installed" - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Actualización instalada" - } - }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Mise à jour installée" - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "アップデートがインストールされました" - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "更新安装完成" - } - } - } - }, - "Version %@": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Version %@" - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Versión %@" - } - }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Version %@" - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "バージョン %@" - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "版本 %@" - } - } - } - }, - "Version %@ (%@)": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Version %@ (%@)" - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Versión %@ (%@)" - } - }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Version %@ (%@)" - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "バージョン %@ (%@)" - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "版本 %@ (%@)" - } - } - } - }, - "Version %@ is ignored": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Version %@ is ignored" - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Se ignoró la versión %@" - } - }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "La version %@ est ignorée" - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "バージョン %@ は無視されています" - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "已忽略版本 %@" - } - } - } - }, - "Warning": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Warning" - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Advertencia" - } - }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Avertissement" - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "警告" - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "警告" + "value": "模板" } } } diff --git a/RClick/Localizable.xcstrings b/RClick/Localizable.xcstrings index e61233b..e14c2ff 100644 --- a/RClick/Localizable.xcstrings +++ b/RClick/Localizable.xcstrings @@ -1,182 +1,8 @@ { "sourceLanguage" : "en", "strings" : { - "" : { - "extractionState" : "stale", - "localizations" : { - "zh-Hans" : { - "stringUnit" : { - "state" : "translated", - "value" : "" - } - } - } - }, - "%@(%@)" : { - "extractionState" : "stale", - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "new", - "value" : "%1$@(%2$@)" - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "%1$@ (%2$@)" - } - }, - "zh-Hans" : { - "stringUnit" : { - "state" : "translated", - "value" : "%1$@(%2$@)" - } - } - } - }, "%lld" : { - }, - "1. Click \"Settings…\" on the right to open System Settings" : { - "extractionState" : "manual", - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "1. Click \"Settings…\" on the right to open System Settings" - } - }, - "es" : { - "stringUnit" : { - "state" : "translated", - "value" : "1. Haz clic en “Ajustes…” a la derecha para abrir Ajustes del Sistema" - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "1. Cliquez sur « Réglages… » à droite pour ouvrir Réglages Système" - } - }, - "ja" : { - "stringUnit" : { - "state" : "translated", - "value" : "1. 右側の「設定…」をクリックしてシステム設定を開きます" - } - }, - "zh-Hans" : { - "stringUnit" : { - "state" : "translated", - "value" : "1. 点击右侧“设置…”按钮打开系统设置" - } - } - } - }, - "2. Click the lock icon and authenticate" : { - "extractionState" : "manual", - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "2. Click the lock icon and authenticate" - } - }, - "es" : { - "stringUnit" : { - "state" : "translated", - "value" : "2. Haz clic en el icono del candado y autentícate" - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "2. Cliquez sur l’icône de cadenas et authentifiez-vous" - } - }, - "ja" : { - "stringUnit" : { - "state" : "translated", - "value" : "2. 左下の鍵アイコンをクリックして認証します" - } - }, - "zh-Hans" : { - "stringUnit" : { - "state" : "translated", - "value" : "2. 点击左下角锁图标并认证" - } - } - } - }, - "3. Click \"+\" -> open \"Applications\" -> select \"RClick\"" : { - "extractionState" : "manual", - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "3. Click \"+\" -> open \"Applications\" -> select \"RClick\"" - } - }, - "es" : { - "stringUnit" : { - "state" : "translated", - "value" : "3. Haz clic en “+” -> abre “Aplicaciones” -> selecciona “RClick”" - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "3. Cliquez sur « + » -> ouvrez « Applications » -> sélectionnez « RClick »" - } - }, - "ja" : { - "stringUnit" : { - "state" : "translated", - "value" : "3. 「+」を押して「アプリケーション」から「RClick」を選択します" - } - }, - "zh-Hans" : { - "stringUnit" : { - "state" : "translated", - "value" : "3. 点击“+”并前往“应用程序”,选择“RClick”" - } - } - } - }, - "4. Make sure the switch next to RClick is turned on" : { - "extractionState" : "manual", - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "4. Make sure the switch next to RClick is turned on" - } - }, - "es" : { - "stringUnit" : { - "state" : "translated", - "value" : "4. Asegúrate de que el interruptor junto a RClick esté activado" - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "4. Vérifiez que l’interrupteur à côté de RClick est activé" - } - }, - "ja" : { - "stringUnit" : { - "state" : "translated", - "value" : "4. RClick の横にあるスイッチがオンになっていることを確認します" - } - }, - "zh-Hans" : { - "stringUnit" : { - "state" : "translated", - "value" : "4. 确保 RClick 旁边的开关已打开" - } - } - } }, "About" : { "extractionState" : "manual", @@ -523,7 +349,7 @@ "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "AirDrop" + "value" : "隔空投送" } } } @@ -1718,37 +1544,37 @@ } } }, - "Don't Ask Again" : { + "DOCX" : { "extractionState" : "manual", "localizations" : { "en" : { "stringUnit" : { "state" : "translated", - "value" : "Don't Ask Again" + "value" : "DOCX" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "No preguntar de nuevo" + "value" : "Documento de Word" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Ne plus demander" + "value" : "Document Word" } }, "ja" : { "stringUnit" : { "state" : "translated", - "value" : "今後表示しない" + "value" : "Word 文書" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "不再询问" + "value" : "Word 文档" } } } @@ -2068,111 +1894,6 @@ } } }, - "Enable Full Disk Access" : { - "extractionState" : "manual", - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Enable Full Disk Access" - } - }, - "es" : { - "stringUnit" : { - "state" : "translated", - "value" : "Activar Acceso total al disco" - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Activer l’accès complet au disque" - } - }, - "ja" : { - "stringUnit" : { - "state" : "translated", - "value" : "フルディスクアクセスを有効にする" - } - }, - "zh-Hans" : { - "stringUnit" : { - "state" : "translated", - "value" : "启用完全磁盘访问权限" - } - } - } - }, - "Enable RClick" : { - "extractionState" : "manual", - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Enable RClick" - } - }, - "es" : { - "stringUnit" : { - "state" : "translated", - "value" : "Activar RClick" - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Activer RClick" - } - }, - "ja" : { - "stringUnit" : { - "state" : "translated", - "value" : "RClick を有効にする" - } - }, - "zh-Hans" : { - "stringUnit" : { - "state" : "translated", - "value" : "启用 RClick" - } - } - } - }, - "Enable RClick in File Provider to show its actions in Finder context menus" : { - "extractionState" : "manual", - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Enable RClick in File Provider to show its actions in Finder context menus" - } - }, - "es" : { - "stringUnit" : { - "state" : "translated", - "value" : "Activa RClick en Proveedor de archivos para que sus acciones aparezcan en los menús contextuales del Finder" - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Activez RClick dans Fournisseur de fichiers pour afficher ses actions dans les menus contextuels du Finder" - } - }, - "ja" : { - "stringUnit" : { - "state" : "translated", - "value" : "ファイルプロバイダで RClick を有効にすると Finder の右クリックメニューに表示されます" - } - }, - "zh-Hans" : { - "stringUnit" : { - "state" : "translated", - "value" : "在文件提供程序中启用 RClick 以在 Finder 右键菜单中显示功能" - } - } - } - }, "Enabled" : { "extractionState" : "manual", "localizations" : { @@ -2838,41 +2559,6 @@ } } }, - "Full Disk Access: Required to create and delete files in protected directories" : { - "extractionState" : "manual", - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Full Disk Access: Required to create and delete files in protected directories" - } - }, - "es" : { - "stringUnit" : { - "state" : "translated", - "value" : "Acceso total al disco: se necesita para crear y eliminar archivos en directorios protegidos" - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Accès complet au disque : requis pour créer et supprimer des fichiers dans les dossiers protégés" - } - }, - "ja" : { - "stringUnit" : { - "state" : "translated", - "value" : "フルディスクアクセスは保護されたディレクトリでのファイル作成と削除に必要です" - } - }, - "zh-Hans" : { - "stringUnit" : { - "state" : "translated", - "value" : "完全磁盘访问权限:用于在受保护目录中创建和删除文件" - } - } - } - }, "General" : { "extractionState" : "manual", "localizations" : { @@ -2948,83 +2634,48 @@ "ja" : { "stringUnit" : { "state" : "translated", - "value" : "アクセスを許可" - } - }, - "zh-Hans" : { - "stringUnit" : { - "state" : "translated", - "value" : "授权访问" - } - } - } - }, - "Grant Permission" : { - "extractionState" : "manual", - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Grant Permission" - } - }, - "es" : { - "stringUnit" : { - "state" : "translated", - "value" : "Otorgar permiso" - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Accorder l’autorisation" - } - }, - "ja" : { - "stringUnit" : { - "state" : "translated", - "value" : "権限を付与" + "value" : "アクセスを許可" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "授予权限" + "value" : "授权访问" } } } }, - "Grant RClick access to this folder to perform file operations." : { + "Grant Permission" : { "extractionState" : "manual", "localizations" : { "en" : { "stringUnit" : { "state" : "translated", - "value" : "Grant RClick access to this folder to perform file operations." + "value" : "Grant Permission" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Otorga a RClick acceso a esta carpeta para realizar operaciones con archivos." + "value" : "Otorgar permiso" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Autorisez RClick à accéder à ce dossier pour effectuer des opérations sur les fichiers." + "value" : "Accorder l’autorisation" } }, "ja" : { "stringUnit" : { "state" : "translated", - "value" : "ファイル操作を実行するために、RClick にこのフォルダへのアクセスを許可してください。" + "value" : "権限を付与" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "授权 RClick 访问此文件夹以执行文件操作。" + "value" : "授予权限" } } } @@ -4009,99 +3660,6 @@ } } }, - "Open Settings" : { - "extractionState" : "manual", - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Open Settings" - } - }, - "es" : { - "stringUnit" : { - "state" : "translated", - "value" : "Abrir Ajustes" - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Ouvrir les réglages" - } - }, - "ja" : { - "stringUnit" : { - "state" : "translated", - "value" : "設定を開く" - } - }, - "zh-Hans" : { - "stringUnit" : { - "state" : "translated", - "value" : "打开设置" - } - } - } - }, - "Open With" : { - "extractionState" : "stale", - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Open With" - } - }, - "es" : { - "stringUnit" : { - "state" : "translated", - "value" : "Abrir con" - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Ouvrir avec" - } - }, - "zh-Hans" : { - "stringUnit" : { - "state" : "translated", - "value" : "用...打开" - } - } - } - }, - "Open With %@" : { - "extractionState" : "stale", - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Open With %@" - } - }, - "es" : { - "stringUnit" : { - "state" : "translated", - "value" : "Abrir con %@" - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Ouvrir avec %@" - } - }, - "zh-Hans" : { - "stringUnit" : { - "state" : "translated", - "value" : "用 %@ 打开" - } - } - } - }, "Permissions" : { "extractionState" : "manual", "localizations" : { @@ -4193,6 +3751,12 @@ "value" : "PPTX" } }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "PowerPoint プレゼンテーション" + } + }, "zh-Hans" : { "stringUnit" : { "state" : "translated", @@ -4369,70 +3933,6 @@ } } }, - "RClick (loading...)" : { - "extractionState" : "manual", - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "RClick (loading...)" - } - }, - "es" : { - "stringUnit" : { - "state" : "translated", - "value" : "RClick (cargando...)" - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "RClick (chargement…)" - } - }, - "ja" : { - "stringUnit" : { - "state" : "translated", - "value" : "RClick(読み込み中...)" - } - }, - "zh-Hans" : { - "stringUnit" : { - "state" : "translated", - "value" : "RClick(加载中...)" - } - } - } - }, - "RClick is a right-click menu extension that allows you to add applications for opening folders and includes some common actions!" : { - "extractionState" : "stale", - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "RClick is a right-click menu extension that allows you to add applications for opening folders and includes some common actions!" - } - }, - "es" : { - "stringUnit" : { - "state" : "translated", - "value" : "RClick es una extensión del menú contextual que te permite agregar aplicaciones para abrir carpetas e incluye algunas acciones frecuentes." - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "RClick est une extension du menu clic droit qui vous permet d’ajouter des applications pour ouvrir des dossiers et inclut quelques actions courantes !" - } - }, - "zh-Hans" : { - "stringUnit" : { - "state" : "translated", - "value" : "RClick 是一个右键菜单扩展,可以添加打开文件夹的应用,可以添加一些常用的操作!" - } - } - } - }, "RClick is a right-click menu extension that allows you to add applications for opening folders and includes some common actions." : { "extractionState" : "manual", "localizations" : { @@ -4538,76 +4038,6 @@ } } }, - "RClick needs Full Disk Access to create files, delete files, and manage hidden files in protected folders (like Desktop, Documents, and Downloads).\n\nWithout this permission, some operations may fail on protected directories.\n\nTo enable:\n1. Click \"Open Settings\" below\n2. Click the lock icon and authenticate\n3. Click \"+\" and add RClick from your Applications folder\n4. Toggle the switch next to RClick to ON" : { - "extractionState" : "manual", - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "RClick needs Full Disk Access to create files, delete files, and manage hidden files in protected folders (like Desktop, Documents, and Downloads).\n\nWithout this permission, some operations may fail on protected directories.\n\nTo enable:\n1. Click \"Open Settings\" below\n2. Click the lock icon and authenticate\n3. Click \"+\" and add RClick from your Applications folder\n4. Toggle the switch next to RClick to ON" - } - }, - "es" : { - "stringUnit" : { - "state" : "translated", - "value" : "RClick necesita Acceso total al disco para crear archivos, eliminar archivos y administrar archivos ocultos en carpetas protegidas, como Escritorio, Documentos y Descargas.\n\nSin este permiso, algunas operaciones pueden fallar en los directorios protegidos.\n\nPara activarlo:\n1. Haz clic en “Abrir Ajustes” más abajo\n2. Haz clic en el icono del candado y autentícate\n3. Haz clic en “+” y agrega RClick desde tu carpeta Aplicaciones\n4. Activa el interruptor junto a RClick" - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "RClick a besoin de l’accès complet au disque pour créer et supprimer des fichiers, et gérer les fichiers masqués dans les dossiers protégés (comme Bureau, Documents et Téléchargements).\n\nSans cette autorisation, certaines opérations peuvent échouer dans les dossiers protégés.\n\nPour l’activer :\n1. Cliquez sur « Ouvrir les réglages » ci-dessous\n2. Cliquez sur l’icône de cadenas et authentifiez-vous\n3. Cliquez sur « + » et ajoutez RClick depuis votre dossier Applications\n4. Activez l’interrupteur à côté de RClick" - } - }, - "ja" : { - "stringUnit" : { - "state" : "translated", - "value" : "RClick がデスクトップ、書類、ダウンロードなどの保護されたフォルダでファイルの作成、削除、隠しファイルの管理を行うには、フルディスクアクセスが必要です。\n\nこの権限がない場合、保護されたディレクトリで一部の操作が失敗することがあります。\n\n有効にするには:\n1. 下の「設定を開く」をクリックします\n2. 鍵アイコンをクリックして認証します\n3. 「+」をクリックし、アプリケーションフォルダから RClick を追加します\n4. RClick の横にあるスイッチをオンにします" - } - }, - "zh-Hans" : { - "stringUnit" : { - "state" : "translated", - "value" : "RClick 需要完全磁盘访问权限,才能在受保护文件夹中创建文件、删除文件和管理隐藏文件,例如桌面、文稿和下载。\n\n没有此权限时,某些操作可能会在受保护目录中失败。\n\n启用方法:\n1. 点击下方“打开设置”\n2. 点击锁图标并认证\n3. 点击“+”,从“应用程序”文件夹添加 RClick\n4. 打开 RClick 旁边的开关" - } - } - } - }, - "RClick needs Full Disk Access to work with files in protected directories" : { - "extractionState" : "manual", - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "RClick needs Full Disk Access to work with files in protected directories" - } - }, - "es" : { - "stringUnit" : { - "state" : "translated", - "value" : "RClick necesita Acceso total al disco para trabajar con archivos en directorios protegidos" - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "RClick a besoin de l’accès complet au disque pour manipuler les fichiers des dossiers protégés" - } - }, - "ja" : { - "stringUnit" : { - "state" : "translated", - "value" : "RClick が保護されたディレクトリ内のファイルを操作するにはフルディスクアクセスが必要です" - } - }, - "zh-Hans" : { - "stringUnit" : { - "state" : "translated", - "value" : "RClick 需要完全磁盘访问权限才能正常操作受保护目录中的文件" - } - } - } - }, "RClick needs permission to install the update into your Applications folder." : { "extractionState" : "manual", "localizations" : { @@ -6081,35 +5511,6 @@ } } }, - "Want to add a feature? Give feedback here." : { - "extractionState" : "manual", - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Want to add a feature? Give feedback here." - } - }, - "es" : { - "stringUnit" : { - "state" : "translated", - "value" : "¿Quieres proponer una función? Envía tus comentarios aquí." - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Envie d’une nouvelle fonctionnalité ? Donnez votre avis ici." - } - }, - "zh-Hans" : { - "stringUnit" : { - "state" : "translated", - "value" : "需要添加新功能,在这里反馈" - } - } - } - }, "Warning" : { "extractionState" : "manual", "localizations" : { @@ -6879,6 +6280,41 @@ } } } + }, + "XLSX" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "XLSX" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Hoja de cálculo de Excel" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Feuille de calcul Excel" + } + }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "Excel ワークシート" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "Excel 表格" + } + } + } } }, "version" : "1.0" diff --git a/RClick/Runtime/MenuService.swift b/RClick/Runtime/MenuService.swift index ffcb278..9a35e7c 100644 --- a/RClick/Runtime/MenuService.swift +++ b/RClick/Runtime/MenuService.swift @@ -129,7 +129,7 @@ final class MenuService { static func makePayload(from state: AppState, version: Int = 0) -> MenuConfigPayload { let actionMenuItems = state.actions.filter(\.enabled).map { $0.toActionMenuItem() } let appMenuItems = state.apps.map { $0.toAppMenuItem() } - let newFileMenuItems = state.newFiles.filter(\.enabled).map { NewFileMenuItem(id: $0.id, name: $0.name, ext: $0.ext, icon: $0.icon) } + let newFileMenuItems = state.newFiles.filter(\.enabled).map { NewFileMenuItem(id: $0.id, name: $0.displayName, ext: $0.ext, icon: $0.icon) } let commonDirMenuItems = state.showCommonDirs ? state.cdirs.map { CommonDirMenuItem(id: $0.id, name: $0.displayName, icon: $0.icon, url: $0.url.path) } : [] return MenuConfigPayload( diff --git a/RClick/Settings/NewFileSettingsTabView.swift b/RClick/Settings/NewFileSettingsTabView.swift index dd8b87e..de69fb9 100644 --- a/RClick/Settings/NewFileSettingsTabView.swift +++ b/RClick/Settings/NewFileSettingsTabView.swift @@ -94,7 +94,7 @@ struct NewFileSettingsTabView: View { } VStack(alignment: .leading, spacing: 2) { - Text(item.name) + Text(item.displayName) Text(String(format: AppLocalization.localized("Extension: %@"), item.ext)) .font(.caption) .foregroundColor(.secondary) @@ -130,7 +130,7 @@ struct NewFileSettingsTabView: View { fileToDelete = nil } } message: { file in - Text(String(format: AppLocalization.localized("Are you sure you want to delete \"%@\" (%@)? This action cannot be undone."), file.name, file.ext)) + Text(String(format: AppLocalization.localized("Are you sure you want to delete \"%@\" (%@)? This action cannot be undone."), file.displayName, file.ext)) } } diff --git a/Shared/RCBase.swift b/Shared/RCBase.swift index b7868f5..eeb03f8 100644 --- a/Shared/RCBase.swift +++ b/Shared/RCBase.swift @@ -241,16 +241,46 @@ struct NewFile: @MainActor RCBase { extension NewFile { static let all: [NewFile] = [.txt, .md, .json, .docx, .pptx, .xlsx, .pages, .key, .numbers] + // `id` 必须逐字对上 `NewFileTypeEntity.createDefaultFileTypes()`。 + // 这几个字面量原本不传 id,于是全都取了 init 的默认值 `UUID()`——「恢复默认」 + // 写回数据库的就是一排随机 id,和种子数据对不上,`displayName` 查译文也就没了依据。 + // // icon 字段为 SF Symbol 名称,作为 NSWorkspace 获取失败时的 fallback - static let json = NewFile(ext: ".json", name: "JSON", enabled: false, idx: 0, icon: "curlybraces") - static let txt = NewFile(ext: ".txt", name: "TXT", idx: 1, icon: "doc.text") - static let md = NewFile(ext: ".md", name: "Markdown", idx: 2, icon: "doc.richtext") - static let docx = NewFile(ext: ".docx", name: "DOCX", idx: 3, icon: "doc.richtext.fill") - static let pptx = NewFile(ext: ".pptx", name: "PPTX", idx: 4, icon: "rectangle.on.rectangle.fill") - static let xlsx = NewFile(ext: ".xlsx", name: "XLSX", idx: 5, icon: "tablecells") - static let pages = NewFile(ext: ".pages", name: "Pages", idx: 6, icon: "doc.richtext") - static let key = NewFile(ext: ".key", name: "Keynote", idx: 7, icon: "rectangle.on.rectangle") - static let numbers = NewFile(ext: ".numbers", name: "Numbers", idx: 8, icon: "tablecells") + static let json = NewFile(ext: ".json", name: "JSON", enabled: false, idx: 0, icon: "curlybraces", id: "json") + static let txt = NewFile(ext: ".txt", name: "TXT", idx: 1, icon: "doc.text", id: "txt") + static let md = NewFile(ext: ".md", name: "Markdown", idx: 2, icon: "doc.richtext", id: "md") + static let docx = NewFile(ext: ".docx", name: "DOCX", idx: 3, icon: "doc.richtext.fill", id: "docx") + static let pptx = NewFile(ext: ".pptx", name: "PPTX", idx: 4, icon: "rectangle.on.rectangle.fill", id: "pptx") + static let xlsx = NewFile(ext: ".xlsx", name: "XLSX", idx: 5, icon: "tablecells", id: "xlsx") + static let pages = NewFile(ext: ".pages", name: "Pages", idx: 6, icon: "doc.richtext", id: "pages") + static let key = NewFile(ext: ".key", name: "Keynote", idx: 7, icon: "rectangle.on.rectangle", id: "key") + static let numbers = NewFile(ext: ".numbers", name: "Numbers", idx: 8, icon: "tablecells", id: "numbers") +} + +extension NewFile { + /// 本地化显示名称。 + /// + /// 内置类型按 id 取译文;用户自己添加的类型走 `name`,用户填的名字不该被翻译。 + /// 和 `RCAction.displayName`、`CommonDir.displayName` 是同一个模式——NewFile + /// 此前是唯一没有这个属性的模型,所以「新建文件」子菜单在每个语言下都是英文原文。 + /// + /// JSON / TXT / Markdown / Pages / Keynote / Numbers 刻意不进字符串目录:它们是 + /// 格式缩写和 Apple 产品名,各语言都不翻译,`localized` 查不到就回落到 key 本身, + /// 正好是想要的显示文本。只有三个 Office 格式有各语言通用的描述性叫法。 + var displayName: String { + switch id { + case "json": return AppLocalization.localized("JSON") + case "txt": return AppLocalization.localized("TXT") + case "md": return AppLocalization.localized("Markdown") + case "docx": return AppLocalization.localized("DOCX") + case "pptx": return AppLocalization.localized("PPTX") + case "xlsx": return AppLocalization.localized("XLSX") + case "pages": return AppLocalization.localized("Pages") + case "key": return AppLocalization.localized("Keynote") + case "numbers": return AppLocalization.localized("Numbers") + default: return name + } + } } // MARK: - Menu Item Models for Extension Communication From 97c618a555bedcb903c4172be0527c12b33a125b Mon Sep 17 00:00:00 2001 From: wflixu Date: Sun, 13 Sep 2026 18:34:33 +0800 Subject: [PATCH 16/22] chore(i18n): adopt Xcode's canonical key ordering Xcode rewrote the catalog in its own key order while building, which turned every later catalog edit into a 1500-line diff and made review impossible. Isolating the reorder here keeps it out of the feature commits. No key was added, removed or changed: the key set and every key's content are byte-for- byte identical to the previous commit, only their order in the file differs. Co-Authored-By: Claude Code --- RClick/Localizable.xcstrings | 1498 +++++++++++++++++----------------- 1 file changed, 749 insertions(+), 749 deletions(-) diff --git a/RClick/Localizable.xcstrings b/RClick/Localizable.xcstrings index e14c2ff..1378109 100644 --- a/RClick/Localizable.xcstrings +++ b/RClick/Localizable.xcstrings @@ -3,6 +3,41 @@ "strings" : { "%lld" : { + }, + "%lld items" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "%lld items" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "%lld elementos" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "%lld éléments" + } + }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "%lld 項目" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "%lld 个项目" + } + } + } }, "About" : { "extractionState" : "manual", @@ -389,6 +424,41 @@ } } }, + "Apply Custom Menu" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Apply Custom Menu" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Aplicar menú personalizado" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Appliquer le menu personnalisé" + } + }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "カスタムメニューを適用" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "应用配置" + } + } + } + }, "Apps" : { "extractionState" : "manual", "localizations" : { @@ -1159,6 +1229,111 @@ } } }, + "Common Dirs" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Common Folders" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Carpetas frecuentes" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Dossiers courants" + } + }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "よく使うフォルダ" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "常用文件夹" + } + } + } + }, + "Configuration invalid" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Configuration invalid" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Configuración no válida" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Configuration non valide" + } + }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "設定が無効" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "配置无效" + } + } + } + }, + "Configuration Not Applied" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Configuration Not Applied" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Configuración no aplicada" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Configuration non appliquée" + } + }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "設定は適用されませんでした" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "配置未生效" + } + } + } + }, "Copy Path" : { "extractionState" : "manual", "localizations" : { @@ -1439,6 +1614,41 @@ } } }, + "Deletes the file and returns to the default layout, keeping a backup." : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Deletes the file and returns to the default layout, keeping a backup." + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Elimina el archivo y vuelve al diseño predeterminado, conservando una copia." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Supprime le fichier et revient à la disposition par défaut, en conservant une sauvegarde." + } + }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ファイルを削除してデフォルトのレイアウトに戻します。バックアップは保持されます。" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "删除该文件并恢复默认布局,同时保留一份备份。" + } + } + } + }, "Desktop" : { "extractionState" : "manual", "localizations" : { @@ -1859,130 +2069,235 @@ } } }, - "Enable common folders" : { + "Edit Menu Config…" : { "extractionState" : "manual", "localizations" : { "en" : { "stringUnit" : { "state" : "translated", - "value" : "Enable common folders" + "value" : "Edit Menu Config…" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Activar carpetas frecuentes" + "value" : "Editar configuración del menú…" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Activer les dossiers courants" + "value" : "Modifier la configuration du menu…" } }, "ja" : { "stringUnit" : { "state" : "translated", - "value" : "よく使うフォルダを有効化" + "value" : "メニュー設定を編集…" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "启用常用文件夹" + "value" : "编辑菜单配置…" } } } }, - "Enabled" : { + "Editing the file changes nothing until you apply it." : { "extractionState" : "manual", "localizations" : { "en" : { "stringUnit" : { "state" : "translated", - "value" : "Enabled" + "value" : "Editing the file changes nothing until you apply it." } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Activado" + "value" : "Editar el archivo no cambia nada hasta que lo apliques." } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Activé" + "value" : "Modifier le fichier ne change rien tant que vous ne l'appliquez pas." } }, "ja" : { "stringUnit" : { "state" : "translated", - "value" : "有効" + "value" : "ファイルを編集しても、適用するまで何も変わりません。" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "启用" + "value" : "改完文件后,点「应用配置」才会生效。" } } } }, - "Enter an SF Symbol name, for example doc.text or curlybraces" : { + "Empty menu" : { "extractionState" : "manual", "localizations" : { "en" : { "stringUnit" : { "state" : "translated", - "value" : "Enter an SF Symbol name, for example doc.text or curlybraces" + "value" : "Empty menu" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Escribe el nombre de un SF Symbol, por ejemplo doc.text o curlybraces" + "value" : "Menú vacío" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Saisissez un nom de symbole SF, par exemple doc.text ou curlybraces" + "value" : "Menu vide" } }, "ja" : { "stringUnit" : { "state" : "translated", - "value" : "SF Symbol 名を入力してください。例: doc.text、curlybraces" + "value" : "空のメニュー" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "输入 SF Symbol 名称,例如 doc.text、curlybraces" + "value" : "空菜单" } } } }, - "Environment Variables" : { - "extractionState" : "stale", + "Enable common folders" : { + "extractionState" : "manual", "localizations" : { "en" : { "stringUnit" : { "state" : "translated", - "value" : "Environment Variables" + "value" : "Enable common folders" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Variables de entorno" + "value" : "Activar carpetas frecuentes" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Variables d’environnement" + "value" : "Activer les dossiers courants" + } + }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "よく使うフォルダを有効化" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "启用常用文件夹" + } + } + } + }, + "Enabled" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Enabled" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Activado" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Activé" + } + }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "有効" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "启用" + } + } + } + }, + "Enter an SF Symbol name, for example doc.text or curlybraces" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Enter an SF Symbol name, for example doc.text or curlybraces" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Escribe el nombre de un SF Symbol, por ejemplo doc.text o curlybraces" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Saisissez un nom de symbole SF, par exemple doc.text ou curlybraces" + } + }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "SF Symbol 名を入力してください。例: doc.text、curlybraces" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "输入 SF Symbol 名称,例如 doc.text、curlybraces" + } + } + } + }, + "Environment Variables" : { + "extractionState" : "stale", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Environment Variables" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Variables de entorno" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Variables d’environnement" } }, "ja" : { @@ -2925,6 +3240,41 @@ } } }, + "Invalid value" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Invalid value" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Valor no válido" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Valeur non valide" + } + }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "値が無効" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "值无效" + } + } + } + }, "Later" : { "extractionState" : "manual", "localizations" : { @@ -3205,6 +3555,41 @@ } } }, + "Missing required field" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Missing required field" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Falta el campo obligatorio" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Champ obligatoire manquant" + } + }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "必須フィールドがありません" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "缺少必填字段" + } + } + } + }, "More" : { "extractionState" : "manual", "localizations" : { @@ -3520,6 +3905,41 @@ } } }, + "Not enabled" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Not enabled" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "No activado" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Non activé" + } + }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "未有効" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "未启用" + } + } + } + }, "Notice" : { "extractionState" : "manual", "localizations" : { @@ -4353,136 +4773,241 @@ } } }, - "Restore Defaults" : { + "Restore" : { "extractionState" : "manual", "localizations" : { "en" : { "stringUnit" : { "state" : "translated", - "value" : "Restore Defaults" + "value" : "Restore" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Restaurar valores predeterminados" + "value" : "Restaurar" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Rétablir les valeurs par défaut" + "value" : "Restaurer" } }, "ja" : { "stringUnit" : { "state" : "translated", - "value" : "デフォルトに戻す" + "value" : "戻す" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "恢复默认" + "value" : "恢复" } } } }, - "Run Arguments" : { + "Restore Default Layout" : { "extractionState" : "manual", "localizations" : { "en" : { "stringUnit" : { "state" : "translated", - "value" : "Run Arguments" + "value" : "Restore Default Layout" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Argumentos de ejecución" + "value" : "Restaurar diseño predeterminado" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Arguments d’exécution" + "value" : "Restaurer la disposition par défaut" } }, "ja" : { "stringUnit" : { "state" : "translated", - "value" : "実行引数" + "value" : "デフォルトのレイアウトに戻す" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "运行参数" + "value" : "恢复默认…" } } } }, - "Save" : { + "Restore Defaults" : { "extractionState" : "manual", "localizations" : { "en" : { "stringUnit" : { "state" : "translated", - "value" : "Save" + "value" : "Restore Defaults" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Guardar" + "value" : "Restaurar valores predeterminados" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Enregistrer" + "value" : "Rétablir les valeurs par défaut" } }, "ja" : { "stringUnit" : { "state" : "translated", - "value" : "保存" + "value" : "デフォルトに戻す" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "保存" + "value" : "恢复默认" } } } }, - "Separate multiple arguments with semicolons (;)" : { + "Restore the default layout?" : { "extractionState" : "manual", "localizations" : { "en" : { "stringUnit" : { "state" : "translated", - "value" : "Separate multiple arguments with semicolons (;)" + "value" : "Restore the default layout?" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Separa varios argumentos con punto y coma (;)" + "value" : "¿Restaurar el diseño predeterminado?" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Séparez les arguments par des points-virgules (;)" + "value" : "Restaurer la disposition par défaut ?" } }, "ja" : { "stringUnit" : { "state" : "translated", - "value" : "複数の引数はセミコロン(;)で区切ってください" + "value" : "デフォルトのレイアウトに戻しますか?" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "恢复默认布局?" + } + } + } + }, + "Run Arguments" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Run Arguments" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Argumentos de ejecución" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Arguments d’exécution" + } + }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "実行引数" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "运行参数" + } + } + } + }, + "Save" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Save" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Guardar" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Enregistrer" + } + }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "保存" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "保存" + } + } + } + }, + "Separate multiple arguments with semicolons (;)" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Separate multiple arguments with semicolons (;)" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Separa varios argumentos con punto y coma (;)" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Séparez les arguments par des points-virgules (;)" + } + }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "複数の引数はセミコロン(;)で区切ってください" } }, "zh-Hans" : { @@ -4913,6 +5438,41 @@ } } }, + "The JSON file is malformed." : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "The JSON file is malformed." + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "El archivo JSON está mal formado." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Le fichier JSON est mal formé." + } + }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "JSON ファイルの形式が正しくありません。" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "JSON 文件格式有误。" + } + } + } + }, "The menu is unchanged." : { "extractionState" : "manual", "localizations" : { @@ -5053,6 +5613,41 @@ } } }, + "This deletes custom_menu.json and returns to the default menu. A copy is kept as custom_menu.backup.json." : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "This deletes custom_menu.json and returns to the default menu. A copy is kept as custom_menu.backup.json." + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Esto elimina custom_menu.json y vuelve al menú predeterminado. Se guarda una copia como custom_menu.backup.json." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Cela supprime custom_menu.json et revient au menu par défaut. Une copie est conservée sous custom_menu.backup.json." + } + }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "custom_menu.json を削除してデフォルトのメニューに戻します。コピーは custom_menu.backup.json として保存されます。" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "这将删除 custom_menu.json 并恢复默认菜单。副本会保留为 custom_menu.backup.json。" + } + } + } + }, "This will delete all custom configurations and restore the defaults. This action cannot be undone." : { "extractionState" : "manual", "localizations" : { @@ -5123,6 +5718,41 @@ } } }, + "Unable to Restore Default Layout" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Unable to Restore Default Layout" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "No se puede restaurar el diseño predeterminado" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Impossible de restaurer la disposition par défaut" + } + }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "デフォルトのレイアウトに戻せません" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "无法恢复默认布局" + } + } + } + }, "Unauthorized Folder" : { "extractionState" : "manual", "localizations" : { @@ -5158,6 +5788,41 @@ } } }, + "Unavailable" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Unavailable" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "No disponible" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Indisponible" + } + }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "利用できません" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "不可用" + } + } + } + }, "Unhide" : { "extractionState" : "manual", "localizations" : { @@ -5403,880 +6068,215 @@ } } }, - "v%@" : { - - }, - "Version %@" : { + "Using the default layout" : { "extractionState" : "manual", "localizations" : { "en" : { "stringUnit" : { "state" : "translated", - "value" : "Version %@" + "value" : "Using the default layout" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Versión %@" + "value" : "Usando el diseño predeterminado" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Version %@" + "value" : "Disposition par défaut utilisée" } }, "ja" : { "stringUnit" : { "state" : "translated", - "value" : "バージョン %@" - } - }, - "zh-Hans" : { - "stringUnit" : { - "state" : "translated", - "value" : "版本 %@" - } - } - } - }, - "Version %@ (%@)" : { - "extractionState" : "manual", - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Version %@ (%@)" - } - }, - "es" : { - "stringUnit" : { - "state" : "translated", - "value" : "Versión %@ (%@)" - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Version %@ (%@)" - } - }, - "ja" : { - "stringUnit" : { - "state" : "translated", - "value" : "バージョン %@ (%@)" - } - }, - "zh-Hans" : { - "stringUnit" : { - "state" : "translated", - "value" : "版本 %@ (%@)" - } - } - } - }, - "Version %@ is ignored" : { - "extractionState" : "manual", - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Version %@ is ignored" - } - }, - "es" : { - "stringUnit" : { - "state" : "translated", - "value" : "Se ignoró la versión %@" - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "La version %@ est ignorée" - } - }, - "ja" : { - "stringUnit" : { - "state" : "translated", - "value" : "バージョン %@ は無視されています" - } - }, - "zh-Hans" : { - "stringUnit" : { - "state" : "translated", - "value" : "已忽略版本 %@" - } - } - } - }, - "Warning" : { - "extractionState" : "manual", - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Warning" - } - }, - "es" : { - "stringUnit" : { - "state" : "translated", - "value" : "Advertencia" - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Avertissement" - } - }, - "ja" : { - "stringUnit" : { - "state" : "translated", - "value" : "警告" - } - }, - "zh-Hans" : { - "stringUnit" : { - "state" : "translated", - "value" : "警告" - } - } - } - }, - "Window" : { - "extractionState" : "manual", - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Window" - } - }, - "es" : { - "stringUnit" : { - "state" : "translated", - "value" : "Ventana" - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Fenêtre" - } - }, - "ja" : { - "stringUnit" : { - "state" : "translated", - "value" : "ウィンドウ" - } - }, - "zh-Hans" : { - "stringUnit" : { - "state" : "translated", - "value" : "窗口" - } - } - } - }, - "Apply Custom Menu" : { - "extractionState" : "manual", - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Apply Custom Menu" - } - }, - "es" : { - "stringUnit" : { - "state" : "translated", - "value" : "Aplicar menú personalizado" - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Appliquer le menu personnalisé" - } - }, - "ja" : { - "stringUnit" : { - "state" : "translated", - "value" : "カスタムメニューを適用" - } - }, - "zh-Hans" : { - "stringUnit" : { - "state" : "translated", - "value" : "应用配置" - } - } - } - }, - "Restore Default Layout" : { - "extractionState" : "manual", - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Restore Default Layout" - } - }, - "es" : { - "stringUnit" : { - "state" : "translated", - "value" : "Restaurar diseño predeterminado" - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Restaurer la disposition par défaut" - } - }, - "ja" : { - "stringUnit" : { - "state" : "translated", - "value" : "デフォルトのレイアウトに戻す" - } - }, - "zh-Hans" : { - "stringUnit" : { - "state" : "translated", - "value" : "恢复默认…" - } - } - } - }, - "Deletes the file and returns to the default layout, keeping a backup." : { - "extractionState" : "manual", - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Deletes the file and returns to the default layout, keeping a backup." - } - }, - "es" : { - "stringUnit" : { - "state" : "translated", - "value" : "Elimina el archivo y vuelve al diseño predeterminado, conservando una copia." - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Supprime le fichier et revient à la disposition par défaut, en conservant une sauvegarde." - } - }, - "ja" : { - "stringUnit" : { - "state" : "translated", - "value" : "ファイルを削除してデフォルトのレイアウトに戻します。バックアップは保持されます。" - } - }, - "zh-Hans" : { - "stringUnit" : { - "state" : "translated", - "value" : "删除该文件并恢复默认布局,同时保留一份备份。" - } - } - } - }, - "Unavailable" : { - "extractionState" : "manual", - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Unavailable" - } - }, - "es" : { - "stringUnit" : { - "state" : "translated", - "value" : "No disponible" - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Indisponible" - } - }, - "ja" : { - "stringUnit" : { - "state" : "translated", - "value" : "利用できません" - } - }, - "zh-Hans" : { - "stringUnit" : { - "state" : "translated", - "value" : "不可用" - } - } - } - }, - "Not enabled" : { - "extractionState" : "manual", - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Not enabled" - } - }, - "es" : { - "stringUnit" : { - "state" : "translated", - "value" : "No activado" - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Non activé" - } - }, - "ja" : { - "stringUnit" : { - "state" : "translated", - "value" : "未有効" - } - }, - "zh-Hans" : { - "stringUnit" : { - "state" : "translated", - "value" : "未启用" - } - } - } - }, - "Configuration invalid" : { - "extractionState" : "manual", - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Configuration invalid" - } - }, - "es" : { - "stringUnit" : { - "state" : "translated", - "value" : "Configuración no válida" - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Configuration non valide" - } - }, - "ja" : { - "stringUnit" : { - "state" : "translated", - "value" : "設定が無効" - } - }, - "zh-Hans" : { - "stringUnit" : { - "state" : "translated", - "value" : "配置无效" - } - } - } - }, - "Using the default layout" : { - "extractionState" : "manual", - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Using the default layout" - } - }, - "es" : { - "stringUnit" : { - "state" : "translated", - "value" : "Usando el diseño predeterminado" - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Disposition par défaut utilisée" - } - }, - "ja" : { - "stringUnit" : { - "state" : "translated", - "value" : "デフォルトレイアウトを使用中" - } - }, - "zh-Hans" : { - "stringUnit" : { - "state" : "translated", - "value" : "正在使用默认布局" - } - } - } - }, - "Edit Menu Config…" : { - "extractionState" : "manual", - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Edit Menu Config…" - } - }, - "es" : { - "stringUnit" : { - "state" : "translated", - "value" : "Editar configuración del menú…" - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Modifier la configuration du menu…" - } - }, - "ja" : { - "stringUnit" : { - "state" : "translated", - "value" : "メニュー設定を編集…" - } - }, - "zh-Hans" : { - "stringUnit" : { - "state" : "translated", - "value" : "编辑菜单配置…" - } - } - } - }, - "Editing the file changes nothing until you apply it." : { - "extractionState" : "manual", - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Editing the file changes nothing until you apply it." - } - }, - "es" : { - "stringUnit" : { - "state" : "translated", - "value" : "Editar el archivo no cambia nada hasta que lo apliques." - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Modifier le fichier ne change rien tant que vous ne l'appliquez pas." - } - }, - "ja" : { - "stringUnit" : { - "state" : "translated", - "value" : "ファイルを編集しても、適用するまで何も変わりません。" - } - }, - "zh-Hans" : { - "stringUnit" : { - "state" : "translated", - "value" : "改完文件后,点「应用配置」才会生效。" - } - } - } - }, - "Empty menu" : { - "extractionState" : "manual", - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Empty menu" - } - }, - "es" : { - "stringUnit" : { - "state" : "translated", - "value" : "Menú vacío" - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Menu vide" - } - }, - "ja" : { - "stringUnit" : { - "state" : "translated", - "value" : "空のメニュー" - } - }, - "zh-Hans" : { - "stringUnit" : { - "state" : "translated", - "value" : "空菜单" - } - } - } - }, - "%lld items" : { - "extractionState" : "manual", - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "%lld items" - } - }, - "es" : { - "stringUnit" : { - "state" : "translated", - "value" : "%lld elementos" - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "%lld éléments" - } - }, - "ja" : { - "stringUnit" : { - "state" : "translated", - "value" : "%lld 項目" - } - }, - "zh-Hans" : { - "stringUnit" : { - "state" : "translated", - "value" : "%lld 个项目" - } - } - } - }, - "Configuration Not Applied" : { - "extractionState" : "manual", - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Configuration Not Applied" - } - }, - "es" : { - "stringUnit" : { - "state" : "translated", - "value" : "Configuración no aplicada" - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Configuration non appliquée" - } - }, - "ja" : { - "stringUnit" : { - "state" : "translated", - "value" : "設定は適用されませんでした" - } - }, - "zh-Hans" : { - "stringUnit" : { - "state" : "translated", - "value" : "配置未生效" - } - } - } - }, - "Unable to Restore Default Layout" : { - "extractionState" : "manual", - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Unable to Restore Default Layout" - } - }, - "es" : { - "stringUnit" : { - "state" : "translated", - "value" : "No se puede restaurar el diseño predeterminado" - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Impossible de restaurer la disposition par défaut" - } - }, - "ja" : { - "stringUnit" : { - "state" : "translated", - "value" : "デフォルトのレイアウトに戻せません" - } - }, - "zh-Hans" : { - "stringUnit" : { - "state" : "translated", - "value" : "无法恢复默认布局" - } - } - } - }, - "Restore the default layout?" : { - "extractionState" : "manual", - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Restore the default layout?" - } - }, - "es" : { - "stringUnit" : { - "state" : "translated", - "value" : "¿Restaurar el diseño predeterminado?" - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Restaurer la disposition par défaut ?" - } - }, - "ja" : { - "stringUnit" : { - "state" : "translated", - "value" : "デフォルトのレイアウトに戻しますか?" + "value" : "デフォルトレイアウトを使用中" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "恢复默认布局?" + "value" : "正在使用默认布局" } } } }, - "This deletes custom_menu.json and returns to the default menu. A copy is kept as custom_menu.backup.json." : { - "extractionState" : "manual", - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "This deletes custom_menu.json and returns to the default menu. A copy is kept as custom_menu.backup.json." - } - }, - "es" : { - "stringUnit" : { - "state" : "translated", - "value" : "Esto elimina custom_menu.json y vuelve al menú predeterminado. Se guarda una copia como custom_menu.backup.json." - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Cela supprime custom_menu.json et revient au menu par défaut. Une copie est conservée sous custom_menu.backup.json." - } - }, - "ja" : { - "stringUnit" : { - "state" : "translated", - "value" : "custom_menu.json を削除してデフォルトのメニューに戻します。コピーは custom_menu.backup.json として保存されます。" - } - }, - "zh-Hans" : { - "stringUnit" : { - "state" : "translated", - "value" : "这将删除 custom_menu.json 并恢复默认菜单。副本会保留为 custom_menu.backup.json。" - } - } - } + "v%@" : { + }, - "Restore" : { + "Version %@" : { "extractionState" : "manual", "localizations" : { "en" : { "stringUnit" : { "state" : "translated", - "value" : "Restore" + "value" : "Version %@" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Restaurar" + "value" : "Versión %@" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Restaurer" + "value" : "Version %@" } }, "ja" : { "stringUnit" : { "state" : "translated", - "value" : "戻す" + "value" : "バージョン %@" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "恢复" + "value" : "版本 %@" } } } }, - "Missing required field" : { + "Version %@ (%@)" : { "extractionState" : "manual", "localizations" : { "en" : { "stringUnit" : { "state" : "translated", - "value" : "Missing required field" + "value" : "Version %@ (%@)" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Falta el campo obligatorio" + "value" : "Versión %@ (%@)" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Champ obligatoire manquant" + "value" : "Version %@ (%@)" } }, "ja" : { "stringUnit" : { "state" : "translated", - "value" : "必須フィールドがありません" + "value" : "バージョン %@ (%@)" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "缺少必填字段" + "value" : "版本 %@ (%@)" } } } }, - "Invalid value" : { + "Version %@ is ignored" : { "extractionState" : "manual", "localizations" : { "en" : { "stringUnit" : { "state" : "translated", - "value" : "Invalid value" + "value" : "Version %@ is ignored" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Valor no válido" + "value" : "Se ignoró la versión %@" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Valeur non valide" + "value" : "La version %@ est ignorée" } }, "ja" : { "stringUnit" : { "state" : "translated", - "value" : "値が無効" + "value" : "バージョン %@ は無視されています" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "值无效" + "value" : "已忽略版本 %@" } } } }, - "The JSON file is malformed." : { + "Warning" : { "extractionState" : "manual", "localizations" : { "en" : { "stringUnit" : { "state" : "translated", - "value" : "The JSON file is malformed." + "value" : "Warning" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "El archivo JSON está mal formado." + "value" : "Advertencia" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Le fichier JSON est mal formé." + "value" : "Avertissement" } }, "ja" : { "stringUnit" : { "state" : "translated", - "value" : "JSON ファイルの形式が正しくありません。" + "value" : "警告" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "JSON 文件格式有误。" + "value" : "警告" } } } }, - "Common Dirs" : { + "Window" : { "extractionState" : "manual", "localizations" : { "en" : { "stringUnit" : { "state" : "translated", - "value" : "Common Folders" + "value" : "Window" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Carpetas frecuentes" + "value" : "Ventana" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Dossiers courants" + "value" : "Fenêtre" } }, "ja" : { "stringUnit" : { "state" : "translated", - "value" : "よく使うフォルダ" + "value" : "ウィンドウ" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "常用文件夹" + "value" : "窗口" } } } From 9bc5c988fef8224320727958cd18b9f0d5f321d0 Mon Sep 17 00:00:00 2001 From: wflixu Date: Sun, 13 Sep 2026 18:34:45 +0800 Subject: [PATCH 17/22] feat(settings): redesign the About tab and stop it lying about updates MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The tab was four unrelated Sections: a centred logo block, a paragraph, a bare button, and a URL. The paragraph and the button each sat alone in their own box, which is why they read as disconnected and jarring. The button was worse than ugly. checkForUpdates wrote "already up to date" into updateError, and the sheet tests updateError before its else branch, so a user who was simply current saw a yellow warning headed "Failed to Check for Updates" — every time, since this button is the app's only check trigger. The friendly green "Up to Date" card was unreachable dead code. Underneath, GitHubReleaseChecker returned an optional that conflated four outcomes, and its catch swallowed network errors into a print. That made an offline check indistinguishable from being current. Returning an explicit result instead means the sheet's existing else branch is now reached with no change to the sheet at all, and a network failure finally reports itself. With the state honest, the button becomes the action half of a status row in the shape General already uses: label and state on the left, action on the right, so it always has the context it was missing. States: not checked yet, checking, up to date, update available (with a details button), failed. The identity block now holds the logo, name, version and description in one centred VStack, and the lone URL is replaced by two rows that give people something to do: the repository with its live star count and an "Add a Star" action, and a link to the issue tracker. The count is fetched from the GitHub API and cached for a day in the app group; if it cannot be fetched the row just loses a number rather than showing an error. Also drops the now-unreferenced github.com/wflixu/RClick key, plus four unused imports, an unused messager and a stale file header, and fixes the preview, which crashed for want of an environmentObject. Co-Authored-By: Claude Code --- RClick/Localizable.xcstrings | 226 +++++++++++++++++++-- RClick/Settings/AboutSettingsTabView.swift | 198 ++++++++++++++---- RClick/Shared/Updater.swift | 170 ++++++++++++---- 3 files changed, 506 insertions(+), 88 deletions(-) diff --git a/RClick/Localizable.xcstrings b/RClick/Localizable.xcstrings index 1378109..ba0c3a9 100644 --- a/RClick/Localizable.xcstrings +++ b/RClick/Localizable.xcstrings @@ -214,6 +214,41 @@ } } }, + "Add a Star" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Add a Star" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Añadir una estrella" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ajouter une étoile" + } + }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "スターを付ける" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "加星" + } + } + } + }, "Add App" : { "extractionState" : "manual", "localizations" : { @@ -2524,6 +2559,41 @@ } } }, + "Feedback & Issues" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Feedback & Issues" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Comentarios y problemas" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Retours et problèmes" + } + }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "フィードバックと問題" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "反馈与建议" + } + } + } + }, "File Extension" : { "extractionState" : "manual", "localizations" : { @@ -2909,22 +2979,6 @@ } } }, - "github.com/wflixu/RClick" : { - "localizations" : { - "es" : { - "stringUnit" : { - "state" : "translated", - "value" : "github.com/wflixu/RClick" - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "github.com/wflixu/RClick" - } - } - } - }, "Grant Access" : { "extractionState" : "manual", "localizations" : { @@ -3905,6 +3959,41 @@ } } }, + "Not checked yet" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Not checked yet" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Sin comprobar" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Pas encore vérifié" + } + }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "未確認" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "尚未检查" + } + } + } + }, "Not enabled" : { "extractionState" : "manual", "localizations" : { @@ -4080,6 +4169,41 @@ } } }, + "Open Issues" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Open Issues" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Abrir issues" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ouvrir les issues" + } + }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "Issue を開く" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "打开 Issues" + } + } + } + }, "Permissions" : { "extractionState" : "manual", "localizations" : { @@ -4493,6 +4617,41 @@ } } }, + "RClick on GitHub" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "RClick on GitHub" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "RClick en GitHub" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "RClick sur GitHub" + } + }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "GitHub の RClick" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "RClick 项目主页" + } + } + } + }, "Reads the file again and puts it into effect. If it has errors the menu is left as it was." : { "extractionState" : "manual", "localizations" : { @@ -6211,6 +6370,41 @@ } } }, + "View Details…" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "View Details…" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ver detalles…" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Voir les détails…" + } + }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "詳細を表示…" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "查看详情…" + } + } + } + }, "Warning" : { "extractionState" : "manual", "localizations" : { diff --git a/RClick/Settings/AboutSettingsTabView.swift b/RClick/Settings/AboutSettingsTabView.swift index b7f315d..59453c7 100644 --- a/RClick/Settings/AboutSettingsTabView.swift +++ b/RClick/Settings/AboutSettingsTabView.swift @@ -1,64 +1,193 @@ // -// AdvancedSettingsView.swift +// AboutSettingsTabView.swift // RClick // // Created by 李旭 on 2024/4/4. // -import AppKit -import ExtensionFoundation -import ExtensionKit -import FinderSync +import Foundation import SwiftUI struct AboutSettingsTabView: View { - let messager = Messager.shared @EnvironmentObject var updateManager: UpdateManager var body: some View { Form { - Section { - VStack(spacing: 12) { - Image("Logo") - .resizable() - .frame(width: 96, height: 96) - - VStack(spacing: 4) { - Text("RClick").font(.title) - Text(String(format: AppLocalization.localized("Version %@ (%@)"), getAppVersion(), getBuildVersion())) - .foregroundColor(.secondary) - } + identitySection + updateSection + communitySection + } + .formStyle(.grouped) + // 带缓存,缓存新鲜时这里只是读一下 UserDefaults,不会真的发请求 + .task { await updateManager.loadStarCount() } + } + + // MARK: - 应用标识 + + /// 图标、名字、版本、简介同处一个居中的块。 + /// + /// 简介原先单独占一个 Section,分组样式会在两者之间画一个框、留一段空隙, + /// 加上一个居中一个左对齐,看起来就是两截互不相干的内容。 + private var identitySection: some View { + Section { + VStack(spacing: 12) { + Image("Logo") + .resizable() + .aspectRatio(contentMode: .fit) + .frame(width: 96, height: 96) + + VStack(spacing: 4) { + Text("RClick") + .font(.title2) + .fontWeight(.semibold) + Text(String(format: AppLocalization.localized("Version %@ (%@)"), getAppVersion(), getBuildVersion())) + .font(.caption) + .foregroundStyle(.secondary) } - .frame(maxWidth: .infinity) - .padding(.vertical, 20) - } - Section { Text(appLocalized: "RClick is a right-click menu extension that allows you to add applications for opening folders and includes some common actions.") - .font(.body) + .font(.callout) + .foregroundStyle(.secondary) + .multilineTextAlignment(.center) + .fixedSize(horizontal: false, vertical: true) + .frame(maxWidth: 360) } + .frame(maxWidth: .infinity) + .padding(.vertical, 16) + } + } - Section { - HStack { - Button(AppLocalization.localized("Check for Updates")) { - Task { - await updateManager.checkForUpdates(force: true) - } + // MARK: - 更新 + + /// 更新状态行。 + /// + /// 沿用 General 里「状态行」的写法(见 `GeneralSettingsTabView` 的 Finder 扩展那一行): + /// 左边是带状态色的名称,右边是状态说明 + 操作按钮。原先这里只有一个光秃秃的按钮 + /// 单独占一段,上下都是空白,所以显得突兀——按钮旁边永远有说明它当前状态的文字, + /// 它才成为一句话的结尾,而不是一个孤立的控件。 + private var updateSection: some View { + Section { + LabeledContent { + HStack(spacing: 8) { + if let detail = updateStatus.detail { + Text(detail) + .foregroundStyle(.secondary) } if updateManager.isChecking { - ProgressView() - .scaleEffect(0.8) + ProgressView().controlSize(.small) + } + Button(updateStatus.actionTitle) { + switch updateStatus.action { + case .check: + Task { await updateManager.checkForUpdates(force: true) } + case .details: + // 只开弹窗看上次的结果,不重新发起检查 + updateManager.showUpdateDetails() + } + } + .disabled(updateManager.isChecking) + } + } label: { + Label(updateStatus.title, systemImage: updateStatus.icon) + .foregroundStyle(updateStatus.color) + } + } + } + + /// 更新区一行的全部推导集中在这里,视图只读结果,不在 body 里散落一串 if。 + /// + /// 判定顺序和更新弹窗保持一致:检查中 → 有新版本 → 出错 → 已是最新 → 未检查。 + private struct UpdateStatus { + enum Action { case check, details } + + let title: String + let icon: String + let color: Color + var detail: String? = nil + let actionTitle: String + let action: Action + } + + private var updateStatus: UpdateStatus { + if updateManager.isChecking { + return UpdateStatus( + title: AppLocalization.localized("Checking for updates..."), + icon: "arrow.triangle.2.circlepath", + color: .secondary, + actionTitle: AppLocalization.localized("Check for Updates"), + action: .check + ) + } + if let release = updateManager.availableUpdate { + return UpdateStatus( + title: AppLocalization.localized("New Version Available"), + icon: "arrow.down.circle.fill", + color: .blue, + detail: String(format: AppLocalization.localized("Version %@"), release.version), + actionTitle: AppLocalization.localized("View Details…"), + action: .details + ) + } + if updateManager.updateError != nil { + // 只给短句,具体原因留在弹窗里,免得长句把这一行挤变形 + return UpdateStatus( + title: AppLocalization.localized("Failed to Check for Updates"), + icon: "exclamationmark.triangle.fill", + color: .yellow, + actionTitle: AppLocalization.localized("Check for Updates"), + action: .check + ) + } + if updateManager.isUpToDate { + return UpdateStatus( + title: AppLocalization.localized("Up to Date"), + icon: "checkmark.circle.fill", + color: .green, + actionTitle: AppLocalization.localized("Check for Updates"), + action: .check + ) + } + return UpdateStatus( + title: AppLocalization.localized("Not checked yet"), + icon: "arrow.triangle.2.circlepath", + color: .secondary, + actionTitle: AppLocalization.localized("Check for Updates"), + action: .check + ) + } + + // MARK: - 项目与反馈 + + /// 两行:去项目看看 + 反馈问题。 + /// + /// 原先只有一行裸地址,既没说明项目有没有人在用,也没给任何可做的事。现在每行左边是 + /// 去处、右边是动作。星数由 `loadStarCount` 带缓存地取,取不到就只少一个数字, + /// 不占位也不报错。 + private var communitySection: some View { + Section { + LabeledContent { + HStack(spacing: 8) { + if let stars = updateManager.starCount { + // 用系统的紧凑数字格式,中文会自动变成「1.2万」而不是「1.2K」 + Text(stars.formatted(.number.notation(.compactName))) + .foregroundStyle(.secondary) + } + Button(AppLocalization.localized("Add a Star")) { + updateManager.openRepositoryPage() } } + } label: { + Label(AppLocalization.localized("RClick on GitHub"), image: "github") } - Section { - Link(destination: URL(string: "https://github.com/wflixu/RClick")!) { - Label("github.com/wflixu/RClick", image: "github") + LabeledContent { + Button(AppLocalization.localized("Open Issues")) { + updateManager.openIssuesPage() } + } label: { + Label(AppLocalization.localized("Feedback & Issues"), systemImage: "exclamationmark.bubble") } } - .formStyle(.grouped) } func getAppVersion() -> String { @@ -78,4 +207,5 @@ struct AboutSettingsTabView: View { #Preview { AboutSettingsTabView() + .environmentObject(UpdateManager(owner: "wflixu", repo: "RClick", currentVersion: "1.0.0")) } diff --git a/RClick/Shared/Updater.swift b/RClick/Shared/Updater.swift index 010b0c8..badbb0b 100644 --- a/RClick/Shared/Updater.swift +++ b/RClick/Shared/Updater.swift @@ -93,6 +93,18 @@ class UpdatePreferences: ObservableObject { // MARK: - GitHub API 服务 +/// 一次更新检查的结果。 +/// +/// 以前 `checkForUpdate` 返回 `GitHubRelease?`,那一个 `nil` 同时背着三种含义: +/// 网络失败、最新 release 是草稿/预发布、确实已是最新。而 `catch` 又把真实的网络 +/// 错误吞成一句 `print`,上层拿到 `nil` 只能一律当成「已是最新」——所以断网会被 +/// 报成「已是最新」。三种情况不拆开,界面就没法说实话。 +enum UpdateCheckResult { + case updateAvailable(GitHubRelease) + case upToDate + case failed(String) +} + class GitHubReleaseChecker { private let owner: String private let repo: String @@ -119,29 +131,48 @@ class GitHubReleaseChecker { decoder.dateDecodingStrategy = .iso8601 return try decoder.decode(GitHubRelease.self, from: data) } - - // 检查是否需要更新 - func checkForUpdate(currentVersion: String, includePrereleases: Bool = false) async -> GitHubRelease? { - print(currentVersion) + + /// 拉仓库的星标数。走 `/repos/{owner}/{repo}`,和 release 是两个端点。 + func fetchStarCount() async throws -> Int { + let url = URL(string: "https://api.github.com/repos/\(owner)/\(repo)")! + var request = URLRequest(url: url) + request.setValue("application/vnd.github.v3+json", forHTTPHeaderField: "Accept") + + let (data, response) = try await URLSession.shared.data(for: request) + + guard let httpResponse = response as? HTTPURLResponse, httpResponse.statusCode == 200 else { + throw URLError(.badServerResponse) + } + + struct Repository: Decodable { + let stargazersCount: Int + enum CodingKeys: String, CodingKey { case stargazersCount = "stargazers_count" } + } + return try JSONDecoder().decode(Repository.self, from: data).stargazersCount + } + + // 检查是否需要更新。 + // 返回枚举而不是 `GitHubRelease?`:那个 `nil` 原来同时背着「网络失败」 + // 「最新 release 是草稿或预发布」「确实已是最新」三种含义,而 `catch` 又把 + // 真实的网络错误吞成一句 `print`,上层只能一律当成「已是最新」—— + // 于是断网会被报成「已是最新」。三种情况分开,界面才可能说实话。 + func checkForUpdate(currentVersion: String, includePrereleases: Bool = false) async -> UpdateCheckResult { do { let latestRelease = try await fetchLatestRelease() - - // 跳过草稿版和预发布版(除非明确包含) + + // 草稿版和预发布版不算可更新版本,但这是一次成功的检查 if latestRelease.draft || (!includePrereleases && latestRelease.prerelease) { - return nil + return .upToDate } - - // 比较版本 + if compareVersions(currentVersion, latestRelease.version) == .orderedAscending { - return latestRelease - } else { - print("the last verison \(latestRelease.version)") + return .updateAvailable(latestRelease) } + + return .upToDate } catch { - print("检查更新失败: \(error)") + return .failed(error.localizedDescription) } - - return nil } // 语义化版本比较 @@ -176,13 +207,24 @@ class UpdateManager: ObservableObject { @Published var availableUpdate: GitHubRelease? @Published var isChecking = false @Published var updateError: String? + /// 上一次检查的结论是「已是最新」。 + /// + /// 单独一个字段,不再借用 `updateError`:借用会让界面无法区分「检查成功且已是最新」 + /// 和「检查失败」,弹窗里那张绿色「Up to Date」卡片也因此永远走不到。 + @Published var isUpToDate = false @Published var isDownloading = false @Published var downloadProgress: Double = 0 @Published var showUpdateSheet = false + + /// 仓库星标数。nil 表示还没拿到——界面就不显示数字,不占位、不报错。 + @Published private(set) var starCount: Int? private let githubChecker: GitHubReleaseChecker private let preferences: UpdatePreferences private let currentVersion: String + /// 存下来只为拼仓库/Issues 地址,别处不再硬编码 URL。 + private let owner: String + private let repo: String /// 是否来自 Mac App Store(通过 `Contents/_MASReceipt/receipt` 是否存在判断)。 /// App Store 构建禁止自更新(MAS 审核要求),改为引导用户去 App Store 更新。 @@ -195,37 +237,81 @@ class UpdateManager: ObservableObject { self.githubChecker = GitHubReleaseChecker(owner: owner, repo: repo) self.preferences = UpdatePreferences() self.currentVersion = currentVersion + self.owner = owner + self.repo = repo + } + + // MARK: - 星标数 + + private enum StarCache { + static let count = "githubStarCount" + static let fetchedAt = "githubStarCountFetchedAt" + /// 一天拉一次。星数不是实时指标,没必要每次打开「关于」都请求一次。 + static let lifetime: TimeInterval = 24 * 60 * 60 + } + + /// 取星标数:优先用缓存,过期或没有才请求。 + /// + /// 失败不打扰用户——有旧值就继续用(别让数字忽然消失),没有就保持 nil, + /// 「关于」页那一行只会少一个数字,不会多一条错误。 + func loadStarCount() async { + let defaults = UserDefaults.group + let cachedAt = defaults.object(forKey: StarCache.fetchedAt) as? Date + let cached = defaults.object(forKey: StarCache.count) as? Int + + if let cachedAt, let cached, Date().timeIntervalSince(cachedAt) < StarCache.lifetime { + starCount = cached + return + } + + if let fresh = try? await githubChecker.fetchStarCount() { + starCount = fresh + defaults.set(fresh, forKey: StarCache.count) + defaults.set(Date(), forKey: StarCache.fetchedAt) + } else if let cached { + starCount = cached + } } - // 关闭更新提示 + // 关闭更新提示。 + // 只关窗,**不清空检查结果**:清空会让「关于」页的状态行在关窗后退回「尚未检查」, + // 把用户刚拿到的信息抹掉;再用「查看详情…」打开时也会看到一张空白的卡片。 func dismissUpdateSheet() { showUpdateSheet = false - availableUpdate = nil - updateError = nil + } + + /// 打开更新弹窗展示上次的检查结果,不重新发起检查。 + func showUpdateDetails() { + showUpdateSheet = true } // 检查更新 func checkForUpdates(force: Bool = false) async { isChecking = true updateError = nil + isUpToDate = false showUpdateSheet = true - + defer { isChecking = false } - - guard let release = await githubChecker.checkForUpdate(currentVersion: currentVersion) else { - print("not release") - updateError = AppLocalization.localized("The current version is already up to date.") - return - } - - // 检查用户是否忽略了此版本 - if !force && preferences.isVersionIgnored(release.version) { - print("忽略这个版本") - updateError = String(format: AppLocalization.localized("Version %@ is ignored"), release.version) - return + + switch await githubChecker.checkForUpdate(currentVersion: currentVersion) { + case .failed(let reason): + // 真失败。从此不再和「已是最新」共用 updateError,弹窗标题才对得上内容。 + updateError = reason + + case .upToDate: + // 单独置位。updateError 保持 nil,弹窗因此会走到它原本走不到的 else 分支, + // 显示作者早就写好、却从未显示过的绿色「Up to Date」卡片。 + isUpToDate = true + + case .updateAvailable(let release): + // 检查用户是否忽略了此版本 + if !force && preferences.isVersionIgnored(release.version) { + updateError = String(format: AppLocalization.localized("Version %@ is ignored"), release.version) + return + } + availableUpdate = release } - - availableUpdate = release } // MARK: - 下载和安装方法 @@ -482,12 +568,20 @@ class UpdateManager: ObservableObject { } } - // 打开GitHub发布页面 - func openReleasesPage() { - if let url = URL(string: "https://github.com/wflixu/RClick/releases") { - NSWorkspace.shared.open(url) - } + /// 统一的仓库地址拼接:owner/repo 来自 init,不在各处再硬编码一遍。 + private func openGitHub(_ path: String = "") { + guard let url = URL(string: "https://github.com/\(owner)/\(repo)\(path)") else { return } + NSWorkspace.shared.open(url) } + + // 打开GitHub发布页面 + func openReleasesPage() { openGitHub("/releases") } + + /// 打开仓库主页(「关于」页的「加星」走这里)。 + func openRepositoryPage() { openGitHub() } + + /// 打开 Issues 列表(「关于」页的「反馈问题」走这里)。 + func openIssuesPage() { openGitHub("/issues") } // MARK: - 错误类型 From b7989cc0a538eb329764862cbd086da578cbe5a8 Mon Sep 17 00:00:00 2001 From: wflixu Date: Sun, 13 Sep 2026 18:36:00 +0800 Subject: [PATCH 18/22] fix(i18n): give v%@ the translations scripts/check-localization.py asks for The key was an empty object, so the check reported "no es translation" and exited 1. It comes from Text("v\(version)") in the sidebar: the "v" prefix is the same in every language, so each entry is just "v%@", but the key has to be present for the check to pass. Also drops the blank line inside the empty object. Co-Authored-By: Claude Code --- RClick/Localizable.xcstrings | 33 ++++++++++++++++++++++++++++++++- 1 file changed, 32 insertions(+), 1 deletion(-) diff --git a/RClick/Localizable.xcstrings b/RClick/Localizable.xcstrings index ba0c3a9..fb1ca68 100644 --- a/RClick/Localizable.xcstrings +++ b/RClick/Localizable.xcstrings @@ -6263,7 +6263,38 @@ } }, "v%@" : { - + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "v%@" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "v%@" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "v%@" + } + }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "v%@" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "v%@" + } + } + } }, "Version %@" : { "extractionState" : "manual", From f27a931927cf8dd4c7bdc89538418072e78f82af Mon Sep 17 00:00:00 2001 From: wflixu Date: Sun, 13 Sep 2026 18:36:32 +0800 Subject: [PATCH 19/22] chore: bump build to 20260913002 and write the 2.2.1 changelog MARKETING_VERSION stays at 2.2.1: it was set back in ea2d4b2 but never tagged, so this release is 2.2.1 and only the build number moves. The build number follows the repo convention of YYYYMMDD plus a daily sequence, and applies to the RClick and FinderSyncExt targets (Debug and Release) so the app and its embedded extension stay in sync. The changelog had no entry for 2.2.0 or 2.2.1; this writes 2.2.1, which covers everything merged since the v2.2.0 tag. Co-Authored-By: Claude Code --- CHANGELOG.md | 27 +++++++++++++++++++++++++++ RClick.xcodeproj/project.pbxproj | 8 ++++---- 2 files changed, 31 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7c2ab02..1de6364 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,33 @@ All notable changes to RClick are documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this project adheres to [Semantic Versioning](https://semver.org/). +## [2.2.1] - 2026-09-13 + +### Added +- Custom menu layout: arrange top-level and nested items in `custom_menu.json` +- French localization +- Simplified Chinese, Japanese and Spanish names for the built-in new-file types (Word 文档 / Excel 表格 / PowerPoint 演示文稿) +- About: live star count and a link to the issue tracker + +### Changed +- Settings: the custom menu is applied only when you press "Apply", so editing the file no longer changes the Finder menu mid-keystroke +- Settings: the About tab is rebuilt around the update status, with the description folded into the identity block +- Settings: launch-at-login now leads the General toggles +- Menu layout switches moved into the shared app group, alongside the other preferences + +### Fixed +- Adding or deleting an app could leave the Finder menu unchanged until the next heartbeat +- A failed save was silent; it now surfaces in the settings window +- Checking for updates reported "Failed to Check for Updates" even when the app was simply up to date +- A network failure during an update check was reported as "already up to date" +- The Japanese "Open With" submenu fell back to English +- AirDrop was untranslated in Simplified Chinese +- A one-time migration preserves existing menu layout settings after their move to the app group + +### Removed +- 20 localization keys that nothing referenced +- The extension's string catalog no longer carries 131 unused copies of the app's strings + ## [2.1.0] - 2026-07-12 ### Changed diff --git a/RClick.xcodeproj/project.pbxproj b/RClick.xcodeproj/project.pbxproj index e099602..b6a25fa 100644 --- a/RClick.xcodeproj/project.pbxproj +++ b/RClick.xcodeproj/project.pbxproj @@ -563,7 +563,7 @@ CODE_SIGN_ENTITLEMENTS = RClick/RClickDebug.entitlements; CODE_SIGN_STYLE = Automatic; COMBINE_HIDPI_IMAGES = YES; - CURRENT_PROJECT_VERSION = 20260913001; + CURRENT_PROJECT_VERSION = 20260913002; DEAD_CODE_STRIPPING = YES; DEVELOPMENT_TEAM = 4L3563XCBN; ENABLE_APP_SANDBOX = YES; @@ -600,7 +600,7 @@ CODE_SIGN_ENTITLEMENTS = RClick/RClick.entitlements; CODE_SIGN_STYLE = Automatic; COMBINE_HIDPI_IMAGES = YES; - CURRENT_PROJECT_VERSION = 20260913001; + CURRENT_PROJECT_VERSION = 20260913002; DEAD_CODE_STRIPPING = YES; DEVELOPMENT_TEAM = 4L3563XCBN; ENABLE_APP_SANDBOX = YES; @@ -678,7 +678,7 @@ CODE_SIGN_ENTITLEMENTS = FinderSyncExt/FinderSyncExt.entitlements; CODE_SIGN_STYLE = Automatic; COMBINE_HIDPI_IMAGES = YES; - CURRENT_PROJECT_VERSION = 20260913001; + CURRENT_PROJECT_VERSION = 20260913002; DEAD_CODE_STRIPPING = YES; DEVELOPMENT_TEAM = 4L3563XCBN; ENABLE_APP_SANDBOX = YES; @@ -713,7 +713,7 @@ CODE_SIGN_ENTITLEMENTS = FinderSyncExt/FinderSyncExt.entitlements; CODE_SIGN_STYLE = Automatic; COMBINE_HIDPI_IMAGES = YES; - CURRENT_PROJECT_VERSION = 20260913001; + CURRENT_PROJECT_VERSION = 20260913002; DEAD_CODE_STRIPPING = YES; DEVELOPMENT_TEAM = 4L3563XCBN; ENABLE_APP_SANDBOX = YES; From e3375d86dfd81951dfef4837ea4022c728011278 Mon Sep 17 00:00:00 2001 From: wflixu Date: Sun, 13 Sep 2026 18:46:34 +0800 Subject: [PATCH 20/22] docs: delete the design specs that shipped refactors made obsolete MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Nine documents described work that has since shipped, and two of them said so themselves: 重构设计.md was marked "⚠️ 方向已过时" and 架构重构设计及计划.md was marked "已拆分" (split, i.e. a stub pointing at its own replacements). The three contracts under specs/contracts/ had drifted out of date: communication-protocol.md never mentions the HMAC signing that MessageSecurity now performs, and data-models.md predates BookmarkEntity and DataVersion. Both would mislead a reader more than they help, and CLAUDE.md already describes the protocol and the data models accurately. Checked before deleting: every reference to these nine was from another one of the nine, so nothing in the code, README, CLAUDE.md or examples/ is left pointing at a file that no longer exists. Kept, because they still describe how the project works today: specs/CI-CD与自动更新方案.md — the tag-driven release pipeline specs/design-bookmark-permission.md — the permission model specs/external-volumes-observation.md — the volume observation fix specs/contracts/git-branch-strategy.md — referenced by CLAUDE.md Co-Authored-By: Claude Code --- specs/contracts/communication-protocol.md | 551 ------- specs/contracts/data-models.md | 726 --------- specs/contracts/extension-reconnect.md | 520 ------ ...15\346\236\204\346\203\263\346\263\225.md" | 388 ----- ...15\346\236\204\350\256\241\345\210\222.md" | 189 --- ...41\345\217\212\350\256\241\345\210\222.md" | 116 -- ...15\346\236\204\350\256\276\350\256\241.md" | 200 --- ...15\346\236\204\350\256\241\345\210\222.md" | 1136 ------------- ...15\346\236\204\350\256\276\350\256\241.md" | 1416 ----------------- 9 files changed, 5242 deletions(-) delete mode 100644 specs/contracts/communication-protocol.md delete mode 100644 specs/contracts/data-models.md delete mode 100644 specs/contracts/extension-reconnect.md delete mode 100644 "specs/v2.2.0-\351\207\215\346\236\204\346\203\263\346\263\225.md" delete mode 100644 "specs/v2.2.0-\351\207\215\346\236\204\350\256\241\345\210\222.md" delete mode 100644 "specs/\346\236\266\346\236\204\351\207\215\346\236\204\350\256\276\350\256\241\345\217\212\350\256\241\345\210\222.md" delete mode 100644 "specs/\350\256\276\347\275\256\347\225\214\351\235\242\351\207\215\346\236\204\350\256\276\350\256\241.md" delete mode 100644 "specs/\351\207\215\346\236\204\350\256\241\345\210\222.md" delete mode 100644 "specs/\351\207\215\346\236\204\350\256\276\350\256\241.md" diff --git a/specs/contracts/communication-protocol.md b/specs/contracts/communication-protocol.md deleted file mode 100644 index c4e7559..0000000 --- a/specs/contracts/communication-protocol.md +++ /dev/null @@ -1,551 +0,0 @@ -# RClick 通信协议设计 - -> 最后更新:2026-03-21 -> 状态:设计规范 -> 基于:DistributedNotificationCenter + Codable 协议层 - ---- - -## 一、概述 - -RClick 的主应用程序(Main App)和 FinderSync 扩展(Extension)之间通过 `DistributedNotificationCenter` 进行进程间通信(IPC)。本协议定义了类型安全的消息格式和传输机制。 - -### 1.1 通信模型 - -```mermaid -graph LR - Main["Main App
发送配置"] - Ext["Extension
发送事件"] - - Main -->|"MenuConfig"| Ext - Ext -->|"ClickEvent"| Main - Ext -->|"Heartbeat"| Main -``` - -### 1.2 设计原则 - -| 原则 | 说明 | -|------|------| -| **类型安全** | 使用枚举替代字符串,编译时检查 | -| **Codable 协议** | 所有消息体实现 Codable,支持 JSON 编解码 | -| **消息 ID** | 每个消息带 UUID,支持追踪和去重 | -| **单向传输** | Main→Extension 和 Extension→Main 独立通道 | - ---- - -## 二、消息类型定义 - -### 2.1 主程序 → Extension 消息 - -```swift -/// 主程序发送给 Extension 的消息类型 -enum MainToExtensionAction: String, Codable { - /// 发送完整菜单配置 - case menuConfig = "menu-config" - - /// 主程序启动通知 - case running = "running" - - /// 主程序退出通知 - case quit = "quit" -} -``` - -### 2.2 Extension → 主程序消息 - -```swift -/// Extension 发送给主程序的消息类型 -enum ExtensionToMainAction: String, Codable { - /// 菜单点击事件 - case click = "click" - - /// 心跳消息 - case heartbeat = "heartbeat" - - /// 请求菜单配置(Extension 启动或缓存失效时) - case requestConfig = "request-config" -} -``` - ---- - -## 三、消息载体结构 - -### 3.1 主程序 → Extension 消息 - -```swift -/// 主程序发送给 Extension 的消息 -struct MainToExtensionMessage: Codable { - /// 消息 ID,用于追踪和去重 - let id: UUID - - /// 消息类型 - let action: MainToExtensionAction - - /// JSON 编码的载荷数据 - let data: Data? - - init(id: UUID = UUID(), - action: MainToExtensionAction, - data: Codable? = nil) { - self.id = id - self.action = action - self.data = try? JSONEncoder().encode(data) - } -} -``` - -### 3.2 Extension → 主程序消息 - -```swift -/// Extension 发送给主程序的消息 -struct ExtensionToMainMessage: Codable { - /// 消息 ID,用于追踪和去重 - let id: UUID - - /// 消息类型 - let action: ExtensionToMainAction - - /// JSON 编码的载荷数据 - let data: Data? - - init(id: UUID = UUID(), - action: ExtensionToMainAction, - data: Codable? = nil) { - self.id = id - self.action = action - self.data = try? JSONEncoder().encode(data) - } -} -``` - ---- - -## 四、消息载荷定义 - -### 4.1 菜单配置载荷(Main → Extension) - -```swift -/// 菜单配置消息载荷 -struct MenuConfigPayload: Codable { - /// 动作菜单项列表 - let actions: [ActionMenuItem] - - /// 应用菜单项列表 - let apps: [AppMenuItem] - - /// 新建文件菜单项列表 - let newFiles: [NewFileMenuItem] - - /// 常用目录菜单项列表 - let commonDirs: [CommonDirMenuItem] - - /// 脚本菜单项列表(新增) - let scripts: [ScriptMenuItem] - - /// 菜单版本号(用于去重和防乱序) - let version: Int -} -``` - -#### 4.1.1 动作菜单项 - -```swift -/// 动作菜单项(复制路径、删除等) -struct ActionMenuItem: Codable { - /// 菜单项唯一标识 - let id: String - - /// 菜单项显示名称 - let name: String - - /// SF Symbol 图标名称(如 "doc.on.doc") - let icon: String - - /// 是否启用 - let enabled: Bool -} -``` - -**图标策略**:使用 SF Symbol,Extension 直接用 `NSImage(systemSymbolName:)` 加载 - -#### 4.1.2 应用菜单项 - -```swift -/// 应用菜单项(用外部应用打开) -struct AppMenuItem: Codable { - /// 菜单项唯一标识 - let id: String - - /// 菜单项显示名称 - let name: String - - /// 应用程序路径(Extension 据此加载图标) - let appURL: URL -} -``` - -**图标策略**: -- Extension 用 `NSWorkspace.shared.icon(forFile:)` 加载 -- 系统自动缓存,无需主程序传输图标数据 - -#### 4.1.3 新建文件菜单项 - -```swift -/// 新建文件菜单项 -struct NewFileMenuItem: Codable { - /// 菜单项唯一标识 - let id: String - - /// 菜单项显示名称 - let name: String - - /// 文件扩展名 - let ext: String - - /// SF Symbol 图标名称(如 "doc.text") - let icon: String -} -``` - -#### 4.1.4 常用目录菜单项 - -```swift -/// 常用目录菜单项 -struct CommonDirMenuItem: Codable { - /// 菜单项唯一标识 - let id: String - - /// 菜单项显示名称 - let name: String - - /// SF Symbol 图标名称(如 "folder") - let icon: String -} -``` - -#### 4.1.5 脚本菜单项 - -```swift -/// 脚本菜单项(执行自定义脚本) -struct ScriptMenuItem: Codable { - /// 菜单项唯一标识 - let id: String - - /// 菜单项显示名称 - let name: String - - /// SF Symbol 图标名称(如 "terminal") - let icon: String - - /// 脚本类型 - let scriptType: String // "shell" | "python" | "applescript" -} -``` - -### 图标传输策略总结 - -| 菜单类型 | 图标来源 | 传输内容 | 理由 | -|----------|----------|----------|------| -| 动作菜单 | SF Symbol | `icon: String` | 数据量小,系统图标 | -| 应用菜单 | App 路径 | `appURL: URL` | 系统自动缓存应用图标 | -| 新建文件 | SF Symbol | `icon: String` | 数据量小,系统图标 | -| 常用目录 | SF Symbol | `icon: String` | 数据量小,系统图标 | -| 脚本菜单 | SF Symbol | `icon: String` | 数据量小,系统图标 | - -**为什么不传输图标 Data?** - -1. **消息大小**:菜单配置可能包含 20-50 个项,每个图标 Data 约 2-10KB -2. **IPC 开销**:`DistributedNotificationCenter` 传输大数据效率低 -3. **内存占用**:Extension 需要解码所有 Data,内存压力大 -4. **系统缓存**:`NSWorkspace.shared.icon(forFile:)` 自带缓存机制 - -### 4.2 点击事件载荷(Extension → Main) - -```swift -/// 点击事件消息载荷 -struct ClickEventPayload: Codable { - /// 触发场景(从 FIMenuKind 转换) - let scene: MenuScene - - /// 当前目录路径 - let currentDirectory: String - - /// 选中的文件/目录路径列表 - let selectedItems: [String] - - /// 点击的菜单项信息 - let menuItem: MenuItemInfo -} - -/// 菜单项信息 -struct MenuItemInfo: Codable { - /// 菜单项类型 - let type: MenuItemType - - /// 菜单项 ID - let id: String - - /// 菜单项 tag(用于快速查找) - let tag: Int -} -``` - -#### 4.2.1 菜单项类型 - -```swift -enum MenuItemType: String, Codable { - case action = "action" // 动作菜单 - case app = "app" // 应用菜单 - case newFile = "new-file" // 新建文件 - case commonDir = "common-dir" // 常用目录 - case script = "script" // 执行脚本 -} -``` - -#### 4.2.2 触发场景 - -```swift -enum MenuScene: String, Codable { - /// 选中文件/文件夹右键 - case contextualMenuForItems = "ctx-items" - - /// 空白处右键 - case contextualMenuForContainer = "ctx-container" - - /// 侧边栏右键 - case contextualMenuForSidebar = "ctx-sidebar" - - /// 工具栏 - case toolbarItemMenu = "toolbar" -} -``` - -#### 4.2.3 项目类型 - -```swift -enum ItemType: String, Codable { - case file = "file" - case folder = "folder" - case unknown = "unknown" -} -``` - ---- - -## 五、Messager 类设计 - -### 5.1 核心实现 - -```swift -import Foundation - -class Messager { - static let shared = Messager() - - private let center: DistributedNotificationCenter = .default() - - // 消息处理器存储 - private var mainToExtensionHandlers: [MainToExtensionAction: (Data?) -> Void] = [:] - private var extensionToMainHandlers: [ExtensionToMainAction: (Data?) -> Void] = [:] - - // 通知名称 - static let mainToExtensionNotification = "RClick.MainToExtension" - static let extensionToMainNotification = "RClick.ExtensionToMain" - - private init() { - // 注册通知监听 - setupNotificationObservers() - } - - // MARK: - 发送消息 - - /// 主程序发送消息给 Extension - func sendToExtension(_ action: MainToExtensionAction, data: Codable? = nil) { - let message = MainToExtensionMessage(action: action, data: data) - sendMessage(message, via: Self.mainToExtensionNotification) - } - - /// Extension 发送消息给主程序 - func sendToMain(_ action: ExtensionToMainAction, data: Codable? = nil) { - let message = ExtensionToMainMessage(action: action, data: data) - sendMessage(message, via: Self.extensionToMainNotification) - } - - // MARK: - 注册处理器 - - /// Extension 注册主程序消息处理器 - func onMainMessage(_ action: MainToExtensionAction, handler: @escaping (Data?) -> Void) { - mainToExtensionHandlers[action] = handler - } - - /// 主程序注册 Extension 消息处理器 - func onExtensionMessage(_ action: ExtensionToMainAction, handler: @escaping (Data?) -> Void) { - extensionToMainHandlers[action] = handler - } - - // MARK: - 便捷方法 - - /// 主程序发送菜单配置给 Extension - func sendMenuConfig(_ config: MenuConfigPayload) { - sendToExtension(.menuConfig, data: config) - } - - /// Extension 发送点击事件给主程序 - func sendClickEvent(_ event: ClickEventPayload) { - sendToMain(.click, data: event) - } - - /// 发送心跳 - func sendHeartbeat() { - sendToMain(.heartbeat) - } - - /// 请求菜单配置 - func requestMenuConfig() { - sendToMain(.requestConfig) - } -} -``` - -### 5.2 使用示例 - -#### 主程序端 - -```swift -// 注册点击事件处理器 -Messager.shared.onExtensionMessage(.click) { data in - guard let event: ClickEventPayload = Messager.shared.decode(data) else { return } - // 处理点击事件 - handleClickEvent(event) -} - -// 发送菜单配置 -let config = MenuConfigPayload(actions: actions, apps: apps, ...) -Messager.shared.sendMenuConfig(config) -``` - -#### Extension 端 - -```swift -// 注册菜单配置处理器 -Messager.shared.onMainMessage(.menuConfig) { data in - guard let config: MenuConfigPayload = Messager.shared.decode(data) else { return } - // 更新菜单配置 - self.menuConfig = config -} - -// 发送点击事件 -let event = ClickEventPayload(...) -Messager.shared.sendClickEvent(event) -``` - ---- - -## 六、通知中心配置 - -### 6.1 通知名称 - -| 方向 | 通知名称 | 用途 | -|------|---------|------| -| Main → Extension | `RClick.MainToExtension` | 主程序发送配置和指令 | -| Extension → Main | `RClick.ExtensionToMain` | Extension 发送事件和状态 | - -### 6.2 消息格式 - -``` -Notification.Object: JSON 字符串 -{ - "id": "550e8400-e29b-41d4-a716-446655440000", - "action": "menu-config", - "data": { ... } // 可选,JSON 编码的载荷 -} -``` - ---- - -## 七、错误处理 - -### 7.1 解码失败 - -```swift -func decode(_ data: Data?) -> T? { - guard let data = data else { return nil } - return try? JSONDecoder().decode(T.self, from: data) -} -``` - -### 7.2 心跳机制 - -心跳消息用于 Extension 感知主程序是否运行,确保用户点击菜单时有效果。 - -**心跳流程**: - -```mermaid -sequenceDiagram - participant Main as Main App - participant Ext as Extension - - Main->>Ext: 1. 启动时发送 running 消息 - Main->>Ext: 2. 定期发送心跳 - Main->>Ext: 3. 发送 menuConfig,保存快照 - Ext->>Main: 4. 用户点击菜单,发送 click 事件 - Main->>Main: 执行操作 - Ext->>Main: 5. 定期发送心跳(感知主程序存活) - Main->>Ext: 6. 收到心跳,确认 Extension 在线 -``` - -**设计要点**: - -| 方向 | 消息类型 | 频率 | 用途 | -|------|----------|------|------| -| Main → Extension | `running` | 启动时 + 重试 6 次 | 通知 Extension 主程序已启动 | -| Main → Extension | `menuConfig` | 配置变更时 | 发送菜单配置 | -| Extension → Main | `heartbeat` | 每 5-10 秒 | 让主程序知道 Extension 存活 | -| Extension → Main | `click` | 用户点击时 | 发送点击事件 | -| Extension → Main | `requestConfig` | 缓存为空时 | 主动请求菜单配置 | - -**心跳超时处理**: - -- 主程序超过 15 秒未收到心跳,标记 Extension 为离线 -- 主程序菜单栏显示"扩展未响应"提示 -- 用户可点击"重新加载扩展"按钮触发 `menu.request` 消息 - -**Extension 缓存为空处理**: - -- Extension 启动时,如果 `menuConfig` 缓存为空,发送 `requestConfig` 消息 -- 主程序收到后,发送完整的 `menuConfig` 响应 -- Extension 收到后保存到内存缓存,用于后续菜单渲染 - ---- - -## 八、向后兼容性 - -### 8.1 旧消息格式支持 - -为了兼容旧版本的 Extension,消息结构应保持向后兼容: - -- 新增字段设为可选 -- 枚举的 `rawValue` 保持与原有字符串相同 -- 支持未知消息类型的降级处理 - -### 8.2 版本协商 - -未来可扩展消息结构,添加 `version` 字段: - -```swift -struct MainToExtensionMessage: Codable { - let version: Int // 协议版本 - let id: UUID - let action: MainToExtensionAction - let data: Data? -} -``` - ---- - -## 九、参考文档 - -- **重构设计**: [../重构设计.md](../重构设计.md) -- **数据模型**: [data-models.md](data-models.md) -- **Messager 实现**: [../../RClick/Shared/Messager.swift](../../RClick/Shared/Messager.swift) diff --git a/specs/contracts/data-models.md b/specs/contracts/data-models.md deleted file mode 100644 index 09a5972..0000000 --- a/specs/contracts/data-models.md +++ /dev/null @@ -1,726 +0,0 @@ -# RClick 数据模型设计 - -> 最后更新:2026-03-21 -> 状态:设计规范 -> 基于:SwiftData + 瘦 Extension 架构 - ---- - -## 一、概述 - -### 1.1 架构调整:完全磁盘访问权限 - -由于采用**完全磁盘访问权限**(用户手动授权),不再需要 Bookmark 缓存机制。 - -| 之前的设计 | 当前设计 | -|-----------|---------| -| PermissiveDir + Bookmark 缓存 | 不需要,依赖完全磁盘访问权限 | -| 按需请求权限 | 一次性授权,全盘访问 | - -### 1.2 模型分类 - -| 模型类别 | 用途 | 存储方式 | -|---------|------|---------| -| **应用模型** | 外部应用程序配置 | SwiftData | -| **动作模型** | 右键菜单动作配置 | SwiftData | -| **文件类型模型** | 新建文件模板配置 | SwiftData | -| **目录模型** | 常用目录配置 | SwiftData | -| **脚本模型** | 用户自定义脚本配置 | SwiftData | -| **内存模型** | 运行时数据表示 | 纯 Swift 结构 | -| **消息模型** | 进程间通信数据传输 | Codable 协议 | - -### 1.3 设计原则 - -1. **SwiftData 模型**:只存储配置数据,@Model 标记 -2. **内存模型**:RCBase 协议,运行时使用 -3. **消息模型**:Codable 协议,IPC 通信使用 -4. **模型转换**:SwiftData ↔ 内存模型 ↔ 消息模型 - -### 1.4 模型关系图 - -```mermaid -graph LR - subgraph Persistent["SwiftData 模型
持久化存储"] - PE1[AppEntity] - PE2[ActionEntity] - PE3[NewFileTypeEntity] - PE4[CommonDirEntity] - PE5[ScriptEntity] - end - - subgraph Memory["内存模型 (RCBase)
运行时使用"] - M1[OpenWithApp] - M2[RCAction] - M3[NewFile] - M4[CommonDir] - M5[RCScript] - end - - subgraph Message["消息模型
IPC 通信"] - S1[AppMenuItem] - S2[ActionMenuItem] - S3[NewFileMenuItem] - S4[CommonDirMenuItem] - S5[ScriptMenuItem] - end - - Persistent <--> Memory - Memory <--> Message -``` - ---- - -## 二、SwiftData 持久化模型 - -### 简化设计原则 - -1. **移除 Data 字段**:直接用 SwiftData 的 @Relationship 或 @Attribute 存储 -2. **移除时间戳**:配置数据不需要 createdAt/updatedAt -3. **移除 PermissiveDir**:完全磁盘访问权限无需 Bookmark - -### 模型简化对比 - -| 属性 | 之前设计 | 简化后设计 | -|------|---------|-----------| -| 复杂数据 | `argumentsData: Data?` | `arguments: [String]` (SwiftData 6.0+ 支持) | -| 时间戳 | `createdAt`, `updatedAt` | 移除(配置数据不需要) | -| Bookmark | `PermissiveDir` | 移除(完全磁盘访问权限) | - -### 2.3 新建文件类型实体(NewFileTypeEntity) - -存储新建文件类型配置。 - -```swift -import SwiftData -import Foundation - -/// 新建文件类型实体 - 用于存储新建文件类型配置 -@Model -final class NewFileTypeEntity { - @Attribute(.unique) var id: String - var fileExtension: String - var name: String - var icon: String - var isEnabled: Bool - var sortOrder: Int - var templatePath: String? // 模板文件路径(可选) - var openAppPath: String? // 默认打开应用路径(可选) - - init(id: String = UUID().uuidString, - fileExtension: String, - name: String, - icon: String = "doc", - isEnabled: Bool = true, - sortOrder: Int = 0, - templatePath: String? = nil, - openAppPath: String? = nil) { - self.id = id - self.fileExtension = fileExtension - self.name = name - self.icon = icon - self.isEnabled = isEnabled - self.sortOrder = sortOrder - self.templatePath = templatePath - self.openAppPath = openAppPath - } -} -``` - -#### 预定义文件类型 - -```swift -extension NewFileTypeEntity { - static func createDefaultFileTypes() -> [NewFileTypeEntity] { - return [ - NewFileTypeEntity(id: "txt", fileExtension: ".txt", name: "TXT", icon: "icon-file-txt", sortOrder: 0), - NewFileTypeEntity(id: "md", fileExtension: ".md", name: "Markdown", icon: "icon-file-md", sortOrder: 1), - NewFileTypeEntity(id: "json", fileExtension: ".json", name: "JSON", icon: "icon-file-json", sortOrder: 2), - NewFileTypeEntity(id: "docx", fileExtension: ".docx", name: "DOCX", icon: "icon-file-docx", sortOrder: 3), - NewFileTypeEntity(id: "xlsx", fileExtension: ".xlsx", name: "XLSX", icon: "icon-file-xlsx", sortOrder: 4), - NewFileTypeEntity(id: "pptx", fileExtension: ".pptx", name: "PPTX", icon: "icon-file-pptx", sortOrder: 5), - ] - } -} -``` - ---- - -### 2.4 常用目录实体(CommonDirEntity) - -存储快速访问目录配置。 - -```swift -import SwiftData -import Foundation - -/// 常用目录实体 - 用于存储快速访问目录 -@Model -final class CommonDirEntity { - @Attribute(.unique) var id: String - var name: String - var pathString: String - var icon: String - var sortOrder: Int - var isEnabled: Bool - - init(id: String = UUID().uuidString, - name: String, - path: URL, - icon: String = "folder", - sortOrder: Int = 0, - isEnabled: Bool = true) { - self.id = id - self.name = name - self.pathString = path.path() - self.icon = icon - self.sortOrder = sortOrder - self.isEnabled = isEnabled - } - - var path: URL { - get { URL(fileURLWithPath: pathString) } - set { pathString = newValue.path() } - } -} -``` - -#### 预定义常用目录 - -```swift -extension CommonDirEntity { - static func createDefaultCommonDirs() -> [CommonDirEntity] { - let fileManager = FileManager.default - var dirs: [CommonDirEntity] = [] - - let homeDir = fileManager.homeDirectoryForCurrentUser - let desktop = homeDir.appendingPathComponent("Desktop") - let documents = homeDir.appendingPathComponent("Documents") - let downloads = homeDir.appendingPathComponent("Downloads") - - dirs.append(CommonDirEntity(id: "desktop", name: "桌面", path: desktop, icon: "desktopcomputer", sortOrder: 0)) - dirs.append(CommonDirEntity(id: "documents", name: "文档", path: documents, icon: "doc.folder", sortOrder: 1)) - dirs.append(CommonDirEntity(id: "downloads", name: "下载", path: downloads, icon: "arrow.down.circle", sortOrder: 2)) - dirs.append(CommonDirEntity(id: "applications", name: "应用程序", path: URL(fileURLWithPath: "/Applications"), icon: "app", sortOrder: 3)) - dirs.append(CommonDirEntity(id: "home", name: "用户主目录", path: homeDir, icon: "house", sortOrder: 4)) - - return dirs - } -} -``` - ---- - -### 2.5 脚本实体(ScriptEntity) - -存储用户自定义脚本配置,支持 Shell、Python、AppleScript 三种类型。 - -```swift -import SwiftData -import Foundation - -/// 脚本实体 - 用于存储用户自定义脚本配置 -@Model -final class ScriptEntity { - @Attribute(.unique) var id: String - var name: String // 菜单显示名称 - var scriptType: String // "shell" | "python" | "applescript" - var scriptContent: String // 脚本内容 - var icon: String // SF Symbol 图标 - var sortOrder: Int - var isEnabled: Bool - - init(id: String = UUID().uuidString, - name: String, - scriptType: String, - scriptContent: String, - icon: String = "terminal", - sortOrder: Int = 0, - isEnabled: Bool = true) { - self.id = id - self.name = name - self.scriptType = scriptType - self.scriptContent = scriptContent - self.icon = icon - self.sortOrder = sortOrder - self.isEnabled = isEnabled - } -} -``` - -#### 预定义脚本模板(可选) - -```swift -extension ScriptEntity { - static func createDefaultScripts() -> [ScriptEntity] { - return [ - ScriptEntity( - name: "显示文件信息", - scriptType: "shell", - scriptContent: "mdls \"$1\"", - icon: "info.circle", - sortOrder: 0 - ), - ScriptEntity( - name: "在 VSCode 打开", - scriptType: "shell", - scriptContent: "open -a \"Visual Studio Code\" \"$@\"", - icon: "terminal", - sortOrder: 1 - ), - ScriptEntity( - name: "获取文件哈希", - scriptType: "shell", - scriptContent: "shasum -a 256 \"$@\"", - icon: "hash", - sortOrder: 2 - ), - ] - } -} -``` - ---- - -## 三、基础协议和模型(RCBase) - -### 3.1 基础协议 - -```swift -/// 所有数据模型的基础协议 -protocol RCBase: Hashable, Identifiable, Codable { - var id: String { get } -} -``` - -### 3.2 打开应用(OpenWithApp) - -用于内存中的应用表示,可转换为 AppEntity。 - -```swift -struct OpenWithApp: RCBase { - var id: String - var url: URL - var itemName: String - var inheritFromGlobalArguments: Bool - var inheritFromGlobalEnvironment: Bool - var arguments: [String] - var environment: [String: String] - - var appName: String { - FileManager.default.displayName(atPath: url.path) - } - - var name: String { - itemName.isEmpty ? appName : itemName - } - - init(id: String = UUID().uuidString, appURL url: URL) { - self.id = id - self.url = url - self.itemName = url.deletingPathExtension().lastPathComponent - } -} - -extension OpenWithApp { - init?(bundleIdentifier identifier: String) { - guard let url = NSWorkspace.shared.urlForApplication(withBundleIdentifier: identifier) else { - return nil - } - self.init(appURL: url) - } - - static let vscode = OpenWithApp(bundleIdentifier: "com.microsoft.VSCode") - static let terminal = OpenWithApp(bundleIdentifier: "com.apple.Terminal") - static var defaultApps: [OpenWithApp] { [.terminal, .vscode].compactMap { $0 } } -} -``` - -### 3.3 动作(RCAction) - -```swift -struct RCAction: RCBase { - var id: String - var name: String - var enabled: Bool - var idx: Int - var icon: String - - init(id: String, name: String, enabled: Bool = true, idx: Int, icon: String) { - self.id = id - self.name = name - self.enabled = enabled - self.idx = idx - self.icon = icon - } -} - -extension RCAction { - static let copyPath = RCAction(id: "copy-path", name: "Copy Path", idx: 0, icon: "doc.on.doc") - static let deleteDirect = RCAction(id: "delete-direct", name: "Delete Direct", idx: 1, icon: "trash") - static let hideFileDir = RCAction(id: "hide", name: "Hide", idx: 2, icon: "eye.slash") - static let unhideFileDir = RCAction(id: "unhide", name: "Unhide", idx: 3, icon: "eye") - static let airdrop = RCAction(id: "airdrop", name: "AirDrop", idx: 4, icon: "paperplane") - - static var all: [RCAction] = [.copyPath, .deleteDirect, .airdrop, .hideFileDir, .unhideFileDir] -} -``` - -### 3.4 新建文件(NewFile) - -```swift -struct NewFile: RCBase { - var ext: String - var name: String - var enabled: Bool - var idx: Int - var icon: String - var id: String - var openApp: URL? - var template: URL? - - init(ext: String, name: String, enabled: Bool = true, idx: Int, icon: String = "document", id: String = UUID().uuidString) { - self.ext = ext - self.name = name - self.enabled = enabled - self.idx = idx - self.icon = icon - self.id = id - } -} - -extension NewFile { - static var all: [NewFile] = [.txt, .md, .json, .docx, .pptx, .xlsx] - - static let json = NewFile(ext: ".json", name: "JSON", idx: 0, icon: "icon-file-json") - static let txt = NewFile(ext: ".txt", name: "TXT", idx: 1, icon: "icon-file-txt") - static let md = NewFile(ext: ".md", name: "Markdown", idx: 2, icon: "icon-file-md") - static let docx = NewFile(ext: ".docx", name: "DOCX", idx: 3, icon: "icon-file-docx") - static let pptx = NewFile(ext: ".pptx", name: "PPTX", idx: 4, icon: "icon-file-pptx") - static let xlsx = NewFile(ext: ".xlsx", name: "XLSX", idx: 5, icon: "icon-file-xlsx") -} -``` - -### 3.5 常用目录(CommonDir) - -```swift -struct CommonDir: RCBase { - var id: String - var name: String - var url: URL - var icon: String - - init(id: String, name: String, url: URL, icon: String) { - self.id = id - self.name = name - self.url = url - self.icon = icon - } -} -``` - -### 3.6 脚本(RCScript) - -```swift -struct RCScript: RCBase { - var id: String - var name: String - var scriptType: ScriptType - var scriptContent: String - var icon: String - var enabled: Bool - var idx: Int - - enum ScriptType: String, Codable { - case shell = "shell" - case python = "python" - case applescript = "applescript" - } -} -``` - ---- - -## 四、消息传输模型(Codable) - -这些模型用于主程序和 Extension 之间的通信,不持久化。 - -### 4.1 动作菜单项(ActionMenuItem) - -```swift -/// Menu item for custom actions (copy path, delete, etc.) -struct ActionMenuItem: Codable { - let id: String - let name: String - let icon: String - let enabled: Bool - - init(id: String, name: String, icon: String, enabled: Bool = true) { - self.id = id - self.name = name - self.icon = icon - self.enabled = enabled - } -} -``` - -### 4.2 应用菜单项(AppMenuItem) - -```swift -/// Menu item for opening files with external applications -struct AppMenuItem: Codable { - let id: String - let name: String - let appURL: URL // Extension 根据路径加载图标 - - init(id: String, name: String, appURL: URL) { - self.id = id - self.name = name - self.appURL = appURL - } -} -``` - -### 4.3 新建文件菜单项(NewFileMenuItem) - -```swift -/// Menu item for creating new files -struct NewFileMenuItem: Codable { - let id: String - let name: String - let ext: String - let icon: String - - init(id: String, name: String, ext: String, icon: String) { - self.id = id - self.name = name - self.ext = ext - self.icon = icon - } -} -``` - -### 4.4 常用目录菜单项(CommonDirMenuItem) - -```swift -/// Menu item for common directories -struct CommonDirMenuItem: Codable { - let id: String - let name: String - let icon: String - - init(id: String, name: String, icon: String) { - self.id = id - self.name = name - self.icon = icon - } -} -``` - -### 4.5 脚本菜单项(ScriptMenuItem) - -```swift -/// Menu item for custom scripts -struct ScriptMenuItem: Codable { - let id: String - let name: String - let icon: String - let scriptType: String // "shell" | "python" | "applescript" - - init(id: String, name: String, icon: String, scriptType: String) { - self.id = id - self.name = name - self.icon = icon - self.scriptType = scriptType - } -} -``` - ---- - -## 五、模型转换 - -### 5.1 SwiftData → Codable(用于发送菜单配置) - -```swift -extension ActionEntity { - func toMenuItem() -> ActionMenuItem { - ActionMenuItem( - id: id, - name: name, - icon: icon, - enabled: isEnabled - ) - } -} - -extension AppEntity { - func toMenuItem() -> AppMenuItem { - AppMenuItem( - id: id, - name: itemName.isEmpty ? url.lastPathComponent : itemName, - appURL: url - ) - } -} - -extension NewFileTypeEntity { - func toMenuItem() -> NewFileMenuItem { - NewFileMenuItem( - id: id, - name: name, - ext: fileExtension, - icon: icon - ) - } -} - -extension CommonDirEntity { - func toMenuItem() -> CommonDirMenuItem { - CommonDirMenuItem( - id: id, - name: name, - icon: icon - ) - } -} - -extension ScriptEntity { - func toMenuItem() -> ScriptMenuItem { - ScriptMenuItem( - id: id, - name: name, - icon: icon, - scriptType: scriptType - ) - } -} -``` - -### 5.2 RCBase → SwiftData(用于保存配置) - -```swift -extension AppEntity { - convenience init(from openWithApp: OpenWithApp, sortOrder: Int = 0) { - self.init( - id: openWithApp.id, - url: openWithApp.url, - itemName: openWithApp.name, - inheritFromGlobalArguments: openWithApp.inheritFromGlobalArguments, - inheritFromGlobalEnvironment: openWithApp.inheritFromGlobalEnvironment, - arguments: openWithApp.arguments, - environment: openWithApp.environment, - sortOrder: sortOrder - ) - } -} - -extension ActionEntity { - convenience init(from action: RCAction) { - self.init( - id: action.id, - name: action.name, - icon: action.icon, - isEnabled: action.enabled, - sortOrder: action.idx - ) - } -} - -extension NewFileTypeEntity { - convenience init(from newFile: NewFile) { - self.init( - id: newFile.id, - fileExtension: newFile.ext, - name: newFile.name, - icon: newFile.icon, - isEnabled: newFile.enabled, - sortOrder: newFile.idx - ) - } -} - -extension CommonDirEntity { - convenience init(from commonDir: CommonDir) { - self.init( - id: commonDir.id, - name: commonDir.name, - path: commonDir.url, - icon: commonDir.icon - ) - } -} - -extension ScriptEntity { - convenience init(from script: RCScript, sortOrder: Int = 0) { - self.init( - id: script.id, - name: script.name, - scriptType: script.scriptType.rawValue, - scriptContent: script.scriptContent, - icon: script.icon, - sortOrder: sortOrder, - isEnabled: script.enabled - ) - } -} -``` - ---- - -## 六、数据持久化配置 - -### 6.1 SwiftData 容器 - -```swift -import SwiftData - -final class SharedDataManager { - static let shared = SharedDataManager() - - let sharedModelContainer: ModelContainer = { - let schema = Schema([ - AppEntity.self, - ActionEntity.self, - NewFileTypeEntity.self, - CommonDirEntity.self, - ScriptEntity.self - ]) - - let modelConfiguration = ModelConfiguration( - schema: schema, - isStoredInMemoryOnly: false, - cloudKitDatabase: .none - ) - - do { - return try ModelContainer( - for: schema, - configurations: [modelConfiguration] - ) - } catch { - fatalError("Could not create ModelContainer: \(error)") - } - }() -} -``` - -### 6.2 应用组配置 - -为了让 Extension 也能访问数据(虽然在本架构中 Extension 不直接读取),使用应用组共享容器: - -```swift -let modelConfiguration = ModelConfiguration( - schema: schema, - isStoredInMemoryOnly: false, - containerIdentifier: "group.cn.wflixu.RClick" // App Group ID -) -``` - ---- - -## 七、参考文档 - -- **重构设计**: [../重构设计.md](../重构设计.md) -- **通信协议**: [communication-protocol.md](communication-protocol.md) -- **RCBase 实现**: [../../RClick/Model/RCBase.swift](../../RClick/Model/RCBase.swift) -- **SwiftData 实体**: [../../RClick/Model/](../../RClick/Model/) diff --git a/specs/contracts/extension-reconnect.md b/specs/contracts/extension-reconnect.md deleted file mode 100644 index cbd671f..0000000 --- a/specs/contracts/extension-reconnect.md +++ /dev/null @@ -1,520 +0,0 @@ -# FinderSync Extension 重连方案设计 - -> 创建时间:2026-03-21 -> 最后更新:2026-03-21 -> 状态:设计 v2(基于专家评审优化) -> 架构原则:**推 + 拉混合模式** - ---- - -## 一、问题背景 - -### 1.1 问题描述 - -用户反馈:**主 App 已打开,但 FinderSync Extension 没有加载**,导致右键菜单不显示。 - -### 1.2 FinderSync Extension 生命周期 - -| 阶段 | 说明 | 控制方 | -|------|------|--------| -| **加载** | 系统决定何时加载 Extension | macOS | -| **初始化** | `init()` 方法执行,注册消息处理器 | Extension | -| **监听** | `beginObservingDirectory(at:)` 被调用 | Extension | -| **菜单构建** | `menu(for:)` 每次右键时调用 | Extension | -| **卸载** | 系统资源回收时终止 | macOS | - -### 1.3 问题原因分析 - -1. **系统未激活 Extension**:Finder 可能尚未需要加载 Extension -2. **Extension 进程被终止**:内存压力或长时间未使用 -3. **消息不同步**: - - 主 App 启动了,但 Extension 还未收到 `running` 消息 - - Extension 的 `isHostAppOpen` 标志仍为 `false` -4. **心跳机制失效**:Extension 心跳发送了,但主 App 未正确响应 - ---- - -## 二、核心设计原则 - -### 2.1 四条基本原则(必须遵守) - -| 原则 | 说明 | 违反后果 | -|------|------|----------| -| **Notification ≠ 状态** | 通知只能当"信号",不能当"真相" | 丢消息=状态错乱 | -| **必须存在状态快照** | 否则无法恢复一致性 | 重启后数据丢失 | -| **Extension 必须支持主动拉取** | 不能只靠推送 | 无法自愈 | -| **所有通信必须幂等** | 重复消息不能出错 | 重复执行风险 | - -### 2.2 架构升级:从"纯推"到"推 + 拉混合" - -```mermaid -graph LR - subgraph Before["纯推送模式"] - A1[Main App] -->|发送消息| A2[Extension] - A2 -.->|靠运气接收| A1 - end - - subgraph After["推 + 拉混合模式"] - B1[Main App] <-->|发送/请求| B2[Extension] - B2 -.->|可主动拉取| B1 - end -``` - ---- - -## 三、设计方案 v2 - -### 3.1 四层防护策略 - -| 层级 | 机制 | 作用 | 状态 | -|------|------|------|------| -| L1 | **状态快照** | 主 App 保存最后菜单状态 | ✅ 新增 | -| L2 | **心跳重试** | 主 App 启动后定期发送 running | ✅ 保留 | -| L3 | **主动请求** | Extension 启动/过期时主动请求 | ✅ 新增 | -| L4 | **自动重连** | 心跳超时后自动恢复 | ✅ 保留 | -| L5 | **手动刷新** | 用户菜单触发 | ✅ 保留 | - -### 3.2 架构图 - -```mermaid -graph TB - subgraph MainApp["Main App"] - Snapshot["状态源(唯一真相)
- MenuSnapshot 缓存
- 版本计数器
- Action Handler"] - end - - MainApp -->|推送
信号| Push - MainApp -->|请求/响应
拉取补偿| Pull - MainApp -->|心跳检测
可选| Heartbeat - - subgraph Extension["FinderSync Extension"] - Cache["内存缓存(menu snapshot)"] - Render["UI 渲染(只读缓存)"] - Click["用户点击 → 发消息"] - Request["缓存过期 → 发送 request"] - end - - Push --> Cache - Pull --> Cache - Cache --> Render - Click --> MainApp - Request --> Pull -``` - ---- - -## 四、详细设计 - -### 4.1 状态快照机制(核心) - -#### 主 App 端 - -**设计要点**: -- 主 App 保存最后发送的菜单配置(内存缓存) -- 每次数据变更时更新快照和版本号 -- 响应 Extension 的 `requestConfig` 消息 -- `running` 消息携带 `MenuSnapshot` - -**实现方案**: -```swift -// RClick/RClickApp.swift -class RClickApp: NSObject, NSApplicationDelegate { - // 状态快照(真相源) - private var lastMenuSnapshot: Data? - private var menuVersion: Int = 0 - - // 状态变更时 - func updateMenuConfig() { - menuVersion += 1 - let snapshot = MenuSnapshot(version: menuVersion, config: buildMenuConfig()) - lastMenuSnapshot = try? JSONEncoder().encode(snapshot) - // 发送 running 消息时携带 snapshot - sendRunningMessage(snapshot) - } - - // 响应 Extension 的 config 请求 - func handleConfigRequest() { - if let data = lastMenuSnapshot { - Messager.shared.sendToExtension(.menuConfig, data: data) - } - } -} - -struct MenuSnapshot: Codable { - let version: Int - let config: MenuConfigPayload -} - -// 发送 running 消息 -func sendRunningMessage(_ snapshot: MenuSnapshot) { - Messager.shared.sendToExtension(.running, data: snapshot) -} -``` - -#### Extension 端 - -**设计要点**: -- 启动时主动发送 `menu.request` -- 接收 `menu.update` 时检查版本号(防重复、防乱序) -- `menu(for:)` 只读内存缓存,不做任何 IO - -**实现方案**: -```swift -// FinderSyncExt/FinderSyncExt.swift -class FinderSyncExt: FIFinderSync { - private var currentVersion: Int = 0 - private var cachedMenuConfig: MenuConfigPayload? - - override init() { - super.init() - // 启动时主动请求 - sendMenuRequest() - setupMessageHandlers() - } - - private func handleMenuUpdate(_ data: Data) { - guard let snapshot = decode(data) else { return } - - // 版本检查:只接受更新的版本 - guard snapshot.version > currentVersion else { return } - - currentVersion = snapshot.version - cachedMenuConfig = snapshot.config - } - - // 菜单构建:只读缓存 - override func menu(for menuKind: FIMenuKind) -> NSMenu { - guard let config = cachedMenuConfig else { - // 缓存为空,触发请求 - sendMenuRequest() - return NSMenu(title: "RClick (loading...)") - } - // 使用缓存构建菜单... - } -} -``` - ---- - -### 4.2 心跳重试机制(保留) - -**设计思路**: -- 主 App 启动后发送 `running` 消息(携带 `MenuSnapshot`) -- 每 5 秒重试一次,持续 30 秒(6 次) -- 确保 Extension 加载后能收到消息 - -**修改要点**: -- `running` 消息携带 `MenuSnapshot`,而非单独发送菜单配置 -- Extension 收到 `running` 后进行版本检查,更新缓存 - ---- - -### 4.3 主动请求机制(新增) - -#### 触发时机 - -| 时机 | 说明 | -|------|------| -| Extension 启动时 | `init()` 中发送 `requestConfig` | -| 缓存为空时 | `menu(for:)` 发现缓存为空 | -| 缓存过期时 | 超时未收到更新(可选:30 秒) | -| 版本不匹配时 | 检测到数据不一致 | - -#### 请求流程 - -```mermaid -sequenceDiagram - participant Ext as Extension - participant App as Main App - - Ext->>App: requestConfig - App->>App: 查找 lastMenuSnapshot - App->>Ext: menuConfig (携带配置数据) - Ext->>Ext: 版本检查 - Ext->>Ext: 缓存更新 -``` - -#### 实现方案 - -```swift -// Extension 端 -class FinderSyncExt: FIFinderSync { - private var currentVersion: Int = 0 - private var cachedMenuConfig: MenuConfigPayload? - - override init() { - super.init() - setupMessageHandlers() - // 启动时主动请求配置 - sendMenuRequest() - } - - private func handleRunning(_ data: Data?) { - guard let snapshot = decode(data) else { return } - // 版本检查:只接受更新的版本 - guard snapshot.version > currentVersion else { return } - currentVersion = snapshot.version - cachedMenuConfig = snapshot.config - } - - private func handleMenuConfig(_ data: Data?) { - guard let config = decode(data) else { return } - cachedMenuConfig = config - } - - // 菜单构建:只读缓存 - override func menu(for menuKind: FIMenuKind) -> NSMenu { - guard let config = cachedMenuConfig else { - // 缓存为空,触发请求 - sendMenuRequest() - return NSMenu(title: "RClick (loading...)") - } - // 使用缓存构建菜单... - } -} -``` - ---- - -### 4.4 自动重连机制(优化) - -**设计要点**: -- 主 App 端添加心跳超时检测(15 秒) -- 超时后标记 Extension 为离线状态 -- 用户可点击"刷新 Extension"按钮触发重连 - -**实现方案**: -```swift -// Main App 端 -private var heartbeatTimeoutTimer: Timer? -private var isExtensionOnline: Bool = false - -func handleHeartbeat() { - isExtensionOnline = true - // 重置超时定时器 - heartbeatTimeoutTimer?.invalidate() - heartbeatTimeoutTimer = Timer.scheduledTimer(withTimeInterval: 15, repeats: false) { [weak self] _ in - self?.handleHeartbeatTimeout() - } -} - -func handleHeartbeatTimeout() { - isExtensionOnline = false - // 菜单栏显示"扩展未响应" - // 用户可点击"刷新 Extension"按钮 -} - -// 用户点击"刷新 Extension"时 -func refreshExtension() { - if let snapshot = lastMenuSnapshot { - Messager.shared.sendToExtension(.running, data: snapshot) - } -} -``` - ---- - -### 4.5 手动刷新机制(保留) - -**设计要点**: -- 用户点击"刷新 Extension"按钮 -- 触发主 App 重新发送快照 -- 同时通知用户结果 - ---- - -## 五、消息协议设计 - -### 5.1 消息类型定义 - -**基于通信协议**: - -| 消息类型 | 方向 | 枚举值 | 说明 | -|---------|------|--------|------| -| `requestConfig` | Ext→App | `ExtensionToMainAction.requestConfig` | Extension 请求菜单配置 | -| `menuConfig` | App→Ext | `MainToExtensionAction.menuConfig` | 主 App 推送菜单配置 | -| `running` | App→Ext | `MainToExtensionAction.running` | 主 App 启动通知(携带 MenuSnapshot) | -| `click` | Ext→App | `ExtensionToMainAction.click` | 用户点击菜单项 | -| `heartbeat` | Ext→App | `ExtensionToMainAction.heartbeat` | 心跳消息 | - -### 5.2 菜单数据结构 - -```swift -struct MenuSnapshot: Codable { - let version: Int // 版本号,用于防重防乱序 - let config: MenuConfigPayload -} - -// running 消息携带 MenuSnapshot -func sendRunningMessage() { - let snapshot = MenuSnapshot(version: menuVersion, config: buildMenuConfig()) - Messager.shared.sendToExtension(.running, data: snapshot) -} -``` - ---- - -## 六、实施步骤 - -### Phase 1: 状态快照(P0)⭐ 核心 - -**目标**:建立"真相源" - -**步骤**: -1. 在 `RClickApp.swift` 添加 `lastMenuSnapshot` 和 `menuVersion` -2. 每次菜单配置变更时更新快照 -3. 注册 `requestConfig` 消息处理器 -4. `running` 消息携带 `MenuSnapshot` - -**验收标准**: -- [ ] 主 App 保存最后菜单状态 -- [ ] `running` 消息携带 `MenuSnapshot` -- [ ] 响应 `requestConfig` 请求时发送快照 - ---- - -### Phase 2: 主动请求(P0)⭐ 核心 - -**目标**:Extension 支持主动拉取 - -**步骤**: -1. 在 `FinderSyncExt.swift` 添加 `sendMenuRequest()` 方法 -2. `init()` 中启动时发送请求 -3. `menu(for:)` 中缓存为空时触发请求 -4. 接收更新时检查版本号 - -**验收标准**: -- [ ] Extension 启动后主动请求菜单 -- [ ] 版本检查正常工作 -- [ ] 缓存为空时自动请求 - ---- - -### Phase 3: 心跳重试(P1) - -**目标**:覆盖"刚启动"场景 - -**步骤**: -1. 在 `RClickApp.swift` 添加重试定时器 -2. 每 5 秒发送 `running` 消息(携带 `MenuSnapshot`),持续 30 秒 - -**验收标准**: -- [ ] 主 App 启动后发送 6 次 `running` 消息 - ---- - -### Phase 4: 心跳检测(P1) - -**目标**:检测 Extension 存活状态 - -**步骤**: -1. 添加心跳超时检测(15 秒) -2. 超时后标记 Extension 离线 -3. 用户可手动"刷新 Extension" - -**验收标准**: -- [ ] Extension 每 10 秒发送 `heartbeat` -- [ ] 主 App 15 秒未收到心跳,标记离线 -- [ ] 用户可点击"刷新 Extension"按钮 - ---- - -### Phase 5: 手动刷新(P2) - -**目标**:用户兜底控制 - -**步骤**: -1. 菜单栏添加"刷新 Extension"按钮 -2. 实现 `refreshExtension()` 方法 - -**验收标准**: -- [ ] 点击按钮后菜单更新 -``` - -## 七、预期效果 - -### 7.1 场景覆盖 - -| 场景 | 行为 | 结果 | -|------|------|------| -| 主 App 启动 | 发送 `running` × 6 + 保存快照 | Extension 加载后收到消息 | -| Extension 重启 | 主动发送 `requestConfig` | 立即获取最新状态 | -| 缓存为空 | `menu(for:)` 触发请求 | 自愈恢复 | -| 消息丢失 | 下次请求获取快照 | 状态一致 | -| Extension 超时 | 15 秒未收到 `heartbeat` | 标记离线,用户可刷新 | -| 用户手动刷新 | 点击菜单按钮 | 立即刷新 | - -### 7.2 能力评估 - -| 能力 | 之前 | 升级后 | -|------|------|--------| -| Extension 随机重启 | ❌ | ✅ | -| Notification 丢失 | ❌ | ✅ | -| 主 App 先启动 | ⚠️ | ✅ | -| Extension 后启动 | ⚠️ | ✅ | -| Finder 延迟加载 | ❌ | ✅ | -| 用户频繁点击 | ✅ | ✅ | -| 状态一致性 | 🟡 弱 | 🟢 接近强一致 | - ---- - -## 八、验证方法 - -### 8.1 日志检查 - -```bash -# 查看主 App 日志 -log show --predicate 'subsystem == "cn.wflixu.RClick"' --last 5m - -# 查看 Extension 日志 -log show --predicate 'subsystem == "cn.wflixu.RClick" AND category == "FinderOpen"' --last 5m -``` - -### 8.2 功能测试 - -1. **测试状态快照**: - - 启动主 App,修改菜单配置 - - 终止 Extension - - 重启 Extension,验证收到最新配置 - -2. **测试主动请求**: - - 终止 Extension - - 重启 Extension - - 观察日志中 `requestConfig` 和 `menuConfig` 消息 - -3. **测试版本检查**: - - 快速多次修改配置 - - 验证 Extension 只接受最新版本 - -4. **测试心跳检测**: - - 启动主 App 和 Extension - - 使用 `killall FinderSyncExt` 终止 Extension - - 观察主 App 是否在 15 秒后标记离线 - ---- - -## 九、注意事项 - -### 9.1 设计约束 - -1. **Notification 只是信号**:通知只能当"信号",不能当"真相" -2. **状态快照是唯一真相**:主 App 保存 `lastMenuSnapshot` 作为真相源 -3. **版本号必须单调递增**:防止乱序问题 -4. **消息处理必须幂等**:重复消息不能产生副作用 -5. **双向心跳机制**: - - Main → Ext: `running`(启动时 + 重试 6 次) - - Ext → Main: `heartbeat`(每 10 秒) - -### 9.2 工程建议 - -1. **日志记录**:所有关键操作都应记录日志 -2. **版本检查**:接收更新时检查版本号 -3. **去重机制**:使用消息 ID 防止重复处理 -4. **防抖处理**:频繁更新时 debounce(100-300ms) - ---- - -## 十、参考文档 - -- **communication-protocol.md**:通信协议设计 -- **重构设计.md**:整体架构设计 -- **重构计划.md**:实施计划 diff --git "a/specs/v2.2.0-\351\207\215\346\236\204\346\203\263\346\263\225.md" "b/specs/v2.2.0-\351\207\215\346\236\204\346\203\263\346\263\225.md" deleted file mode 100644 index 90cc50b..0000000 --- "a/specs/v2.2.0-\351\207\215\346\236\204\346\203\263\346\263\225.md" +++ /dev/null @@ -1,388 +0,0 @@ -对,如果确定采用 **Finder Extension + Main App + Helper 进程**,我建议架构不要搞成三个进程互相平等通信,而是明确一个中心: - -> **Helper 是核心服务,Main App 是控制面,Finder Extension 是 Finder 适配层。** - -这样职责最清楚。 - -## 推荐架构 - -```text - ┌──────────────────────┐ - │ Main App │ - │ Settings / UI │ - │ │ - │ • 菜单编辑 │ - │ • Action 配置 │ - │ • 脚本配置 │ - │ • 偏好设置 │ - │ • Runtime 管理 │ - └──────────┬───────────┘ - │ - ActorLink IPC - LocalSocket - │ - ▼ -┌──────────────────────┐ ┌──────────────────────┐ -│ Finder Extension │ │ Helper │ -│ │ │ RClick Runtime │ -│ • 获取 Finder 上下文 │ │ │ -│ • 请求菜单 │◀│ • MenuService │ -│ • 创建 Finder 菜单 │ │ • ActionService │ -│ • 用户点击动作 │▶│ • ScriptService │ -│ │ │ • ConfigService │ -└──────────┬───────────┘ │ • PluginService │ - │ │ • IPC Server │ - │ └──────────────────────┘ - │ - ▼ - Finder -``` - -核心原则是: - -> **所有业务逻辑尽量只存在 Helper 一份。** - ---- - -# 1. Main App:主要是 Settings,但不只是“一个配置文件编辑器” - -你的理解基本对。Main App 应该是 **Settings / Control Center**。 - -它不应该负责: - -* 生成 Finder 菜单 -* 执行 Shell -* 执行具体 Action -* 常驻后台提供业务服务 - -它主要负责让用户**管理 RClick**。 - -### Main App 的职责 - -#### 配置 - -例如: - -* 创建菜单 -* 调整菜单顺序 -* 创建 Action -* 编辑 Shell Script -* 设置图标 -* 配置快捷参数 -* 启用/禁用菜单项 - -```text -用户 - ↓ -Main App UI - ↓ -Config API - ↓ -RClick Runtime -``` - -这里我建议**配置的最终所有权也在 Helper**。 - -Main App 不直接成为“配置数据库中心”,而是: - -```swift -await runtime.updateConfig(config) -``` - -Runtime 负责验证、保存和重新加载。 - -这样以后即使 Main App 不启动,Runtime 仍然拥有完整状态。 - ---- - -#### 管理 - -Main App 还可以负责: - -* 启动/停止 Runtime -* 显示 Runtime 状态 -* 查看日志 -* 检查版本 -* 管理插件 -* 导入/导出配置 -* 恢复默认配置 - -所以更准确地说: - -> **Main App = RClick 的 Settings + Management UI。** - -而不仅仅是 Settings。 - ---- - -# 2. Helper:真正的 RClick 核心 - -我建议代码和架构中叫: - -```text -RClickRuntime -``` - -部署层面它是 Helper / Background Process。 - -但从职责来说,它是 Runtime。 - -它应该拥有所有核心能力: - -```text -RClickRuntime -│ -├── IPC Server -│ -├── ConfigService -│ -├── MenuService -│ -├── ActionService -│ -├── ScriptService -│ -├── PluginService -│ -├── PermissionService -│ -└── Logger -``` - -例如 Finder Extension 问: - -> 当前选中了这三个文件,应该显示什么菜单? - -Extension 不应该自己判断: - -```swift -if file.isImage { - ... -} -``` - -而是发送: - -```text -MenuContext - ↓ -RClickRuntime - ↓ -MenuService - ↓ -返回 MenuDefinition -``` - -Finder Extension 根据结果创建 Finder 菜单。 - -用户点击: - -```text -Finder - ↓ -Finder Extension - ↓ -ExecuteActionRequest - ↓ -RClickRuntime - ↓ -ActionService - ↓ -执行 -``` - -这样业务逻辑全部集中在一个地方。 - ---- - -# 3. Finder Extension:应该尽可能薄 - -这是三个组件中最应该“克制”的一个。 - -它只负责 Finder API。 - -可以理解为: - -> **Finder ↔ RClick Runtime 的 Adapter。** - -它负责两类事情。 - -### 获取上下文 - -例如: - -* 当前选中的文件 -* 文件 URL -* 当前目录 -* 是否多选 -* 文件类型 - -然后转换成 RClick 的通用数据: - -```swift -let context = SelectionContext(...) -``` - -发送给 Runtime。 - -### 渲染菜单 - -Runtime 返回: - -```text -MenuDefinition -├── Open Terminal -├── Copy Path -├── Git -│ ├── Commit -│ └── Push -└── Custom Script -``` - -Finder Extension 把它转换成: - -```text -NSMenu -``` - -因此 Finder Extension **知道 NSMenu,但 Runtime 不需要知道 NSMenu**。 - -这是非常重要的边界。 - -Runtime 最好只返回自己的模型: - -```swift -struct MenuItemDefinition: Codable { - let id: String - let title: String - let children: [MenuItemDefinition] -} -``` - -Extension 负责: - -```swift -MenuItemDefinition → NSMenu -``` - ---- - -# 三者的责任边界 - -| 功能 | Main App | Finder Extension | Runtime | -| -------------- | -------- | ---------------- | ------- | -| SwiftUI 设置界面 | ✅ | ❌ | ❌ | -| 编辑菜单 | ✅ UI | ❌ | ✅ 保存/验证 | -| 生成业务菜单 | ❌ | ❌ | ✅ | -| NSMenu 创建 | ❌ | ✅ | ❌ | -| 获取 Finder 选中文件 | ❌ | ✅ | ❌ | -| 判断哪些菜单可用 | ❌ | ❌ | ✅ | -| 执行 Action | ❌ | ❌ | ✅ | -| 执行 Shell | ❌ | ❌ | ✅ | -| 管理配置 | UI | ❌ | ✅ | -| 插件加载 | UI 管理 | ❌ | ✅ | -| IPC | Client | Client | Server | - -这张表基本就是整个架构的核心。 - ---- - -# Main App 到底应该直接读写配置文件吗? - -**我的建议是不直接读写。** - -例如不要这样: - -```text -Main App ──────写 JSON──────► Config File - ▲ - │ -Runtime ───────────────────────────┘ -``` - -这会产生两个问题: - -1. 谁才是配置的真正拥有者? -2. Runtime 正在读取配置时,Main App 修改怎么办? - -更好的方式: - -```text -Main App - │ - │ ActorLink - ▼ -ConfigService - │ - ▼ -Config Storage -``` - -也就是说: - -> **Runtime 是唯一的业务状态 Owner。** - -Main App 只是客户端。 - -当然 Runtime 可以把配置保存成 JSON、SQLite 或其他方式,但这是 Runtime 内部实现。 - ---- - -# 最终我推荐的职责定义 - -### Main App - -> **Configuration & Management UI** - -用户操作的控制台。 - -### Finder Extension - -> **Finder Integration Adapter** - -负责接入 Finder,不负责业务。 - -### RClick Runtime - -> **Core Business Runtime** - -真正的 RClick。 - -### ActorLink - -> **IPC Runtime** - -负责进程间通信,本身不知道 RClick 的业务。 - ---- - -所以回答你最初的问题: - -> **Main App 只配置吗?** - -**大体上是,但我会说得更准确一点:Main App 负责“配置和管理”,Helper 负责“运行和执行”。** - -这条边界非常适合 RClick: - -```text -Main App -配置、管理、观察 - -Finder Extension -接入、获取上下文、显示菜单 - -RClick Runtime -判断、处理、执行、保存状态 -``` - -我认为这比“Main App 是核心,Helper 只是辅助进程”的架构更适合 RClick。尤其未来你增加 **Quick Action、CLI 或其他入口**时,它们都只需要变成新的 Adapter: - -```text -Settings ──────┐ -FinderSync ────┤ -Quick Action ──┼── ActorLink ──► RClick Runtime -CLI ───────────┤ -未来入口 ──────┘ -``` - -这样三进程架构的核心不会变,扩展入口也不会导致业务逻辑重复。 diff --git "a/specs/v2.2.0-\351\207\215\346\236\204\350\256\241\345\210\222.md" "b/specs/v2.2.0-\351\207\215\346\236\204\350\256\241\345\210\222.md" deleted file mode 100644 index 0c6606e..0000000 --- "a/specs/v2.2.0-\351\207\215\346\236\204\350\256\241\345\210\222.md" +++ /dev/null @@ -1,189 +0,0 @@ -# RClick v2.2.0 重构计划(沙盒 App Store 方向 · 双进程 + 进程内 RCRuntime) - -> 状态:已通过两轮评审(apple-ecosystem-expert + 架构评审);**A–E 实施完成**(Phase A 分层 / B 回归 / C 沙盒 / D 授权打磨),剩余交互式 Finder 回归待手动验证 -> 来源:开发者头脑风暴 + [v2.2.0-重构想法.md](v2.2.0-重构想法.md) 建议评估 -> 日期:2026-08-23 - -## 最重要的前提(写给未来所有 Agent) - -> **双进程 = Main App + Finder Extension。RCRuntime 是 Main App 进程内部的架构层,不是独立进程 / Helper。** -> 不要把它理解成 `RClickRuntime.app`。绝不因此引入第三进程(V2 不解决"Main App 退出后仍工作"的需求,无需求无抽象)。 - ---- - -## Context - -- **上架目标 = Mac App Store** → 主 app 与扩展**必须全沙盒**,security-scoped bookmark 是唯一文件夹授权途径(已实现,只打磨不推翻)。 -- **否决三进程 Helper/Runtime 架构**:MAS 下所有进程必须沙盒,"非沙盒 helper"不可能;且"用户主动退出 app 后右键仍可用"非需求。 -- **采纳"双进程 + 进程内 RCRuntime"**:Main App 内部按 Runtime 服务层组织,业务逻辑单一所有者,Extension 保持薄 Finder 适配层。 -- 语言切换早已删除(`22dd287`);登录启动失效是 bug(`796d07f`)。 - -## 最终架构 - -```mermaid -graph TB - subgraph MainApp["RClick.app"] - UI["Settings UI"] - subgraph RT["RCRuntime(进程内,非独立进程)"] - AS["AppState
运行状态:isRunning / menuConfig / connectionState"] - CS["ConfigService
配置读写/持久化:load/save/update/reset"] - MS["MenuService"] - AcS["ActionService"] - PS["PermissionService"] - BM["BookmarkManager"] - IPC["Messenger / IPC"] - end - UI --> AS - UI --> CS - CS --> MS - MS --> AS - AcS --> PS - PS --> BM - AcS --> MS - end - IPC <-->|"DistributedNotificationCenter + HMAC"| EXT["Finder Extension
Finder 适配层 / 菜单渲染 / 事件转发"] -``` - -## 评审采纳清单 - -| # | 意见 | 采纳 | -|---|------|------| -| 1 | 明确 RCRuntime 是进程内 Runtime,非独立 Helper | ✅ 见上方"最重要的前提" | -| 2 | heartbeat 不是可靠性机制;真存活判断 = 能否完成一次请求 | ✅ 重构 C 块(见 C) | -| 3 | BookmarkManager 上再加 PermissionService 层 | ✅ E3 | -| 4 | ActionService 避免变成第二个 God Object,但不过度拆分 | ✅ E2 | -| 5 | AppState 与 ConfigService 分离 | ✅ E4 | -| 6 | 删掉 ScriptService 占位(无需求无抽象) | ✅ 已移除 | -| 7 | 沙盒单独作为高风险 Phase,不混合重构 | ✅ 执行顺序 | -| 8 | 增加完整 Bookmark 回归测试矩阵 | ✅ 验证节 | -| 9 | 补 `network.client` entitlement | ✅ D1 | -| 10 | Updater 与 MAS 冲突,MAS 版删自更新 | ✅ D4 | -| 11 | `.quit` 立即置离线 + 线程安全 | ✅ C | -| 12 | 常用目录添加时即存 bookmark(根因修复) | ✅ B4 | - ---- - -## A. 修复登录启动 - -**现状**:工作区已恢复 `LaunchAtLogin.Toggle` + `migrateLegacyLaunchAtLoginSetting()`(方向对)。 - -**改动**: -1. `LaunchAtLogin.swift` — 补警告 UI:处理 `SMAppService.mainApp.status` 全部非 `.enabled` 情形(`.requiresApproval`/`.notRegistered`/`.notFound`),覆盖"需装 /Applications"与"需用户批准"两种文案。 -2. `GeneralSettingsTabView.swift` — 登录项 footer:开关开且 status 非 `.enabled` 时显示提示。 -3. Debug 处理:`Bundle.main.bundlePath.hasPrefix("/Applications")` 快速短路 + status 兜底,避免 DerivedData 下假装成功。 - ---- - -## B. 打磨 bookmark 授权体验 - -1. `BookmarkManager.restoreBookmarks` — 区分失效:**resolve 抛错** → 删 `BookmarkEntity`;**`startAccessing` 返回 false** → 不立即删(外置盘未挂载等临时失败),重试一次或跳过。 -2. `promptForPermission` — 优化 NSOpenPanel 文案(为何需要 / 可选更上层覆盖更多 / 可在设置管理)。同步 `Localizable.xcstrings`(en/zh-Hans/ja/es)。 -3. `FolderPermissionsSheetView` — 行显示文件夹名 + 路径 + "包含所有子文件夹";改进空状态。 -4. **常用目录根因修复** — `CommonDirsSettingTabView` 添加目录时**即 `saveBookmark`**,避免沙盒下 openCommonDirs 每次点击都弹授权。 - ---- - -## C. 扩展离线 → 连接状态 UX + 操作失败明确提示 - -**原则**:**"进程活着 ≠ IPC 可用"**。heartbeat/超时**不是可靠性机制**,只是"连接状态缓存 + UX 优化";真正的存活判断 = **能否完成一次请求**。 - -**改动**(`FinderSyncExt/FinderSyncExt.swift`): -1. **连接状态缓存(UX 层)**:`lastMainActivity` 在收到 `.menuConfig`/`.running` 时更新;`connectionState = Date().timeIntervalSince(lastMainActivity) < 30` 时视为"在线"。菜单降级基于此缓存(离线 → 单个置灰项"RClick is not running" + 副标题"启动 RClick 后菜单自动恢复",本地化,优先级高于 "loading…")。这只决定**菜单展示**,不决定操作成败。 -2. **点击时的真实判断**:用户点击动作时—— - - 若 `connectionState == offline` → 直接本地 Alert "RClick 未运行,无法执行该操作"(不静默失败)。 - - 若在线但实际无响应 → 加轻量 **ack**:主 app 收到 `.click` 后回 `.actionAck`;扩展发 click 后设短超时(~3s),未收到 ack → Alert "操作未执行,RClick 无响应"。⚠️ 需在 `Messager` 协议加 `actionAck` 消息(主 app → 扩展)。 -3. **`.quit` 处理器立即置 offline**(消除"退出后 30s 假活",现在 `.quit` 只记日志)。 -4. **线程安全**:`lastMainActivity` 统一主线程读写(或加锁),Swift 6 下 DNC 回调线程写、`menu(for:)` 主线程读必须显式同步。 -5. 主 app 恢复后 ~10s 内菜单自动恢复。 - ---- - -## D. App Store 合规 + 清理 - -### D0. 开启主 app 沙盒(独立高风险 Phase,见执行顺序) -- `project.pbxproj` — 主 app Debug & Release `ENABLE_APP_SANDBOX = YES`。 -- ⚠️ 回归重点:沙盒下 bookmark 是唯一访问通道。`openApp`/`openCommonDirs` 未做门控 → E2 一并补(showAirDrop 已门控)。`openApp` 的 WezTerm 硬编码 hack 沙盒下失效,删除。 - -### D1. entitlements 清理 -- `RClick.entitlements` — 加 `com.apple.security.app-sandbox = true` 和 **`com.apple.security.network.client`**(Updater GitHub API 必需);**删** `temporary-exception.files.home-relative-path.read-write` 与 `temporary-exception.apple-events`(已验证无 Apple Events 发送代码)。保留 app-groups、bookmarks.app-scope、user-selected.read-write。 -- `RClickDebug.entitlements` — 与 Release 对齐(当前缺 `user-selected.read-write`,沙盒 Debug 授权会失效)。 -- `project.pbxproj` — 移除 `ENABLE_USER_SELECTED_FILES = readonly`(冲突)。 -- 更新 `design-bookmark-permission.md`"保持不变"一节。 - -### D2. 死代码清理 -- `MessageSecurity.swift` — 删 `SenderValidator`(死代码、bundle ID 错、DNC 无可靠发送者标识)。保留 HMAC。 -- `Messager.swift` — 删未接线的 `respondMenuConfigRequest`;**加 `actionAck` 消息**(配合 C2)。 - -### D3. 过期文档更新 -- `CLAUDE.md` — 修正 PermDir→BookmarkEntity、Models.swift→各实体、`RClick.MessageFromFinder/MessageFromApp`→`RClick.MainToExtension`/`RClick.ExtensionToMain`、MenuItemClickable.swift→已删、目录结构。 -- `重构设计.md` — 标注 FDA 方向已被 `design-bookmark-permission.md` 取代。 -- `README.md`/`SECURITY.md` — FDA→文件夹访问 bookmark 措辞。 - -### D4. Updater 与 MAS 冲突 -- `Updater.swift` 用 `Process(unzip)` + 自替换 /Applications bundle,MAS 审核违规(app 只能经 App Store 更新)。 -- **MAS 版**:删自更新,改"打开 Mac App Store 页面";**Developer ID 版**:保留。 -- 用 build config / 编译宏隔离(如 `#if !APPSTORE`),不简单删代码。 - -### D5. Info.plist 审核准备 -- 加 `LSApplicationCategoryType`。 -- 不设 `NSSupportsSuddenTermination`(避免猝死导致 `.quit` 不投递,破坏 C 块)。 - -### D6. MAS 审核说明文案准备 -给审核员准备两点说明(提交时附上): -1. **全盘监听**:扩展通过 `FIFinderSyncController.directoryURLs = ["/"]` 监听所有可达目录,是为了让 RClick 右键菜单出现在任意文件夹/磁盘(含外接盘)。FinderSync 扩展只能被 Finder 调用、不能后台常驻,不涉及用户隐私数据收集。 -2. **辅助功能 + 模拟按键**:`createFile` 后使用 Accessibility API + `CGEvent` 模拟一次回车触发 Finder 重命名,仅在新文件创建那一刻生效,需要用户在"隐私与安全性 → 辅助功能"中授权,无持续监听。 - ---- - -## E. 进程内 RCRuntime 分层(Phase A 主体) - -**改动**(新文件放 `RClick/Runtime/`,经 FileSystemSynchronizedRootGroup 自动进主 app target): - -1. **E1 `MenuService`** — 抽 `RClickApp.swift:210-239` 菜单配置构建为 `MenuService.buildConfig(state:) -> MenuConfigPayload`。 -2. **E2 `ActionService`** — 抽 `actionHandler`/`copyPath`/`deleteFoldorFile`/`hideFilesAndDirs`/`unhideFilesAndDirs`/`showAirDrop`/`createFile`/`openApp`/`openCommonDirs` 等。**避免变成 God Object**:第一版用"Service + 私有方法 + `// MARK:` 分组(FileActions / AppActions / FinderActions / SystemActions)",**不建十几个 Protocol、不拆细类**。依赖 `AppState`(只读状态)+ `PermissionService`(经协议注入)。openApp 门控:先尝试 `NSWorkspace.open`、completion 报错再弹授权重试;顺带修 `URL(fileURLWithPath: isDirectory: true)` 把文件当目录的 pre-existing bug。 -3. **E3 `PermissionService` 层(评审必改)** — ActionService 不直接依赖 `BookmarkManager`。新增 `PermissionService`(暴露 `hasAccess`/`promptForPermission`/`saveBookmark`),内部委托 `BookmarkManager`。抽协议 `PermissionProviding`,注入 mock 以可测。**理由**:今天实现是 Security-Scoped Bookmark,明天可能是 User Selected/Container,V3 非沙盒可能是 Direct File Access —— ActionService 不应感知实现。 -4. **E4 `ConfigService` 与 `AppState` 分离(评审必改)** — `AppState` = 运行状态(isRunning / menuConfig / connectionState);`ConfigService` = 配置读写/持久化(load/save/update/reset,含 SwiftData 操作)。把现 `AppState` 里的 load/save/reindex 逻辑迁到 `ConfigService`。 -5. **E5 `RCRuntime` 聚合** — 只做依赖容器/惰性初始化,持有 AppState / ConfigService / MenuService / ActionService / PermissionService / Messenger。**不是新的 God Object**,AppDelegate 按需取。 -6. **E6 `ScriptService`:不做(评审必改)** — 脚本功能未实现,不建占位。等真正做脚本时再加。保持"没有需求就没有抽象"。 -7. **E7 `Messager` 数据竞争修复** — handler 字典 `nonisolated(unsafe)` 可变字典,主线程写、DNC 回调线程读,Swift 6 下加锁或 mailbox。 - -**可测性**:`PermissionProviding` + `ActionStateProviding`(getAppItem/getActionItem/getFileType)协议注入 mock;文件操作用临时目录 fixture;`hasAccess` 前缀匹配单独单测。 - ---- - -## 执行顺序(沙盒单独成 Phase) - -1. **Phase A — 纯代码分层(不动沙盒)**:E(MenuService/ActionService/PermissionService/ConfigService/RCRuntime/Messager 数据竞争)→ A(登录)→ D2/D3(死代码 + 文档)。此阶段**非沙盒行为必须完全不变**。 -2. **Phase B — 验证非沙盒行为不变**:现有全部功能回归(文件操作、菜单、授权、登录)。 -3. **Phase C — 建立沙盒 build(高风险,单独)**:D0(开沙盒)→ D1(entitlements 含 network.client)→ D4(Updater 隔离)→ D5(Info.plist)→ D6(审核说明)。 -4. **Phase D — 沙盒下逐项验证文件操作**:跑测试矩阵 + B(授权打磨 + 常用目录根因)。 - ---- - -## 验证(端到端) - -**Bookmark 回归测试矩阵**(沙盒构建,Phase D 逐项跑): - -| 场景 \ 状态 | 未授权 | 已授权 | 重启后 | -|---|---|---|---| -| Desktop(TCC 保护) | ❌ 弹授权 | ✅ | ✅ | -| Documents | ❌ 弹授权 | ✅ | ✅ | -| Downloads | ❌ 弹授权 | ✅ | ✅ | -| 自定义文件夹 | ❌ 弹授权 | ✅ | ✅ | -| 子目录(继承父授权) | 继承 | ✅ | ✅ | -| 多选文件 | ❌ 弹授权 | ✅ | ✅ | -| 删除 | ❌ | ✅ | ✅ | -| 新建 | ❌ | ✅ | ✅ | -| 隐藏/显示 | ❌ | ✅ | ✅ | -| 打开 App(openApp 门控) | ❌ | ✅ | ✅ | -| 常用目录打开 | 添加时即授权 | ✅ | ✅ | - -> 重点:**bookmark 重启后是否仍有效**是沙盒架构最关键的单测。 - -其他验证: -- **构建**:`xcodebuild -project RClick.xcodeproj -scheme RClick -destination 'platform=macOS'`(沙盒配置,无警告/错误)。 -- **登录**:装 /Applications → 开登录项 → 重启生效;Xcode 跑 → 提示"需装 /Applications / 需批准"。 -- **降级**:退出主 app → **立即**置灰 + 点击弹"RClick 未运行";杀主 app → ≤30s 置灰;在线但 ack 超时 → "操作未执行"提示;重启 → ~10s 恢复。 -- **Updater**:MAS 版无自更新、跳 App Store;Developer ID 版自更新可用(network.client 下)。 -- **分层**:ActionService 单测(mock PermissionProviding/ActionStateProviding)通过;Phase A 后 AppDelegate 瘦身、非沙盒行为零回归。 -- **合规**:Archive 沙盒配置跑 App Store 校验(无 temporary-exception、含 network.client)。 diff --git "a/specs/\346\236\266\346\236\204\351\207\215\346\236\204\350\256\276\350\256\241\345\217\212\350\256\241\345\210\222.md" "b/specs/\346\236\266\346\236\204\351\207\215\346\236\204\350\256\276\350\256\241\345\217\212\350\256\241\345\210\222.md" deleted file mode 100644 index 15635ea..0000000 --- "a/specs/\346\236\266\346\236\204\351\207\215\346\236\204\350\256\276\350\256\241\345\217\212\350\256\241\345\210\222.md" +++ /dev/null @@ -1,116 +0,0 @@ -# RClick 架构重构设计及计划 - -> 最后更新:2026-04-06 -> 状态:设计文档已拆分 -> 架构方向:**瘦 Extension**(Slim Extension)+ **全盘监听** + **完全磁盘访问权限** - ---- - -## 文档导航 - -本重构设计已拆分为以下独立文档: - -| 文档 | 路径 | 说明 | -|------|------|------| -| **重构设计** | [重构设计.md](重构设计.md) | 整体架构设计、问题分析、设计目标、架构图 | -| **通信协议** | [contracts/communication-protocol.md](contracts/communication-protocol.md) | 详细的通信协议设计、消息类型、Messager 类 | -| **数据模型** | [contracts/data-models.md](contracts/data-models.md) | SwiftData 模型、消息传输模型、脚本执行模型 | -| **Extension 重连** | [contracts/extension-reconnect.md](contracts/extension-reconnect.md) | 状态快照、心跳机制、主动请求机制 | -| **实施计划** | [重构计划.md](重构计划.md) | 分阶段实施步骤、验证计划、时间估算 | -| **设置界面重构** | [设置界面重构设计.md](设置界面重构设计.md) | 设置界面 UI 重构设计、分组布局、折叠开关 | - ---- - -## 执行摘要 - -本重构计划的核心目标是构建**瘦 Extension 架构**: - -| 职责 | Extension | Main App | -|------|-----------|----------| -| 监听范围 | ✅ 全盘(/Users/ + 外接磁盘) | - | -| 数据读取 | ❌ 不读取 | ✅ SwiftData | -| 菜单构建 | ❌ 只渲染 | ✅ 构建配置 | -| 业务逻辑 | ❌ 无 | ✅ 全部 | -| 完全磁盘访问权限 | ❌ 不处理 | ✅ 引导用户授权 | -| 图标加载 | ✅ 根据路径 | ✅ 预加载缓存 | - -**核心原则**:Extension 只做 3 件事——监听文件目录、渲染菜单、发送事件。 - -### 预期收益 - -- Extension 内存使用 < 20MB(无 SwiftData 依赖) -- 菜单渲染时间 < 50ms -- 代码行数减少约 30% -- 维护成本降低约 40% -- 用户体验提升:一次授权全盘访问,无需手动配置许可目录 -- 新增脚本执行功能:支持 Shell/Python/AppleScript 三种脚本类型 - ---- - -## 设计原则 - -1. **单一真相源**:主 App 保存 MenuSnapshot 作为状态真相源 -2. **推拉混合模式**:主 App 推送配置,Extension 可主动请求 -3. **版本检查**:防止重复和乱序消息 -4. **幂等处理**:重复消息不产生副作用 -5. **完全磁盘访问权限**:用户手动授权,无需 Bookmark 缓存 - ---- - -## 快速开始 - -### 1. 阅读设计文档 - -首先阅读 [重构设计.md](重构设计.md) 了解整体架构和问题分析。 - -### 2. 查看实施计划 - -[重构计划.md](重构计划.md) 包含详细的实施步骤和验收标准。 - -### 3. 参考协议和模型 - -- [通信协议设计](contracts/communication-protocol.md) - 消息类型和传输格式 -- [数据模型设计](contracts/data-models.md) - SwiftData 模型和 Codable 模型 - ---- - -## 核心改进项 - -| 优先级 | 改进项 | 预计时间 | 状态 | -|--------|--------|----------|------| -| P0 | 类型安全通信协议 | 1-2 小时 | 待实施 | -| P0 | 瘦 Extension 架构 | 2-3 小时 | 待实施 | -| P0 | Extension 重连机制 | 1-2 小时 | 待实施 | -| P1 | 优化 Tag 管理 | 30 分钟 | 待实施 | -| P1 | 统一 Icon 缓存 | 1 小时 | 待实施 | -| P1 | 完全磁盘访问权限 | 30 分钟 | 待实施 | -| P1 | 脚本执行功能 | 3-4 小时 | 待实施 | -| P2 | 清理和验证 | 1 小时 | 待实施 | - -**总计**: 约 11-15 小时 - ---- - -## 关键文件 - -### 需要创建 - -- `RClick/Shared/CommunicationProtocol.swift` - 类型安全的通信协议 -- `RClick/Shared/IconCache.swift` - 统一 Icon 缓存 -- `RClick/Model/ScriptEntity.swift` - 脚本 SwiftData 实体 -- `RClick/Settings/ScriptsSettingsTabView.swift` - 脚本设置界面 - -### 需要修改 - -- `FinderSyncExt/FinderSyncExt.swift` - 精简为纯渲染层 -- `RClick/Shared/Messager.swift` - 支持类型安全消息 -- `RClick/AppState.swift` - 添加菜单配置构建和脚本管理 -- `RClick/RClickApp.swift` - 处理点击事件和脚本执行 -- `RClick/Settings/GeneralSettingsTabView.swift` - 完全磁盘访问权限引导 - ---- - -## 参考链接 - -- [CLAUDE.md](../CLAUDE.md) - 项目指南 -- [Git 分支策略](contracts/git-branch-strategy.md) - 版本管理 diff --git "a/specs/\350\256\276\347\275\256\347\225\214\351\235\242\351\207\215\346\236\204\350\256\276\350\256\241.md" "b/specs/\350\256\276\347\275\256\347\225\214\351\235\242\351\207\215\346\236\204\350\256\276\350\256\241.md" deleted file mode 100644 index 80d3c11..0000000 --- "a/specs/\350\256\276\347\275\256\347\225\214\351\235\242\351\207\215\346\236\204\350\256\276\350\256\241.md" +++ /dev/null @@ -1,200 +0,0 @@ -# RClick 设置界面重构设计 - -> 最后更新:2026-04-06 -> 状态:设计文档 -> 架构:完全磁盘访问权限 + 瘦 Extension -> 风格:macOS 系统设置风格(分组卡片式布局) - ---- - -## 一、设计目标 - -重新设计设置界面的"通用设置"部分,采用 macOS 系统设置风格(分组卡片式布局),并将"折叠上下文菜单"开关从通用设置移到每个分类里面。 - -**设计参考**: 用户提供的截图显示了 macOS 系统设置风格: -- 分组卡片式布局 -- 每组有标题和说明文字 -- 开关在右侧对齐 -- 底部有危险操作(红色文字按钮) - ---- - -## 二、通用设置新布局 - -通用设置采用三组卡片式布局: - -### 2.1 第一组:主要控制 - -| 项目 | 类型 | 说明 | -|------|------|------| -| 启用「RClick」 | Toggle 开关 | 主开关,控制扩展启用/禁用 | -| 登录时启动 | Toggle 开关 | 系统登录时自动启动 RClick | - -**注意**: -- "RClick"文案替换为"RClick" -- "登录时启动"移到"启用"之后 - -### 2.2 第二组:权限 - -| 项目 | 类型 | 说明 | -|------|------|------| -| Finder 扩展 | 状态显示 | 只读,带绿色勾选图标表示已启用 | -| 完全磁盘访问权限 | 按钮 | 点击跳转到系统设置请求权限 | -| 辅助功能 | 按钮 | 点击跳转到系统设置请求权限 | - -### 2.3 第三组:设置管理 - -| 项目 | 类型 | 说明 | -|------|------|------| -| 备份 | 按钮组 | 导出设置 / 导入设置 | -| 日志 | 按钮 | 导出日志 | -| 重置所有设置 | 文字按钮 | 红色,底部右对齐,危险操作 | - ---- - -## 三、各分类折叠开关 - -将"折叠上下文菜单"从通用设置移除,改为每个分类独立控制: - -| 分类 | 开关名称 | 存储键 | 位置 | -|------|----------|--------|------| -| Apps | 折叠应用菜单 | `foldAppsMenu` | 列表顶部 | -| Actions | 折叠动作菜单 | `foldActionsMenu` | 列表顶部 | -| New File | 折叠新建文件菜单 | `foldNewFileMenu` | 列表顶部 | -| Common Dir | 折叠常用文件夹菜单 | `foldCommonDirMenu` | 列表顶部 | -| Scripts | 折叠脚本菜单 | `foldScriptsMenu` | 列表顶部 | - -### 3.1 开关行为 - -- 默认状态:关闭(不折叠) -- 开启后:该分类的菜单项归入「RClick」子菜单 -- 状态持久化:使用 `@AppStorage` 存储 - ---- - -## 四、实施文件清单 - -| 文件 | 操作 | 说明 | -|------|------|------| -| `GeneralSettingsTabView.swift` | 重写 | 采用新分组卡片风格 | -| `AppsSettingsTabView.swift` | 修改 | 添加"折叠应用菜单"开关 | -| `ActionSettingsTabView.swift` | 修改 | 添加"折叠动作菜单"开关 | -| `NewFileSettingsTabView.swift` | 修改 | 添加"折叠新建文件菜单"开关 | -| `CommonDirsSettingTabView.swift` | 修改 | 添加"折叠常用文件夹菜单"开关 | -| `ScriptsSettingsTabView.swift` | 新建 | 脚本配置界面 + 折叠开关 | -| `AppState.swift` | 修改 | 添加 5 个新的 `@AppStorage` 属性 | - ---- - -## 五、设计规范 - -### 5.1 分组风格 - -- 使用 `Form` + `Section` 结构 -- 每组有独立的标题和背景 -- 组与组之间有明显分隔 - -### 5.2 图标状态 - -- 使用 SF Symbols 系统图标 -- `checkmark.circle.fill` (绿色) - 表示已授权/已启用 -- `circle` (灰色) - 表示未授权/未启用 -- `exclamationmark.triangle` (黄色) - 表示警告/需要注意 - -### 5.3 开关位置 - -- 每个分类列表顶部或 header 区域 -- 开关右侧对齐 -- 开关旁有说明文字 - -### 5.4 数据存储 - -- 使用 `@AppStorage` 持久化存储折叠状态 -- 键名统一使用驼峰命名 - -### 5.5 文案规范 - -- 所有文案使用中文 -- "RClick"替换为"RClick" -- 说明文字使用 `.secondary` 颜色 - ---- - -## 六、验收标准 - -- [ ] 通用设置界面与 macOS 系统设置风格一致 -- [ ] 折叠开关从通用设置中移除 -- [ ] 每个分类有独立的折叠开关(包括 Scripts) -- [ ] 所有开关状态持久化保存 -- [ ] 界面采用 SwiftUI 风格,无 AppKit 代码 -- [ ] 编译无错误和警告 -- [ ] 权限状态正确显示(绿色勾选/灰色圆圈) -- [ ] 重置所有设置按钮为红色,底部右对齐 -- [ ] 脚本设置界面支持添加/编辑/删除脚本 - ---- - -## 七、验证步骤 - -1. 编译项目无错误 -2. 运行应用,打开设置窗口 -3. 验证通用设置界面布局正确 -4. 验证各分类折叠开关存在且可用 -5. 开关状态重启后保持 -6. 验证权限状态显示正确 -7. 验证重置按钮位置和颜色正确 - ---- - -## 八、脚本设置界面设计 - -### 9.1 界面布局 - -脚本设置界面采用列表 + 编辑器的布局: - -| 区域 | 组件 | 说明 | -|------|------|------| -| 顶部 | 折叠开关 | "折叠脚本菜单"开关 | -| 列表区 | 脚本列表 | 显示所有脚本(名称、类型、启用状态) | -| 工具栏 | 添加/删除按钮 | 添加新脚本、删除选中脚本 | -| 编辑器 | 脚本编辑器 | 多行文本框,支持语法高亮(可选) | -| 底部 | 测试按钮 | 选中测试文件执行脚本 | - -### 9.2 脚本列表 - -每行显示: -- 左侧:SF Symbol 图标(根据脚本类型) -- 中间:脚本名称 + 类型标签 -- 右侧:启用/禁用开关 -- 拖拽手柄:支持上下拖动排序 - -### 9.3 脚本编辑器 - -编辑字段: -- 名称(必填) -- 类型选择器(Shell / Python / AppleScript) -- 脚本内容(多行文本框) -- 图标选择器(SF Symbol) - -### 9.4 预定义脚本模板 - -提供快速创建模板: -| 名称 | 类型 | 说明 | -|------|------|------| -| 显示文件信息 | shell | `mdls "$1"` | -| 在 VSCode 打开 | shell | `open -a "Visual Studio Code" "$@"` | -| 获取文件哈希 | shell | `shasum -a 256 "$@"` | - -### 9.5 安全提示 - -在脚本设置界面顶部添加黄色警告横幅: -> ⚠️ 安全提示:脚本以当前用户权限运行,请确保脚本来源可靠。自行承担执行风险。 - ---- - -## 九、参考文档 - -- [重构设计.md](重构设计.md) - 整体架构设计 -- [重构计划.md](重构计划.md) - 实施步骤 -- [contracts/data-models.md](contracts/data-models.md) - 数据模型设计(ScriptEntity) -- [CLAUDE.md](../CLAUDE.md) - 项目指南 diff --git "a/specs/\351\207\215\346\236\204\350\256\241\345\210\222.md" "b/specs/\351\207\215\346\236\204\350\256\241\345\210\222.md" deleted file mode 100644 index 79d728e..0000000 --- "a/specs/\351\207\215\346\236\204\350\256\241\345\210\222.md" +++ /dev/null @@ -1,1136 +0,0 @@ -# RClick 架构重构实施计划 - -> 最后更新:2026-04-08 -> 状态:实施计划(已根据专家审核更新) -> 基于:瘦 Extension 架构设计 - ---- - -## 零、专家审核意见采纳追踪 - -| 来源 | 风险/建议 | 采纳状态 | 更新位置 | -|------|----------|----------|----------| -| Security | 脚本命令注入风险 | ✅ 已采纳 | Phase 7 安全设计 | -| Security | IPC 消息伪造风险 | ✅ 已采纳 | Phase 2 消息安全 | -| Security | 权限检测不可靠 | ✅ 已采纳 | Phase 3 多点验证 | -| SRE | 快照持久化缺失 | ✅ 已采纳 | Phase 6 持久化 | -| SRE | 版本号单调性 | ✅ 已采纳 | Phase 6 持久化 | -| SRE | 心跳超时阈值过短 | ✅ 已采纳 | Phase 6 参数调整 | -| Architect | 外接磁盘动态监听 | ✅ 已采纳 | Phase 4 事件驱动 | -| Code Reviewer | Phase 顺序调整 | ✅ 已采纳 | 实施顺序调整 | - ---- - -## 一、计划摘要 - -本计划描述了 RClick 架构重构的详细实施步骤,目标是实现**瘦 Extension 架构**,将 FinderSync 扩展简化为纯渲染层。 - -### 实施顺序(v4 - 加入 Phase 0) - -| 顺序 | Phase | 优先级 | 风险 | 说明 | -|------|-------|--------|------|------| -| 0 | **Phase 0: 设计差异修复** | **P0** | **低** | **修复设计与实现差异** | -| 1 | Phase 1: 统一 Icon 缓存 | P1 | 低 | 已存在,让 Extension 使用 | -| 2 | Phase 2: IPC 消息安全加固 | P0 | 低 | 新增功能,不影响现有逻辑 | -| 3 | Phase 3: 全盘访问权限 | P1 | 中 | 只做添加,暂不删除旧代码 | -| 4 | **Phase 4: 瘦 Extension 架构** | **P0** | **高** | **核心重构** | -| 5 | Phase 5: Tag 管理优化 | P1 | 低 | Phase 4 的自然延伸 | -| 6 | Phase 6: Extension 重连机制 | P1 | 中 | 依赖 Phase 4 的菜单缓存 | -| 7 | Phase 7: 脚本执行功能 | P1 | 中 | 依赖 Phase 2 的安全消息 | -| 8 | Phase 8: 清理和验证 | P2 | 低 | 统一清理 | - -**调整理由**: - -| 调整点 | 理由 | -|--------|------| -| **新增 Phase 0** | 设计文档与实际代码存在差异,必须先修复才能继续重构 | -| **Phase 0 为 P0** | 差异修复是基础工作,影响后续所有 Phase | -| **Phase 6 风险降为中** | 改用 SwiftData 实时构建,不再需要持久化同步 | - -### 优先级说明 - -| 优先级 | 说明 | -|--------|------| -| P0 | 最高优先级,核心功能,必须完成 | -| P1 | 高优先级,重要优化 | -| P2 | 中优先级,改进体验 | - ---- - -## 二、实施阶段 - -### Phase 0: 设计与实现差异修复 ⭐⭐⭐ P0 - -> **目标**:修复设计文档与实际代码的差异,确保后续重构基于正确的基础。 - -**预计时间**:1-2 小时 - -**风险**:低 - -#### 步骤 0.1: `running` 消息携带菜单配置(P0) - -**文件**:`RClick/RClickApp.swift` - -**修改内容**: -- 第一次 `running` 发送完整 `MenuConfigPayload` -- 后续重试只携带时间戳(`RunningPayload(timestamp:)`),Extension 发现缓存过期再主动 `requestConfig` -- 减少不必要的完整配置构建和 JSON 序列化 - -**设计理由**:主 App 启动后指数退避重试 3–4 次,如果每次都要构建完整 `MenuConfigPayload`(几十个 action/app),JSON 序列化成本可能导致性能抖动。首次全量 + 后续仅时间戳的方案既保证 Extension 能快速获得配置,又避免重复传输开销。 - -**当前代码**: -```swift -// RClickApp.swift:169 -func sendObserveDirMessage() { - let directories: [String] = [] - messager.sendRunningNotification(directories: directories) -} -``` - -**修改为**: -```swift -// 第一次发送:携带完整配置 -func sendRunningMessage() { - let config = buildMenuConfig() - messager.sendToExtension(.running, data: config) -} - -// 后续重试:仅携带时间戳 -func sendRunningMessageRetry() { - let timestamp = Date().timeIntervalSince1970 - messager.sendToExtension(.running, data: RunningPayload(timestamp: timestamp)) -} - -struct RunningPayload: Codable { - let timestamp: TimeInterval -} -``` - -**Extension 端处理**: -```swift -private func handleRunning(_ data: Data?) { - // 尝试解码完整配置 - if let config = decode(data) { - applyConfig(config) - return - } - // 仅时间戳:如果本地缓存为空,主动请求 - if cachedMenuConfig == nil { - sendMenuRequest() - } -} -``` - -#### 步骤 0.2: 心跳超时阈值调整(P1) - -**文件**:`RClick/RClickApp.swift` - -**修改内容**: -- 将心跳超时从 15 秒调整为 25-30 秒 - -**当前代码**: -```swift -// RClickApp.swift:227 -heartBeatTimer = Timer.scheduledTimer(withTimeInterval: 15.0, repeats: true) -``` - -**修改为**: -```swift -heartBeatTimer = Timer.scheduledTimer(withTimeInterval: 30.0, repeats: true) -``` - -#### 步骤 0.3: 重试指数退避(P1) - -**文件**:`RClick/RClickApp.swift` - -**修改内容**: -- 将固定 5s × 6 次改为指数退避 2s→4s→8s - -**当前代码**: -```swift -// RClickApp.swift:243-265 -DispatchQueue.main.asyncAfter(deadline: .now() + 5.0) { ... } -``` - -**修改为**: -```swift -private var retryIntervals: [TimeInterval] = [2, 4, 8] -private var retryIndex: Int = 0 - -func sendRunningMessageWithExponentialBackoff() { - guard retryIndex < retryIntervals.count else { return } - sendRunningMessage() - let interval = retryIntervals[retryIndex] - retryIndex += 1 - DispatchQueue.main.asyncAfter(deadline: .now() + interval) { - self.sendRunningMessageWithExponentialBackoff() - } -} -``` - -#### 步骤 0.4: 外接磁盘动态监听(P1) - -**文件**:`FinderSyncExt/FinderSyncExt.swift` - -**修改内容**: -- 添加 `NSWorkspace.volumeDidMountNotification` 和 `volumeDidUnmountNotification` 监听 -- 添加 `updateMonitoringDirectories()` 方法动态更新监听目录 - -#### 验收标准 - -- [ ] `running` 消息携带 `MenuConfigPayload` -- [ ] 心跳超时阈值调整为 25-30 秒 -- [ ] 重试采用指数退避(2s→4s→8s) -- [ ] 外接磁盘插拔时自动更新监听目录 - ---- - -### Phase 1: 统一 Icon 缓存 ⭐⭐ P1 - -> **状态**:部分完成 - `IconCache.swift` 已存在,需让 Extension 使用。 - -**目标**: 消除重复代码,统一图标加载 - -**预计时间**: 1 小时 - -**风险**: 低 - -#### 步骤 1.1: 创建统一 Icon 缓存 - -**文件**: `RClick/Shared/IconCache.swift` - -**状态**: ✅ 已完成 - -#### 步骤 1.2: 删除重复实现 - -**文件**: -- `FinderSyncExt/FinderSyncExt.swift` - 删除 IconCache 类(如有) -- `RClick/Shared/Messager.swift` - 删除 IconCacheManager(如有) - -#### 步骤 1.3: 使用统一缓存 - -**修改内容**: -- 所有图标加载使用 `IconCache.shared` - -#### 验收标准 - -- [ ] 只有一个 IconCache 实现 -- [ ] 图标加载正常工作 - ---- - -### Phase 2: IPC 消息安全加固 ⭐⭐⭐ P0 - -**目标**:防止消息伪造,确保 IPC 通信安全 - -**预计时间**:2-3 小时 - -**风险**:低 - -#### 步骤 2.1: 创建消息安全模块 - -**文件**:`RClick/Shared/MessageSecurity.swift` - -**内容**: -- 实现 HMAC-SHA256 签名算法 -- 实现 `SignedPayload` 泛型结构 -- 实现签名验证函数 - -#### 步骤 2.2: 更新 Messager 类 - -**文件**:`RClick/Shared/Messager.swift` - -**修改内容**: -- 发送消息时自动添加签名 -- 接收消息时验证签名 -- 签名失败时记录日志并丢弃消息 - -#### 步骤 2.3: 更新发送者验证 - -**文件**:`RClick/Shared/Messager.swift` - -**修改内容**: -- 验证发送者 Bundle ID -- 只接受来自 RClick 主程序或 FinderSyncExt 的消息 - -#### 验收标准 - -- [ ] 消息签名和验证正常 -- [ ] 伪造消息被正确拒绝 -- [ ] 签名失败日志正常记录 - ---- - -### Phase 3: 全盘访问权限 ⭐⭐ P1 - -> **状态**:✅ 已完成 - PermissionChecker 模块已创建,多点验证正常工作。 - -**目标**: 请求完全磁盘访问权限,无需 Bookmark 缓存 - -**预计时间**: 1 小时 - -**风险**: 中等 - -#### 步骤 3.1: 创建权限检查模块(多点验证) - -**文件**: `RClick/Shared/PermissionChecker.swift` - -**修改内容**: -- 实现多点权限验证(4 个检测点交叉验证) -- 实现实际文件操作测试 -- 实现打开系统设置函数 - -**状态**: ✅ 已完成 - -#### 步骤 3.2: 更新设置界面 - -**文件**: `RClick/Settings/GeneralSettingsTabView.swift` - -**修改内容**: -- 使用 `PermissionChecker.hasFullDiskAccess()` 检测权限 -- 显示权限状态(绿色勾选图标或"前往设置"按钮) - -**状态**: ✅ 已完成 - -#### 步骤 3.3: 更新 entitlements 配置 - -**文件**: `RClick/RClick.entitlements` - -**说明**: 不需要额外的 entitlement,完全磁盘访问权限由用户手动授权 - -#### 验收标准 - -- [x] 设置界面显示完全磁盘访问权限状态 -- [x] 点击按钮可跳转到系统设置 -- [x] 多点验证正常工作(4 个检测点) -- [x] 授权后功能正常工作 -- [ ] **注意**:旧 Bookmark 代码暂不删除,等 Phase 4 完成后再清理 - ---- - -### Phase 4: 瘦 Extension 架构 ⭐⭐⭐ P0 - -**目标**: Extension 只负责渲染和事件转发 - -**预计时间**: 2-3 小时 - -**风险**: 高 - -#### 步骤 4.1: 更新 FinderSyncExt - -**文件**: `FinderSyncExt/FinderSyncExt.swift` - -**修改内容**: -- 删除 SwiftData 读取逻辑 -- 添加 `menuConfig` 内存缓存 -- 实现 `setupMessageHandlers()` -- 实现纯渲染的 `menu(for:)` 方法 -- 实现全盘监听逻辑(`/Users/` + 外接磁盘) -- 添加 `setupVolumeChangeObserver()` 动态监听磁盘挂载/卸载 -- 添加外接磁盘刷新按钮的支持方法 `refreshMonitoringDirectories()` - -> ⚠️ **注意**: `FIFinderSyncController.default().directoryURLs` 的设置可能不会立即生效,有时需要重启 Finder。因此提供手动刷新方法供设置界面调用。 - -#### 步骤 4.2: 更新 AppState - -**文件**: `RClick/AppState.swift` - -**修改内容**: -- 添加 `buildMenuConfig()` 方法 -- 删除 `dirs`(许可目录)相关的属性和方法 -- 删除 `notifyExtensionMenuUpdate()` 方法及相关调用 - -#### 步骤 4.3: 更新 RClickApp - -**文件**: `RClick/RClickApp.swift` - -**修改内容**: -- 添加 `sendMenuConfig()` 方法 -- 添加 `handleClickEvent()` 方法 - -#### 验收标准 - -- [ ] Extension 不读取任何 SwiftData -- [ ] 菜单配置由主程序构建并发送 -- [ ] Extension 正确渲染菜单 - ---- - -### Phase 5: Tag 管理优化 ⭐⭐ P1 - -**目标**: 消除随机数冲突风险 - -**预计时间**: 30 分钟 - -**风险**: 极低 - -#### 步骤 5.1: 修改 Tag 生成逻辑 - -**文件**: `FinderSyncExt/FinderSyncExt.swift` - -**修改内容**: -- 添加 `nextTag` 计数器 -- 将随机 tag 改为递增 tag - -#### 验收标准 - -- [ ] Tag 使用递增方式生成 -- [ ] 无随机数冲突风险 - ---- - -### Phase 6: Extension 重连机制 ⭐⭐ P1 - -**目标**:解决主 App 已打开但 Extension 未加载的问题 - -**预计时间**:2-3 小时 - -**风险**:低 - -#### 设计原则(必须遵守) - -| 原则 | 说明 | 违反后果 | -|------|------|----------| -| **Notification ≠ 状态** | 通知只能当"信号",不能当"真相" | 丢消息=状态错乱 | -| **单一持久化源** | 业务数据只存 SwiftData,快照实时构建 | 双写一致性风险 | -| **Extension 必须支持主动拉取** | 不能只靠推送 | 无法自愈 | -| **所有通信必须幂等** | 重复消息不能出错 | 重复执行风险 | -| **时间戳防乱序** | 用时间戳判断配置新旧,拒绝旧配置 | 乱序覆盖问题 | - -#### 步骤 6.1: 实时构建配置机制(P0)⭐ 核心 - -**文件**:`RClick/RClickApp.swift` - -**修改内容**: -- 添加 `buildMenuConfig()` 方法从 SwiftData 实时构建 -- 添加内存缓存和 `lastBuildTime` 用于防抖(1秒内不重复构建) -- `MenuConfigPayload` 添加 `timestamp: TimeInterval` 字段 -- 注册 `requestConfig` 消息处理器,调用 `buildMenuConfig()` 发送 - -**核心设计**: - -```swift -// 内存缓存(仅用于防抖) -private var cachedMenuConfig: MenuConfigPayload? -private var lastBuildTime: TimeInterval = 0 - -/// 构建菜单配置(从 SwiftData 实时构建) -func buildMenuConfig() -> MenuConfigPayload { - let now = Date().timeIntervalSince1970 - - // 如果 1 秒内已构建过,直接返回缓存(防抖) - if now - lastBuildTime < 1.0, let cached = cachedMenuConfig { - return cached - } - - // 从 SwiftData 读取数据 - let actions = appState.actions.map { $0.toActionMenuItem() } - let apps = appState.apps.map { $0.toAppMenuItem() } - let newFiles = appState.newFiles.map { NewFileMenuItem(...) } - let commonDirs = appState.cdirs.map { CommonDirMenuItem(...) } - - let config = MenuConfigPayload( - timestamp: now, - actions: actions, - apps: apps, - newFiles: newFiles, - commonDirs: commonDirs - ) - - cachedMenuConfig = config - lastBuildTime = now - - return config -} - -// 响应 Extension 的 config 请求 -func handleConfigRequest() { - let config = buildMenuConfig() - messager.sendMenuConfig(config) -} - -// 发送 running 消息时携带当前配置 -func sendRunningMessage() { - let config = buildMenuConfig() - messager.sendToExtension(.running, data: config) -} -``` - -**优势**: -- 单一持久化源(SwiftData),无一致性风险 -- 实时构建毫秒级,无额外存储开销 -- 时间戳防乱序,无需维护递增版本号 - -#### 步骤 6.2: 主动请求机制(P0)⭐ 核心 - -**文件**:`FinderSyncExt/FinderSyncExt.swift` - -**修改内容**: -- 添加 `sendMenuRequest()` 方法 -- `init()` 中启动时发送请求 -- `menu(for:)` 中缓存为空时触发请求 -- 接收更新时检查时间戳(防乱序) - -```swift -class FinderSyncExt: FIFinderSync { - private var currentTimestamp: TimeInterval = 0 - private var cachedMenuConfig: MenuConfigPayload? - - override init() { - super.init() - setupMessageHandlers() - // 启动时主动请求配置 - sendMenuRequest() - } - - private func handleRunning(_ data: Data?) { - guard let config = decode(data) else { return } - // 时间戳检查:只接受更新的配置 - guard config.timestamp > currentTimestamp else { - logger.info("Ignoring outdated config") - return - } - currentTimestamp = config.timestamp - cachedMenuConfig = config - } - - private func handleMenuConfig(_ data: Data?) { - guard let config = decode(data) else { return } - // 时间戳检查 - guard config.timestamp > currentTimestamp else { return } - currentTimestamp = config.timestamp - cachedMenuConfig = config - } - - // 菜单构建:只读缓存 - override func menu(for menuKind: FIMenuKind) -> NSMenu { - guard let config = cachedMenuConfig else { - // 缓存为空,触发请求 - sendMenuRequest() - return NSMenu(title: "RClick (loading...)") - } - // 使用缓存构建菜单... - } -} -``` - -#### 步骤 6.3: 心跳机制(P1) - -**文件**:`RClick/RClickApp.swift` 和 `FinderSyncExt/FinderSyncExt.swift` - -**修改内容**: -- **Main App 端**: - - 在 `applicationDidFinishLaunching` 中发送 `running` 消息(携带 `MenuConfigPayload`) - - 启动重试定时器:指数退避(2s→4s→8s),总时长 14 秒 - - 注册 `heartbeat` 消息处理器,重置超时定时器(25-30 秒) - -- **Extension 端**: - - 启动定时器:每 10 秒发送 `heartbeat` 给主程序 - -```swift -// Main App 端 -private var heartbeatTimeoutTimer: Timer? -private var isExtensionOnline: Bool = false - -func handleHeartbeat() { - isExtensionOnline = true - // 重置超时定时器 - heartbeatTimeoutTimer?.invalidate() - heartbeatTimeoutTimer = Timer.scheduledTimer(withTimeInterval: 15, repeats: false) { [weak self] _ in - self?.handleHeartbeatTimeout() - } -} - -// Extension 端 -Timer.scheduledTimer(withTimeInterval: 10, repeats: true) { _ in - Messager.shared.sendToMain(.heartbeat) -} -``` - -#### 步骤 6.4: 自动重连机制(P1) - -**文件**:`RClick/RClickApp.swift` - -**修改内容**: -- 添加心跳超时检测(15 秒) -- 超时后标记 Extension 为离线状态,菜单栏显示"扩展未响应" - -```swift -// Main App 端 - 心跳超时处理 -private func handleHeartbeatTimeout() { - // 15 秒未收到心跳,标记 Extension 离线 - isExtensionOnline = false - // 菜单栏显示"扩展未响应" - // 用户可点击"重新加载扩展"按钮 -} - -// 用户点击"重新加载扩展"时 -private func refreshExtension() { - // 发送 running + menuConfig,尝试重新连接 - sendRunningMessageWithRetry() -} -``` - -**心跳方向说明**: - -| 方向 | 消息类型 | 频率 | 目的 | -|------|----------|------|------| -| Main → Ext | `running` | 启动时 + 重试 3-4 次(指数退避:2s→4s→8s) | 告知 Extension 主程序已启动 | -| Ext → Main | `heartbeat` | 每 10 秒 | 告知主程序 Extension 存活 | - -**参数调整说明**: -- **重试次数**:从 6 次减少到 3-4 次,减少用户等待时间 -- **重试间隔**:采用指数退避(2s, 4s, 8s),总时长从 30 秒降至 14 秒 -- **超时阈值**:从 15 秒调整为 25-30 秒(心跳间隔的 2.5-3 倍),避免误判 - -#### 步骤 6.5: 菜单强制刷新(P2) - -**文件**:`RClick/Settings/MenuBarView.swift` 或菜单栏组件 - -**修改内容**: -- 在菜单栏添加"刷新 Extension"按钮 -- 实现 `refreshExtension()` 方法,发送 `running` + 当前配置 - -```swift -// 用户点击"刷新 Extension"时调用 -private func refreshExtension() { - // 重新发送 running 消息,携带当前配置 - let config = buildMenuConfig() - messager.sendToExtension(.running, data: config) -} -``` - -#### 验收标准 - -- [ ] `buildMenuConfig()` 从 SwiftData 实时构建配置 -- [ ] `MenuConfigPayload` 包含 `timestamp` 字段 -- [ ] Extension 启动后主动请求菜单 -- [ ] 时间戳检查正常工作(防乱序) -- [ ] 缓存为空时自动请求 -- [ ] 主 App 启动后指数退避重试(2s→4s→8s) -- [ ] Extension 每 10 秒发送 `heartbeat` 给主 App -- [ ] 主 App 25-30 秒未收到心跳,标记 Extension 离线 - ---- - -### Phase 8: 清理和验证 ⭐ P2 - -**目标**:删除旧代码,验证功能 - -**预计时间**:1-2 小时 - -**风险**:无 - -#### 步骤 8.1: 删除旧代码 - -**删除内容**: -1. FinderSyncExt 中的 IconCache 类 -2. Messager 中的 IconCacheManager 类 -3. ActionMenuItem 和 AppMenuItem 转换代码 -4. `notifyExtensionMenuUpdate()` 方法 -5. UserDefaults 中的菜单配置存储逻辑 -6. PermDirEntity / PermissiveDirEntity 相关的 UI 设置代码 -7. BookmarkManager 相关代码 -8. 旧的单一检测点权限检查代码 -9. 无签名的消息发送代码 - -**保留内容**: -- 向后兼容的消息解析代码(过渡期保留) -- 旧代码的注释说明(便于回滚参考) - -#### 步骤 8.2: 功能验证 - -**测试清单**: -- [ ] 编译测试 -- [ ] 功能测试(见三、验证计划) -- [ ] 性能测试(见三、验证计划) -- [ ] 安全测试(脚本执行、消息签名) - ---- - -## 三、验证计划 - -### 3.1 编译测试 - -```bash -# 清理构建 -xcodebuild clean -project RClick.xcodeproj -scheme RClick - -# 编译 Main App -xcodebuild build -project RClick.xcodeproj -scheme RClick -destination 'platform=macOS' - -# 编译 Extension -xcodebuild build -project RClick.xcodeproj -scheme FinderSyncExt -destination 'platform=macOS' -``` - -### 3.2 功能测试清单 - -#### Extension 启动测试 - -- [ ] Extension 成功初始化 -- [ ] 发送 heartbeat 给主程序 -- [ ] 接收主程序发送的菜单配置 -- [ ] **全盘监听**: 验证 `/Users/` 被添加为监听目录 -- [ ] **外接磁盘**: 插入外接磁盘,验证自动添加为监听目录 - -#### 菜单创建测试 - -- [ ] 右键菜单显示正确的动作项 -- [ ] 右键菜单显示正确的应用项 -- [ ] 图标正确加载 - -#### 配置更新测试 - -- [ ] 在 Main App 中添加新应用,Extension 菜单更新 -- [ ] 在 Main App 中修改动作配置,Extension 菜单更新 - -#### 动作执行测试 - -- [ ] 点击"Copy Path"正确复制路径 -- [ ] 点击应用正确打开文件 -- [ ] Tag 正确关联到动作 - -#### 权限处理测试 - -**完全磁盘访问权限模式**(无需 Bookmark 缓存): - -- [ ] **完全磁盘访问权限**:设置界面显示权限状态 -- [ ] **权限引导**:点击按钮可跳转到系统设置 -- [ ] **权限检测**:多点验证正常工作(3 个检测点) -- [ ] **无 Bookmark 缓存**:确认代码中已删除 Bookmark 相关逻辑 - -#### 错误处理测试 - -- [ ] Main App 未启动时 Extension 行为 -- [ ] 消息丢失时的降级处理 -- [ ] 心跳超时检测(25-30 秒阈值) -- [ ] **新增**:快照持久化恢复测试 -- [ ] **新增**:版本号回滚防护测试 - -### 3.3 性能测试 - -- [ ] 菜单创建时间:< 50ms -- [ ] 图标加载时间:< 50ms/个 -- [ ] Extension 内存使用:< 20MB -- [ ] 消息传递延迟:< 100ms -- [ ] **新增**:消息签名/验证开销:< 10ms - -### 3.4 日志检查 - -查看 Console.app,验证: - -- [ ] Extension 成功接收菜单配置 -- [ ] 菜单数据正确加载 -- [ ] 消息正确发送和接收 -- [ ] 错误被正确处理和记录 -- [ ] **新增**:签名失败日志正常记录 - -### 3.5 安全测试(新增) - -**脚本执行安全**: -- [ ] 危险命令检测正常工作 -- [ ] 执行前用户确认对话框显示 -- [ ] 脚本超时 30 秒自动终止 -- [ ] 脚本文件存储权限正确(chmod 500) - -**IPC 消息安全**: -- [ ] 伪造消息被正确拒绝 -- [ ] 消息签名验证正常 -- [ ] 发送者身份验证正常 - -### 3.6 故障场景测试(新增) - -- [ ] Extension 进程强制重启 -- [ ] Main App 崩溃重启 -- [ ] 外接磁盘插拔 -- [ ] 权限被撤销 -- [ ] SwiftData 损坏 -- [ ] 100+ 文件菜单渲染 - ---- - -## 四、关键文件清单 - -### 需要创建的文件 - -1. `RClick/Shared/MessageSecurity.swift` - IPC 消息签名验证(Phase 2) -2. `RClick/Shared/PermissionChecker.swift` - 完全磁盘访问权限多点验证(Phase 3) -3. `RClick/Shared/ScriptExecutor.swift` - 脚本执行安全模块(Phase 7) -4. `RClick/Model/ScriptEntity.swift` - 脚本实体(Phase 7) -5. `RClick/Settings/ScriptsSettingsTabView.swift` - 脚本设置界面(Phase 7) - -**注**:`IconCache.swift` 已存在,无需创建(Phase 1)。 - -### 需要修改的文件 - -1. **FinderSyncExt/FinderSyncExt.swift** - - Phase 1:使用 `IconCache.shared` 统一图标加载 - - Phase 4:删除 SwiftData 读取逻辑,实现瘦 Extension 架构 - - Phase 5:优化 Tag 管理(使用递增 ID) - -2. **RClick/Shared/Messager.swift** - - Phase 2:添加消息签名和验证逻辑 - - Phase 1:删除 IconCacheManager(如有) - -3. **RClick/AppState.swift** - - Phase 4:添加 `buildMenuConfig()` 方法 - - Phase 4:删除 `dirs` 相关属性和方法 - -4. **RClick/RClickApp.swift** - - Phase 3:添加完全磁盘访问权限检测逻辑 - - Phase 4:添加 `sendMenuConfig()` 和 `handleClickEvent()` 方法 - - Phase 6:心跳重试和超时检测机制 - -5. **RClick/Settings/GeneralSettingsTabView.swift** - - Phase 3:使用 `PermissionChecker` 多点验证权限 - ---- - -## 五、风险评估与缓解 - -### 5.1 破坏性变更 - -**风险**: 通信协议重构可能影响兼容性 - -**级别**: 中等 - -**缓解**: -- Enum 的 rawValue 保持与原有字符串相同 -- 支持向后兼容的消息解析 -- 逐步迁移,保留过渡期 - -### 5.2 消息同步 - -**风险**: 主程序和 Extension 消息不同步 - -**级别**: 中等 - -**缓解**: -- 使用心跳机制确认连接 -- 主程序启动时主动发送配置 -- Extension 定期请求配置刷新 - -### 5.3 性能影响 - -**风险**: 消息传递可能比直接读取慢 - -**级别**: 低 - -**缓解**: -- 使用内存缓存,减少消息频率 -- 只在配置变更时发送完整配置 -- 实测性能,优化消息频率 - ---- - -## 六、时间估算 - -### 6.1 按实施顺序排列 - -| 顺序 | 阶段 | 预计时间 | 优先级 | 风险 | -|------|------|----------|--------|------| -| 0 | **Phase 0: 设计差异修复** | **1-2 小时** | **P0** | **低** | -| 1 | Phase 1: 统一 Icon 缓存 | 1 小时 | P1 | 低 | -| 2 | Phase 2: IPC 消息安全加固 | 2-3 小时 | P0 | 低 | -| 3 | Phase 3: 全盘访问权限 | 1 小时 | P1 | 中 | -| 4 | **Phase 4: 瘦 Extension 架构** | **2-3 小时** | **P0** | **高** | -| 5 | Phase 5: Tag 管理优化 | 30 分钟 | P1 | 低 | -| 6 | Phase 6: Extension 重连机制 | 2-3 小时 | P1 | 中 | -| 7 | Phase 7: 脚本执行功能 | 4-5 小时 | P1 | 中 | -| 8 | Phase 8: 清理和验证 | 1 小时 | P2 | 低 | -| **总计** | - | **16-22 小时** | - | - | - -### 6.2 按优先级排列 - -| 优先级 | 阶段 | 预计时间 | -|--------|------|----------| -| P0 | Phase 2: IPC 消息安全加固 | 2-3 小时 | -| P0 | Phase 4: 瘦 Extension 架构 | 2-3 小时 | -| P1 | Phase 1: 统一 Icon 缓存 | 1 小时 | -| P1 | Phase 3: 全盘访问权限 | 1 小时 | -| P1 | Phase 5: Tag 管理优化 | 30 分钟 | -| P1 | Phase 6: Extension 重连机制 | 2-3 小时 | -| P1 | Phase 7: 脚本执行功能 | 4-5 小时 | -| P2 | Phase 8: 清理和验证 | 1 小时 | - -**时间调整说明**: -- Phase 2:IPC 消息安全加固,2-3 小时(新增) -- Phase 3:从 30 分钟增加到 1 小时(多点验证) -- Phase 4:瘦 Extension 架构,2-3 小时(核心重构) -- Phase 6:从 1-2 小时增加到 2-3 小时(持久化设计) -- Phase 7:从 3-4 小时增加到 4-5 小时(安全加固) - ---- - -## 七、参考文档 - -- **重构设计**: [../重构设计.md](../重构设计.md) -- **通信协议**: [contracts/communication-protocol.md](contracts/communication-protocol.md) -- **数据模型**: [contracts/data-models.md](contracts/data-models.md) -- **Extension 重连**: [contracts/extension-reconnect.md](contracts/extension-reconnect.md) -- **消息安全**: [contracts/message-security.md](contracts/message-security.md)(待创建) -- **脚本执行安全**: [contracts/script-execution-security.md](contracts/script-execution-security.md)(待创建) - ---- - -## 八、脚本执行功能实施计划 - -### Phase 7: 脚本执行功能 ⭐⭐ P1 - -**目标**: 支持用户自定义脚本,通过右键菜单执行 - -**预计时间**: 4-5 小时 - -**风险**: 中等 - -#### 步骤 7.1: 创建 ScriptEntity - -**文件**: `RClick/Model/ScriptEntity.swift` - -**内容**: -```swift -@Model -final class ScriptEntity { - @Attribute(.unique) var id: String - var name: String - var scriptType: String // "shell" | "python" | "applescript" - var scriptContent: String - var icon: String - var sortOrder: Int - var isEnabled: Bool -} -``` - -#### 步骤 7.2: 添加 RCScript 内存模型 - -**文件**: `RClick/Model/RCBase.swift` - -**修改内容**: -- 添加 `RCScript` 结构 -- 添加 `ScriptType` 枚举 -- 添加 `RCScript` ↔ `ScriptEntity` 转换扩展 - -#### 步骤 7.3: 添加 ScriptMenuItem 消息模型 - -**文件**: `RClick/Shared/CommunicationProtocol.swift` - -**修改内容**: -- 添加 `ScriptMenuItem` 结构 -- 在 `MenuConfigPayload` 中添加 `scripts: [ScriptMenuItem]` -- 在 `MenuItemType` 中添加 `case script` - -#### 步骤 7.4: 更新 AppState - -**文件**: `RClick/AppState.swift` - -**修改内容**: -- 添加 `@Published var scripts: [RCScript]` -- 添加 `save()` 和 `load()` 方法 -- 添加 `buildMenuConfig()` 方法中构建脚本菜单 - -#### 步骤 7.5: 更新 RClickApp - -**文件**: `RClick/RClickApp.swift` - -**修改内容**: -- 添加 `executeScript()` 方法 -- 实现 Shell 脚本执行 -- 实现 Python 脚本执行 -- 实现 AppleScript 执行 -- 在 `handleClickEvent()` 中处理 script 类型点击 -- ⚠️ **重要**: 所有脚本执行必须在后台线程(`DispatchQueue.global()` 或 `async/await`)中调用,`process.waitUntilExit()` 在主线程会阻塞界面 - -#### 步骤 7.6: 更新 FinderSyncExt - -**文件**: `FinderSyncExt/FinderSyncExt.swift` - -**修改内容**: -- 在菜单中添加"执行脚本"项(二级菜单) -- 渲染脚本子菜单 -- 点击时发送 `click` 事件(type 为 `script`) - -#### 步骤 7.7: 创建脚本设置界面 - -**文件**: `RClick/Settings/ScriptsSettingsTabView.swift` - -**内容**: -- 脚本列表(名称、类型、启用状态) -- 添加/编辑/删除脚本 -- 上下拖动排序 -- 脚本编辑器(多行文本框) -- 测试按钮 - -#### 步骤 7.8: 脚本执行安全加固(P0 - 必须实施) - -**文件**: `RClick/Shared/ScriptExecutor.swift` - -**内容**: - -**1. 危险命令检测**: -```swift -func detectDangerousCommands(_ scriptContent: String) -> [String] { - let dangerousPatterns = [ - "rm -rf /", "rm -rf ~", "sudo", - "dd if=/dev/zero", ":(){ :|:& };:", - "> /dev/disk", "mkfs", "newfs" - ] - return dangerousPatterns.filter { scriptContent.contains($0) } -} -``` - -**2. 执行前用户确认**: -```swift -func confirmScriptExecution(script: RCScript, files: [String]) -> Bool { - let alert = NSAlert() - alert.messageText = "确认执行脚本?" - alert.informativeText = """ - 脚本名称:\(script.name) - 脚本内容预览:\(script.scriptContent.prefix(200))... - 将处理 \(files.count) 个文件 - """ - return alert.runModal() == .alertFirstButtonReturn -} -``` - -**3. 执行超时控制(后台线程)**: -> ⚠️ **必须在后台线程调用**(`async/await` 或 `DispatchQueue.global`),`process.waitUntilExit()` 在主线程会阻塞界面。 -```swift -func executeScriptWithTimeout(_ script: String, files: [String], timeout: TimeInterval = 30) async throws { - try await withCheckedThrowingContinuation { continuation in - DispatchQueue.global(qos: .userInitiated).async { - let process = Process() - process.executableURL = URL(fileURLWithPath: "/bin/bash") - process.arguments = ["-c", script, "--"] + files - - let pipe = Pipe() - process.standardOutput = pipe - process.standardError = pipe - - do { - try process.run() - - DispatchQueue.global().asyncAfter(deadline: .now() + timeout) { - if process.isRunning { process.terminate() } - } - - process.waitUntilExit() // 在后台线程阻塞是安全的 - continuation.resume(returning: ()) - } catch { - continuation.resume(throwing: error) - } - } - } -} -``` - -**4. 脚本存储安全**: -```swift -func saveScriptToFile(_ content: String, to url: URL) throws { - // 写入沙盒内目录 - // 设置只读权限(chmod 500) -} -``` - -**5. 脚本沙箱(可选增强)**: -> ⚠️ `sandbox-exec` 需要 macOS 特定的 sandbox profile 配置文件,不同 macOS 版本可能存在兼容性差异。作为可选增强功能,基础安全由"执行前用户确认"和"危险命令检测"保障。 - -#### 验收标准 - -- [ ] ScriptEntity 正确创建和存储 -- [ ] 脚本配置正确保存和加载 -- [ ] 右键菜单显示"执行脚本"二级菜单 -- [ ] **执行前显示用户确认对话框** -- [ ] **危险命令检测正常工作** -- [ ] **脚本执行超时自动终止(30 秒)** -- [ ] **脚本文件存储权限正确(chmod 500)** -- [ ] 点击脚本正确执行 -- [ ] Shell 脚本执行正常 -- [ ] Python 脚本执行正常 -- [ ] AppleScript 执行正常 -- [ ] 设置界面可添加/编辑/删除脚本 -- [ ] 脚本按 sortOrder 排序 -- [ ] 编译无错误和警告 - -### 8.1 脚本执行安全考虑 - -**安全限制**: -1. 脚本以当前用户权限运行(无 sudo) -2. 脚本执行前不经过沙盒限制(需要完全磁盘访问权限) -3. 用户自行承担脚本执行风险 - -**建议**: -- 在设置界面添加安全提示 -- 提供脚本执行日志 -- 支持脚本执行超时(默认 30 秒) - -### 8.2 脚本模板 - -**预定义脚本模板**(可选): -| 名称 | 类型 | 说明 | -|------|------|------| -| 显示文件信息 | shell | `mdls "$1"` | -| 在 VSCode 打开 | shell | `open -a "Visual Studio Code" "$@"` | -| 获取文件哈希 | shell | `shasum -a 256 "$@"` | -| 批量重命名(小写) | shell | `for f in "$@"; do mv "$f" "${f,,}"; done` | - -用户可以从模板快速创建脚本,然后修改内容。 - -### 8.3 预留设计(当前不实施) - -> 以下设计当前暂不实施,但已在架构中预留扩展点,便于后续演进。 - -#### 8.3.1 增量更新预留字段 - -在 `MenuConfigPayload` 中预留 `updateType` 字段: - -```swift -struct MenuConfigPayload: Codable { - let timestamp: TimeInterval - let updateType: UpdateType = .full // 预留 - let actions: [ActionMenuItem] - // ... -} - -enum UpdateType: String, Codable { - case full // 全量推送(当前使用) - case incremental // 增量更新(预留) -} -``` - -#### 8.3.2 图标缓存预热预留 - -在 `AppMenuItem` 中预留 `iconPath` 字段: - -```swift -struct AppMenuItem: Codable { - let id: String - let name: String - let appURL: URL - let iconPath: String? // 预留:预解析的图标路径 -} -``` - -#### 8.3.3 Extension 降级模式预留 - -预留 Extension 在主程序无响应时的应急菜单机制(详见重构设计 7.4.3)。 - -#### 8.3.4 Extension 内存防护预留 - -预留菜单配置大小检查机制(详见重构设计 7.4.4)。 - ---- - -## 九、时间估算汇总 - -| 顺序 | 阶段 | 预计时间 | 优先级 | -|------|------|----------|--------| -| 0 | **Phase 0: 设计差异修复** | **1-2 小时** | **P0** | -| 1 | Phase 1: 统一 Icon 缓存 | 1 小时 | P1 | -| 2 | Phase 2: IPC 消息安全加固 | 2-3 小时 | P0 | -| 3 | Phase 3: 全盘访问权限 | 1 小时 | P1 | -| 4 | Phase 4: 瘦 Extension 架构 | 2-3 小时 | P0 | -| 5 | Phase 5: Tag 管理优化 | 30 分钟 | P1 | -| 6 | Phase 6: Extension 重连机制 | 2-3 小时 | P1 | -| 7 | Phase 7: 脚本执行功能 | 4-5 小时 | P1 | -| 8 | Phase 8: 清理和验证 | 1 小时 | P2 | -| **总计** | - | **16-22 小时** | - | diff --git "a/specs/\351\207\215\346\236\204\350\256\276\350\256\241.md" "b/specs/\351\207\215\346\236\204\350\256\276\350\256\241.md" deleted file mode 100644 index 2bb1e4c..0000000 --- "a/specs/\351\207\215\346\236\204\350\256\276\350\256\241.md" +++ /dev/null @@ -1,1416 +0,0 @@ -# RClick 架构重构设计 - -> 最后更新:2026-04-18 -> 状态:⚠️ **方向已过时** —— "完全磁盘访问权限(FDA)"部分已被 [design-bookmark-permission.md](design-bookmark-permission.md) 取代(改用 Security-Scoped Bookmark 自动授权)。重构执行计划见 [v2.2.0-重构计划.md](v2.2.0-重构计划.md)。 -> 架构方向(已更新):**瘦 Extension**(Slim Extension)+ **全盘监听** + **Security-Scoped Bookmark 授权** - ---- - -## 零、设计与实现差异追踪 ⚠️ - -> 以下差异在代码审查中发现,需要在重构前优先修复。 - -| # | 设计承诺 | 实际实现 | 分析结论 | 状态 | -|---|----------|----------|----------|------| -| 1 | `MenuSnapshot` 持久化到 `@AppStorage` | 只有内存变量 | **设计不合理**:业务数据已用 SwiftData,无需额外持久化 | ✅ 无需修复 | -| 2 | `running` 消息携带 `MenuSnapshot` | 只发 `RunningPayload(directories)` | P0 - 需要修复 | ❌ 待修复 | -| 3 | Extension `requestConfig` 时发送持久化快照 | 重算而非发送快照 | **设计合理**:从 SwiftData 实时构建更好 | ✅ 无需修复 | -| 4 | 心跳超时阈值 25-30 秒 | 实际是 15 秒 | P1 - 需要修复 | ❌ 待修复 | -| 5 | 重试指数退避 2s→4s→8s | 固定 5s × 6 次 | P1 - 需要修复 | ❌ 待修复 | -| 6 | 外接磁盘动态监听 | 只在 `init()` 静态设置 | P1 - 需要修复 | ❌ 待修复 | - -**修复计划**:参见 `重构计划.md` Phase 0。 - -**关于 MenuSnapshot 持久化的说明**: - -原设计要求用 `@AppStorage` 持久化 `MenuSnapshot`,但这会引入问题: -- 业务数据(Apps、Actions、NewFiles、CommonDirs)已用 SwiftData 持久化 -- 额外持久化快照会造成**双写一致性风险** -- 快照只是 IPC 消息封装,不是独立业务实体 - -**修正方案**: -- 快照从 SwiftData **实时构建**(SwiftData 查询毫秒级) -- 版本检查改用 **时间戳** 替代递增版本号 -- 无需额外持久化存储 - ---- - -## 一、专家审核意见采纳追踪 - -| 来源 | 风险/建议 | 采纳状态 | 更新位置 | -|------|----------|----------|----------| -| Security | 脚本命令注入风险 | ✅ 已采纳 | 第九节 9.8 安全设计 | -| Security | IPC 消息伪造风险 | ✅ 已采纳 | 第四节 4.4 消息安全 | -| Security | 权限检测不可靠 | ✅ 已采纳 | 第五节 5.1 多点验证 | -| SRE | 快照持久化缺失 | ✅ 已修正 | 第八节 8.6(改用 SwiftData 实时构建) | -| SRE | 版本号单调性 | ✅ 已修正 | 第八节 8.7(改用时间戳) | -| SRE | 心跳超时阈值过短 | ✅ 已采纳 | 第八节 8.3 参数调整 | -| Architect | 外接磁盘动态监听 | ✅ 已采纳 | 第四节 4.3 事件驱动监听 | -| Code Reviewer | Phase 顺序调整 | ✅ 已采纳 | 重构计划.md | - ---- - ---- - -## 一、执行摘要 - -本重构计划的核心目标是构建**瘦 Extension 架构**,将 RClick 的 FinderSync 扩展简化为纯渲染层,所有业务逻辑和数据管理集中在主程序中。 - -### 核心原则(一句话) - -> **FinderSyncExt 只负责 3 件事:渲染菜单、发送点击事件、全盘监听。所有业务逻辑在主程序中实现。** - -### 点击事件数据结构 - -当用户点击菜单项时,Extension 发送点击事件到主程序: - -```swift -// FinderSyncExt 中:将 FIMenuKind 转换为 MenuScene -extension FIMenuKind { - var toMenuScene: MenuScene { - switch self { - case .contextualMenuForItems: return .contextualMenuForItems - case .contextualMenuForContainer: return .contextualMenuForContainer - case .contextualMenuForSidebar: return .contextualMenuForSidebar - case .toolbarItemMenu: return .toolbarItemMenu - @unknown default: return .contextualMenuForContainer - } - } -} - -/// 触发场景(与 FIMenuKind 对应,但可在主程序中使用) -enum MenuScene: String, Codable { - /// 选中文件/文件夹右键 - case contextualMenuForItems = "ctx-items" - /// 空白处右键 - case contextualMenuForContainer = "ctx-container" - /// 侧边栏右键 - case contextualMenuForSidebar = "ctx-sidebar" - /// 工具栏菜单 - case toolbarItemMenu = "toolbar" -} - -/// 菜单项信息 -struct MenuItemInfo: Codable { - let type: MenuItemType // 类型:action/app/newFile/commonDir - let id: String // 菜单项 ID - let tag: Int // 菜单项 tag(用于快速查找) -} - -/// 点击事件载荷 -struct ClickEventPayload: Codable { - let scene: MenuScene // 触发场景 - let currentDirectory: String // 当前目录路径 - let selectedItems: [String] // 选中的文件/目录路径列表 - let menuItem: MenuItemInfo // 点击的菜单项信息 -} -``` -``` - -### 职责划分 - -| 职责 | Extension | Main App | -|------|-----------|----------| -| FinderSync 监听目录 | ✅ 全盘(/Users/ + 外接磁盘) | - | -| 数据读取 | ❌ 不读取 | ✅ SwiftData | -| 菜单构建 | ❌ 只渲染 | ✅ 构建配置 | -| 业务逻辑 | ❌ 无 | ✅ 全部 | -| 权限请求 | ❌ 不处理 | ✅ 完全磁盘访问权限 | -| 图标加载 | ✅ 根据 appURL 加载 | ✅ 预加载缓存 | - -**核心原则**:Extension 只做 3 件事——监听文件目录(FinderSync)、渲染菜单、发送事件。 - -**说明**: -- **FinderSync 监听目录**:通过 `FIFinderSyncController.default().directoryURLs` 设置,决定 FinderSync 在哪些目录生效 -- **数据读取**:Extension 不读取 SwiftData,菜单配置由 Main App 通过 IPC 发送 - -### 设计特性 - -| 特性 | 说明 | 状态 | -|------|------|------| -| 瘦 Extension | Extension 不读取数据,只负责渲染 | ✅ 已设计 | -| 全盘监听 | 默认监听 `/Users/`,外接磁盘自动添加 | ✅ 已设计 | -| 完全磁盘访问权限 | 由用户手动授权,无需 Bookmark 缓存 | ✅ 已设计 | -| 类型安全协议 | 使用枚举替代字符串 | ✅ 已设计 | -| Notification + 协议层 | 基于 DistributedNotificationCenter + Codable 协议封装 | ✅ 已设计 | -| 消息 ID | 每个消息带 UUID,支持追踪和去重 | ✅ 已设计 | -| 统一 Icon 缓存 | 共享模块统一管理 | ✅ 已设计 | -| 递增 Tag | 避免随机数冲突 | ✅ 已设计 | - -### 预期收益 - -- Extension 内存使用 < 20MB(无 SwiftData 依赖) -- 菜单渲染时间 < 50ms -- 代码行数减少约 30% -- 维护成本降低约 40% -- 用户体验提升:无需手动授权文件夹,一次授权全盘访问 - ---- - -## 二、当前问题总结 - -### 2.1 架构层面 - -- **重复实现**: Extension 有 `IconCache`,Main App 有 `IconCacheManager` -- **数据模型冗余**: RCAction/ActionMenuItem、OpenWithApp/AppMenuItem 需要转换 -- **通信协议简陋**: `MessagePayload.action` 使用 String 类型,缺乏类型安全 -- **转换层复杂**: 需要在 SwiftData 模型和 MenuItem 模型间转换 - -### 2.2 性能问题 - -- **频繁 JSON 编解码**: 每次菜单更新都需要通过 UserDefaults 编解码 -- **Tag 管理低效**: 使用随机数生成 tag,可能冲突导致性能问题 -- **无缓存机制**: 图标每次都重新加载 - -### 2.3 数据一致性 - -- **同步延迟**: 配置更新需要等待通知和 UserDefaults 刷新 -- **转换错误风险**: 模型转换可能丢失数据或引入 bug - -### 2.4 用户体验 - -- **Main App 依赖**: Extension 在 Main App 关闭时无法工作 -- **更新延迟**: 配置更新实时性差(依赖通知 + 数据转换) - ---- - -## 三、设计目标 - -### 3.1 核心原则 - -1. **简洁性**: 减少重复代码,统一 Icon 缓存实现 -2. **类型安全**: 使用枚举替代字符串,编译时检查 -3. **性能**: 优化 Tag 管理,使用递增 ID;图标预加载缓存 -4. **可靠性**: 错误处理完善,日志记录清晰 - -### 3.2 架构选择:瘦 Extension - -Extension 只做 3 件事: - -1. **接收消息** - 从主程序接收菜单配置、刷新指令 -2. **渲染菜单** - 根据收到的配置渲染菜单(不读任何数据源) -3. **发送事件** - 用户点击后发送操作数据给主程序 - -**所有业务逻辑在主程序完成。** - -### 3.4 核心改进(按优先级) - -| 优先级 | 改进项 | 预计时间 | 风险 | -|--------|--------|----------|------| -| P0 | 类型安全通信协议 | 1-2 小时 | 低 | -| P0 | 瘦 Extension 架构 | 2-3 小时 | 中 | -| P0 | **IPC 消息安全签名** | 2-3 小时 | 低 | -| P0 | **脚本执行安全加固** | 2-3 小时 | 中 | -| P1 | 优化 Tag 管理 | 30 分钟 | 极低 | -| P1 | 统一 Icon 缓存 | 1 小时 | 低 | -| P1 | **快照持久化** | 1 小时 | 低 | -| P2 | 文档翻译/注释 | 1 小时 | 无 | - -### 3.5 可靠性目标(SLO/SLI) - -| 指标 | 目标 SLO | 测量方式 | -|------|----------|----------| -| 消息传递成功率 | ≥ 99.9% | 成功接收数 / 发送数 | -| 心跳延迟 p99 | < 2 秒 | Extension 发送 → Main App 接收 | -| 菜单恢复时间 | < 5 秒 | Extension 启动到菜单可用 | -| 故障自愈率 | ≥ 90% | 自动恢复次数 / 总故障次数 | -| 菜单渲染时间 | < 50ms | 右键触发到菜单显示 | -| Extension 内存使用 | < 20MB | Instruments 测量 | - -### 3.6 安全原则 - -| 原则 | 说明 | 违反后果 | -|------|------|----------| -| **脚本执行需确认** | 执行前显示脚本内容预览和用户确认 | 恶意脚本执行风险 | -| **IPC 消息需签名** | 所有跨进程消息使用 HMAC 验证 | 消息伪造风险 | -| **权限检测多点验证** | 使用多个检测点交叉验证权限状态 | 权限误判风险 | -| **敏感数据不落地** | 快照、日志中的敏感信息需脱敏 | 数据泄露风险 | - ---- - -## 四、架构设计 - -### 4.1 架构图 - -```mermaid -graph TB - subgraph MainApp["Main App"] - AppState["AppState
业务逻辑"] - SwiftData["SwiftData
数据持久化"] - Handlers["Action Handlers
执行所有操作"] - ConfigBuilder["MenuConfigBuilder
构建菜单配置"] - end - - subgraph Extension["FinderSync Extension"] - MenuConfig["MenuConfig
内存缓存
- actions
- apps
- newFiles
- commonDirs"] - Renderer["Menu Renderer
纯渲染
- buildActionMenu()
- buildAppMenu()
- buildNewFileMenu()
- buildCommonDirMenu()"] - EventSender["Event Sender
事件转发
ClickEventPayload:
- scene
- currentDirectory
- selectedItems
- menuItem"] - end - - IPC(("DistributedNotificationCenter")) - - AppState --> ConfigBuilder - SwiftData --> ConfigBuilder - Handlers --> ConfigBuilder - ConfigBuilder --> IPC - IPC --> MenuConfig - MenuConfig --> Renderer - Renderer -->|用户点击| EventSender -``` - -### 4.4 IPC 消息安全设计 - -**威胁模型**: -- 恶意应用可能伪造 `DistributedNotificationCenter` 消息 -- 消息可能被截获导致路径信息泄露 -- 重复消息可能导致意外执行 - -**安全加固措施**: - -#### 1. HMAC 消息签名 - -```swift -// Shared/MessageSecurity.swift -import CryptoKit -import Foundation - -public class MessageSecurity { - private static let sharedKey = "RClick_IPC_SharedKey_2026" // 应存储在 Keychain - - /// 为消息载荷添加 HMAC 签名 - public static func sign(_ payload: T) throws -> SignedPayload { - let data = try JSONEncoder().encode(payload) - let key = SymmetricKey(data: sharedKey.data(using: .utf8)!) - let hmac = HMAC.authenticationCode(for: data, using: key) - - return SignedPayload( - payload: payload, - signature: Data(hmac).base64EncodedString() - ) - } - - /// 验证消息签名 - public static func verify(_ signed: SignedPayload) -> Bool { - guard let signatureData = Data(base64Encoded: signed.signature) else { - return false - } - - let key = SymmetricKey(data: sharedKey.data(using: .utf8)!) - let expectedHMAC = HMAC.authenticationCode( - for: try! JSONEncoder().encode(signed.payload), - using: key - ) - - return signatureData == Data(expectedHMAC) - } -} - -public struct SignedPayload: Codable { - public let payload: T - public let signature: String -} -``` - -#### 2. 发送者身份验证 - -```swift -// 验证发送者是否为 RClick 自身(代码签名验证) -func verifySender() -> Bool { - // 通过 codesign 验证发送者 Bundle ID - let bundleID = Bundle.main.bundleIdentifier - return bundleID == "com.lixu.RClick" || bundleID == "com.lixu.RClick.FinderSyncExt" -} -``` - -#### 3. 敏感信息脱敏 - -```swift -// 日志中的路径脱敏 -logger.info("Processing file: \(filePath.private)") - -// ClickEventPayload 加密传输(可选,按需启用) -struct EncryptedClickEvent: Codable { - let encryptedData: Data // 使用 ChaChaPoly 加密 - let nonce: Data -} -``` - ---- - -### 4.5 新架构职责划分 - -#### Main App 职责 - -- **数据管理**: 读取 SwiftData,构建菜单配置 -- **业务逻辑**: 处理所有动作执行(复制路径、删除、打开应用、创建文件等) -- **配置推送**: 数据变更时发送完整菜单配置给 Extension -- **事件处理**: 接收 Extension 的点击事件,根据场景 + 目录 + 选中项 + 菜单项信息执行操作 -- **权限请求**: 请求完全磁盘访问权限(用户手动授权) - -#### Extension 职责 - -- **FinderSync 监听**:设置 `directoryURLs`(默认 `/Users/` + 外接磁盘) -- **消息监听**:监听来自主程序的配置消息 -- **菜单渲染**:根据配置渲染 NSMenuItem(纯渲染,不读取任何数据) -- **事件转发**:用户点击后发送事件给主程序,包含: - - `scene`: 触发场景(右键物品/右键容器/工具栏/侧边栏) - - `currentDirectory`: 当前目录路径 - - `selectedItems`: 选中的文件/目录列表 - - `menuItem`: 点击的菜单项信息(type, id, tag) -- **心跳发送**:每 10 秒发送 `heartbeat` 给主程序(让主程序知道 Extension 存活) - -### 4.3 FinderSync 监听范围 - -**Extension 启动时设置监听目录**: - -```swift -// FinderSyncExt.swift -override init() { - super.init() - - // 默认监听 /Users/ - let usersDir = URL(fileURLWithPath: "/Users/") - - // 检测并添加外接磁盘 - let volumeURLs = FileManager.default.mountedVolumeURLs( - includingResourceValuesForKeys: [.isBrowsableKey], - options: [.skipHiddenVolumes] - ) ?? [] - - var allURLs = [usersDir] - for volume in volumeURLs { - if volume.path != "/" { // 排除根目录 - allURLs.append(volume) - } - } - - FIFinderSyncController.default().directoryURLs = Set(allURLs) - - logger.info("Monitoring directories: \(allURLs.map { $0.path })") - - setupMessageHandlers() - sendHeartbeat() // 开始发送心跳 - - // 注册磁盘挂载/卸载事件监听 - setupVolumeChangeObserver() -} - -// 动态监听磁盘挂载/卸载 -private func setupVolumeChangeObserver() { - NotificationCenter.default.addObserver( - self, - selector: #selector(volumeDidChange), - name: NSWorkspace.volumeDidMountNotification, - object: nil - ) - NotificationCenter.default.addObserver( - self, - selector: #selector(volumeDidChange), - name: NSWorkspace.volumeDidUnmountNotification, - object: nil - ) -} - -@objc private func volumeDidChange(_ notification: Notification) { - // 重新检测外接磁盘并更新监听目录 - DispatchQueue.main.asyncAfter(deadline: .now() + 1.0) { [weak self] in - self?.updateMonitoringDirectories() - } -} - -private func updateMonitoringDirectories() { - let volumeURLs = FileManager.default.mountedVolumeURLs( - includingResourceValuesForKeys: [.isBrowsableKey], - options: [.skipHiddenVolumes] - ) ?? [] - - var allURLs = [URL(fileURLWithPath: "/Users/")] - for volume in volumeURLs { - // 排除根目录和网络卷 - if volume.path != "/" && !isNetworkVolume(volume) { - allURLs.append(volume) - } - } - - FIFinderSyncController.default().directoryURLs = Set(allURLs) - logger.info("Updated monitoring directories: \(allURLs.map { $0.path })") -} - -private func isNetworkVolume(_ url: URL) -> Bool { - // 检测是否为网络卷(AFP、SMB、NFS 等) - let values = try? url.resourceValues(forKeys: [.volumeIsNetworkKey]) - return values?.volumeIsNetwork == true -} -``` - -#### 监听策略 - -| 类型 | 处理方式 | -|------|----------| -| **默认监听** | `/Users/`(用户主目录) | -| **外接磁盘** | 自动检测并添加所有可浏览的挂载卷 | -| **网络卷** | 不监听(通过 `volumeIsNetwork` 排除) | -| **动态插拔** | 通过 `NSWorkspace` 通知动态更新监听目录 | -| **手动刷新** | 设置界面提供"刷新监听目录"按钮,若新磁盘右键菜单未出现可手动触发 | - -> ⚠️ **注意**:`FIFinderSyncController.default().directoryURLs` 的设置对已加载的 Finder Sync 扩展可能不会立即生效,有时需要重启 Finder 才能覆盖所有情况。因此提供手动刷新按钮作为补充。 - ---- - -## 五、验证计划 - -### 5.1 编译测试 - -```bash -# 清理构建 -xcodebuild clean -project RClick.xcodeproj -scheme RClick - -# 编译 Main App -xcodebuild build -project RClick.xcodeproj -scheme RClick -destination 'platform=macOS' - -# 验证无错误和警告 -``` - -### 5.2 功能测试清单 - -1. **Extension 启动测试** - - Extension 成功初始化 - - 发送 heartbeat 给主程序 - - 接收主程序发送的菜单配置 - - **全盘监听**: 验证 `/Users/` 被添加为监听目录 - - **外接磁盘**: 插入外接磁盘,验证自动添加为监听目录 - -2. **菜单创建测试** - - 右键菜单显示正确的动作项 - - 右键菜单显示正确的应用项 - - 图标正确加载 - -3. **配置更新测试** - - 在 Main App 中添加新应用,Extension 菜单更新 - - 在 Main App 中修改动作配置,Extension 菜单更新 - -4. **动作执行测试** - - 点击"Copy Path"正确复制路径 - - 点击应用正确打开文件 - - Tag 正确关联到动作 - -5. **权限处理测试** - - **完全磁盘访问权限**: 设置界面显示权限状态 - - **权限引导**: 点击按钮可跳转到系统设置 - - **权限检测**: 授权后功能正常工作(多点验证,见下方 5.1 节) - - **无 Bookmark 缓存**: 确认代码中已删除 Bookmark 相关逻辑 - -### 5.1 完全磁盘访问权限多点验证设计(P0 - 必须实施) - -**问题**:单一检测点(如访问 `/Library/Application Support`)可能产生误判。 - -**解决方案**:使用三个检测点交叉验证 - -```swift -// RClick/Shared/PermissionChecker.swift -import Foundation - -public class PermissionChecker { - /// 多点验证完全磁盘访问权限 - /// 返回 true 表示可能已授权,false 表示可能未授权 - public static func hasFullDiskAccess() -> Bool { - let testPaths = [ - "/Library/Application Support", - "~/Library/Application Support", - "/Library/Preferences" - ] - - var accessibleCount = 0 - - for path in testPaths { - let expandedPath = NSString(string: path).expandingTildeInPath - if FileManager.default.isReadableFile(atPath: expandedPath) { - accessibleCount += 1 - } - } - - // 至少 2 个路径可访问才认为已授权 - return accessibleCount >= 2 - } - - /// 实际文件操作测试(更准确,但有副作用风险) - public static func verifyWithActualOperation() -> Bool { - // 尝试在沙盒外创建一个临时文件 - let testURL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)[0] - .appendingPathComponent(".rclick_permission_test") - - do { - try "test".write(to: testURL, atomically: true, encoding: .utf8) - try FileManager.default.removeItem(at: testURL) - return true - } catch { - return false - } - } - - /// 打开系统设置请求权限 - public static func openFullDiskAccessSettings() { - NSWorkspace.shared.open(URL(string: "x-apple.systempreferences:com.apple.preference.security?Privacy_AllFiles")!) - } -} -``` - -**权限状态显示**: - -```swift -// RClick/Settings/GeneralSettingsTabView.swift -struct GeneralSettingsTabView: View { - @State private var permissionStatus: PermissionStatus = .unknown - - enum PermissionStatus { - case granted - case denied - case unknown - } - - var body: some View { - Form { - Section("权限") { - HStack { - Text("完全磁盘访问权限") - Spacer() - if permissionStatus == .granted { - Image(systemName: "checkmark.circle.fill") - .foregroundColor(.green) - } else { - Button("前往设置") { - PermissionChecker.openFullDiskAccessSettings() - } - } - } - } - } - .onAppear { - // 延迟检测,给系统时间加载 - DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) { - permissionStatus = PermissionChecker.hasFullDiskAccess() ? .granted : .denied - } - } - } -} -``` - -6. **错误处理测试** - - Main App 未启动时 Extension 行为 - - 消息丢失时的降级处理 - - 心跳超时检测 - -### 5.3 性能测试 - -1. 菜单创建时间:应 < 50ms -2. 图标加载时间:应 < 50ms/个 -3. 内存使用:Extension < 20MB -4. 消息传递延迟:< 100ms - -### 5.4 日志检查 - -查看 Console.app,验证: - -- Extension 成功接收菜单配置 -- 菜单数据正确加载 -- 消息正确发送和接收 -- 错误被正确处理和记录 - ---- - -## 六、成功标准 - -### 6.1 技术指标 - -- ✅ 编译无错误和警告 -- ✅ 所有测试通过 -- ✅ 菜单创建时间 < 50ms -- ✅ Extension 内存使用 < 20MB - -### 6.2 代码质量 - -- ✅ 删除所有转换层代码 -- ✅ 消除重复的 IconCache 实现 -- ✅ 所有通信使用类型安全的枚举 -- ✅ 代码注释完整(中英文混合) - -### 6.3 用户体验 - -- ✅ Extension 菜单正常显示 -- ✅ 配置更新实时生效 -- ✅ 图标加载快速 -- ✅ 动作执行正确 - ---- - -## 七、后续优化方向 - -### 7.1 短期优化(1-2 周) - -1. 实现菜单数据缓存,减少消息频率 -2. 添加性能监控和日志 -3. 优化图标预加载策略 - -### 7.2 中期优化(1 个月) - -1. 实现增量数据同步(只传输变更) -2. 添加数据版本控制和迁移机制 -3. 实现 Extension 离线模式(内置默认配置) - -### 7.3 长期优化(3 个月) - -1. 实现更智能的缓存策略 -2. 添加 A/B 测试支持 -3. 性能监控和分析工具集成 - -### 7.4 预留设计(当前不实施,预留扩展点) - -> 以下设计当前暂不实施,但已在架构中预留扩展点,便于后续演进。 - -#### 7.4.1 增量更新支持 - -当前是全量推送菜单配置,短期内数据量不会成为问题。但可在数据结构中预留字段: - -```swift -struct MenuConfigPayload: Codable { - let timestamp: TimeInterval - let updateType: UpdateType = .full // 预留:full | incremental - let actions: [ActionMenuItem] - // ... -} - -enum UpdateType: String, Codable { - case full // 全量推送(当前使用) - case incremental // 增量更新(预留) -} -``` - -#### 7.4.2 图标缓存预热 - -主程序可在推送配置前,提前将图标信息预处理为 Extension 可直接使用的格式: - -```swift -struct AppMenuItem: Codable { - let id: String - let name: String - let appURL: URL - let iconPath: String? // 预留:预解析的图标路径,Extension 可直接用 NSImage(contentsOfFile:) 加载 -} -``` - -#### 7.4.3 Extension 降级模式 - -如果主程序长时间不响应(如崩溃),Extension 可加载应急菜单: - -```swift -// Extension 端:心跳超时后进入降级模式 -func enterFallbackMode() { - cachedMenuConfig = MenuConfigPayload.fallback // 仅显示基本操作 - logger.warning("Main app unresponsive, entering fallback mode") -} - -extension MenuConfigPayload { - static var fallback: MenuConfigPayload { - // 应急菜单:仅显示最基本的操作 - MenuConfigPayload( - timestamp: Date().timeIntervalSince1970, - actions: [ActionMenuItem(name: "复制路径", id: "copy-path")], - apps: [], - newFiles: [], - commonDirs: [] - ) - } -} -``` - -#### 7.4.4 Extension 内存防护 - -`MenuConfigPayload` 如果过大可能导致 Extension 内存超标。预留字段数量上限作为防护: - -```swift -// Extension 端:菜单配置大小检查 -func validateMenuConfig(_ config: MenuConfigPayload) -> Bool { - let totalItems = config.actions.count + config.apps.count + - config.newFiles.count + config.commonDirs.count - return totalItems < 200 // 防护上限,可根据实测调整 -} -``` - ---- - -## 八、附录:Extension 重连方案 - -### 8.1 问题背景 - -FinderSync Extension 由 macOS 系统控制加载时机,可能出现**主 App 已打开但 Extension 未加载**的情况,导致右键菜单不显示。 - -### 8.2 核心设计原则 - -| 原则 | 说明 | 违反后果 | -|------|------|----------| -| **Notification ≠ 状态** | 通知只能当"信号",不能当"真相" | 丢消息=状态错乱 | -| **单一持久化源** | 业务数据只存 SwiftData,快照实时构建 | 双写一致性风险 | -| **Extension 必须支持主动拉取** | 不能只靠推送 | 无法自愈 | -| **所有通信必须幂等** | 重复消息不能出错 | 重复执行风险 | -| **时间戳防乱序** | 用时间戳判断配置新旧,拒绝旧配置 | 乱序覆盖问题 | - -### 8.3 架构:推 + 拉混合模式 - -```mermaid -graph LR - subgraph Before["纯推送(之前)"] - A1[Main App] -->|发送消息| A2[Extension] - A2 -.->|靠运气接收| A1 - end - - subgraph After["推拉混合(升级)"] - B1[Main App] <-->|发送/请求| B2[Extension] - B2 -.->|可主动拉取| B1 - end -``` - -### 8.4 四层防护策略 - -| 层级 | 机制 | 作用 | 优先级 | -|------|------|------|--------| -| L1 | **实时构建配置** | 从 SwiftData 实时构建,无持久化一致性风险 | P0 | -| L2 | **running 重试** | 主 App 启动后定期发送 running(携带当前配置) | P1 | -| L3 | **主动请求** | Extension 启动/缓存为空时主动请求 | P0 | -| L4 | **心跳检测** | Extension 定期发送 heartbeat,主 App 检测超时 | P1 | -| L5 | **手动刷新** | 用户点击菜单栏"刷新 Extension"按钮 | P2 | - -**心跳方向**: - -| 方向 | 消息类型 | 频率 | 目的 | -|------|----------|------|------| -| Main → Ext | `running`(携带 MenuConfigPayload) | 启动时 + 重试 3-4 次(指数退避:2s→4s→8s) | 告知 Extension 主程序已启动 | -| Ext → Main | `heartbeat` | 每 10 秒 | 告知主程序 Extension 存活 | -| Ext → Main | `requestConfig` | 启动/缓存为空时 | 请求菜单配置 | - -**参数调整说明**: -- **重试次数**:从 6 次减少到 3-4 次,减少用户等待时间 -- **重试间隔**:采用指数退避(2s, 4s, 8s),总时长从 30 秒降至 14 秒 -- **超时阈值**:从 15 秒调整为 25-30 秒(心跳间隔的 2.5-3 倍),避免误判 - -### 8.5 能力评估 - -| 场景 | 之前 | 升级后 | -|------|------|--------| -| Extension 随机重启 | ❌ | ✅ | -| Notification 丢失 | ❌ | ✅ | -| 主 App 先启动 | ⚠️ | ✅ | -| Extension 后启动 | ⚠️ | ✅ | -| Finder 延迟加载 | ❌ | ✅ | -| 状态一致性 | 🟡 弱 | 🟢 接近强一致 | - -**场景说明**: - -1. **Extension 随机重启**:Finder 可能导致 Extension 进程重启,重启后缓存丢失 - - 解决:Extension 启动时主动发送 `requestConfig` - -2. **Notification 丢失**:`DistributedNotificationCenter` 消息可能丢失 - - 解决:主 App 发送 `running` 后指数退避重试(2s→4s→8s) - -3. **主 App 先启动**:主 App 启动时 Extension 尚未加载 - - 解决:主 App 发送 `running` 消息,Extension 后加载时主动请求 - -4. **Extension 后启动**:Extension 在 Finder 启动后才加载 - - 解决:Extension 启动时主动请求配置 - -5. **Finder 延迟加载**:Finder 可能延迟加载 Extension - - 解决:主 App 重试发送 `running` 消息 - -6. **心跳超时检测**:主 App 25-30 秒未收到 `heartbeat`,标记 Extension 离线 - - 解决:用户可点击"刷新 Extension"按钮重新连接,或等待自动重连 - -### 8.6 菜单配置同步设计(修正版) - -> **设计修正**:原方案要求持久化快照,但业务数据已用 SwiftData,无需额外持久化。 - -**核心原则**: -- **单一持久化源**:业务数据只存 SwiftData,避免双写一致性风险 -- **实时构建快照**:每次请求时从 SwiftData 查询构建(毫秒级) -- **时间戳防乱序**:用时间戳替代递增版本号 - -**修正后的方案**: - -```swift -// RClick/RClickApp.swift -class AppDelegate: NSObject, NSApplicationDelegate { - // 内存缓存(仅用于减少重复构建) - private var cachedMenuConfig: MenuConfigPayload? - private var lastBuildTime: TimeInterval = 0 - - /// 构建菜单配置(从 SwiftData 实时构建) - func buildMenuConfig() -> MenuConfigPayload { - let now = Date().timeIntervalSince1970 - - // 如果 1 秒内已构建过,直接返回缓存(防抖) - if now - lastBuildTime < 1.0, let cached = cachedMenuConfig { - return cached - } - - // 从 SwiftData 读取数据 - let actions = appState.actions.map { $0.toActionMenuItem() } - let apps = appState.apps.map { $0.toAppMenuItem() } - let newFiles = appState.newFiles.map { NewFileMenuItem(...) } - let commonDirs = appState.cdirs.map { CommonDirMenuItem(...) } - - let config = MenuConfigPayload( - timestamp: now, - actions: actions, - apps: apps, - newFiles: newFiles, - commonDirs: commonDirs - ) - - cachedMenuConfig = config - lastBuildTime = now - - return config - } - - /// 发送 running 消息(携带当前配置) - func sendRunningMessage() { - let config = buildMenuConfig() - messager.sendToExtension(.running, data: config) - } - - /// 响应 Extension 的配置请求 - func handleConfigRequest() { - let config = buildMenuConfig() - messager.sendMenuConfig(config) - } -} - -// MenuConfigPayload 增加时间戳 -struct MenuConfigPayload: Codable { - let timestamp: TimeInterval // 构建时间戳 - let actions: [ActionMenuItem] - let apps: [AppMenuItem] - let newFiles: [NewFileMenuItem] - let commonDirs: [CommonDirMenuItem] - // ... 其他字段 -} -``` - -**Extension 端版本检查**: - -```swift -// FinderSyncExt.swift -class FinderSyncExt: FIFinderSync { - private var currentTimestamp: TimeInterval = 0 - private var cachedMenuConfig: MenuConfigPayload? - - private func handleMenuConfig(_ data: Data?) { - guard let config = decode(data) else { return } - - // 时间戳检查:只接受更新的配置 - guard config.timestamp > currentTimestamp else { - logger.info("Ignoring outdated config (timestamp=\(config.timestamp))") - return - } - - currentTimestamp = config.timestamp - cachedMenuConfig = config - logger.info("Menu config updated (timestamp=\(config.timestamp))") - } -} -``` - -**优势对比**: - -| 方案 | 原方案(@AppStorage) | 修正方案(SwiftData) | -|------|----------------------|----------------------| -| 持久化 | 双写(SwiftData + UserDefaults) | 单写(SwiftData) | -| 一致性 | 有风险 | 无风险 | -| 复杂度 | 需维护版本号、快照同步 | 只需时间戳 | -| 性能 | 快照可能过大 | 实时构建毫秒级 | -| 崩溃恢复 | 需恢复版本号 | 无需额外恢复 | - -### 8.7 时间戳防乱序机制 - -**问题**:消息可能乱序到达,Extension 需判断是否接受。 - -**解决方案**:时间戳 + 配置哈希双重校验 - -```swift -struct MenuConfigPayload: Codable { - let timestamp: TimeInterval // 构建时间戳 - let configHash: String // 配置内容 SHA256(可选) - let actions: [ActionMenuItem] - // ... -} - -// Extension 端检查逻辑 -func shouldAcceptConfig(_ new: MenuConfigPayload) -> Bool { - // 首先检查时间戳 - if new.timestamp > currentTimestamp { - return true - } - - // 时间戳相同或更旧时,检查配置哈希 - // 如果哈希不同说明配置变化了,可能需要接受 - if new.configHash != currentConfigHash { - logger.warning("Config hash mismatch, may need manual refresh") - // 不自动接受,等用户手动刷新或下次更新 - } - - return false -} -``` - -### 8.8 实施详情 - -详细实施方案请参阅:[contracts/extension-reconnect.md](contracts/extension-reconnect.md) - ---- - -## 九、设置界面重构设计 - -### 9.1 设计目标 - -重新设计设置界面的"通用设置"部分,采用 macOS 系统设置风格(分组卡片式布局),并将"折叠上下文菜单"开关从通用设置移到每个分类里面。 - -### 9.2 通用设置新布局 - -通用设置采用三组卡片式布局: - -#### 第一组:主要控制 - -| 项目 | 类型 | 说明 | -|------|------|------| -| 启用「RClick」 | Toggle 开关 | 主开关,控制扩展启用/禁用 | -| 登录时启动 | Toggle 开关 | 系统登录时自动启动 RClick | - -#### 第二组:权限 - -| 项目 | 类型 | 说明 | -|------|------|------| -| Finder 扩展 | 状态显示 | 只读,带绿色勾选图标表示已启用 | -| 完全磁盘访问权限 | 按钮 | 点击跳转到系统设置请求权限 | -| 辅助功能 | 按钮 | 点击跳转到系统设置请求权限 | - -#### 第三组:设置管理 - -| 项目 | 类型 | 说明 | -|------|------|------| -| 备份 | 按钮组 | 导出设置 / 导入设置 | -| 日志 | 按钮 | 导出日志 | -| 重置所有设置 | 文字按钮 | 红色,底部右对齐,危险操作 | - -### 9.3 各分类折叠开关 - -将"折叠上下文菜单"从通用设置移除,改为每个分类独立控制: - -| 分类 | 开关名称 | 存储键 | -|------|----------|--------| -| Apps | 折叠应用菜单 | `foldAppsMenu` | -| Actions | 折叠动作菜单 | `foldActionsMenu` | -| New File | 折叠新建文件菜单 | `foldNewFileMenu` | -| Common Dir | 折叠常用文件夹菜单 | `foldCommonDirMenu` | - -### 9.4 实施文件清单 - -| 文件 | 操作 | 说明 | -|------|------|------| -| `GeneralSettingsTabView.swift` | 重写 | 采用新分组卡片风格 | -| `AppsSettingsTabView.swift` | 修改 | 添加"折叠应用菜单"开关 | -| `ActionSettingsTabView.swift` | 修改 | 添加"折叠动作菜单"开关 | -| `NewFileSettingsTabView.swift` | 修改 | 添加"折叠新建文件菜单"开关 | -| `CommonDirsSettingTabView.swift` | 修改 | 添加"折叠常用文件夹菜单"开关 | -| `AppState.swift` | 修改 | 添加 4 个新的 `@AppStorage` 属性 | - -### 9.5 设计规范 - -1. **分组风格**: 使用 `Form` + `Section` 结构,每组有独立标题 -2. **图标状态**: 使用 SF Symbols 系统图标(如 `checkmark.circle.fill` 表示已授权) -3. **开关位置**: 每个分类列表顶部或 header 区域 -4. **数据存储**: 使用 `@AppStorage` 持久化存储折叠状态 -5. **文案规范**: 所有文案使用中文,"RClick"替换为"RClick" - -### 9.6 验收标准 - -- [ ] 通用设置界面与 macOS 系统设置风格一致 -- [ ] 折叠开关从通用设置中移除 -- [ ] 每个分类有独立的折叠开关 -- [ ] 所有开关状态持久化保存 -- [ ] 界面采用 SwiftUI 风格,无 AppKit 代码 -- [ ] 编译无错误和警告 - ---- - -## 九、脚本执行功能设计 - -### 9.1 功能概述 - -**用户场景**: -- 用户选中文件/文件夹后,右键菜单选择"执行脚本" -- 子菜单显示用户配置的脚本列表(如:压缩图片、转换格式、上传到服务器等) -- 点击后执行对应脚本,将选中的文件路径作为参数传入 - -**支持脚本类型**: -| 类型 | 说明 | 执行方式 | -|------|------|----------| -| **Shell** | Bash/Zsh 脚本 | `/bin/bash -c "script" -- files...` | -| **Python** | Python 2/3 脚本 | `/usr/bin/python3 -c "script" files...` | -| **AppleScript** | AppleScript 脚本 | `osascript -e "script"` | - -### 9.8 安全设计(P0 - 必须实施) - -**威胁模型**: -- 恶意脚本可能删除用户文件或外泄数据 -- 用户可能被诱导执行危险命令(如 `rm -rf ~/Documents`) -- 脚本可能被未授权修改 - -**安全加固措施**: - -#### 1. 执行前用户确认对话框 - -```swift -// 执行前显示脚本内容预览和用户确认 -func confirmScriptExecution(script: RCScript, files: [String], completion: @escaping (Bool) -> Void) { - let alert = NSAlert() - alert.messageText = "确认执行脚本?" - alert.informativeText = """ - 脚本名称:\(script.name) - 脚本类型:\(script.scriptType) - - 脚本内容预览: - \(script.scriptContent.prefix(200))... - - 将处理 \(files.count) 个文件 - """ - alert.alertStyle = .warning - alert.addButton(withTitle: "执行") - alert.addButton(withTitle: "取消") - - let response = alert.runModal() - completion(response == .alertFirstButtonReturn) -} -``` - -#### 2. 危险命令检测 - -```swift -// 检测脚本中的危险命令 -func detectDangerousCommands(_ scriptContent: String) -> [String] { - let dangerousPatterns = [ - "rm -rf /", - "rm -rf ~", - "sudo", - "dd if=/dev/zero", - ":(){ :|:& };:", // Fork bomb - "> /dev/disk", - "mkfs", - "newfs" - ] - - return dangerousPatterns.filter { scriptContent.contains($0) } -} - -// 使用示例 -let dangerous = detectDangerousCommands(scriptContent) -if !dangerous.isEmpty { - // 显示警告,要求用户二次确认 - showDangerWarning(commands: dangerous) -} -``` - -#### 3. 脚本执行沙盒(可选增强) - -> ⚠️ **注意**:`sandbox-exec` 需要 macOS 特定的 sandbox profile 配置文件,不同 macOS 版本可能存在兼容性差异。建议作为可选增强功能,而非必选项。基础安全由"执行前用户确认"和"危险命令检测"保障。 - -```swift -// 使用 sandbox-exec 限制脚本访问范围(可选) -func executeWithSandbox(script: String, files: [String]) throws { - let sandboxProfile = """ - (version 1) - (deny default) - (allow process-exec) - (allow file-read* (subpath "/Users")) - (allow file-write* (subpath "/Users")) - (deny network-outbound) - (deny system-ipc) - """ - - let process = Process() - process.executableURL = URL(fileURLWithPath: "/usr/bin/sandbox-exec") - process.arguments = ["-f", sandboxProfile, "/bin/bash", "-c", script, "--"] + files - try process.run() -} -``` - -#### 4. 执行超时控制(后台线程执行) - -> ⚠️ **重要**:脚本执行必须在后台线程调用,`process.waitUntilExit()` 如果在主线程执行会阻塞主程序界面。 - -```swift -// 脚本执行超时自动终止(必须在后台线程调用) -func executeScriptWithTimeout(_ script: String, files: [String], timeout: TimeInterval = 30) async throws { - // 使用 async/await 确保在后台执行 - try await withCheckedThrowingContinuation { continuation in - DispatchQueue.global(qos: .userInitiated).async { - let process = Process() - process.executableURL = URL(fileURLWithPath: "/bin/bash") - process.arguments = ["-c", script, "--"] + files - - let pipe = Pipe() - process.standardOutput = pipe - process.standardError = pipe - - do { - try process.run() - - // 启动超时监控 - DispatchQueue.global().asyncAfter(deadline: .now() + timeout) { - if process.isRunning { - process.terminate() - logger.warning("Script execution timed out after \(timeout)s") - } - } - - process.waitUntilExit() // 在后台线程阻塞是安全的 - let outputData = try pipe.fileHandleForReading.readToEnd() - let output = String(data: outputData ?? Data(), encoding: .utf8) ?? "" - - if process.terminationStatus == 0 { - continuation.resume(returning: ()) - } else { - continuation.resume(throwing: ScriptError.executionFailed(output)) - } - } catch { - continuation.resume(throwing: error) - } - } - } -} -``` - -#### 5. 脚本存储安全 - -```swift -// 脚本文件存储权限控制 -func saveScriptToFile(_ content: String, to url: URL) throws { - // 写入沙盒内目录 - let sandboxURL = FileManager.default.urls(for: .applicationSupportDirectory, in: .userDomainMask)[0] - .appendingPathComponent("Scripts", isDirectory: true) - - try FileManager.default.createDirectory(at: sandboxURL, withIntermediateDirectories: true) - - let scriptFileURL = sandboxURL.appendingPathComponent(UUID().uuidString + ".sh") - try content.write(to: scriptFileURL, atomically: true, encoding: .utf8) - - // 设置只读权限(chmod 500) - let chmod = Process() - chmod.executableURL = URL(fileURLWithPath: "/bin/chmod") - chmod.arguments = ["500", scriptFileURL.path] - try chmod.run() -} -``` - ---- - -### 9.2 数据模型 - -#### SwiftData 实体(ScriptEntity) - -```swift -import SwiftData -import Foundation - -/// 脚本实体 - 用于存储用户自定义脚本配置 -@Model -final class ScriptEntity { - @Attribute(.unique) var id: String - var name: String // 菜单显示名称 - var scriptType: String // "shell" | "python" | "applescript" - var scriptContent: String // 脚本内容 - var icon: String // SF Symbol 图标 - var sortOrder: Int - var isEnabled: Bool - - init(id: String = UUID().uuidString, - name: String, - scriptType: String, - scriptContent: String, - icon: String = "terminal", - sortOrder: Int = 0, - isEnabled: Bool = true) { - self.id = id - self.name = name - self.scriptType = scriptType - self.scriptContent = scriptContent - self.icon = icon - self.sortOrder = sortOrder - self.isEnabled = isEnabled - } -} -``` - -#### 内存模型(RCScript) - -```swift -struct RCScript: RCBase { - var id: String - var name: String - var scriptType: ScriptType - var scriptContent: String - var icon: String - var enabled: Bool - var idx: Int - - enum ScriptType: String, Codable { - case shell = "shell" - case python = "python" - case applescript = "applescript" - } -} -``` - -#### 消息模型(ScriptMenuItem) - -```swift -/// 脚本菜单项(IPC 通信) -struct ScriptMenuItem: Codable { - let id: String - let name: String - let icon: String - let scriptType: String -} -``` - -### 9.3 菜单结构设计 - -```mermaid -graph TD - Root["右键菜单"] - Root --> Actions["动作菜单"] - Root --> Apps["用应用打开"] - Root --> NewFile["新建文件"] - Root --> CommonDir["常用目录"] - Root --> Script["执行脚本 ▼"] - - Script --> Compress["压缩图片"] - Script --> Convert["转换为 PDF"] - Script --> Upload["上传到服务器"] - Script --> Custom["自定义脚本..."] -``` - -** Extension 渲染**: -- 主菜单显示"执行脚本"项(图标:`terminal`) -- 鼠标悬停时展开子菜单 -- 子菜单显示所有启用的脚本(按 `sortOrder` 排序) - -### 9.4 点击事件设计 - -**扩展 MenuItemType**: -```swift -enum MenuItemType: String, Codable { - case action = "action" - case app = "app" - case newFile = "new-file" - case commonDir = "common-dir" - case script = "script" // 新增 -} -``` - -**ClickEventPayload**(扩展): -```swift -struct ClickEventPayload: Codable { - let scene: MenuScene - let currentDirectory: String - let selectedItems: [String] - let menuItem: MenuItemInfo // type 为 script -} -``` - -### 9.5 主程序执行逻辑 - -```swift -// Main App - RClickApp.swift -func executeScript(_ script: RCScript, with files: [String], in directory: String) { - switch script.scriptType { - case .shell: - executeShellScript(script.content, files: files) - case .python: - executePythonScript(script.content, files: files) - case .applescript: - executeAppleScript(script.content, files: files) - } -} - -private func executeShellScript(_ content: String, files: [String]) { - let process = Process() - process.executableURL = URL(fileURLWithPath: "/bin/bash") - process.arguments = ["-c", content, "--"] + files - - // 执行并捕获输出 - try? process.run() - process.waitUntilExit() -} - -private func executePythonScript(_ content: String, files: [String]) { - let process = Process() - process.executableURL = URL(fileURLWithPath: "/usr/bin/python3") - process.arguments = ["-c", content] + files - - try? process.run() - process.waitUntilExit() -} - -private func executeAppleScript(_ content: String, files: [String]) { - let source = content - // AppleScript 通过 argv 接收参数 - let fullScript = """ - set fileList to every item of the argv - \(source) - """ - // 使用 NSAppleScript 执行 -} -``` - -### 9.6 脚本模板示例 - -| 名称 | 类型 | 脚本示例 | -|------|------|----------| -| 压缩图片 | shell | `for f in "$@"; do sips -Z 1200 "$f"; done` | -| 转换为 PDF | shell | `for f in "$@"; do cjpeg -quality 85 "$f"; done` | -| 显示文件信息 | shell | `mdls "$1"` | -| 在 VSCode 打开 | shell | `open -a "Visual Studio Code" "$@"` | -| 上传到服务器 | python | `import sys; for f in sys.argv[1:]: upload(f)` | -| 获取文件哈希 | shell | `shasum -a 256 "$@"` | -| 批量重命名 | shell | `for f in "$@"; do mv "$f" "${f%.JPG}.jpg"; done` | - -### 9.7 设置界面设计 - -**脚本设置页面**: -- 脚本列表(名称、类型、启用状态) -- 添加/编辑/删除脚本 -- 上下拖动排序 -- 启用/禁用开关 -- 脚本编辑器(语法高亮) -- 测试按钮(选中测试文件执行) - -### 9.8 实施文件清单 - -| 文件 | 操作 | 说明 | -|------|------|------| -| `ScriptEntity.swift` | 新建 | SwiftData 实体 | -| `RCBase.swift` | 修改 | 添加 `RCScript` 结构 | -| `CommunicationProtocol.swift` | 修改 | 添加 `ScriptMenuItem` | -| `AppState.swift` | 修改 | 添加 `scripts` 属性和方法 | -| `ScriptsSettingsTabView.swift` | 新建 | 设置界面 | -| `RClickApp.swift` | 修改 | 添加 `executeScript()` 方法 | -| `FinderSyncExt.swift` | 修改 | 添加脚本菜单渲染 | - ---- - -## 十、参考文档 - -- **通信协议规范**: [contracts/communication-protocol.md](contracts/communication-protocol.md) -- **数据模型设计**: [contracts/data-models.md](contracts/data-models.md) -- **Extension 重连方案**: [contracts/extension-reconnect.md](contracts/extension-reconnect.md) -- **重构计划**: [重构计划.md](重构计划.md) -- **设置界面重构**: [设置界面重构设计.md](设置界面重构设计.md) -- **CLAUDE.md**: [../CLAUDE.md](../CLAUDE.md) From 583dba05c628ae4a618b2057b42e6ba0e17021a7 Mon Sep 17 00:00:00 2001 From: wflixu Date: Sun, 13 Sep 2026 18:46:36 +0800 Subject: [PATCH 21/22] docs: credit recent contributors and fix the drifted localization notes MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The contributors section only carried the auto-generated graph, so the people behind the last few PRs were invisible. They are now listed with what they actually contributed and a link to each PR. CLAUDE.md still said only Chinese and Japanese were supported, two releases after Spanish and French shipped. It also never mentioned that there are two catalogs, that the extension resolves against its own, or that the catalogs must be edited as text rather than re-serialized — all three of which cost time to rediscover. README.md was English throughout except for one appended Chinese section, which is now English like the rest of the file. Moving it out from under "Contributing" is left alone as an editorial choice. Also fixes the PR template's link to CONTRIBUTING.md, which resolved relative to .github/ and so pointed at a file that does not exist. Co-Authored-By: Claude Code --- .github/PULL_REQUEST_TEMPLATE.md | 2 +- CLAUDE.md | 5 ++++- README.md | 20 ++++++++++++++++---- 3 files changed, 21 insertions(+), 6 deletions(-) diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index 2166b57..9cd3714 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -45,7 +45,7 @@ xcodebuild -project RClick.xcodeproj -scheme RClick -destination 'platform=macOS ## Checklist -- [ ] My code follows the project's Swift 6.2 conventions (see [CONTRIBUTING.md](CONTRIBUTING.md)) +- [ ] My code follows the project's Swift 6.2 conventions (see [CONTRIBUTING.md](../CONTRIBUTING.md)) - [ ] All UI is SwiftUI (no AppKit UI components) - [ ] I have tested on macOS 15.6+ - [ ] I have tested with both light and dark mode diff --git a/CLAUDE.md b/CLAUDE.md index 8e27473..2347a1d 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -136,10 +136,13 @@ When working with files outside the sandbox container (required for the App Stor ### Localization - Default language is **English** (also the fallback) - **Simplified Chinese** (`zh-Hans`) is the primary localization target -- **Japanese** (`ja`) is supported — activated when system language is Japanese +- **Japanese** (`ja`), **Spanish** (`es`) and **French** (`fr`) are also supported, activated when the system language matches - All string keys in code use English, localized via `Localizable.xcstrings` (xcstrings format) - Language detection is fully automatic via `Bundle.main.localizedString` — no manual language picker - To add a new language: add entries to `Localizable.xcstrings` and register in Xcode project +- There are **two** catalogs — `RClick/` (app) and `FinderSyncExt/` (extension). Each target resolves against its own via `Bundle.main`, so a key the extension renders must exist in the extension's catalog too +- `scripts/check-localization.py` verifies the catalogs; run it before a release +- Edit the catalogs with exact-string text edits. Re-serializing the JSON rewrites the whole file and does not round-trip byte-for-byte ### Data Persistence - SwiftData models use `@Model` macro diff --git a/README.md b/README.md index 91909a5..b2d39f9 100644 --- a/README.md +++ b/README.md @@ -116,6 +116,16 @@ Thanks to all the people who have contributed to RClick!
+Recent contributions: + +- **[@Juns-g](https://github.com/Juns-g)** — declarative hierarchical tree menus ([#151](https://github.com/wflixu/RClick/pull/151)), and watching mounted volumes so external and network drives show the menu ([#152](https://github.com/wflixu/RClick/pull/152)) +- **[@Dam0rt](https://github.com/Dam0rt)** — French localization ([#149](https://github.com/wflixu/RClick/pull/149)) +- **[@stors789](https://github.com/stors789)** — App Groups provisioning in the release pipeline ([#141](https://github.com/wflixu/RClick/pull/141)) +- **[@EliasMatDev](https://github.com/EliasMatDev)** — Latin American Spanish localization ([#138](https://github.com/wflixu/RClick/pull/138)) +- **[@shoal-rat](https://github.com/shoal-rat)** — Finder observation fix, so the menu appears in every folder ([#126](https://github.com/wflixu/RClick/pull/126)) +- **[@P013onEr](https://github.com/P013onEr)** — string catalogs and trilingual localization ([#120](https://github.com/wflixu/RClick/pull/120)), draggable menu ordering ([#121](https://github.com/wflixu/RClick/pull/121)) +- **[@chunyang-wen](https://github.com/chunyang-wen)** — removed a needless `await` ([#21](https://github.com/wflixu/RClick/pull/21)) + ## Similar Projects - [SzContext](https://github.com/RoadToDream/SzContext) @@ -134,8 +144,10 @@ We welcome contributions! Here's how you can help: Please read our [Code of Conduct](CODE_OF_CONDUCT.md) before participating. -## 自定义菜单层级 +## Hierarchical Custom Menus + +Top-level items can be mixed with arbitrarily nested submenus, separators, and custom titles and icons. + +Drop a declarative `custom_menu.json` into the App Group container, then go to **Settings → General → Custom Menu** and press "Apply" for it to take effect. Editing the file on its own changes nothing, so an edit that is still half-written cannot break your menu. With no file present the default layout is used; with an invalid one the menu stays exactly as it was and Settings shows which element failed to parse. -支持一级常用项与任意嵌套子菜单混排、分隔线及自定义标题/图标。 -把声明式 `custom_menu.json` 放进 App Group 容器后,需到 **设置 → 通用 → 自定义菜单** 点「应用配置」才会生效——改动文件本身不会自动应用,这样编辑到一半的半成品不至于把菜单弄坏。缺失文件时使用默认布局;配置无效时菜单保持原样,并在设置中显示具体出错项。 -参见 [配置示例与使用说明](examples/README.md)。 +See [configuration examples and usage](examples/README.md). From d689fd2a9e70905bb5b1a2b19026fc38785310b6 Mon Sep 17 00:00:00 2001 From: wflixu Date: Sun, 13 Sep 2026 18:58:16 +0800 Subject: [PATCH 22/22] fix(build): stop shipping the project's docs inside the app bundles CI failed on PR #153 with five "No such file or directory" errors naming specs that the previous commit deleted. The deleted files were members of the Copy Bundle Resources phase of all three targets, so removing them from disk left the project pointing at files that no longer existed. That the docs were bundle resources at all was the real defect: README.md, CLAUDE.md and every design spec were being copied into RClick.app/Contents/ Resources and into the extension bundle, three times over, and nothing reads them. CLAUDE.md in particular is internal development guidance that has no business in a shipped app. So instead of only dropping the seven stale references, this removes all ten documents from all three Resources phases, and drops the file references and group entries for the seven that no longer exist. The three that remain on disk (README.md, CLAUDE.md, git-branch-strategy.md) keep their file references so they stay visible in Xcode's navigator. Verified with the exact commands from pr-build.yml: build and test both pass, and neither RClick.app nor FinderSyncExt.appex contains a .md file any more. Co-Authored-By: Claude Code --- RClick.xcodeproj/project.pbxproj | 74 -------------------------------- 1 file changed, 74 deletions(-) diff --git a/RClick.xcodeproj/project.pbxproj b/RClick.xcodeproj/project.pbxproj index b6a25fa..c7e1d84 100644 --- a/RClick.xcodeproj/project.pbxproj +++ b/RClick.xcodeproj/project.pbxproj @@ -8,39 +8,9 @@ /* Begin PBXBuildFile section */ 5C8A291F2F83D74A00FE687C /* FinderSyncExt.appex in Embed Foundation Extensions */ = {isa = PBXBuildFile; fileRef = 5C8A29182F83D74A00FE687C /* FinderSyncExt.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; }; - 5C969FB72F8A494600D022F8 /* README.md in Resources */ = {isa = PBXBuildFile; fileRef = 5C969FB32F8A494600D022F8 /* README.md */; }; - 5C969FB82F8A494600D022F8 /* CLAUDE.md in Resources */ = {isa = PBXBuildFile; fileRef = 5C969FB12F8A494600D022F8 /* CLAUDE.md */; }; 5C969FB92F8A494600D022F8 /* LICENSE in Resources */ = {isa = PBXBuildFile; fileRef = 5C969FB22F8A494600D022F8 /* LICENSE */; }; - 5C969FBA2F8A494600D022F8 /* README.md in Resources */ = {isa = PBXBuildFile; fileRef = 5C969FB32F8A494600D022F8 /* README.md */; }; - 5C969FBB2F8A494600D022F8 /* CLAUDE.md in Resources */ = {isa = PBXBuildFile; fileRef = 5C969FB12F8A494600D022F8 /* CLAUDE.md */; }; 5C969FBC2F8A494600D022F8 /* LICENSE in Resources */ = {isa = PBXBuildFile; fileRef = 5C969FB22F8A494600D022F8 /* LICENSE */; }; - 5C969FBD2F8A494600D022F8 /* README.md in Resources */ = {isa = PBXBuildFile; fileRef = 5C969FB32F8A494600D022F8 /* README.md */; }; - 5C969FBE2F8A494600D022F8 /* CLAUDE.md in Resources */ = {isa = PBXBuildFile; fileRef = 5C969FB12F8A494600D022F8 /* CLAUDE.md */; }; 5C969FBF2F8A494600D022F8 /* LICENSE in Resources */ = {isa = PBXBuildFile; fileRef = 5C969FB22F8A494600D022F8 /* LICENSE */; }; - 5C969FCF2F8A496000D022F8 /* 架构重构设计及计划.md in Resources */ = {isa = PBXBuildFile; fileRef = 5C969FCA2F8A496000D022F8 /* 架构重构设计及计划.md */; }; - 5C969FD02F8A496000D022F8 /* 重构计划.md in Resources */ = {isa = PBXBuildFile; fileRef = 5C969FCC2F8A496000D022F8 /* 重构计划.md */; }; - 5C969FD12F8A496000D022F8 /* 重构设计.md in Resources */ = {isa = PBXBuildFile; fileRef = 5C969FCD2F8A496000D022F8 /* 重构设计.md */; }; - 5C969FD22F8A496000D022F8 /* communication-protocol.md in Resources */ = {isa = PBXBuildFile; fileRef = 5C969FC52F8A496000D022F8 /* communication-protocol.md */; }; - 5C969FD32F8A496000D022F8 /* data-models.md in Resources */ = {isa = PBXBuildFile; fileRef = 5C969FC62F8A496000D022F8 /* data-models.md */; }; - 5C969FD42F8A496000D022F8 /* extension-reconnect.md in Resources */ = {isa = PBXBuildFile; fileRef = 5C969FC72F8A496000D022F8 /* extension-reconnect.md */; }; - 5C969FD52F8A496000D022F8 /* git-branch-strategy.md in Resources */ = {isa = PBXBuildFile; fileRef = 5C969FC82F8A496000D022F8 /* git-branch-strategy.md */; }; - 5C969FD62F8A496000D022F8 /* 设置界面重构设计.md in Resources */ = {isa = PBXBuildFile; fileRef = 5C969FCB2F8A496000D022F8 /* 设置界面重构设计.md */; }; - 5C969FD72F8A496000D022F8 /* 架构重构设计及计划.md in Resources */ = {isa = PBXBuildFile; fileRef = 5C969FCA2F8A496000D022F8 /* 架构重构设计及计划.md */; }; - 5C969FD82F8A496000D022F8 /* 重构计划.md in Resources */ = {isa = PBXBuildFile; fileRef = 5C969FCC2F8A496000D022F8 /* 重构计划.md */; }; - 5C969FD92F8A496000D022F8 /* 重构设计.md in Resources */ = {isa = PBXBuildFile; fileRef = 5C969FCD2F8A496000D022F8 /* 重构设计.md */; }; - 5C969FDA2F8A496000D022F8 /* communication-protocol.md in Resources */ = {isa = PBXBuildFile; fileRef = 5C969FC52F8A496000D022F8 /* communication-protocol.md */; }; - 5C969FDB2F8A496000D022F8 /* data-models.md in Resources */ = {isa = PBXBuildFile; fileRef = 5C969FC62F8A496000D022F8 /* data-models.md */; }; - 5C969FDC2F8A496000D022F8 /* extension-reconnect.md in Resources */ = {isa = PBXBuildFile; fileRef = 5C969FC72F8A496000D022F8 /* extension-reconnect.md */; }; - 5C969FDD2F8A496000D022F8 /* git-branch-strategy.md in Resources */ = {isa = PBXBuildFile; fileRef = 5C969FC82F8A496000D022F8 /* git-branch-strategy.md */; }; - 5C969FDE2F8A496000D022F8 /* 设置界面重构设计.md in Resources */ = {isa = PBXBuildFile; fileRef = 5C969FCB2F8A496000D022F8 /* 设置界面重构设计.md */; }; - 5C969FDF2F8A496000D022F8 /* 架构重构设计及计划.md in Resources */ = {isa = PBXBuildFile; fileRef = 5C969FCA2F8A496000D022F8 /* 架构重构设计及计划.md */; }; - 5C969FE02F8A496000D022F8 /* 重构计划.md in Resources */ = {isa = PBXBuildFile; fileRef = 5C969FCC2F8A496000D022F8 /* 重构计划.md */; }; - 5C969FE12F8A496000D022F8 /* 重构设计.md in Resources */ = {isa = PBXBuildFile; fileRef = 5C969FCD2F8A496000D022F8 /* 重构设计.md */; }; - 5C969FE22F8A496000D022F8 /* communication-protocol.md in Resources */ = {isa = PBXBuildFile; fileRef = 5C969FC52F8A496000D022F8 /* communication-protocol.md */; }; - 5C969FE32F8A496000D022F8 /* data-models.md in Resources */ = {isa = PBXBuildFile; fileRef = 5C969FC62F8A496000D022F8 /* data-models.md */; }; - 5C969FE42F8A496000D022F8 /* extension-reconnect.md in Resources */ = {isa = PBXBuildFile; fileRef = 5C969FC72F8A496000D022F8 /* extension-reconnect.md */; }; - 5C969FE52F8A496000D022F8 /* git-branch-strategy.md in Resources */ = {isa = PBXBuildFile; fileRef = 5C969FC82F8A496000D022F8 /* git-branch-strategy.md */; }; - 5C969FE62F8A496000D022F8 /* 设置界面重构设计.md in Resources */ = {isa = PBXBuildFile; fileRef = 5C969FCB2F8A496000D022F8 /* 设置界面重构设计.md */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -81,14 +51,7 @@ 5C969FB12F8A494600D022F8 /* CLAUDE.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = CLAUDE.md; sourceTree = ""; }; 5C969FB22F8A494600D022F8 /* LICENSE */ = {isa = PBXFileReference; lastKnownFileType = text; path = LICENSE; sourceTree = ""; }; 5C969FB32F8A494600D022F8 /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; - 5C969FC52F8A496000D022F8 /* communication-protocol.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = "communication-protocol.md"; sourceTree = ""; }; - 5C969FC62F8A496000D022F8 /* data-models.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = "data-models.md"; sourceTree = ""; }; - 5C969FC72F8A496000D022F8 /* extension-reconnect.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = "extension-reconnect.md"; sourceTree = ""; }; 5C969FC82F8A496000D022F8 /* git-branch-strategy.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = "git-branch-strategy.md"; sourceTree = ""; }; - 5C969FCA2F8A496000D022F8 /* 架构重构设计及计划.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = "架构重构设计及计划.md"; sourceTree = ""; }; - 5C969FCB2F8A496000D022F8 /* 设置界面重构设计.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = "设置界面重构设计.md"; sourceTree = ""; }; - 5C969FCC2F8A496000D022F8 /* 重构计划.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = "重构计划.md"; sourceTree = ""; }; - 5C969FCD2F8A496000D022F8 /* 重构设计.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = "重构设计.md"; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFileSystemSynchronizedBuildFileExceptionSet section */ @@ -198,9 +161,6 @@ 5C969FC92F8A496000D022F8 /* contracts */ = { isa = PBXGroup; children = ( - 5C969FC52F8A496000D022F8 /* communication-protocol.md */, - 5C969FC62F8A496000D022F8 /* data-models.md */, - 5C969FC72F8A496000D022F8 /* extension-reconnect.md */, 5C969FC82F8A496000D022F8 /* git-branch-strategy.md */, ); path = contracts; @@ -210,10 +170,6 @@ isa = PBXGroup; children = ( 5C969FC92F8A496000D022F8 /* contracts */, - 5C969FCA2F8A496000D022F8 /* 架构重构设计及计划.md */, - 5C969FCB2F8A496000D022F8 /* 设置界面重构设计.md */, - 5C969FCC2F8A496000D022F8 /* 重构计划.md */, - 5C969FCD2F8A496000D022F8 /* 重构设计.md */, ); path = specs; sourceTree = ""; @@ -338,16 +294,6 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - 5C969FB72F8A494600D022F8 /* README.md in Resources */, - 5C969FB82F8A494600D022F8 /* CLAUDE.md in Resources */, - 5C969FD72F8A496000D022F8 /* 架构重构设计及计划.md in Resources */, - 5C969FD82F8A496000D022F8 /* 重构计划.md in Resources */, - 5C969FD92F8A496000D022F8 /* 重构设计.md in Resources */, - 5C969FDA2F8A496000D022F8 /* communication-protocol.md in Resources */, - 5C969FDB2F8A496000D022F8 /* data-models.md in Resources */, - 5C969FDC2F8A496000D022F8 /* extension-reconnect.md in Resources */, - 5C969FDD2F8A496000D022F8 /* git-branch-strategy.md in Resources */, - 5C969FDE2F8A496000D022F8 /* 设置界面重构设计.md in Resources */, 5C969FB92F8A494600D022F8 /* LICENSE in Resources */, ); runOnlyForDeploymentPostprocessing = 0; @@ -356,17 +302,7 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - 5C969FBA2F8A494600D022F8 /* README.md in Resources */, - 5C969FBB2F8A494600D022F8 /* CLAUDE.md in Resources */, 5C969FBC2F8A494600D022F8 /* LICENSE in Resources */, - 5C969FDF2F8A496000D022F8 /* 架构重构设计及计划.md in Resources */, - 5C969FE02F8A496000D022F8 /* 重构计划.md in Resources */, - 5C969FE12F8A496000D022F8 /* 重构设计.md in Resources */, - 5C969FE22F8A496000D022F8 /* communication-protocol.md in Resources */, - 5C969FE32F8A496000D022F8 /* data-models.md in Resources */, - 5C969FE42F8A496000D022F8 /* extension-reconnect.md in Resources */, - 5C969FE52F8A496000D022F8 /* git-branch-strategy.md in Resources */, - 5C969FE62F8A496000D022F8 /* 设置界面重构设计.md in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -374,17 +310,7 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - 5C969FBD2F8A494600D022F8 /* README.md in Resources */, - 5C969FBE2F8A494600D022F8 /* CLAUDE.md in Resources */, 5C969FBF2F8A494600D022F8 /* LICENSE in Resources */, - 5C969FCF2F8A496000D022F8 /* 架构重构设计及计划.md in Resources */, - 5C969FD02F8A496000D022F8 /* 重构计划.md in Resources */, - 5C969FD12F8A496000D022F8 /* 重构设计.md in Resources */, - 5C969FD22F8A496000D022F8 /* communication-protocol.md in Resources */, - 5C969FD32F8A496000D022F8 /* data-models.md in Resources */, - 5C969FD42F8A496000D022F8 /* extension-reconnect.md in Resources */, - 5C969FD52F8A496000D022F8 /* git-branch-strategy.md in Resources */, - 5C969FD62F8A496000D022F8 /* 设置界面重构设计.md in Resources */, ); runOnlyForDeploymentPostprocessing = 0; };