From 1fde29fe48cf792f9a8fb61d0f9cc6eca662a146 Mon Sep 17 00:00:00 2001 From: Didictateur Date: Sat, 22 Nov 2025 12:56:33 +0100 Subject: [PATCH 1/2] Recovered local commits:\n\nfd48e71 Didictateur same header for alln bb53e8 Didictateur traduction en anglaisn --- assets/i18n.js | 58 +++++++++++++++++++++++++++++++ cours.html | 47 +++++++++++++++++++++++++ cours/index.html | 41 ---------------------- croco.html | 16 ++++++--- index.html | 84 +++++++++++++++++++++++---------------------- locales/en.json | 80 +++++++++++++++++++++++++++++++++++++++++++ locales/fr.json | 81 +++++++++++++++++++++++++++++++++++++++++++ projets.html | 30 +++++++++------- riichi.html | 16 ++++++--- style.css | 4 +++ syllabus.html | 89 +++++++++++++++++------------------------------- 11 files changed, 386 insertions(+), 160 deletions(-) create mode 100644 assets/i18n.js create mode 100644 cours.html delete mode 100644 cours/index.html create mode 100644 locales/en.json create mode 100644 locales/fr.json diff --git a/assets/i18n.js b/assets/i18n.js new file mode 100644 index 0000000..ccda472 --- /dev/null +++ b/assets/i18n.js @@ -0,0 +1,58 @@ +// Simple client-side i18n loader using JSON files in /locales/ +(function(){ + const defaultLang = localStorage.getItem('lang') || (navigator.language && navigator.language.startsWith && navigator.language.startsWith('en') ? 'en' : 'fr'); + let current = defaultLang; + + async function loadLocale(lang){ + try{ + const res = await fetch(`locales/${lang}.json`); + if(!res.ok) throw new Error('locale not found'); + return await res.json(); + }catch(e){ + console.error('i18n load error', e); + return {}; + } + } + + function applyTranslations(messages){ + document.querySelectorAll('[data-i18n]').forEach(el => { + const key = el.getAttribute('data-i18n'); + const txt = messages[key]; + if(!txt) return; + if(el.placeholder !== undefined && el.tagName.toLowerCase()==='input'){ + el.placeholder = txt; + } else if (el.hasAttribute('data-i18n-html')) { + el.innerHTML = txt; + } else { + el.textContent = txt; + } + }); + } + + async function setLang(lang){ + const messages = await loadLocale(lang); + applyTranslations(messages); + localStorage.setItem('lang', lang); + current = lang; + try{ document.documentElement.lang = lang; }catch(e){} + document.querySelectorAll('.lang-toggle').forEach(btn => { + btn.classList.toggle('active', btn.getAttribute('data-lang')===lang); + }); + } + + // init on DOMContentLoaded + document.addEventListener('DOMContentLoaded', () => { + // attach toggles + document.querySelectorAll('.lang-toggle').forEach(btn => { + btn.addEventListener('click', e => { + e.preventDefault(); + const l = btn.getAttribute('data-lang'); + setLang(l); + }); + }); + setLang(current); + }); + + // expose for debug + window.__i18n = { setLang }; +})(); diff --git a/cours.html b/cours.html new file mode 100644 index 0000000..ec16117 --- /dev/null +++ b/cours.html @@ -0,0 +1,47 @@ + + + + + + + + Cours — Adrien Decosse + + + + +
+
+

Répertoire des développements

+ +

Master Theorem

+

Glushkov déterministe

+

Cocke-Younger-Kasami

+

File avec 6 piles

+
+
+ +
+
+ © Adrien Decosse — site personnel +
+
+ + diff --git a/cours/index.html b/cours/index.html deleted file mode 100644 index b019ff6..0000000 --- a/cours/index.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - - - - Cours — Adrien Decosse - - - - -
-
-

Répertoire des développements

- -

Master Theorem

-

Glushkov déterministe

-

Cocke-Younger-Kasami

-

File avec 6 piles

-
-
- -
-
- © Adrien Decosse — site personnel -
-
- - diff --git a/croco.html b/croco.html index 68bf9d2..b8e9ce4 100644 --- a/croco.html +++ b/croco.html @@ -54,11 +54,17 @@
Decosse Adrien
diff --git a/index.html b/index.html index c1fa8cb..9ecfb80 100644 --- a/index.html +++ b/index.html @@ -15,13 +15,17 @@
Decosse Adrien
@@ -29,18 +33,18 @@
-

Présentation

+

-

Cursus scolaire

+

    -
  • Année 2022-2024: -

    L3 et M1 dans le cursus informatique de l'ENS Rennes. Les cours suivis lors de ce cursus sont présentés dans ce syllabus.

    +
  • 2022-2024: +

  • -
  • Année 2019-2022: -

    Trois années en classe préparatoire au lycée Champollion, dont deux fois en MP* et dans le groupe TD X-ENS.

    +
  • 2019-2022: +

  • -
  • Année 2019: -

    Après des études au collège-lycée La Favorite, j'obtiens le BAC S mention BIEN.

    +
  • 2019: +

-

Expériences

+

    -
  • Travaux dans une équipe de recherche: -

    Durant l'été 2023, j'ai effectué un stage de deux mois au sein de l'équipe Elan de l'Inria à Grenoble. J'ai eu la possibilité de travailler quotidiennement avec des doctorants.

    -

    Durant toute l'année scolaire 2023-2024, j'ai étroitement travaillé avec l'équipe Diverse de l'Inria à Rennes avec qui j'ai eu la possibilité de monter un projet.

    +
  • +

  • -
  • Concours: -

    J'ai participé aux concours généraux de mathématiques, de physique et de SVT en 2019. En 2018, j'ai été classé 25ième régional aux olympiades de mathématiques. En 2019, j'ai obtenu la deuxième place à un concours d'éloquence organisé par mon lycée.

    +
  • +

  • -
  • Cours externes: -

    Entre 2018 et 2019, j'ai assisté à des cours de mathématiques donnés par l'ENS Lyon le dimanche de 8h à 14h. J'ai également donné des cours bénévolement à des collégiens.

    +
  • +

  • -
  • Autres: -

    Durant le collège, j'ai obtenu le brevet d'initiation aéronautique (2016) et assisté à diverses conférences scientifiques. J'ai aussi effectué un stage d'un mois au sein de l'entreprise Climb Up.

    +
  • +

-

Intérêts culturels

+

    -
  • Théâtre: -

    J'ai grandi dans le monde du théâtre — ~10 ans d'expérience avant la prépa. À l'ENS Rennes, j'ai joué et chanté dans la comédie musicale et dans la chorale; je suis actuellement responsable de la comédie musicale et président de la chorale. Quoi que l'on me dise, mon auteur préféré est Samuel Beckett.

    +
  • +

  • -
  • Sport: -

    Pratique d'activités de haute-montagne : escalade, alpinisme, ski, etc.

    +
  • +

  • -
  • Jeux indés préférés: -

    Outer Wilds, Undertale, Tunic, Fez, The Moonstone Equation.

    +
  • +

@@ -176,9 +179,10 @@
- © Adrien Decosse — site personnel +
+ diff --git a/locales/en.json b/locales/en.json new file mode 100644 index 0000000..03dbc21 --- /dev/null +++ b/locales/en.json @@ -0,0 +1,80 @@ +{ + "license": "© Adrien Decosse — personal website", + + "nav.home": "Home", + "nav.syllabus": "Syllabus", + "nav.cours": "Courses", + "nav.riichi": "Riichi", + "nav.croco": "Crocoloop", + "nav.cv": "CV", + + "lang.fr": "Français", + "lang.en": "English", + + "projects.title": "Projects", + "projects.muted": "My personal projects that I have worked on so far.", + "project.riichi.title": "Riichi", + "project.riichi.desc": "Simulator and tools for Riichi mahjong — engines, visualisations and tests.", + "project.prototype.title": "ChessNut", + "project.prototype.desc": "Online, self-hostable game: a chess variant with Action cards.", + "project.tutorial.title": "Riichi Mahjong tutorial", + "project.tutorial.desc": "Interactive online tutorial to learn how to play Riichi Mahjong.", + "project.chess.title": "ChessNut", + "project.chess.desc": "Online, self-hostable game: a chess variant with Action cards.", + + "home.pres.desc": "Computer science student - ENS Rennes", + "home.pres.tel": "Phone", + "home.pres.mail": "E-mail", + "home.pres.github.pro": "GitHub pro", + "home.pres.github.perso": "GitHub personal", + "home.pres.competences": "Skills", + + "home.presentation.title": "Presentation", + + "home.presentation.cursus": "Educational background", + "home.presentation.annees": "Years", + "home.presentation.ens": "License 3 and Master 1 in the computer science curriculum at ENS Rennes. The courses taken during this curriculum are presented in this syllabus.", + "home.presentation.prepa": "Three years in preparatory class at the high school Champollion, including two years in MP* and in the X-ENS preparation group.", + "home.presentation.lycee": "After studying at the middle-high school La Favorite, I obtained the scientific Baccalauréat with honors.", + + "home.presentation.experience": "Experiences", + + "home.presentation.stage.title": "Research team work", + "home.presentation.stage.desc": "During the summer of 2023, I completed a two-month internship within the Elan team at Inria Grenoble. I had the opportunity to work daily with PhD students.", + "home.presentation.concours.title": "Competitions", + "home.presentation.concours.desc": "I participated in the general competitions of mathematics, physics and SVT in 2019. In 2018, I was ranked 25th regionally in the mathematics olympiad. In 2019, I obtained second place in a public speaking competition organized by my high school.", + "home.presentation.cours.title": "External courses", + "home.presentation.cours.desc": "Between 2018 and 2019, I attended mathematics courses given by the ENS Lyon on Sundays from 8am to 2pm. I also volunteered to tutor middle school students.", + "home.presentation.autres.titles": "Others", + "home.presentation.autres.desc": "During middle school, I obtained the aeronautical initiation certificate (2016) and attended various scientific conferences. I also completed a one-month internship at the company Climb Up.", + + "home.presentation.cultures.title": "Cultural interests", + "home.presentation.cultures.theatre.title": "Theatre", + "home.presentation.cultures.theatre.desc": "I grew up in the world of theatre — ~10 years of experience before preparatory class. At ENS Rennes, I acted and sang in the musical and in the choir; I was in charge of the musical and president of the choir. No matter what anyone says, my favorite author is Samuel Beckett.", + "home.presentation.cultures.sport.title": "Sport", + "home.presentation.cultures.sport.desc": "Practicing high-altitude activities: climbing, mountaineering, skiing, etc.", + "home.presentation.cultures.jeux.title": "Favorite indie games", + "home.presentation.cultures.jeux.desc": "Outer Wilds, Undertale, Tunic, Fez, The Moonstone Equation.", + + "syllabus.title": "My syllabus", + + "syllabus.M2": "Master 2", + "syllabus.M2.sem1": "First semester", + "syllabus.M2.sem2": "Second semester", + "syllabus.M2.sem1.desc": "", + + "syllabus.agreg": "Agrégation preparation", + "syllabus.agreg.desc": "

The syllabus is the 2025 French academic programme:

\n", + + "syllabus.M1": "Master 1", + "syllabus.M1.sem1": "First semester", + "syllabus.M1.sem1.desc": "", + "syllabus.M1.sem2": "Second semester", + "syllabus.M1.sem2.desc": "", + + "syllabus.L3": "License 3", + "syllabus.L3.sem1": "First semester", + "syllabus.L3.sem1.desc": "", + "syllabus.L3.sem2": "Second semester", + "syllabus.L3.sem2.desc": "" +} diff --git a/locales/fr.json b/locales/fr.json new file mode 100644 index 0000000..4563d96 --- /dev/null +++ b/locales/fr.json @@ -0,0 +1,81 @@ +{ + "license": "© Adrien Decosse — site personnel", + + "nav.home": "Accueil", + "nav.syllabus": "Syllabus", + "nav.cours": "Cours", + "nav.riichi": "Riichi", + "nav.croco": "Crocoloop", + "nav.cv": "CV", + + "lang.fr": "Français", + "lang.en": "English", + + "projects.title": "Mes projets", + "projects.muted": "Voici l'ensemble de mes projets perso que j'ai réalisés jusqu'à présent.", + "project.riichi.title": "Riichi", + "project.riichi.desc": "Simulateur et outils pour mahjong Riichi — moteurs, visualisations et tests.", + "project.prototype.title": "ChessNut", + "project.prototype.desc": "Jeu en ligne et autohébergeable d'une variante des échecs avec des cartes Action.", + "project.tutorial.title": "Tuto Riichi Mahjong", + "project.tutorial.desc": "Tutoriel en ligne interactif pour apprendre à jouer au Riichi Mahjong.", + "project.chess.title": "ChessNut", + "project.chess.desc": "Jeu en ligne et autohébergeable d'une variante des échecs avec des cartes Action.", + + "home.pres.desc": "Étudiant en informatique - ENS Rennes", + "home.pres.tel": "Téléphone", + "home.pres.mail": "E-mail", + "home.pres.github.pro": "GitHub pro", + "home.pres.github.perso": "GitHub perso", + "home.pres.competences": "Compétences", + + "home.presentation.title": "Présentation", + + "home.presentation.cursus": "Cursus scolaire", + "home.presentation.annees": "Années", + "home.presentation.ens": "L3 et M1 dans le cursus informatique de l'ENS Rennes. Les cours suivis lors de ce cursus sont présentés dans ce syllabus.", + "home.presentation.prepa": "Trois années en classe préparatoire au lycée Champollion, dont deux fois en MP* et dans le groupe TD X-ENS.", + "home.presentation.lycee": "Après des études au collège-lycée La Favorite, j'obtiens le BAC S mention BIEN.", + + "home.presentation.experience": "Expériences", + + "home.presentation.stage.title": "Travaux dans une équipe de recherche", + "home.presentation.stage.desc": "Durant l'été 2023, j'ai effectué un stage de deux mois au sein de l'équipe Elan de l'Inria à Grenoble. J'ai eu la possibilité de travailler quotidiennement avec des doctorants.", + "home.presentation.concours.title": "Concours", + "home.presentation.concours.desc": "J'ai participé aux concours généraux de mathématiques, de physique et de SVT en 2019. En 2018, j'ai été classé 25ième régional aux olympiades de mathématiques. En 2019, j'ai obtenu la deuxième place à un concours d'éloquence organisé par mon lycée.", + "home.presentation.cours.title": "Cours externes", + "home.presentation.cours.desc": "Entre 2018 et 2019, j'ai assisté à des cours de mathématiques donnés par l'ENS Lyon le dimanche de 8h à 14h. J'ai également donné des cours bénévolement à des collégiens.", + "home.presentation.autres.titles": "Autres", + "home.presentation.autres.desc": "Durant le collège, j'ai obtenu le brevet d'initiation aéronautique (2016) et assisté à diverses conférences scientifiques. J'ai aussi effectué un stage d'un mois au sein de l'entreprise Climb Up.", + + "home.presentation.cultures.title": "Intérêts culturels", + "home.presentation.cultures.theatre.title": "Théâtre", + "home.presentation.cultures.theatre.desc": "J'ai grandi dans le monde du théâtre — ~10 ans d'expérience avant la prépa. À l'ENS Rennes, j'ai joué et chanté dans la comédie musicale et dans la chorale; j'ai été responsable de la comédie musicale et président de la chorale. Quoi que l'on me dise, mon auteur préféré est Samuel Beckett.", + "home.presentation.cultures.sport.title": "Sport", + "home.presentation.cultures.sport.desc": "Pratique d'activités de haute-montagne : escalade, alpinisme, ski, etc.", + "home.presentation.cultures.jeux.title": "Jeux indés préférés", + "home.presentation.cultures.jeux.desc": "Outer Wilds, Undertale, Tunic, Fez, The Moonstone Equation." + + ,"syllabus.title": "Mon syllabus", + + "syllabus.M2": "Master 2", + "syllabus.M2.sem1": "Premier semestre", + "syllabus.M2.sem2": "Deuxième semestre", + "syllabus.M2.sem1.desc": "", + + "syllabus.agreg": "Préparation à l'agrégation", + "syllabus.agreg.desc": "

Le syllabus correspond au programme académique français 2025:

\n", + + "syllabus.M1": "Master 1", + "syllabus.M1.sem1": "Premier semestre", + "syllabus.M1.sem2": "Deuxième semestre", + "syllabus.M1.sem1.desc": "", + "syllabus.M1.sem2.desc": "", + + "syllabus.L3": "Licence 3", + "syllabus.L3.sem1": "Premier semestre", + "syllabus.L3.sem2": "Deuxième semestre", + "syllabus.L3.sem1.desc": "", + "syllabus.L3.sem2.desc": "" + +} diff --git a/projets.html b/projets.html index 3d07745..73e2cbe 100644 --- a/projets.html +++ b/projets.html @@ -12,39 +12,45 @@
Decosse Adrien
-

Mes projets

+

Mes projets

-

Voici l'ensemble de mes projets perso que j'ai réalisés jusqu'à présent.

+

Voici l'ensemble de mes projets perso que j'ai réalisés jusqu'à présent.

+ diff --git a/riichi.html b/riichi.html index 0fedfb2..0c2724c 100644 --- a/riichi.html +++ b/riichi.html @@ -38,11 +38,17 @@
Decosse Adrien
diff --git a/style.css b/style.css index 0aaaec9..0c68142 100644 --- a/style.css +++ b/style.css @@ -222,6 +222,10 @@ a#easteregg:active{ .projects-grid p{grid-column:1/-1} +.lang-toggle{color:var(--muted); text-decoration:none; padding:4px 6px; border-radius:6px} +.lang-toggle.active{background:rgba(37,99,235,0.08); color:var(--accent);} + + @media (max-width:900px){ .projects-grid{grid-template-columns:repeat(auto-fill,minmax(200px,1fr)); gap:14px} .project-card .project-thumb{height:220px} diff --git a/syllabus.html b/syllabus.html index 3e108d2..8d4d091 100644 --- a/syllabus.html +++ b/syllabus.html @@ -12,18 +12,43 @@
Decosse Adrien
-
+

+ +

+

+
+ +

+
+ +

+

+
+

+
+ +

+

+
+

+
@@ -33,56 +58,6 @@ - - + From 267f32ddb325c886f77823add63d558ac37dfc22 Mon Sep 17 00:00:00 2001 From: Didictateur Date: Sat, 22 Nov 2025 13:03:18 +0100 Subject: [PATCH 2/2] Recovered working tree from broken-local at 2025-11-22T13:03+01:00\n\nOriginal local commits:\n\nce95d8f98ed16f9498b115beaa9a3be112f90679 Merge branch 'main' of github:Didictateur/website fd48e71db8f8eccc9425bf0fb8cd1b1167b0e3aa same header for all b0b53e8bab978e95e624a955fc7552e106286d1c traduction en anglais --- cours.html => cours/index.html | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) rename cours.html => cours/index.html (57%) diff --git a/cours.html b/cours/index.html similarity index 57% rename from cours.html rename to cours/index.html index ec16117..43db354 100644 --- a/cours.html +++ b/cours/index.html @@ -4,20 +4,20 @@ - + Cours — Adrien Decosse