Application · Accessibilité numérique · Civic Tech

LSF Generator

Application web de traduction en Langue des Signes Française, conçue pour être elle-même un modèle d'accessibilité — 10 modes d'adaptation, conformité WCAG 2.1 AA, double source de données LSF.

🤟 LSF · Langue des Signes Fr. WCAG 2.1 AA RGAA 4.1 10 modes d'accessibilité Vanilla JS · GitHub Pages
the-web-girl.github.io/LSF-Generator/
Accessibilité :
Aa Dyslexie
A- A A+
◑ Daltonien
🌙 Sombre
📖 Simplifié
27/200
Mot par mot
Phrase complète
Résultats LSF
🤝
BONJOUR
COMMENT
🌟
ALLER
👋
VOUS
Historique
Bonjour comment allez-vous
Merci
Au revoir
Je m'appelle
Tout effacer
10
Modes d'accessibilité
🗄️
2
Sources LSF externes
📜
2
Modes de génération
🔤
200
Caractères max / requête
🏆 Double engagement : accessibilité du contenu ET de l'interface
Ce projet est unique : il rend la LSF accessible à tous, tout en étant lui-même un modèle
d'accessibilité numérique conforme aux standards WCAG 2.1 AA et RGAA 4.1.
WCAG 2.1 AA
RGAA 4.1
ARIA Live
Clavier 100%
À propos

Le LSF Generator est une application web développée sous la marque IntA11Y — Solutions, dédiée à l'accessibilité numérique pour tous. Elle permet à n'importe quel utilisateur de traduire un mot ou une phrase en français vers sa représentation en Langue des Signes Française, via des vidéos ou illustrations.

La particularité du projet réside dans sa double ambition : rendre la LSF accessible, et être elle-même une démonstration d'excellence en accessibilité numérique — avec 10 modes d'adaptation distincts intégrés directement dans la barre de navigation, allant de la police dyslexique au mode daltonien.

Les données LSF sont fournies par deux dictionnaires de référence : Elix LSF et SpreadTheSign.

Fonctionnalités clés
  • 🤟
    Traduction LSF — mot par mot ou phrase complète, rendu vidéo ou illustration
  • 🕐
    Historique de recherche — persistance des requêtes précédentes, effacement global
  • 10 modes d'accessibilité — police dyslexique, taille texte, daltonien, N&B, sombre, simplifié
  • ⌨️
    Navigation 100% clavier — compatibilité NVDA, JAWS, VoiceOver
  • 📢
    ARIA Live Regions — annonces dynamiques pour les lecteurs d'écran
  • 🔗
    Double source de données — Elix LSF + SpreadTheSign, fallback automatique
  • 📋
    Déclaration d'accessibilité — modale dédiée RGAA 4.1, contact dédié access@inta11y.fr
Les 10 modes d'adaptation intégrés
Aa
Police Dyslexie
OpenDyslexic appliquée globalement
A-
Texte −
Réduction à 80% de la taille de base
A
Texte normal
Réinitialisation à 100%
A+
Texte +
Agrandissement à 150%
Daltonien
Filtre CSS deutéranopie
Noir & Blanc
Grayscale total de l'interface
🌙
Mode sombre
Thème dark complet
📖
Simplifié
Mode lecture simplifiée
⌨️
Navigation clavier
Focus visible, ordre logique
📢
Lecteurs d'écran
ARIA Live, NVDA/JAWS/VoiceOver
✓ WCAG 2.1 niveau AA ✓ RGAA 4.1 ✓ WAI-ARIA 1.2
Dictionnaires LSF externes
SourceTypeCouvertureFormat
Elix LSF
elix-lsf.fr
Vidéos Dictionnaire LSF de référence français, milliers de signes API embed iframe video
SpreadTheSign
sign-lang.uni-hamburg.de
Vidéos Base multilingue européenne, corpus Uni. Hamburg / DictaSign API embed fallback

L'application interroge les deux sources en séquence : si Elix LSF ne trouve pas de résultat pour un mot, SpreadTheSign est utilisé en fallback automatique. L'utilisateur n'a pas à choisir manuellement — la résolution est transparente.

index.html — Barre d'accessibilité HTML
<!-- Barre d'accessibilité en navigation principale ──── -->
<nav id="a11y-bar" aria-label="Options d'accessibilité">

  <!-- Police pour dyslexie ── OpenDyslexic -->
  <button id="btn-dyslexie" aria-pressed="false"
           aria-label="Activer la police pour dyslexie">
    Aa Dyslexie
  </button>

  <!-- Taille du texte -->
  <button id="btn-text-sm" aria-label="Réduire la taille du texte">A-</button>
  <button id="btn-text-reset" aria-label="Taille par défaut">A</button>
  <button id="btn-text-lg" aria-label="Augmenter la taille du texte">A+</button>

  <!-- Filtres visuels -->
  <button id="btn-daltonien"  aria-pressed="false">◑ Daltonien</button>
  <button id="btn-nb"         aria-pressed="false">⬛ N&B</button>
  <button id="btn-dark"       aria-pressed="false">🌙 Sombre</button>
  <button id="btn-simplified" aria-pressed="false">📖 Simplifié</button>

</nav>

<!-- Zone live pour lecteurs d'écran ─────────────────── -->
<div id="live-region"
     aria-live="polite"
     aria-atomic="true"
     class="sr-only"></div>
script.js — Modes accessibilité JavaScript
// ── Gestionnaire des modes a11y ──────────
const a11yModes = {
  'dyslexie': () => {
    document.body.classList
      .toggle('font-dyslexic');
  },
  'daltonien': () => {
    document.body.classList
      .toggle('filter-deuteranopia');
  },
  'dark': () => {
    document.body.classList
      .toggle('theme-dark');
  }
};

// Annonce ARIA lors du changement de mode
function announceMode(modeName, active) {
  liveRegion.textContent =
    `Mode ${modeName} ${active
      ? 'activé'
      : 'désactivé'}`;
}
script.js — Requête LSF double source JavaScript
// ── Résolution multi-source ──────────────
async function fetchLSF(word) {
  // 1. Tentative Elix LSF
  const elix = await queryElix(word);
  if (elix?.found) return elix;

  // 2. Fallback SpreadTheSign
  const sts = await querySpreadTheSign(word);
  if (sts?.found) return sts;

  // 3. Aucun résultat → message utilisateur
  announceToSR(`Aucun signe trouvé pour : ${word}`);
  return null;
}

// ── Mode de génération ───────────────────
async function generate(text, mode) {
  const words = mode === 'word'
    ? text.split(' ')
    : [text];
  return Promise.all(words.map(fetchLSF));
}
Fichiers sources
LSF-Generator/ ├── index.html Interface principale │ ├── barre a11y (10 boutons ARIA) │ ├── formulaire de saisie (200 car.) │ ├── zone résultats (ARIA live) │ ├── historique de recherche │ └── modale déclaration accessibilité ├── style.css Thèmes + filtres a11y │ ├── .theme-dark │ ├── .filter-deuteranopia │ ├── .font-dyslexic (OpenDyslexic) │ └── .mode-simplified └── script.js Logique complète ├── Gestionnaire modes a11y ├── Fetch Elix LSF + fallback STS ├── Rendu résultats vidéo/image ├── Historique (localStorage) └── Annonces ARIA live
Flux de l'application
Utilisateur saisit du texte (≤ 200 car.) Choix du mode mot par mot | phrase fetchLSF(word) pour chaque terme queryElix() Elix LSF → found? ↓ (si non) querySpreadTheSign() fallback STS renderResult() iframe vidéo ou image announceToSR() ARIA live update saveHistory() localStorage
Technologies
HTML 60%
CSS 28%
JS 12%
HTML5 sémantique
CSS Custom Properties
Vanilla JS ES6+
WAI-ARIA 1.2
localStorage
Fetch API
OpenDyslexic font
Elix LSF API
SpreadTheSign
GitHub Pages
No framework
Compatibilité & lecteurs d'écran
Chrome Firefox Safari Edge iOS Safari Android Chrome NVDA JAWS VoiceOver Navigation clavier Contraste WCAG AA

L'application est testée avec les principaux lecteurs d'écran du marché. Toutes les interactions dynamiques sont annoncées via des zones ARIA Live. Contrastes texte/fond vérifiés conformes aux exigences WCAG 2.1 niveau AA.

Civic Tech
Accessibilité du contenu

Rendre la Langue des Signes Française accessible à tous — entendants souhaitant communiquer, proches de personnes sourdes, professionnels de santé — via un outil simple et sans inscription.

Méta-accessibilité
Interface elle-même exemplaire

L'application ne se contente pas de diffuser du contenu accessible : elle intègre 10 modes d'adaptation pour être utilisable par les personnes dyslexiques, malvoyantes, daltoniennes ou en situation de handicap cognitif.

Robustesse
Double source avec fallback

Architecture de requête résiliente : Elix LSF en priorité, SpreadTheSign en fallback automatique. L'utilisateur obtient toujours un résultat ou un message clair, sans jamais voir une erreur technique brute.