/**
 * fr.js - Français (French) locale
 * Seules les clés différentes de en.js sont définies ici.
 * Les clés manquantes sont complétées par en.js via deep-merge dans resolveLocale.
 */

/** @type {Partial<import('../../../types/index.js').AsnLocale>} */
export const fr = {
  toolbar: {
    bold: 'Gras (Ctrl+B)',
    italic: 'Italique (Ctrl+I)',
    underline: 'Souligné (Ctrl+U)',
    strikethrough: 'Barré',
    superscript: 'Exposant',
    subscript: 'Indice',
    alignLeft: 'Aligner à gauche',
    alignCenter: 'Centrer',
    alignRight: 'Aligner à droite',
    alignJustify: 'Justifier',
    ul: 'Liste à puces',
    ol: 'Liste numérotée',
    checklist: 'Liste de tâches',
    indent: 'Augmenter le retrait',
    outdent: 'Diminuer le retrait',
    undo: 'Annuler (Ctrl+Z)',
    redo: 'Rétablir (Ctrl+Y)',
    hr: 'Ligne horizontale',
    link: 'Insérer un lien',
    image: 'Insérer une image',
    video: 'Insérer une vidéo',
    emoji: 'Insérer un emoji',
    icon: 'Insérer une icône FA',
    table: 'Insérer un tableau',
    fontSize: 'Taille de police',
    fontSizePlaceholder: 'Taille',
    removeFormat: 'Effacer la mise en forme',
    direction: 'Basculer la direction du texte (LTR / RTL)',
    fontFamily: 'Police',
    paragraphStyle: 'Style de paragraphe',
    paragraphStylePlaceholder: 'Style',
    lineHeight: 'Interligne',
    lineHeightPlaceholder: '\u2195 Ligne',
    codeview: 'Afficher le code HTML',
    fullscreen: 'Plein écran',
    shortcuts: 'Raccourcis clavier (Ctrl+Shift+/)',
    find: 'Rechercher (Ctrl+F)',
    findReplace: 'Rechercher et remplacer (Ctrl+H)',
    inlineCode: 'Code inline (Ctrl+`)',
    print: 'Imprimer',
    foreColor: 'Couleur du texte',
    backColor: 'Couleur de surbrillance',
    chooseTextColor: 'Choisir la couleur du texte',
    chooseHighlightColor: 'Choisir la couleur de surbrillance',
    customColor: 'Couleur personnalisée',
    insertTableLabel: 'Insérer un tableau',
    paragraphItems: {
      p:          'Normal',
      blockquote: 'Citation',
      pre:        'Code',
    },
  },

  linkDialog: {
    ariaLabel:       'Insérer un lien',
    title:           'Insérer un lien',
    url:             'URL',
    urlPlaceholder:  'https://',
    displayText:     'Texte affiché',
    textPlaceholder: 'Texte du lien',
    openInNewTab:    'Ouvrir dans un nouvel onglet',
    insertBtn:       'Insérer',
    cancelBtn:       'Annuler',
  },

  imageDialog: {
    ariaLabel:      'Insérer une image',
    title:          'Insérer une image',
    imageUrl:       'URL de l\'image',
    urlPlaceholder: 'https://example.com/image.png',
    altText:        'Texte alternatif',
    altPlaceholder: 'Description de l\'image',
    alignment:      'Alignement',
    alignNone:      'Aucun',
    alignLeft:      'Gauche',
    alignCenter:    'Centre',
    alignRight:     'Droite',
    uploadLabel:    'Ou téléverser un fichier',
    insertBtn:      'Insérer',
    cancelBtn:      'Annuler',
  },

  videoDialog: {
    ariaLabel:       'Insérer une vidéo',
    title:           'Insérer une vidéo',
    videoUrl:        'URL de la vidéo',
    urlPlaceholder:  'YouTube, Vimeo ou URL .mp4 directe',
    widthLabel:      'Largeur (px)',
    widthPlaceholder: '560',
    insertBtn:       'Insérer',
    cancelBtn:       'Annuler',
    detected:        (type) => `Détecté\u00a0: ${type}`,
    unknownFormat:   'Format inconnu \u2014 tentative d\'intégration directe',
    invalidUrl:      'URL invalide \u2014 veuillez saisir un lien vidéo valide.',
  },

  emojiDialog: {
    ariaLabel:         'Insérer un emoji',
    title:             'Insérer un emoji',
    searchPlaceholder: 'Rechercher des emojis\u2026',
    all:               'Tout',
    cancelBtn:         'Annuler',
    close:             'Fermer',
    categories: {
      smileys: 'Smileys',
      people:  'Personnes',
      animals: 'Animaux',
      food:    'Nourriture',
      travel:  'Voyage',
      objects: 'Objets',
      symbols: 'Symboles',
    },
  },

  iconDialog: {
    ariaLabel:         'Insérer une icône FA',
    title:             'Insérer une icône FA',
    searchPlaceholder: 'Rechercher des icônes\u2026',
    all:               'Tout',
    style:             'Style',
    size:              'Taille',
    color:             'Couleur',
    useColor:          ' Utiliser la couleur',
    selectHint:        'Sélectionner une icône',
    insertBtn:         'Insérer une icône FA',
    cancelBtn:         'Annuler',
    close:             'Fermer',
    categories: {
      popular:       'Populaire',
      interface:     'Interface',
      navigation:    'Navigation',
      media:         'Média',
      communication: 'Communication',
      files:         'Fichiers',
      people:        'Personnes',
      objects:       'Objets',
    },
  },

  findReplace: {
    findTitle:          'Rechercher',
    findReplaceTitle:   'Rechercher et remplacer',
    findPlaceholder:    'Rechercher\u2026',
    searchAriaLabel:    'Texte à rechercher',
    caseSensitive:      '\u00a0Respecter la casse',
    prevBtn:            '\u2190 Préc.',
    nextBtn:            'Suiv. \u2192',
    replacePlaceholder: 'Remplacer par\u2026',
    replaceAriaLabel:   'Remplacer par',
    replaceBtn:         'Remplacer',
    replaceAllBtn:      'Tout remplacer',
    close:              '\u00d7',
  },

  shortcutsDialog: {
    title:     'Raccourcis clavier',
    ariaLabel: 'Raccourcis clavier',
    close:     'Fermer',
    shortcuts: [
      {
        category: 'Mise en forme du texte',
        items: [
          { keys: 'Ctrl + B', action: 'Gras' },
          { keys: 'Ctrl + I', action: 'Italique' },
          { keys: 'Ctrl + U', action: 'Souligné' },
          { keys: 'Ctrl + K', action: 'Insérer / modifier un lien' },
        ],
      },
      {
        category: 'Historique',
        items: [
          { keys: 'Ctrl + Z',                      action: 'Annuler' },
          { keys: 'Ctrl + Y  /  Ctrl + Shift + Z', action: 'Rétablir' },
        ],
      },
      {
        category: 'Sélection et navigation',
        items: [
          { keys: 'Ctrl + A',    action: 'Tout sélectionner' },
          { keys: 'Tab',         action: 'Augmenter le retrait / insérer des espaces' },
          { keys: 'Shift + Tab', action: 'Diminuer le retrait' },
        ],
      },
      {
        category: 'Presse-papiers',
        items: [
          { keys: 'Ctrl + Shift + V', action: 'Coller en texte brut' },
        ],
      },
      {
        category: 'Rechercher et remplacer',
        items: [
          { keys: 'Ctrl + F', action: 'Rechercher dans le document' },
          { keys: 'Ctrl + H', action: 'Rechercher et remplacer' },
        ],
      },
      {
        category: 'Éditeur',
        items: [
          { keys: 'Ctrl + Shift + /', action: 'Afficher les raccourcis clavier' },
        ],
      },
    ],
  },

  contextMenu: {
    cut:             'Couper',
    copy:            'Copier',
    paste:           'Coller',
    bold:            'Gras',
    italic:          'Italique',
    underline:       'Souligné',
    textColor:       'Couleur du texte',
    highlightColor:  'Couleur de surbrillance',
    copyFormat:      'Copier la mise en forme',
    pasteFormat:     'Coller la mise en forme',
    removeFormat:    'Effacer la mise en forme',
    link:            'Insérer un lien',
    image:           'Insérer une image',
    video:           'Insérer une vidéo',
    table:           'Insérer un tableau',
    back:            'Retour',
    noHighlight:     'Sans surbrillance',
    customColor:     'Couleur personnalisée',
    customColorLabel: 'Personnaliser\u2026',
  },

  statusbar: {
    resizeHandle: 'Faire glisser pour redimensionner',
    words:      (n) => `Mots\u00a0: ${n}`,
    wordsLimit: (n, max) => `Mots\u00a0: ${n}/${max}`,
    chars:      (n) => `Caractères\u00a0: ${n}`,
    charsLimit: (n, max) => `Caractères\u00a0: ${n}/${max}`,
  },

  tooltips: {
    link: {
      ariaLabel:  'Actions du lien',
      openLink:   'Ouvrir le lien',
      copyUrl:    'Copier l\'URL',
      editLink:   'Modifier le lien',
      removeLink: 'Supprimer le lien',
    },
    image: {
      ariaLabel:    'Actions de l\'image',
      label:        'Image',
      floatLeft:    'Flottant à gauche',
      noFloat:      'Sans flottant',
      alignCenter:  'Centré',
      floatRight:   'Flottant à droite',
      originalSize: 'Taille originale',
      rotateLeft:   'Rotation à gauche',
      rotateRight:  'Rotation à droite',
      cropImage:    'Recadrer l\'image',
      addCaption:   'Ajouter / modifier la légende',
      deleteImage:  'Supprimer l\'image',
    },
    code: {
      ariaLabel:          'Actions du bloc de code',
      label:              'Code',
      syntaxLanguage:     'Langage de syntaxe',
      syntaxAriaLabel:    'Langage de syntaxe',
      copyCode:           'Copier le code',
      toggleWordWrap:     'Activer/désactiver le retour à la ligne',
      enableWordWrap:     'Activer le retour à la ligne',
      disableWordWrap:    'Désactiver le retour à la ligne',
      convertToParagraph: 'Convertir en paragraphe',
      deleteCodeBlock:    'Supprimer le bloc de code',
    },
    table: {
      ariaLabel:          'Actions du tableau',
      label:              'Tableau',
      selectCells:        'Sélectionner des cellules',
      addRowAbove:        'Ajouter une ligne au-dessus',
      addRowBelow:        'Ajouter une ligne en-dessous',
      deleteRow:          'Supprimer la ligne',
      addColumnLeft:      'Ajouter une colonne à gauche',
      addColumnRight:     'Ajouter une colonne à droite',
      deleteColumn:       'Supprimer la colonne',
      mergeCells:         'Fusionner les cellules',
      unmergeCells:       'Scinder les cellules',
      columnWidth:        'Largeur de colonne',
      rowHeight:          'Hauteur de ligne',
      tableBorderWidth:   'Épaisseur des bordures',
      deleteTable:        'Supprimer le tableau',
      columnWidthPx:      'Largeur de colonne (px)',
      rowHeightPx:        'Hauteur de ligne (px)',
      tableBorderWidthPx: 'Épaisseur des bordures (px)',
      cancelBtn:          'Annuler',
      applyBtn:           'Appliquer',
    },
    video: {
      ariaLabel:    'Actions de la vidéo',
      label:        'Vidéo',
      floatLeft:    'Flottant à gauche',
      noFloat:      'Sans flottant',
      alignCenter:  'Centré',
      floatRight:   'Flottant à droite',
      originalSize: 'Taille originale',
      previewVideo: 'Aperçu',
      exitPreview:  'Quitter l\'aperçu',
      deleteVideo:  'Supprimer la vidéo',
    },
  },

  errors: {
    imageFormat: (type) =>
      `Le format "${type}" n'est pas pris en charge par le navigateur. Veuillez le convertir en JPEG, PNG ou WebP.`,
    imageSize: (maxSize) =>
      `Le fichier image est trop volumineux. La taille maximale autorisée est de ${maxSize}\u00a0Mo.`,
  },
};
