{
  "brand": {
    "name": "Sokko G",
    "homeAriaLabel": "Accueil Sokko G"
  },
  "navigation": {
    "home": "Accueil",
    "toolboxes": "Toolboxes",
    "games": "Jeux",
    "library": "Librairie",
    "about": "C'est quoi Sokko G ?",
    "mobileLibrary": "Lib.",
    "mobileGames": "Infos"
  },
  "sidebar": {
    "badge": "Local only",
    "note": "Données stockées dans ce navigateur."
  },
  "topbar": {
    "dashboard": "Dashboard",
    "toolbox": "Toolboxes",
    "library": "Librairie",
    "games": "Informations jeu"
  },
  "gamesPage": {
    "eyebrow": "Pages informatives",
    "title": "Jeux disponibles",
    "description": "Choisissez un jeu pour consulter ses données maintenues et associer une toolbox locale.",
    "emptyTitle": "Aucun jeu disponible",
    "emptyText": "Ajoutez des entrées dans /data/games.json."
  },
  "library": {
    "eyebrow": "Catalogue des outils",
    "title": "Librairie",
    "description": "Parcourez tous les outils disponibles avec des exemples basiques couvrant les listes simples, les catégories, les contenus sans catégorie, les médias, les tableaux et les suivis de session.",
    "summaryLabel": "Repères de la librairie",
    "tocLabel": "Sommaire des outils",
    "tocTitle": "Sommaire",
    "docTocTitle": "Catalogue des outils",
    "tocDescription": "Accédez directement à un exemple d’outil dans la page.",
    "toolsLabel": "Exemples d'outils disponibles",
    "categoryLabel": "Usage",
    "featureHeading": "Fonctionnalités détaillées",
    "advancedHeading": "Import par texte",
    "copyExampleLabel": "Copier l'exemple",
    "copyExampleSuccess": "Exemple copié.",
    "controlLegendHeading": "Repères",
    "categories": {
      "notesTracking": "Notes & suivi",
      "references": "Références",
      "calculationData": "Calcul & données",
      "timeRoutines": "Temps & routines",
      "buildsCommands": "Builds & commandes"
    },
    "categoryDescriptions": {
      "notesTracking": "Les outils pour noter rapidement une information, suivre des objectifs et garder un état de session lisible.",
      "references": "Les outils pour centraliser cartes, captures, images annotées et liens externes utiles pendant une partie.",
      "calculationData": "Les outils pour manipuler des valeurs, comparer des données et structurer des informations en tableau.",
      "timeRoutines": "Les outils pour gérer les temps de session, les resets, les tâches récurrentes et les routines quotidiennes ou hebdomadaires.",
      "buildsCommands": "Les outils pour documenter des builds, organiser des équipements et conserver des séquences de commandes."
    },
    "toolDocs": {
      "notepad": {
        "controls": [
          {
            "group": "Édition de texte",
            "icon": "edit",
            "title": "Styles de texte",
            "preview": {
              "kind": "textFormats"
            }
          },
          {
            "group": "Édition de texte",
            "icon": "edit",
            "title": "Titre",
            "text": "S’applique a toute la ligne courante.",
            "preview": {
              "kind": "textButton",
              "label": "T"
            }
          },
          {
            "group": "Édition de texte",
            "icon": "dropdown",
            "title": "Liste à puces / Liste numérotée",
            "preview": {
              "kind": "listDropdown"
            }
          },
          {
            "group": "Édition de texte",
            "icon": "dropdown",
            "title": "Couleur / surlignage",
            "preview": {
              "kind": "color"
            }
          },
          {
            "group": "Dessin",
            "icon": "edit",
            "title": "Dessiner",
            "preview": {
              "kind": "iconButton",
              "icon": "edit"
            }
          },
          {
            "group": "Dessin",
            "icon": "rubber",
            "title": "Gommer",
            "preview": {
              "kind": "iconButton",
              "icon": "rubber"
            }
          },
          {
            "group": "Dessin",
            "icon": "dropdown",
            "title": "Couleur du trait",
            "preview": {
              "kind": "color"
            }
          },
          {
            "group": "Dessin",
            "icon": "dropdown",
            "title": "Épaisseur du trait",
            "preview": {
              "kind": "drawingWidth",
              "width": 4
            }
          },
          {
            "group": "Dessin",
            "icon": "back",
            "title": "Annuler le dernier trait",
            "preview": {
              "kind": "iconButton",
              "icon": "back"
            }
          },
          {
            "group": "Dessin",
            "icon": "trash",
            "title": "Effacer les dessins",
            "preview": {
              "kind": "iconButton",
              "icon": "trash",
              "danger": true
            }
          },
          {
            "group": "Dessin",
            "icon": "save",
            "title": "Sauvegarde du dessin",
            "preview": {
              "kind": "switch",
              "icon": "save",
              "active": true
            }
          }
        ],
        "features": [
          {
            "title": "Mise en page de texte",
            "text": "Rédaction riche avec gras, italique, souligné, barré, titres, listes à puces, listes numérotées, couleurs de texte et surlignage.",
            "details": [
              "Les boutons de mise en forme agissent sur le texte sélectionné ou sur le mot en cours de saisie.",
              "Le menu listes regroupe les listes simples et numérotées pour éviter d'avoir deux boutons permanents.",
              "Les couleurs de texte et de surlignage sont séparées pour distinguer une information importante d'un simple repère visuel."
            ]
          },
          {
            "title": "Dessin manuel",
            "text": "Ajout de traits au-dessus de la note, avec couleur, épaisseur, gomme, annulation et mode temporaire ou permanent.",
            "details": [
              "Le mode dessin place un calque transparent au-dessus de la note sans remplacer le texte.",
              "La gomme retire les traits dessinés, tandis que l'annulation retire le dernier tracé.",
              "Le mode temporaire sert aux annotations de session; le mode permanent sauvegarde les traits avec la note."
            ]
          },
          {
            "title": "Sauvegarde locale",
            "text": "Le contenu est nettoyé puis gardé dans le navigateur, avec une date de modification visible dans l'outil.",
            "details": [
              "La note conserve le texte riche autorisé, pas du HTML libre non contrôlé.",
              "La date de dernière modification permet de vérifier si une note a bien été mise à jour.",
              "Les données restent dans la toolbox locale et ne nécessitent pas de compte."
            ]
          }
        ],
        "importFormat": {
          "text": "Le bloc notes conserve du texte riche et des dessins. Il n'utilise donc pas le format d'import/export texte des outils structurés.",
          "example": "Le partage du bloc notes passe par l'export JSON de toolbox."
        }
      },
      "checklist": {
        "controls": [
          {
            "group": "Contrôles",
            "icon": "settings",
            "title": "Décrémenter / Incrémenter",
            "preview": {
              "kind": "buttonGroup",
              "buttons": [
                {
                  "label": "-"
                },
                {
                  "label": "+"
                }
              ]
            }
          },
          {
            "group": "Contrôles",
            "icon": "eye-open",
            "title": "Visible quand terminée",
            "preview": {
              "kind": "iconButton",
              "icon": "eye-open"
            }
          },
          {
            "group": "Contrôles",
            "icon": "hide",
            "title": "Réduit quand terminée",
            "preview": {
              "kind": "iconButton",
              "icon": "hide"
            }
          },
          {
            "group": "Contrôles",
            "icon": "eye-closed",
            "title": "Masqué quand terminée",
            "preview": {
              "kind": "iconButton",
              "icon": "eye-closed"
            }
          },
          {
            "group": "Contrôles",
            "icon": "drag",
            "title": "Déplacer",
            "preview": {
              "kind": "iconButton",
              "icon": "drag"
            }
          },
          {
            "group": "Contrôles",
            "icon": "edit",
            "title": "Modifier",
            "preview": {
              "kind": "iconButton",
              "icon": "edit"
            }
          },
          {
            "group": "Contrôles",
            "icon": "trash",
            "title": "Supprimer",
            "preview": {
              "kind": "iconButton",
              "icon": "trash",
              "danger": true
            }
          }
        ],
        "features": [
          {
            "title": "Objectifs et quantités",
            "text": "Chaque item possède une quantité cible et une quantité actuelle. Les boutons + et - font progresser l'item jusqu'à validation complète.",
            "details": [
              "Un item sans quantité spéciale utilise 1 comme objectif.",
              "Un item de type Potion:10 demande dix validations avant d'être terminé.",
              "La case reflète la progression réelle : cocher complète l'objectif, les boutons + et - ajustent le nombre atteint."
            ]
          },
          {
            "title": "Catégories terminées",
            "text": "Une catégorie est considérée comme terminée quand tous ses items atteignent leur quantité cible. Elle peut rester visible, passer en mode réduit ou être masquée.",
            "details": [
              "Visible garde tous les items affichés, même terminés.",
              "Réduit conserve le titre de catégorie pour garder un repère sans occuper toute la hauteur.",
              "Caché retire les catégories terminées de la vue courante pour se concentrer sur ce qui reste à faire."
            ]
          },
          {
            "title": "Réorganisation",
            "text": "Déplacement des catégories et des items par drag & drop pour garder la liste dans l'ordre voulu.",
            "details": [
              "Une catégorie peut être déplacée avant ou après une autre catégorie.",
              "Un item peut être déplacé dans la même catégorie ou envoyé dans une autre catégorie.",
              "Les zones de dépôt apparaissent pendant le déplacement pour montrer où l'item sera placé."
            ]
          }
        ],
        "importFormat": {
          "text": "Une ligne commençant par # crée une catégorie. Une ligne item peut contenir une quantité avec le format Nom:quantité.",
          "example": "# Potions\nPotion:10\nMéga potion:5\n\n# Armures\nCasque Rey Dau:1"
        }
      },
      "counters": {
        "controls": [
          {
            "group": "Contrôles",
            "icon": "settings",
            "title": "Décrémenter / Incrémenter",
            "preview": {
              "kind": "buttonGroup",
              "buttons": [
                {
                  "label": "-"
                },
                {
                  "label": "+"
                }
              ]
            }
          },
          {
            "group": "Contrôles",
            "icon": "rubber",
            "title": "Remettre à zéro",
            "preview": {
              "kind": "iconButton",
              "icon": "rubber"
            }
          },
          {
            "group": "Contrôles",
            "icon": "trash",
            "title": "Supprimer",
            "preview": {
              "kind": "iconButton",
              "icon": "trash",
              "danger": true
            }
          }
        ],
        "features": [
          {
            "title": "Compteurs rapides",
            "text": "Ajout de compteurs nommés pour suivre essais, ressources, scores, victoires ou stocks.",
            "details": [
              "Chaque compteur a son propre nom et sa propre valeur.",
              "Les compteurs sont utiles pour suivre des essais de drop, des morts, des ressources ou des manches.",
              "L'outil reste volontairement simple : pas de catégorie, pas de configuration obligatoire."
            ]
          },
          {
            "title": "Actions immédiates",
            "text": "Chaque compteur peut être incrémenté, décrémenté, réinitialisé ou supprimé sans configuration avancée.",
            "details": [
              "Le bouton + ajoute une unité au compteur.",
              "Le bouton - retire une unité si une valeur a été ajoutée par erreur.",
              "Réinitialiser remet la valeur à zéro sans supprimer le compteur; supprimer retire le compteur entier."
            ]
          }
        ],
        "importFormat": {
          "text": "Un compteur par ligne. Le libellé est séparé de la valeur avec deux-points.",
          "example": "Victoires: 12\nDéfaites: -2\nEssais boss: 34"
        }
      },
      "images": {
        "controls": [
          {
            "group": "Contrôles",
            "icon": "zoom",
            "title": "Agrandir",
            "preview": {
              "kind": "iconButton",
              "icon": "zoom"
            }
          },
          {
            "group": "Contrôles",
            "icon": "map",
            "title": "Envoyer vers annotation d’image",
            "preview": {
              "kind": "iconButton",
              "icon": "map"
            }
          },
          {
            "group": "Contrôles",
            "icon": "trash",
            "title": "Supprimer",
            "preview": {
              "kind": "iconButton",
              "icon": "trash",
              "danger": true
            }
          }
        ],
        "features": [
          {
            "title": "Galerie locale",
            "text": "Ajout de captures, cartes ou références visuelles depuis un fichier ou par collage.",
            "details": [
              "Le bouton d'ajout accepte des fichiers image depuis l'appareil.",
              "La zone de collage permet d'ajouter rapidement une capture copiée depuis le presse-papiers.",
              "Plusieurs images peuvent cohabiter dans la même galerie de toolbox."
            ]
          },
          {
            "title": "Prévisualisation",
            "text": "Chaque image peut être ouverte en grand et renommée pour retrouver rapidement la bonne référence.",
            "details": [
              "Le bouton d'aperçu ouvre l'image sans sortir de l'application.",
              "Le libellé peut être modifié pour remplacer un nom de fichier peu lisible.",
              "La suppression retire seulement l'image concernée de l'outil courant."
            ]
          },
          {
            "title": "Annotation rapide",
            "text": "Une image peut être envoyée vers l'outil d'annotation pour ajouter marqueurs et dessins.",
            "details": [
              "Annoter copie l'image vers l'outil Annotation d'images de la même toolbox.",
              "L'image devient alors le support de marqueurs, libellés et dessins.",
              "La galerie garde l'image originale pour conserver la référence source."
            ]
          }
        ],
        "importFormat": {
          "text": "Chaque image est exportée comme un bloc avec un libellé optionnel puis une data URL base64 complète.",
          "example": "# Map zone nord\ndata:image/webp;base64,UklGRiQAAABXRUJQVlA4...\n\n# Capture boss\ndata:image/png;base64,iVBORw0KGgoAAAANS..."
        }
      },
      "imageAnnotation": {
        "controls": [
          {
            "group": "Image et marqueurs",
            "icon": "zoom",
            "title": "Plein écran",
            "preview": {
              "kind": "iconButton",
              "icon": "zoom"
            }
          },
          {
            "group": "Image et marqueurs",
            "icon": "trash",
            "title": "Supprimer",
            "preview": {
              "kind": "iconButton",
              "icon": "trash",
              "danger": true
            }
          },
          {
            "group": "Dessin",
            "icon": "edit",
            "title": "Dessiner",
            "preview": {
              "kind": "iconButton",
              "icon": "edit"
            }
          },
          {
            "group": "Dessin",
            "icon": "rubber",
            "title": "Gommer",
            "preview": {
              "kind": "iconButton",
              "icon": "rubber"
            }
          },
          {
            "group": "Dessin",
            "icon": "dropdown",
            "title": "Couleur du trait",
            "preview": {
              "kind": "color"
            }
          },
          {
            "group": "Dessin",
            "icon": "dropdown",
            "title": "Épaisseur du trait",
            "preview": {
              "kind": "drawingWidth",
              "width": 4
            }
          },
          {
            "group": "Dessin",
            "icon": "back",
            "title": "Annuler le dernier trait",
            "preview": {
              "kind": "iconButton",
              "icon": "back"
            }
          },
          {
            "group": "Dessin",
            "icon": "trash",
            "title": "Effacer les dessins",
            "preview": {
              "kind": "iconButton",
              "icon": "trash",
              "danger": true
            }
          },
          {
            "group": "Dessin",
            "icon": "save",
            "title": "Sauvegarde du dessin",
            "preview": {
              "kind": "switch",
              "icon": "save",
              "active": true
            }
          }
        ],
        "features": [
          {
            "title": "Image unique annotable",
            "text": "Préparation d'une carte ou d'un plan avec une image principale, des marqueurs et des libellés.",
            "details": [
              "Une seule image sert de plan de travail pour éviter de mélanger plusieurs cartes.",
              "Les marqueurs sont placés relativement à l'image et suivent son redimensionnement.",
              "Chaque marqueur peut porter un libellé court pour nommer une zone, un objectif ou un repère."
            ]
          },
          {
            "title": "Dessin plein écran",
            "text": "Les traits sont ajoutés en édition plein écran et restent alignés avec l'image redimensionnée.",
            "details": [
              "Le plein écran donne plus de précision pour tracer sur une carte ou une capture.",
              "Les traits utilisent des coordonnées proportionnelles pour rester au bon endroit après redimensionnement.",
              "La couleur et l'épaisseur permettent de distinguer plusieurs types d'information."
            ]
          },
          {
            "title": "Annotations temporaires ou permanentes",
            "text": "Les dessins peuvent rester limités à la session ou être sauvegardés dans l'outil.",
            "details": [
              "Le mode temporaire sert aux notes rapides qui ne doivent pas polluer l'image à long terme.",
              "Le mode permanent sauvegarde les traits dans l'outil.",
              "La gomme, l'annulation et l'effacement permettent de corriger la carte pendant l'édition."
            ]
          }
        ],
        "importFormat": {
          "text": "Le format contient l'image en base64, puis les marqueurs et les dessins permanents.",
          "example": "data:image/webp;base64,UklGRiQAAABXRUJQVlA4...\n@marker: 42.5,68,Entrée\n@drawings: {\"strokes\":[]}"
        }
      },
      "links": {
        "controls": [
          {
            "group": "Contrôles",
            "icon": "copy",
            "title": "Copier",
            "preview": {
              "kind": "iconButton",
              "icon": "copy"
            }
          },
          {
            "group": "Contrôles",
            "icon": "trash",
            "title": "Supprimer",
            "preview": {
              "kind": "iconButton",
              "icon": "trash",
              "danger": true
            }
          }
        ],
        "features": [
          {
            "title": "Raccourcis de session",
            "text": "Regroupement de guides, builds, cartes interactives et ressources externes avec titres lisibles.",
            "details": [
              "Chaque lien associe un titre lisible et une URL.",
              "Le domaine est affiché pour identifier rapidement la source.",
              "L'outil sert à garder les ressources externes accessibles depuis la toolbox sans rechercher à nouveau."
            ]
          },
          {
            "title": "Copie rapide",
            "text": "Chaque URL peut être copiée directement depuis la liste.",
            "details": [
              "Copier envoie l'URL complète dans le presse-papiers.",
              "Supprimer retire uniquement le lien concerné.",
              "L'import texte permet de préparer plusieurs liens hors de l'application puis de les coller en une seule fois."
            ]
          }
        ],
        "importFormat": {
          "text": "Un lien par ligne. Séparez le titre et l'URL avec deux-points.",
          "example": "Build:https://example.com/build?class=rogue\nMap:https://example.com/map"
        }
      },
      "calculator": {
        "controls": [
          {
            "group": "Contrôles",
            "icon": "rubber",
            "title": "Tout effacer",
            "preview": {
              "kind": "iconButton",
              "icon": "rubber",
              "danger": true
            }
          },
          {
            "group": "Contrôles",
            "icon": "copy",
            "title": "Copie pour créer une checklist",
            "preview": {
              "kind": "iconButton",
              "icon": "copy"
            }
          },
          {
            "group": "Contrôles",
            "icon": "edit",
            "title": "Renommer",
            "preview": {
              "kind": "iconButton",
              "icon": "edit"
            }
          },
          {
            "group": "Contrôles",
            "icon": "trash",
            "title": "Supprimer",
            "preview": {
              "kind": "iconButton",
              "icon": "trash",
              "danger": true
            }
          }
        ],
        "features": [
          {
            "title": "Calculs enregistrés",
            "text": "Saisie d'une expression, calcul du résultat et sauvegarde avec un libellé.",
            "details": [
              "Le champ expression accepte les opérations de base et calcule le résultat avant sauvegarde.",
              "Le libellé sert à nommer un coût, une ressource, un total ou une conversion.",
              "Un résultat enregistré peut être renommé ou supprimé."
            ]
          },
          {
            "title": "Arborescence",
            "text": "Un résultat peut servir de base à des calculs enfants pour décomposer coûts, crafts ou conversions.",
            "details": [
              "Utiliser comme base crée un lien parent/enfant entre le résultat choisi et les calculs suivants.",
              "La racine revient au niveau principal pour recommencer une autre branche.",
              "Ce fonctionnement aide à détailler un craft ou un total en plusieurs sous-calculs."
            ]
          },
          {
            "title": "Copie checklist",
            "text": "Les résultats peuvent être copiés dans un format exploitable par l'import texte de checklist.",
            "details": [
              "La copie génère un texte de type Nom:quantité.",
              "Ce texte peut être collé directement dans l'import de l'outil Checklist.",
              "Le calculateur sert donc à préparer des objectifs chiffrés avant de les suivre comme tâches."
            ]
          }
        ],
        "importFormat": {
          "text": "Une ligne par résultat. L'indentation de deux espaces conserve les liens parent/enfant.",
          "example": "@scrollResults: true\nLingots: 100\n  Minerai: 500\nCristaux: 12"
        }
      },
      "table": {
        "controls": [
          {
            "group": "Contrôles",
            "icon": "add-row",
            "title": "Ajouter / Supprimer ligne",
            "preview": {
              "kind": "buttonGroup",
              "buttons": [
                {
                  "icon": "add-row"
                },
                {
                  "icon": "remove-row",
                  "danger": true
                }
              ]
            }
          },
          {
            "group": "Contrôles",
            "icon": "add-column",
            "title": "Ajouter / Supprimer colonne",
            "preview": {
              "kind": "buttonGroup",
              "buttons": [
                {
                  "icon": "add-column"
                },
                {
                  "icon": "remove-column",
                  "danger": true
                }
              ]
            }
          },
          {
            "group": "Contrôles",
            "icon": "copy",
            "title": "Exporter au format TSV",
            "preview": {
              "kind": "iconButton",
              "icon": "copy"
            }
          }
        ],
        "features": [
          {
            "title": "Grille éditable",
            "text": "Ajout et retrait de lignes ou colonnes, édition des en-têtes et sélection de cellules.",
            "details": [
              "Les boutons ligne et colonne modifient la taille de la grille sans recréer le tableau.",
              "Les en-têtes peuvent être renommés pour donner un sens aux données.",
              "La cellule active sert de repère pour certaines actions, comme appliquer une formule."
            ]
          },
          {
            "title": "Formules",
            "text": "Les cellules peuvent contenir des formules avec références à d'autres cellules.",
            "details": [
              "Une formule peut agréger ou transformer les valeurs d'une ligne, d'une colonne ou d'une cellule.",
              "Les références de cellules permettent de construire des calculs liés à d'autres données du tableau.",
              "Les erreurs de formule sont signalées dans la grille au lieu d'être ignorées silencieusement."
            ]
          },
          {
            "title": "Export TSV",
            "text": "Le tableau peut être copié en TSV pour être collé dans un tableur.",
            "details": [
              "Le format TSV sépare les colonnes par tabulation et les lignes par retour à la ligne.",
              "Il peut être collé dans un tableur externe en conservant la structure de grille.",
              "Cette copie sert d'export rapide, sans modifier le stockage local de la toolbox."
            ]
          }
        ],
        "importFormat": {
          "text": "Un TSV pur peut être importé. L'export TSV du panneau d'ajout ajoute des lignes @ pour préserver dimensions, intitulés et formules.",
          "example": "@size: 2x3\n@columns: Objet\tValeur\tTotal\n@tsv\nOeuf d'or\t20000\t=B1*3\nOeuf d'argent\t5000\t=B2*2"
        }
      },
      "timer": {
        "controls": [
          {
            "group": "Chronomètre",
            "icon": "play-circle",
            "title": "Démarrer / Pause / Stop",
            "preview": {
              "kind": "buttonGroup",
              "buttons": [
                {
                  "icon": "play-circle"
                },
                {
                  "icon": "pause-circle"
                },
                {
                  "icon": "stop-circle"
                }
              ]
            }
          },
          {
            "group": "Chronomètre",
            "icon": "record-circle",
            "title": "Étape",
            "preview": {
              "kind": "iconButton",
              "icon": "record-circle"
            }
          },
          {
            "group": "Chronomètre",
            "icon": "rubber",
            "title": "Tout effacer",
            "preview": {
              "kind": "iconButton",
              "icon": "rubber",
              "danger": true
            }
          },
          {
            "group": "Compte à rebours",
            "icon": "refresh",
            "title": "Réinitialiser",
            "preview": {
              "kind": "iconButton",
              "icon": "refresh"
            }
          },
          {
            "group": "Compte à rebours",
            "icon": "refresh",
            "title": "Reset / relance automatique",
            "preview": {
              "kind": "switch",
              "icon": "refresh",
              "active": true
            }
          },
          {
            "group": "Compte à rebours",
            "icon": "sound-mute",
            "title": "Alerte désactivée",
            "preview": {
              "kind": "iconButton",
              "icon": "sound-mute"
            }
          },
          {
            "group": "Compte à rebours",
            "icon": "sound-min",
            "title": "Alerte sur la page",
            "preview": {
              "kind": "iconButton",
              "icon": "sound-min"
            }
          },
          {
            "group": "Compte à rebours",
            "icon": "sound-max",
            "title": "Alerte sur le site",
            "preview": {
              "kind": "iconButton",
              "icon": "sound-max"
            }
          },
          {
            "group": "Compte à rebours",
            "icon": "trash",
            "title": "Supprimer",
            "preview": {
              "kind": "iconButton",
              "icon": "trash",
              "danger": true
            }
          }
        ],
        "features": [
          {
            "title": "Chronomètre",
            "text": "Suivi d'un temps avec pause, reset et étapes nommées.",
            "details": [
              "Démarrer lance le chrono, pause suspend le temps, reset remet le chrono à zéro.",
              "Le bouton étape enregistre un temps intermédiaire avec un libellé.",
              "Les étapes permettent de comparer des runs, phases ou rotations dans une session."
            ]
          },
          {
            "title": "Comptes à rebours",
            "text": "Création de timers par durée, heure précise, pattern horaire ou intervalle.",
            "details": [
              "Durée lance un timer simple, par exemple 00:30:00.",
              "Heure précise cible une heure donnée de la journée.",
              "Pattern horaire et Intervalle servent aux resets ou événements récurrents."
            ]
          },
          {
            "title": "Alertes",
            "text": "Les alertes peuvent rester liées à l'outil affiché ou être actives sur tout le site.",
            "details": [
              "Aucune alerte garde le timer silencieux.",
              "Alerte visible prévient seulement quand la toolbox concernée est ouverte.",
              "Alerte globale site peut prévenir depuis une autre page de Sokko G, avec garde-fou sur les répétitions trop fréquentes."
            ]
          }
        ],
        "importFormat": {
          "text": "Les étapes et comptes à rebours sont exportés en lignes lisibles. Les échéances sont recalculées à l'import.",
          "example": "@activeTab: countdown\nlap | label=Phase 1 | elapsedMs=90000\ncountdown | label=Boss | type=duration | durationMs=300000\ncountdown | label=Event | type=time_pattern | pattern=X:45:00"
        }
      },
      "taskPlanner": {
        "controls": [
          {
            "group": "Contrôles",
            "icon": "eye-closed",
            "title": "Masquer terminé",
            "preview": {
              "kind": "iconButton",
              "icon": "eye-closed"
            }
          },
          {
            "group": "Contrôles",
            "icon": "settings",
            "title": "Paramètres",
            "preview": {
              "kind": "iconButton",
              "icon": "settings"
            }
          },
          {
            "group": "Contrôles",
            "icon": "drag",
            "title": "Déplacer",
            "preview": {
              "kind": "iconButton",
              "icon": "drag"
            }
          },
          {
            "group": "Contrôles",
            "icon": "edit",
            "title": "Modifier",
            "preview": {
              "kind": "iconButton",
              "icon": "edit"
            }
          },
          {
            "group": "Contrôles",
            "icon": "trash",
            "title": "Supprimer",
            "preview": {
              "kind": "iconButton",
              "icon": "trash",
              "danger": true
            }
          }
        ],
        "features": [
          {
            "title": "Tâches de routine",
            "text": "Gestion de tâches ponctuelles, quotidiennes ou hebdomadaires avec resets configurables.",
            "details": [
              "Une tâche unique se coche une fois et peut être nettoyée manuellement.",
              "Une tâche quotidienne se réactive selon l'heure de reset configurée.",
              "Une tâche hebdomadaire se réactive selon le jour et l'heure choisis."
            ]
          },
          {
            "title": "Sous-tâches et prérequis",
            "text": "Une tâche peut dépendre d'un parent et signaler les prérequis non effectués.",
            "details": [
              "Le lien parent/enfant permet de regrouper une tâche sous une autre.",
              "Les prérequis indiquent qu'une tâche ne devrait pas être faite avant une autre.",
              "Les avertissements de prérequis restent visibles pour éviter de valider une routine dans le mauvais ordre."
            ]
          },
          {
            "title": "Catégories",
            "text": "Les tâches se regroupent par catégories réorganisables pour suivre une routine de session.",
            "details": [
              "Les catégories peuvent être renommées et déplacées.",
              "Une tâche peut changer de catégorie pendant la réorganisation.",
              "Masquer les tâches terminées réduit la vue aux objectifs restants."
            ]
          }
        ],
        "importFormat": {
          "text": "Les catégories commencent par #. Les tâches utilisent leur type et l'indentation de deux espaces crée les sous-tâches. Les états cochés ne sont pas repris.",
          "example": "@resetTime: 06:00\n# Raid\n- daily Préparer la route\n  @description: Prendre consommables\n  - unique Acheter potions\n  @prerequisite: true\n- weekly Coffre hebdo"
        }
      },
      "combos": {
        "controls": [
          {
            "group": "Contrôles",
            "icon": "settings",
            "title": "Successif / Simultané",
            "preview": {
              "kind": "buttonGroup",
              "buttons": [
                {
                  "label": "A › B"
                },
                {
                  "label": "A + B"
                }
              ]
            }
          },
          {
            "group": "Contrôles",
            "icon": "add",
            "title": "Ajouter input",
            "preview": {
              "kind": "iconButton",
              "icon": "add"
            }
          },
          {
            "group": "Contrôles",
            "icon": "clock",
            "title": "Hold",
            "preview": {
              "kind": "iconButton",
              "icon": "clock"
            }
          },
          {
            "group": "Contrôles",
            "icon": "back",
            "title": "Retirer touche / étape",
            "preview": {
              "kind": "buttonGroup",
              "buttons": [
                {
                  "icon": "back"
                },
                {
                  "icon": "trash",
                  "danger": true
                }
              ]
            }
          },
          {
            "group": "Contrôles",
            "icon": "edit",
            "title": "Modifier",
            "text": "Ouvre la fiche d'une pièce pour ajuster stats, craft, source et sockets.",
            "preview": {
              "kind": "iconButton",
              "icon": "edit"
            }
          },
          {
            "group": "Contrôles",
            "icon": "trash",
            "title": "Supprimer",
            "preview": {
              "kind": "iconButton",
              "icon": "trash",
              "danger": true
            }
          }
        ],
        "features": [
          {
            "title": "Séquences de touches",
            "text": "Un combo est une suite d'étapes. Une étape peut contenir une seule touche ou plusieurs touches simultanées, affichées ensemble avec un +.",
            "details": [
              "Cliquer sur une touche de la palette ajoute une nouvelle étape à la fin de la séquence.",
              "En mode successif, A puis B crée deux étapes séparées : A, puis B.",
              "En mode simultané, A puis B crée une seule étape groupée : A + B."
            ]
          },
          {
            "title": "Création successive ou simultanée",
            "text": "Le mode par défaut ajoute les inputs les uns après les autres. Le mode simultané ajoute les prochains inputs dans la même étape; le drag & drop permet aussi de fusionner deux étapes déjà créées.",
            "details": [
              "Le switch A + B sert à décider si les prochaines touches doivent entrer dans l'étape active.",
              "Déposer une touche sur une étape existante transforme cette étape en combinaison simultanée.",
              "Ce geste permet de corriger une séquence après coup sans supprimer puis recréer tout le combo."
            ]
          },
          {
            "title": "Catégories de combos",
            "text": "Les combos peuvent être regroupés, édités, déplacés et supprimés par catégorie.",
            "details": [
              "Le champ catégorie place automatiquement le combo dans le bon groupe.",
              "Les catégories se replient pour masquer des groupes déjà connus.",
              "Les poignées de déplacement servent à réordonner les catégories ou les combos dans une catégorie."
            ]
          },
          {
            "title": "Périphériques et touches personnalisées",
            "text": "La palette change selon la manette ou le clavier. Une touche personnalisée peut être ajoutée quand la commande du jeu n'existe pas dans la palette.",
            "details": [
              "Les palettes PlayStation, Xbox, Switch et Nintendo 64 affichent les boutons propres à chaque manette.",
              "Le mode clavier/souris propose les touches courantes, la souris et une bascule AZERTY/QWERTY.",
              "Le champ touche personnalisée accepte une commande courte pour documenter une touche absente de la palette."
            ]
          }
        ],
        "importFormat": {
          "text": "Les catégories commencent par #. Un combo décrit son périphérique et ses étapes avec >, tandis que + groupe des inputs simultanés.",
          "example": "@device: playstation\n# Neutral\nHadoken | device=playstation | direction:down > direction:right > button:cross\nCharge | button:square[2s] > button:triangle+button:circle"
        }
      },
      "equipmentPlanner": {
        "controls": [
          {
            "group": "Contrôles",
            "icon": "edit",
            "title": "Modifier",
            "preview": {
              "kind": "iconButton",
              "icon": "edit"
            }
          },
          {
            "group": "Contrôles",
            "icon": "drag",
            "title": "Déplacer",
            "preview": {
              "kind": "iconButton",
              "icon": "drag"
            }
          },
          {
            "group": "Contrôles",
            "icon": "trash",
            "title": "Supprimer",
            "preview": {
              "kind": "iconButton",
              "icon": "trash",
              "danger": true
            }
          }
        ],
        "features": [
          {
            "title": "Build d'équipement",
            "text": "Organisation d'équipements par type avec icônes, état actif et détails d'obtention.",
            "details": [
              "Chaque équipement appartient à un type, par exemple arme, casque ou anneau.",
              "L'état actif décide si la pièce compte dans le résumé du build.",
              "Les détails d'obtention servent à noter où récupérer ou fabriquer l'équipement."
            ]
          },
          {
            "title": "Stats et matériaux",
            "text": "Suivi des caractéristiques, bonus, matériaux de craft et totaux agrégés.",
            "details": [
              "Les statistiques numériques sont additionnées dans le résumé.",
              "Les bonus textuels restent listés à part pour ne pas perdre les effets non chiffrés.",
              "Les matériaux de craft permettent de préparer une liste de ressources à récupérer."
            ]
          },
          {
            "title": "Sertissages",
            "text": "Ajout d'objets sertis, bonus associés et liens entre sockets.",
            "details": [
              "Les sockets décrivent les emplacements disponibles sur une pièce.",
              "Un objet serti peut ajouter des stats ou des bonus propres.",
              "Les totaux de sockets aident à vérifier rapidement ce qui est déjà prévu dans le build."
            ]
          }
        ],
        "importFormat": {
          "text": "Le format est découpé par type, équipement et sous-sections Stats, Sockets et Craft.",
          "example": "# Armes | icon=sword\n## Épée runique | icon=sword | active=true\nStats\nDégâts | sword | Attaque | 12\nSockets\nJoyau attaque | shape=jewel | color=yellow\n  bonus | Compétence | sword | Attaque | 1\nCraft\nMinerai rare: 4"
        }
      }
    },
    "summaryItems": [
      {
        "icon": "toolbox",
        "title": "Tous les outils",
        "text": "Chaque exemple utilise le vrai composant de toolbox pour refléter le comportement réel."
      },
      {
        "icon": "checklist",
        "title": "Formats variés",
        "text": "Les exemples couvrent les catégories, les entrées libres, les relations parent/enfant et les vues en grille."
      },
      {
        "icon": "notepad",
        "title": "Démo locale",
        "text": "Les modifications restent limitées à cette page et ne changent pas vos toolboxes enregistrées."
      }
    ]
  },
  "home": {
    "hero": {
      "eyebrow": "Session gaming efficace",
      "title": "Sokko G",
      "description": "Centralisez vos outils et repères de jeu dans une interface locale, rapide à consulter, pensée pour accompagner vos sessions sans interrompre l’action.",
      "primaryAction": "Voir les toolboxes",
      "secondaryAction": "Voir les jeux"
    },
    "stats": {
      "toolboxSingular": "toolbox créée",
      "toolboxPlural": "toolboxs créées",
      "toolSingular": "outil disponible",
      "toolPlural": "outils disponibles"
    },
    "origin": {
      "eyebrow": "Origine du nom",
      "title": "Pourquoi Sokko G ?",
      "visualAlt": "Dragon Sokko G",
      "dialogueAriaLabel": "Dialogue d’origine du nom Sokko G",
      "caption": "\"G\" c'est pour Gaming",
      "lines": [
        {
          "speaker": "user",
          "text": "Yo !\nComment peut on traduire en un minimum de mots :\n\"faire qqch de manière efficace et rapide\" en japonais ?"
        },
        {
          "speaker": "app",
          "text": "Une traduction concise en japonais serait :\n効率よく素早くやる <i>(Kōritsu yoku subayaku yaru)</i>\nCela signifie littéralement \"le faire efficacement et rapidement.\""
        },
        {
          "speaker": "user",
          "text": "En plus court stp"
        },
        {
          "speaker": "app",
          "text": "迅速効率 <i>(Jinsoku Kōritsu)</i>\nCela signifie \"rapidité et efficacité\" en un minimum de mots."
        },
        {
          "speaker": "user",
          "text": "Encore plus court !"
        },
        {
          "speaker": "app",
          "text": "速効 <i>(Sokkō)</i>\nCela signifie \"efficacité rapide\" ou \"effet immédiat,\" selon le contexte."
        },
        {
          "speaker": "user",
          "text": "Merci ! :)"
        }
      ]
    },
    "aboutLink": "Comprendre Sokko G",
    "legal": {
      "copyright": "© 2026 Shinuwa / Sokko G. Tous droits réservés.",
      "disclaimer": "Sokko G est un projet non officiel. Les noms, logos, images, illustrations et contenus liés aux jeux présentés appartiennent à leurs éditeurs et ayants droit respectifs. Les visuels officiels utilisés sur le site restent la propriété de leurs détenteurs."
    }
  },
  "about": {
    "eyebrow": "À propos",
    "title": "C'est quoi Sokko G ?",
    "description": "Un espace second écran pour garder vos outils, repères et infos de jeu sous la main pendant une session.",
    "sections": [
      {
        "title": "Le but du site",
        "text": "Sokko G sert à regrouper les outils utiles pendant une session : notes, suivis, images, liens et repères de jeu. L’objectif est de garder les informations importantes accessibles rapidement sur un second écran."
      },
      {
        "title": "Fonctionnement",
        "text": "Chaque toolbox est composée d’outils que vous ajoutez selon vos besoins. Elle peut rester indépendante ou être associée à une page jeu pour passer rapidement du guide à vos notes personnelles."
      },
      {
        "title": "Stockage local",
        "text": "Aucun compte, aucune synchronisation cloud et aucune donnée utilisateur envoyée au serveur. Les toolboxes sont enregistrées localement dans le navigateur que vous utilisez."
      },
      {
        "title": "IndexedDB simplement",
        "text": "IndexedDB est un espace de stockage intégré au navigateur. Il permet de conserver des données locales plus riches, comme des images ou des annotations. Ces données restent liées au navigateur et au profil utilisé : un nettoyage, un changement d’appareil ou une réinitialisation peut les supprimer."
      }
    ],
    "toolsTitle": "Outils disponibles",
    "toolsLibraryLink": "Voir la librairie d'outils",
    "contribute": {
      "eyebrow": "Contribuer",
      "title": "Proposer une liste de jeu",
      "description": "Les listes servent à transformer des données de jeu en checklists prêtes à l’emploi : équipements à fabriquer, créatures à capturer, monstres à battre, objets à suivre, etc. Une bonne liste est structurée par catégories, avec des noms clairs, une courte description utile et une quantité uniquement quand elle a du sens.\n\nExemple :",
      "example": "{\n  \"titre\": \"Équipements\",\n  \"armures\": [\n    {\n      \"nom\": \"Set d'armure sombre\",\n      \"description\": \"Obtenir en quête\",\n      \"quantite\": 1\n    }\n  ]\n}",
      "promptTitle": "Prompt utile",
      "promptIntro": "Ajoutez cette précision à votre demande pour obtenir un JSON directement exploitable :",
      "promptText": "Génère uniquement un JSON valide.\nLe JSON doit contenir une propriété racine \"titre\", puis une ou plusieurs catégories.\nChaque catégorie doit être un tableau d’objets.\nChaque objet doit contenir la propriété \"nom\".\nLes propriétés \"description\" et \"quantite\" sont facultatives.\nRegroupe les éléments de manière logique.\nNe renvoie aucun texte, aucune explication et aucun Markdown."
    },
    "tools": [
      {
        "icon": "notepad",
        "name": "Bloc notes",
        "description": "Rédigez des notes riches avec titres, listes, mise en forme et repères rapides pour garder vos infos de session au même endroit."
      },
      {
        "icon": "checklist",
        "name": "Checklist",
        "description": "Suivez des objectifs en catégories ou hors catégorie, avec cases, quantités et descriptions utiles pour crafts, ressources ou préparatifs."
      },
      {
        "icon": "picture",
        "name": "Images",
        "description": "Regroupez des captures, cartes ou références visuelles ajoutées par fichier ou collage, consultables sans quitter la toolbox."
      },
      {
        "icon": "map",
        "name": "Annotation d'images",
        "description": "Ajoutez marqueurs et dessins sur une image unique pour préparer une carte, un plan de route ou une référence importante."
      },
      {
        "icon": "link",
        "name": "Liens",
        "description": "Gardez vos raccourcis de session vers guides, builds, cartes interactives ou ressources externes, avec titres lisibles."
      },
      {
        "icon": "abacus",
        "name": "Compteurs",
        "description": "Créez des compteurs ajustables pour suivre essais, ressources, scores, victoires ou stocks sans passer par un tableau."
      },
      {
        "icon": "controller",
        "name": "Combos",
        "description": "Documentez des séquences de touches par catégorie, avec supports manette ou clavier/souris et étapes successives lisibles."
      },
      {
        "icon": "calculator",
        "name": "Calculateur",
        "description": "Calculez des valeurs, enregistrez des résultats et construisez une arborescence pour comparer coûts, crafts ou conversions."
      },
      {
        "icon": "table",
        "name": "Tableau",
        "description": "Structurez des données en grille avec formules, lignes/colonnes ajustables et copie TSV pour comparer besoins ou valeurs."
      },
      {
        "icon": "clock",
        "name": "Timer",
        "description": "Préparez chronomètres, étapes, comptes à rebours, alertes et intervalles récurrents pour suivre les temps importants."
      },
      {
        "icon": "tasklist",
        "name": "Planificateur de tâches",
        "description": "Organisez des tâches ponctuelles, quotidiennes ou hebdomadaires avec catégories, sous-tâches et dépendances parent/enfant."
      },
      {
        "icon": "chest-armor",
        "name": "Planificateur d'équipements",
        "description": "Planifiez un build par types d'équipement, avec pièces actives, statistiques, matériaux de craft, bonus et sertissages."
      }
    ],
    "limitsTitle": "À retenir",
    "limits": [
      {
        "icon": "toolbox",
        "title": "Données locales",
        "text": "Vos toolboxes restent dans le navigateur et le profil utilisés. Elles ne sont pas synchronisées automatiquement entre plusieurs appareils."
      },
      {
        "icon": "export",
        "title": "Sauvegarde utile",
        "text": "Un export global régulier est recommandé, surtout avant un nettoyage du navigateur, un changement de machine ou une réinstallation."
      },
      {
        "icon": "abacus",
        "title": "Budget conseillé",
        "text": "Le budget affiché dans l’app sert de repère de confort. Ce n’est pas une limite serveur, mais un seuil au-delà duquel l’expérience peut devenir moins fluide."
      },
      {
        "icon": "picture",
        "title": "Médias lourds",
        "text": "Les images et annotations prennent plus de place que du texte. Elles sont pratiques, mais elles doivent être surveillées si vous en ajoutez beaucoup."
      }
    ]
  },
  "toolboxes": {
    "eyebrow": "Données locales",
    "title": "Toolboxes",
    "newButton": "Nouvelle toolbox",
    "libraryLink": "Voir la librairie d'outils",
    "importAll": "Importer tout",
    "exportAll": "Exporter tout",
    "importOne": "Importer une toolbox",
    "preferencesLabel": "Préférences d'interface",
    "toastPositionLabel": "Positionnement des alertes",
    "toastPositionLeft": "Afficher les alertes en bas à gauche",
    "toastPositionRight": "Afficher les alertes en bas à droite",
    "summary": "Créez des espaces modulaires pour regrouper vos outils de session : notes, suivis, références, captures et futurs outils restent accessibles rapidement, en local, par jeu ou par usage.",
    "storageHelp": {
      "title": "Sauvegardes locales",
      "text": "Vos toolboxes restent dans l'IndexedDB de ce navigateur. Rien n’est envoyé sur un serveur.",
      "items": [
        "Un nettoyage du navigateur ou un changement d’appareil peut supprimer les données.",
        "Surveillez le budget recommandé : au-delà, le navigateur peut encore stocker des données, mais l’app peut devenir moins fluide.",
        "Faites un export global régulier pour garder une sauvegarde."
      ]
    },
    "modules": {
      "notepad": {
        "placeholder": "Notes rapides...",
        "toolbarLabel": "Mise en page du bloc notes",
        "textFormatLabel": "Style du texte",
        "boldTitle": "Gras",
        "italicTitle": "Italique",
        "underlineTitle": "Souligné",
        "strikeTitle": "Barré",
        "headingTitle": "Titre",
        "listGroupLabel": "Listes",
        "bulletListTitle": "Liste à puces",
        "numberListTitle": "Liste numérotée",
        "colorGroupLabel": "Couleurs",
        "textColorLabel": "Couleur du texte",
        "highlightColorLabel": "Surlignage",
        "drawingLabel": "Dessin",
        "drawTitle": "Dessiner",
        "eraseTitle": "Gommer",
        "temporaryTitle": "Annotations temporaires",
        "permanentTitle": "Annotations permanentes",
        "undoDrawingTitle": "Annuler le dernier trait",
        "clearDrawingTitle": "Effacer les dessins",
        "drawingColorLabel": "Couleur du dessin",
        "drawingWidthLabel": "Épaisseur du trait",
        "temporaryStatus": "Dessins temporaires",
        "permanentStatus": "Dessins permanents",
        "updatedAtPrefix": "Modifié le",
        "sessionStorageError": "Les annotations temporaires n'ont pas pu être sauvegardées."
      },
      "checklist": {
        "itemPlaceholder": "Nouvel item",
        "sectionPlaceholder": "Catégorie",
        "quantityLabel": "Quantité cible",
        "addButton": "Ajouter",
        "importPlaceholder": "Importer plusieurs items...\n# Potions\nPotion:10\nMéga potion:5\n\n# Armures\nCasque Rey Dau:1",
        "importOpenButton": "Importer du texte",
        "exportOpenButton": "Exporter en format texte",
        "importModalTitle": "Importer une checklist",
        "exportModalTitle": "Exporter une checklist",
        "importButton": "Importer le texte",
        "exportButton": "Copier le texte",
        "importSuccess": "Import checklist terminé.",
        "exportSuccess": "Export checklist copié.",
        "importError": "Format de checklist invalide.",
        "hideCompletedSectionsTitle": "Réduire les catégories terminées",
        "hideCompletedSectionsFullyTitle": "Cacher les catégories terminées",
        "completedSectionsModeTitle": "Affichage des catégories terminées",
        "completedSectionsVisibleLabel": "Visible quand terminée",
        "completedSectionsReducedLabel": "Réduite quand terminée",
        "completedSectionsHiddenLabel": "Cachée quand terminée",
        "showCompletedSectionTitle": "Afficher cette catégorie terminée",
        "hideCompletedSectionTitle": "Réduire cette catégorie terminée",
        "decrementLabel": "Retirer une quantité",
        "incrementLabel": "Ajouter une quantité",
        "currentQuantityLabel": "Quantité actuelle",
        "reorderTitle": "Déplacer",
        "reorderSectionTitle": "Déplacer la catégorie",
        "sectionEditTitle": "Renommer la catégorie",
        "itemEditLabel": "Libellé",
        "categoryEditLabel": "Catégorie",
        "editTitle": "Modifier",
        "deleteTitle": "Supprimer"
      },
      "images": {
        "importPlaceholder": "# Map zone nord\ndata:image/webp;base64,...",
        "importOpenButton": "Importer du texte",
        "exportOpenButton": "Exporter en format texte",
        "importModalTitle": "Importer des images",
        "exportModalTitle": "Exporter des images",
        "importButton": "Importer le texte",
        "exportButton": "Copier le texte",
        "importSuccess": "Import d'images terminé.",
        "exportSuccess": "Export d'images copié.",
        "importError": "Format d'images invalide.",
        "exportInfo": "Les images sont exportées en base64 complet. Le texte peut donc être très long.",
        "addImages": "Ajouter des images",
        "pastePlaceholder": "Coller une image ici",
        "pasteAriaLabel": "Coller une image depuis le presse-papiers",
        "imageAlt": "Image",
        "labelPlaceholder": "Libellé de l'image",
        "labelAriaLabel": "Libellé de l'image",
        "previewAriaLabel": "Agrandir l'image",
        "reorderAriaLabel": "Déplacer l'image",
        "reorderTitle": "Déplacer",
        "annotateAriaLabel": "Annoter l'image",
        "annotateTitle": "Annoter",
        "deleteAriaLabel": "Supprimer l'image",
        "deleteTitle": "Supprimer"
      },
      "links": {
        "titlePlaceholder": "Nom du lien",
        "urlPlaceholder": "https://...",
        "addButton": "Ajouter",
        "importPlaceholder": "Importer plusieurs liens...\nBuild:https://example.com/build?class=rogue\nMap:https://example.com/map",
        "importOpenButton": "Importer du texte",
        "exportOpenButton": "Exporter en format texte",
        "importModalTitle": "Importer des liens",
        "exportModalTitle": "Exporter des liens",
        "importButton": "Importer le texte",
        "exportButton": "Copier le texte",
        "importSuccess": "Import de liens terminé.",
        "exportSuccess": "Export de liens copié.",
        "importError": "Format de liens invalide.",
        "copyTitle": "Copier",
        "copiedTitle": "Copié",
        "deleteTitle": "Supprimer"
      },
      "counters": {
        "labelPlaceholder": "Nom du compteur",
        "addButton": "Ajouter",
        "importPlaceholder": "Victoire: 12\nDéfaite: -2",
        "importOpenButton": "Importer du texte",
        "exportOpenButton": "Exporter en format texte",
        "importModalTitle": "Importer des compteurs",
        "exportModalTitle": "Exporter des compteurs",
        "importButton": "Importer le texte",
        "exportButton": "Copier le texte",
        "importSuccess": "Import de compteurs terminé.",
        "exportSuccess": "Export de compteurs copié.",
        "importError": "Format de compteurs invalide.",
        "decrementLabel": "Décrémenter",
        "incrementLabel": "Incrémenter",
        "resetTitle": "Réinitialiser",
        "deleteTitle": "Supprimer"
      },
      "combos": {
        "importPlaceholder": "@device: playstation\n# Neutral\nHadoken | device=playstation | direction:down > direction:right > button:cross",
        "importOpenButton": "Importer du texte",
        "exportOpenButton": "Exporter en format texte",
        "importModalTitle": "Importer des combos",
        "exportModalTitle": "Exporter des combos",
        "importButton": "Importer le texte",
        "exportButton": "Copier le texte",
        "importSuccess": "Import de combos terminé.",
        "exportSuccess": "Export de combos copié.",
        "importError": "Format de combos invalide.",
        "deviceLabel": "Périphérique",
        "keyboardLayoutLabel": "Disposition clavier",
        "categoryPlaceholder": "Catégorie",
        "targetCategoryLabel": "Catégorie",
        "noCategoryLabel": "Sans catégorie",
        "comboNameLabel": "Nom",
        "comboNamePlaceholder": "Nom du combo",
        "defaultComboName": "Combo",
        "emptyDraft": "Aucune touche sélectionnée.",
        "simultaneousModeTitle": "Ajouter dans l'étape active",
        "successiveModeLabel": "A › B",
        "simultaneousModeLabel": "A + B",
        "holdLabel": "Maintien (s)",
        "holdToggleLabel": "Hold",
        "removeStepTitle": "Supprimer l'étape",
        "removeLastInputTitle": "Retirer la dernière touche",
        "addComboButton": "Ajouter le combo",
        "saveComboButton": "Enregistrer",
        "cancelEditTitle": "Annuler l'édition",
        "cancelEditButton": "Annuler",
        "paletteLabel": "Palette de touches",
        "customKeyPlaceholder": "Touche personnalisée",
        "addCustomKeyButton": "Ajouter touche",
        "emptyCombos": "Aucun combo enregistré.",
        "emptySequence": "Combo sans touches",
        "showCategoryTitle": "Afficher la catégorie",
        "hideCategoryTitle": "Réduire la catégorie",
        "reorderCategoryTitle": "Déplacer la catégorie",
        "reorderComboTitle": "Déplacer le combo",
        "editComboTitle": "Modifier le combo",
        "deleteComboTitle": "Supprimer le combo"
      },
      "calculator": {
        "importPlaceholder": "@scrollResults: true\nLingots de fer: 100\n  Minerais de fer: 500",
        "importOpenButton": "Importer du texte",
        "exportOpenButton": "Exporter en format texte",
        "importModalTitle": "Importer des résultats",
        "exportModalTitle": "Exporter des résultats",
        "importButton": "Importer le texte",
        "exportButton": "Copier le texte",
        "importSuccess": "Import calculateur terminé.",
        "exportSuccess": "Export calculateur copié.",
        "importError": "Format de calculateur invalide.",
        "expressionLabel": "Calcul",
        "expressionPlaceholder": "10*10",
        "resultLabel": "Résultat",
        "labelLabel": "Libellé",
        "labelPlaceholder": "ex: Lingots de fer",
        "saveButton": "Enregistrer",
        "rootButton": "Revenir à la racine",
        "resetTitle": "Réinitialiser",
        "copyTitle": "Copier pour checklist",
        "copiedTitle": "Copié",
        "scrollableTitle": "Liste scrollable",
        "emptyResults": "Aucun résultat enregistré.",
        "readonlyValueTitle": "Quantité non modifiable",
        "useEntryTitle": "Utiliser comme base",
        "renameTitle": "Renommer",
        "deleteTitle": "Supprimer"
      },
      "table": {
        "importPlaceholder": "Collez un TSV pur ou un TSV exporté par Sokko G.",
        "importOpenButton": "Importer TSV",
        "exportOpenButton": "Exporter TSV",
        "importModalTitle": "Importer un tableau TSV",
        "exportModalTitle": "Exporter un tableau TSV",
        "importButton": "Importer le TSV",
        "exportButton": "Copier le TSV",
        "importSuccess": "Import TSV terminé.",
        "exportSuccess": "Export TSV copié.",
        "importError": "Format TSV invalide.",
        "toolbarLabel": "Actions du tableau",
        "gridLabel": "Tableau",
        "cellLabel": "Cellule",
        "rowActionsLabel": "Lignes",
        "columnActionsLabel": "Colonnes",
        "sizeLabel": "Taille du tableau",
        "addRowTitle": "Ajouter une ligne",
        "removeRowTitle": "Supprimer la dernière ligne",
        "addColumnTitle": "Ajouter une colonne",
        "removeColumnTitle": "Supprimer la dernière colonne",
        "copyTitle": "Copier les valeurs",
        "copiedTitle": "Tableau copié",
        "errorTitle": "Formule invalide",
        "columnLabel": "Intitulé de colonne",
        "rowLabel": "Intitulé de ligne",
        "columnFormulaTitle": "Référence conservée dans les formules",
        "rowFormulaTitle": "Référence conservée dans les formules"
      },
      "timer": {
        "importPlaceholder": "@activeTab: countdown\ncountdown | label=Boss | type=duration | durationMs=300000",
        "importOpenButton": "Importer du texte",
        "exportOpenButton": "Exporter en format texte",
        "importModalTitle": "Importer un timer",
        "exportModalTitle": "Exporter un timer",
        "importButton": "Importer le texte",
        "exportButton": "Copier le texte",
        "importSuccess": "Import timer terminé.",
        "exportSuccess": "Export timer copié.",
        "importError": "Format de timer invalide.",
        "stopwatchTab": "Chronomètre",
        "countdownTab": "Compte à rebours",
        "stopwatchTitle": "Chronomètre",
        "countdownTitle": "Compte à rebours",
        "startButton": "Lancer",
        "pauseButton": "Pause",
        "lapButton": "Étape",
        "resetTitle": "Réinitialiser",
        "lapLabelAriaLabel": "Libellé de l'étape",
        "countdownLabel": "Libellé",
        "countdownLabelPlaceholder": "Boss, event, craft...",
        "countdownTypeLabel": "Type",
        "durationType": "Durée",
        "dailyTimeType": "Heure précise",
        "timePatternType": "Pattern horaire",
        "intervalType": "Intervalle",
        "durationLabel": "Durée",
        "dailyTimeLabel": "Heure",
        "timePatternLabel": "Heure / minute / seconde",
        "intervalLabel": "Toutes les",
        "intervalStartNowOption": "Maintenant",
        "intervalStartTimeOption": "Heure précise",
        "intervalStartTimeLabel": "Départ",
        "addCountdownButton": "Ajouter",
        "requiredError": "Valeur requise.",
        "invalidError": "Valeur invalide.",
        "defaultCountdownLabel": "Timer",
        "finishedLabel": "Terminé",
        "targetLabel": "Suivant",
        "stepLabel": "Étape",
        "stepsTitle": "Étapes",
        "countdownsTitle": "Temps restants",
        "scrollableTitle": "Liste scrollable",
        "sortTitle": "Trier par temps restant",
        "autoRefreshTitle": "Répéter automatiquement",
        "alertModeTitle": "Mode d'alerte",
        "alertOffTitle": "Pas d'alerte",
        "alertVisibleTitle": "Alerte quand la toolbox est affichée",
        "alertSiteTitle": "Alerte sur tout le site",
        "alertTooSoonTitle": "Alerte indisponible pour une répétition inférieure à 5 minutes",
        "alertMessage": "{label} est terminé dans {toolbox}.",
        "emptySteps": "Aucune étape enregistrée.",
        "emptyCountdowns": "Aucun compte à rebours configuré.",
        "renameTitle": "Renommer",
        "deleteTitle": "Supprimer"
      },
      "taskPlanner": {
        "importPlaceholder": "@resetTime: 06:00\n# Raid\n- daily Préparer la route\n  @description: Notes rapides\n  - unique Sous-tâche",
        "importOpenButton": "Importer du texte",
        "exportOpenButton": "Exporter en format texte",
        "importModalTitle": "Importer des tâches",
        "exportModalTitle": "Exporter des tâches",
        "importButton": "Importer le texte",
        "exportButton": "Copier le texte",
        "importSuccess": "Import de tâches terminé.",
        "exportSuccess": "Export de tâches copié.",
        "importError": "Format de tâches invalide.",
        "settingsTitle": "Réglages du planificateur",
        "settingsButtonLabel": "Paramètres des réinitialisations",
        "hideCompletedTitle": "Masquer les tâches effectuées",
        "globalWeeklyResetDayLabel": "Reset hebdo",
        "resetTimeLabel": "Heure de reset",
        "clearCompletedUniqueTitle": "Nettoyer les tâches ponctuelles effectuées",
        "clearCompletedUniqueButton": "Nettoyer les tâches ponctuelles terminées",
        "titlePlaceholder": "Nouvelle tâche",
        "titleLabel": "Titre",
        "descriptionPlaceholder": "Description",
        "descriptionLabel": "Description",
        "typeLabel": "Type",
        "uniqueType": "Ponctuelle",
        "dailyType": "Quotidienne",
        "weeklyType": "Hebdomadaire",
        "addButton": "Ajouter",
        "reorderTitle": "Déplacer",
        "checkTitle": "Marquer effectué",
        "uncheckTitle": "Marquer non effectué",
        "deleteTitle": "Supprimer",
        "showDescriptionTitle": "Afficher la description",
        "hideDescriptionTitle": "Masquer la description",
        "taskSettingsTitle": "Réglages de la tâche",
        "missingPrerequisiteTitle": "Pré requis non effectué",
        "missingPrerequisiteBadge": "Dépend du parent",
        "missingPrerequisiteNotice": "Pré requis parent non effectué",
        "categoryLabel": "Catégorie",
        "categoryPlaceholder": "Nom de catégorie",
        "categoryReorderTitle": "Déplacer la catégorie",
        "uncategorizedDropTitle": "Sans catégorie",
        "showCategoryTitle": "Afficher cette catégorie",
        "hideCategoryTitle": "Réduire cette catégorie",
        "taskDailyResetTimeLabel": "Heure quotidienne",
        "inheritResetTime": "Utiliser l'heure globale",
        "taskResetLabel": "Réinitialisation",
        "noTaskResetLabel": "Aucun reset",
        "taskWeeklyResetDayLabel": "Jour hebdo",
        "inheritWeeklyResetDay": "Global",
        "linksLabel": "Parent",
        "emptyLinks": "Aucun parent",
        "addLinkLabel": "Définir un parent",
        "prerequisiteCheckboxLabel": "Pré requis",
        "removeRelationTitle": "Retirer",
        "emptyTasks": "Aucune tâche planifiée."
      },
      "equipmentPlanner": {
        "importPlaceholder": "# Équipements | icon=shield\n## Épée runique | icon=sword | active=true\nStats\nDégâts | sword | Attaque | 12\nCraft\nMinerai rare: 4",
        "importOpenButton": "Importer du texte",
        "exportOpenButton": "Exporter en format texte",
        "importModalTitle": "Importer des équipements",
        "exportModalTitle": "Exporter des équipements",
        "importButton": "Importer le texte",
        "exportButton": "Copier le texte",
        "importSuccess": "Import d'équipements terminé.",
        "exportSuccess": "Export d'équipements copié.",
        "importError": "Format d'équipements invalide.",
        "equipmentIconLabel": "Type",
        "typePlaceholder": "Type d'équipement",
        "equipmentPlaceholder": "Nouvel équipement",
        "addEquipmentButton": "Ajouter",
        "summaryTitle": "Résumé",
        "activeEquipmentsSingular": "équipement actif",
        "activeEquipmentsPlural": "équipements actifs",
        "numericTotalsTitle": "Totaux",
        "equipmentTotalsTitle": "Statistiques de l'équipement",
        "socketTotalsTitle": "Objets sertis",
        "mixedTotalsTitle": "Totaux fusionnés",
        "summaryTooltipTitle": "Provenance",
        "textBonusesTitle": "Bonus",
        "emptyTotals": "Aucun total numérique.",
        "emptyTextBonuses": "Aucun bonus non numérique.",
        "emptyEquipments": "Aucun équipement planifié.",
        "activeLabel": "Actif",
        "includeInSummaryLabel": "Inclure dans le résumé",
        "reorderTypeTitle": "Déplacer le type",
        "renameTypeTitle": "Renommer le type",
        "showTypeTitle": "Afficher ce type",
        "hideTypeTitle": "Réduire ce type",
        "reorderEquipmentTitle": "Déplacer",
        "renameEquipmentTitle": "Renommer",
        "showDetailsTitle": "Afficher les détails",
        "hideDetailsTitle": "Masquer les détails",
        "deleteEquipmentTitle": "Supprimer",
        "tabsLabel": "Ajout de caractéristiques",
        "statsTab": "Stats / affixe",
        "socketsTab": "Objets à sertir",
        "craftTab": "Craft",
        "displayStatsTitle": "Statistiques",
        "displaySocketTitle": "Objets sertis",
        "editModeTitle": "Mode édition",
        "viewModeTitle": "Mode affichage",
        "editModeButton": "Éditer",
        "viewModeButton": "Affichage",
        "obtainLabel": "Obtention",
        "obtainPlaceholder": "Comment obtenir ou créer cet équipement",
        "emptyObtain": "Aucune obtention renseignée.",
        "characteristicsTitle": "Caractéristiques",
        "traitIconLabel": "Icône",
        "categoryPlaceholder": "Catégorie",
        "traitNamePlaceholder": "Nom",
        "traitValuePlaceholder": "Valeur",
        "addTraitButton": "Ajouter",
        "reorderTraitTitle": "Déplacer",
        "reorderCategoryTitle": "Déplacer la catégorie",
        "deleteTraitTitle": "Supprimer",
        "emptyCharacteristics": "Aucune caractéristique.",
        "materialsTitle": "Matériaux",
        "materialNamePlaceholder": "Matériau",
        "materialQtyLabel": "Quantité",
        "addMaterialButton": "Ajouter",
        "deleteMaterialTitle": "Supprimer",
        "socketItemsTitle": "Objets sertis",
        "emptySocketItems": "Aucun objet serti.",
        "socketNamePlaceholder": "Joyau, materia...",
        "socketShapeLabel": "Forme",
        "socketColorLabel": "Couleur",
        "addSocketButton": "Ajouter",
        "bonusNamePlaceholder": "Bonus",
        "addBonusButton": "Ajouter",
        "deleteSocketTitle": "Supprimer",
        "deleteBonusTitle": "Supprimer",
        "addSocketLinkLabel": "Lier à",
        "deleteSocketLinkTitle": "Retirer le lien"
      },
      "imageAnnotation": {
        "importPlaceholder": "data:image/webp;base64,...\n@marker: 42.5,68,Entrée\n@drawings: {\"strokes\":[]}",
        "importOpenButton": "Importer du texte",
        "exportOpenButton": "Exporter en format texte",
        "importModalTitle": "Importer une annotation",
        "exportModalTitle": "Exporter une annotation",
        "importButton": "Importer le texte",
        "exportButton": "Copier le texte",
        "importSuccess": "Import d'annotation terminé.",
        "exportSuccess": "Export d'annotation copié.",
        "importError": "Format d'annotation invalide.",
        "exportInfo": "L'image annotée est exportée en base64 complet. Le texte peut donc être très long.",
        "addImage": "Ajouter une image",
        "replaceImage": "Remplacer l'image",
        "pastePlaceholder": "Coller une image ici",
        "pasteAriaLabel": "Coller une image à annoter depuis le presse-papiers",
        "stageAriaLabel": "Ajouter un marqueur sur l'image",
        "addMarkerAriaLabel": "Ajouter un marqueur sur l'image",
        "imageAlt": "Image annotée",
        "previewTitle": "Agrandir",
        "previewAriaLabel": "Agrandir l'image annotée",
        "markerPrefix": "Marqueur",
        "markersSingular": "marqueur",
        "markersPlural": "marqueurs",
        "markerPlaceholder": "Libellé du marqueur",
        "emptyImage": "Ajoutez une image pour commencer l'annotation.",
        "emptyMarkers": "Agrandissez l'image pour ajouter un marqueur.",
        "deleteImageTitle": "Supprimer l'image",
        "deleteMarkerTitle": "Supprimer",
        "drawingLabel": "Dessin",
        "drawTitle": "Dessiner",
        "eraseTitle": "Gommer",
        "undoDrawingTitle": "Annuler le dernier trait",
        "clearDrawingTitle": "Effacer les dessins",
        "drawingColorLabel": "Couleur du dessin",
        "drawingWidthLabel": "Épaisseur du trait",
        "temporaryTitle": "Annotations temporaires",
        "permanentTitle": "Annotations permanentes",
        "sessionStorageError": "Les annotations temporaires n'ont pas pu être sauvegardées."
      }
    },
    "emptyTitle": "Aucune toolbox",
    "emptyText": "Créez une première toolbox pour stocker vos outils dans ce navigateur."
  }
}
