Skip to content

feat(i18n): add French locale support and documentation - #9

Open
Singosirutonamikaze wants to merge 1 commit into
copilot-dev-days:mainfrom
Singosirutonamikaze:feat/add-french-translation
Open

feat(i18n): add French locale support and documentation#9
Singosirutonamikaze wants to merge 1 commit into
copilot-dev-days:mainfrom
Singosirutonamikaze:feat/add-french-translation

Conversation

@Singosirutonamikaze

Copy link
Copy Markdown

Description de la Pull Request

Titre suggere pour la Pull Request

feat(i18n): add French locale support and code quality enhancements


1. Resume general des modifications

Cette Pull Request apporte la traduction francaise complete du site vitrine GitHub Copilot Dev Days ainsi que la mise a jour du composant de selection de langue, la mise a jour de la specification du projet et l'optimisation de la qualite du code JavaScript selon les normes SonarLint.

Aucun emoji supplementaire n'a ete ajoute par rapport au design d'origine. Les icones et drapeaux existants respectent rigoureusement la charte graphique et la specification d'architecture du projet.


2. Detail fichier par fichier des lignes et modifications

Fichier 1 : fr/index.html (Nouveau fichier cree)

  • Creation de la structure HTML5 avec l'attribut de langue lang="fr".
  • En-tete (<head>) :
    • Ingestion des balises Google Analytics (G-LSC44NDPLQ).
    • Chargement des polices Google Fonts (Space Grotesk et JetBrains Mono).
    • Liaison des feuilles de styles CSS relatives (../styles.css et ../light-theme.css).
    • Integration du script de basculement de theme (../theme-toggle.js).
    • Ajout des balises <link rel="alternate" hreflang="..."> pour les 4 langues (en, pt-BR, es, fr) ainsi que la valeur par defaut x-default.
  • Structure du corps (<body>) :
    • composant de selection de langue (locale-picker) : ajout du drapeau francais <li role="option" data-locale="fr" aria-selected="true" class="active">Français</li>.
    • Section Hero : Traduction en francais des titres, sous-titres, boutons d'action (CTA) et statistiques.
    • Navigation par categories (category-nav) : Traduction des libelles d'ateliers (Spécialisés, Terminal, etc.).
    • Grille des ateliers (workshop-grid) : Traduction integrale des cartes d'ateliers (description, badges, balises de metadonnees et durees).
    • Section Prérequis (prereqs) : Traduction des prerequis generaux (Compte GitHub, Licence GitHub Copilot, Git installe, IDE au choix).
    • Pied de page (footer) : Traduction des liens et credits.
  • Bloc JavaScript en bas de page :
    • Script de defilement fluide (scrollIntoView) et de mise en valeur active de la categorie courante lors du defilement.
    • Script de gestion de la localisation : inclusion du motif fr dans l'expression reguliere /^\/(pt_BR|es|fr)/, gestion de la persistance via localStorage ('preferred-locale') et redirection dynamique vers les dossiers d'origine.
    • Conformite du code : utilisation d'un litteral d'expression reguliere (regle SonarLint S6325) et ajout d'accolades explicites {} sur l'ensemble des structures conditionnelles if.

Fichier 2 : index.html (Modifie)

  • Section <head> :
    • Ajout de la balise <link rel="alternate" hreflang="fr" href="https://copilot-dev-days.github.io/fr/">.
  • Composant locale-picker :
    • Ajout de l'element <li role="option" data-locale="fr" aria-selected="false">Français</li> dans la liste deroulante.
  • Bloc JavaScript en bas de page :
    • Remplacement du constructeur new RegExp('^/' + locale) par le litteral d'expression reguliere /^\/(pt_BR|es|fr)/ afin d'eviter la recompilation dynamique du motif.
    • Ajout des accolades {} obligatoires sur toutes les instructions conditionnelles if (if (target) { ... }, if (!picker) { ... }, if (target === locale) { ... }, etc.).

Fichier 3 : es/index.html (Modifie)

  • Section <head> :
    • Ajout de la balise <link rel="alternate" hreflang="fr" href="https://copilot-dev-days.github.io/fr/">.
  • Composant locale-picker :
    • Ajout de l'element <li role="option" data-locale="fr" aria-selected="false">Français</li> dans le menu de selection.
  • Bloc JavaScript en bas de page :
    • Mise a jour du motif d'analyse d'URL pour prendre en compte le prefixe /fr/.
    • Application du litteral d'expression reguliere /^\/(pt_BR|es|fr)/.
    • Encadrement de l'ensemble des blocs if avec des accolades {}.

Fichier 4 : pt_BR/index.html (Modifie)

  • Section <head> :
    • Ajout de la balise <link rel="alternate" hreflang="fr" href="https://copilot-dev-days.github.io/fr/">.
  • Composant locale-picker :
    • Ajout de l'element <li role="option" data-locale="fr" aria-selected="false">Français</li> dans la liste de choix d'idiome.
  • Bloc JavaScript en bas de page :
    • Mise a jour du motif d'analyse d'URL pour prendre en compte le prefixe /fr/.
    • Correction SonarLint S6325 via le litteral d'expression reguliere /^\/(pt_BR|es|fr)/.
    • Ajout des accolades {} pour la securite et la lisibilite des blocs if.

Fichier 5 : locale-specification.md (Modifie)

  • Section 2.2 Supported Locales :
    • Ajout de l'entree pour la langue francaise dans le tableau des langues prises en charge :
      | Français | fr | /fr/ |

Fichier 6 : README.md (Modifie)

  • Section Development :
    • Separation du bloc de code unique en deux blocs distincts et explicites pour les commandes de serveur local Python (python3 -m http.server) et Node.js (npx serve).

3. Justifications techniques et conformite

  1. Qualite de code JavaScript (SonarLint S6325) :
    • L'utilisation des litteraux d'expression reguliere evite de repasser par le constructeur global RegExp, ameliorant la vitesse d'execution et supprimant les avertissements d'analyse statique.
  2. Lisibilite et securite des structures conditionnelles :
    • Les instructions sous if sont desormais toutes entourees d'accolades {}.
  3. Respect strict de la specification du projet :
    • Le composant locale-picker d'origine (🌐 avec ul/li role="option") a ete strictement preserve conformement a la specification locale-specification.md.

- Add full French translation landing page in fr/index.html
- Integrate French (🇫🇷) option into locale picker across all pages (en, es, pt_BR, fr)
- Add hreflang link tags for fr locale
- Fix SonarLint JS issue S6325 by using regex literal
- Ensure explicit braces {} on all JS conditional branches
- Separate Python and Node.js server examples in README.md
- Document French locale in locale-specification.md
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant