fix: i18n complet — mobile, backlinks, undo/redo, content-area
- mobile-action-sheet.tsx: 15 chaînes → t() - wikilinks-backlinks-panel.tsx: 3 chaînes → t() + import useLanguage - note-content-area.tsx: 'Cliquez pour éditer' → t() - undo-redo-feedback-extension.ts: strings → options configurables - i18n FR/EN: 11 nouvelles clés (mobile.*, editor.*) - SlashPreview et SlashCommand: déjà OK (i18n via localCommands)
This commit is contained in:
@@ -101,84 +101,84 @@ export function MobileActionSheet({
|
||||
<div className="mobile-action-sheet-body">
|
||||
{/* Section 1 : Actions de bloc */}
|
||||
<div className="mobile-action-sheet-section">
|
||||
<h4 className="section-title">Actions sur le bloc</h4>
|
||||
<h4 className="section-title">{t('mobile.blockActions') || 'Actions sur le bloc'}</h4>
|
||||
<div className="grid grid-cols-3 gap-2">
|
||||
<button type="button" className="action-tile-btn" onClick={handleSelectAllBlock}>
|
||||
<FileText size={20} className="text-blue-500" />
|
||||
<span>Sélectionner tout</span>
|
||||
<span>{t('mobile.selectAll') || 'Sélectionner tout'}</span>
|
||||
</button>
|
||||
<button type="button" className="action-tile-btn" onClick={handleDuplicateBlock}>
|
||||
<Copy size={20} className="text-emerald-500" />
|
||||
<span>Dupliquer</span>
|
||||
<span>{t('mobile.duplicate') || 'Dupliquer'}</span>
|
||||
</button>
|
||||
<button type="button" className="action-tile-btn text-rose-500" onClick={handleDeleteBlock}>
|
||||
<Trash2 size={20} className="text-rose-500" />
|
||||
<span>Supprimer</span>
|
||||
<span>{t('mobile.delete') || 'Supprimer'}</span>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{/* Section 2 : IA Note */}
|
||||
<div className="mobile-action-sheet-section">
|
||||
<h4 className="section-title">IA Note</h4>
|
||||
<h4 className="section-title">{t('mobile.aiNote') || 'IA Note'}</h4>
|
||||
<div className="grid grid-cols-4 gap-2">
|
||||
<button type="button" className="action-tile-btn" onClick={() => handleAiAction('improve')}>
|
||||
<Wand2 size={18} className="text-purple-500 animate-pulse" />
|
||||
<span className="text-[10px]">Améliorer</span>
|
||||
<span className="text-[10px]">{t('richTextEditor.slashImprove') || 'Améliorer'}</span>
|
||||
</button>
|
||||
<button type="button" className="action-tile-btn" onClick={() => handleAiAction('clarify')}>
|
||||
<Lightbulb size={18} className="text-amber-500" />
|
||||
<span className="text-[10px]">Clarifier</span>
|
||||
<span className="text-[10px]">{t('richTextEditor.slashClarify') || 'Clarifier'}</span>
|
||||
</button>
|
||||
<button type="button" className="action-tile-btn" onClick={() => handleAiAction('shorten')}>
|
||||
<Scissors size={18} className="text-indigo-500" />
|
||||
<span className="text-[10px]">Raccourcir</span>
|
||||
<span className="text-[10px]">{t('richTextEditor.slashShorten') || 'Raccourcir'}</span>
|
||||
</button>
|
||||
<button type="button" className="action-tile-btn" onClick={() => handleAiAction('expand')}>
|
||||
<Expand size={18} className="text-teal-500" />
|
||||
<span className="text-[10px]">Développer</span>
|
||||
<span className="text-[10px]">{t('richTextEditor.slashExpand') || 'Développer'}</span>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{/* Section 3 : Format de bloc */}
|
||||
<div className="mobile-action-sheet-section">
|
||||
<h4 className="section-title">Convertir le format</h4>
|
||||
<h4 className="section-title">{t('mobile.convertFormat') || 'Convertir le format'}</h4>
|
||||
<div className="flex gap-2 overflow-x-auto pb-2 scrollbar-none">
|
||||
<button
|
||||
type="button"
|
||||
className="format-pill-btn"
|
||||
onClick={() => { editor.chain().focus().setParagraph().run(); onClose() }}
|
||||
>
|
||||
Paragraphe
|
||||
{t('mobile.paragraph') || 'Paragraphe'}
|
||||
</button>
|
||||
<button
|
||||
type="button"
|
||||
className="format-pill-btn"
|
||||
onClick={() => { editor.chain().focus().toggleHeading({ level: 1 }).run(); onClose() }}
|
||||
>
|
||||
<Heading1 size={14} className="inline mr-1" /> Titre 1
|
||||
<Heading1 size={14} className="inline mr-1" /> {t('notes.heading1') || 'Titre 1'}
|
||||
</button>
|
||||
<button
|
||||
type="button"
|
||||
className="format-pill-btn"
|
||||
onClick={() => { editor.chain().focus().toggleHeading({ level: 2 }).run(); onClose() }}
|
||||
>
|
||||
<Heading2 size={14} className="inline mr-1" /> Titre 2
|
||||
<Heading2 size={14} className="inline mr-1" /> {t('notes.heading2') || 'Titre 2'}
|
||||
</button>
|
||||
<button
|
||||
type="button"
|
||||
className="format-pill-btn"
|
||||
onClick={() => { editor.chain().focus().toggleHeading({ level: 3 }).run(); onClose() }}
|
||||
>
|
||||
<Heading3 size={14} className="inline mr-1" /> Titre 3
|
||||
<Heading3 size={14} className="inline mr-1" /> {t('notes.heading3') || 'Titre 3'}
|
||||
</button>
|
||||
<button
|
||||
type="button"
|
||||
className="format-pill-btn"
|
||||
onClick={() => { editor.chain().focus().toggleBlockquote().run(); onClose() }}
|
||||
>
|
||||
<Quote size={14} className="inline mr-1" /> Citation
|
||||
<Quote size={14} className="inline mr-1" /> {t('mobile.quote') || 'Citation'}
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user