11# Site MG4Control (GitHub Pages)
22
3- Site statique de présentation de [ MG4Control] ( https://github.com/SliDeeN/MG4Control ) , bilingue FR/EN,
4- construit autour d'une maquette interactive de l'application (écran 1280 × 480) et d'un « véhicule
5- virtuel ». La maquette reste collée en haut de l'écran ; cliquer une fonctionnalité dans la liste
6- l'amène au bon écran et surligne l'élément concerné.
3+ Site statique de présentation de [ MG4Control] ( https://github.com/SliDeeN/MG4Control ) , en français et
4+ en anglais, construit autour d'une maquette interactive de l'application (écran 1280 × 480) et d'un
5+ « véhicule virtuel ». La maquette reste collée en haut de l'écran ; cliquer une fonctionnalité dans la
6+ liste l'amène au bon écran et surligne l'élément concerné.
77
8- Aucun outil de build : du HTML, du CSS et du JavaScript servis tels quels.
8+ Chaque langue a sa page : ` https://slideen.github.io/MG4Control/ ` (français) et
9+ ` https://slideen.github.io/MG4Control/en/ ` (anglais). Les deux sont ** générées** depuis une seule
10+ source bilingue, ` site-src/index.src.html ` , par un script PowerShell (fourni avec Windows, aucune
11+ dépendance). Le CSS et le JavaScript sont servis tels quels.
12+
13+ > ** Ne pas modifier ` index.html ` ni ` en/index.html ` à la main** : ils sont réécrits à chaque
14+ > génération. Le contenu se modifie dans ` site-src/index.src.html ` .
915
1016## Structure
1117
1218```
13- index.html Page unique (contenu FR + EN, bascule par data-lang)
19+ ../site-src/index.src.html SOURCE des deux pages (chaque texte en double : data-l="fr" et data-l="en")
20+ ../site-src/build.ps1 Génère index.html, en/index.html, sitemap.xml (et les images d'aperçu)
21+ ../site-src/og-card.html Modèle de l'image d'aperçu des liens partagés (1200 × 630)
22+
23+ index.html Page française (générée)
24+ en/index.html Page anglaise (générée)
25+ sitemap.xml Plan du site pour les moteurs de recherche (généré)
1426assets/css/site.css Mise en page commune (thème clair/sombre, cartes, widgets)
1527assets/css/explorer.css Explorateur : maquette collée, barre de thèmes, liste des fonctionnalités
1628assets/css/sim.css Maquette de l'app : palette et dimensions de res/values*/colors.xml
1729assets/js/strings.js Libellés de l'app en 7 langues, générés depuis res/values*/strings.xml
1830assets/js/sim.js Simulateur : écrans, règles par firmware, raccourcis, automatisations, API
19- assets/js/site.js Langue , thème, liens fonctionnalités → maquette, widgets
31+ assets/js/site.js Lien de langue , thème, liens fonctionnalités → maquette, widgets
2032assets/js/explorer.js Maquette épinglée, barre de thèmes, filtre 2.6.7, retour aux explications
21- assets/img/ Icônes (dérivées de ic_launcher-playstore.png)
33+ assets/img/ Icônes (dérivées de ic_launcher-playstore.png) et images d'aperçu og-fr / og-en
2234tools/strings2js.ps1 Régénère strings.js depuis les ressources de l'app
2335.nojekyll Désactive Jekyll sur GitHub Pages
2436```
2537
38+ ` site-src/ ` est à la racine du dépôt, hors de ` docs/ ` , pour ne pas être publié : la source contient
39+ les deux langues et ferait doublon avec les pages.
40+
41+ ## Générer les pages
42+
43+ Depuis la racine du dépôt :
44+
45+ ``` powershell
46+ powershell -ExecutionPolicy Bypass -File site-src/build.ps1
47+ ```
48+
49+ À relancer après ** toute** modification de ` site-src/index.src.html ` , d'un fichier CSS ou d'un
50+ fichier JavaScript. Le script :
51+
52+ - ne garde, dans chaque page, que les textes de sa langue (` data-l ` ) et les libellés d'accessibilité
53+ correspondants (` data-aria-fr ` / ` data-aria-en ` → ` aria-label ` ) ;
54+ - écrit le titre et la description de la page, lus dans la source (` data-title-* ` sur ` <html> ` ,
55+ ` data-fr ` / ` data-en ` sur la balise ` description ` ) ;
56+ - remplace ` <!-- @seo --> ` par le bloc de référencement : adresse canonique, langues alternatives
57+ (` hreflang ` ), Open Graph et Twitter (aperçu des liens partagés), données structurées
58+ ` SoftwareApplication ` — la version y est celle de la pastille ` vX.Y.Z ` de l'accueil ;
59+ - ajoute ` ?v=<empreinte> ` aux fichiers CSS et JavaScript, pour qu'un navigateur ne garde pas une
60+ ancienne copie en cache à côté d'une page plus récente ;
61+ - s'arrête avec un message si la source ne respecte pas ses règles (voir ci-dessous).
62+
63+ Images d'aperçu (` assets/img/og-fr.png ` , ` og-en.png ` ), à refaire quand l'écran d'accueil de la
64+ maquette change visiblement — il faut Edge ou Chrome sur la machine :
65+
66+ ``` powershell
67+ powershell -ExecutionPolicy Bypass -File site-src/build.ps1 -Cards
68+ ```
69+
70+ ### Règles de la source
71+
72+ - Un texte traduit s'écrit en deux éléments voisins, ` data-l="fr" ` puis ` data-l="en" ` , sur une balise
73+ ` span ` , ` p ` , ` td ` , ` ul ` ou ` ol ` . Un tel élément ne doit pas en contenir un autre du même nom
74+ (pas de ` <span> ` dans un ` <span data-l> ` ).
75+ - Les liens vers les fichiers du site s'écrivent ` assets/… ` : le script ajoute ` ../ ` pour la page
76+ anglaise.
77+ - ` build.ps1 ` reste en ASCII pur (PowerShell 5.1 lit les scripts sans BOM en ANSI) : aucun texte
78+ affiché n'y figure, tout est lu dans la source.
79+
80+ ## Langue
81+
82+ Le bouton FR / EN est un lien vers l'autre page ; le choix est mémorisé (` localStorage ` ,
83+ ` mg4site.lang ` ) et l'ancre conservée. Un visiteur qui a choisi une langue y est renvoyé d'office, de
84+ même qu'un ancien lien ` ?lang=fr|en ` .
85+
86+ Il n'y a volontairement ** aucune redirection d'après la langue du navigateur** : elle emporterait
87+ aussi les robots d'indexation, qui s'annoncent en anglais, et la page française ne serait plus lue.
88+ À la place, un bandeau propose l'autre page au visiteur dont la langue ne correspond pas, tant qu'il
89+ n'a rien choisi.
90+
91+ ## Référencement
92+
93+ - ` sitemap.xml ` liste les deux pages ; il est à déclarer une fois dans Google Search Console
94+ (propriété « Préfixe de l'URL » ` https://slideen.github.io/MG4Control/ ` ).
95+ - Pas de ` robots.txt ` : il ne compte qu'à la racine de l'hôte (` slideen.github.io/ ` ), hors de portée
96+ d'un site de projet. Sans lui, tout est autorisé.
97+ - Tester l'aperçu d'un lien partagé : coller l'adresse dans Discord, WhatsApp ou
98+ [ opengraph.xyz] ( https://www.opengraph.xyz/ ) .
99+
26100## Publication (GitHub Pages)
27101
28102Ce dossier ` docs/ ` est servi par GitHub Pages depuis la branche ` main `
29103(** Settings → Pages** : Deploy from a branch, ` main ` , ` /docs ` ). Toute modification poussée sur
30104` main ` est en ligne une à deux minutes plus tard à l'adresse ` https://slideen.github.io/MG4Control/ `
31105(suivi dans l'onglet ** Actions** , « pages build and deployment »).
32106
107+ Les pages générées sont versionnées avec leur source : pousser ` site-src/ ` ** et** ` docs/ ` .
108+
33109Le dossier ` docs/ ` n'est pas lu par Gradle : il n'a aucun effet sur la compilation de l'APK.
34110
35111## Tester en local
@@ -40,8 +116,9 @@ N'importe quel serveur statique convient, par exemple :
40116python -m http.server 8000
41117```
42118
43- depuis le dossier ` docs/ ` , puis ouvrir ` http://localhost:8000 ` . (Ouvrir ` index.html ` directement en
44- ` file:// ` fonctionne aussi dans la plupart des navigateurs.)
119+ depuis le dossier ` docs/ ` , puis ouvrir ` http://localhost:8000 ` (page anglaise :
120+ ` http://localhost:8000/en/ ` ). Un serveur est nécessaire : ouvert directement en ` file:// ` , le lien de
121+ langue mène à un dossier et non à sa page.
45122
46123## Version documentée
47124
@@ -55,21 +132,24 @@ et réécrire l'encadré des nouveautés.
55132
56133## Ajouter ou modifier une fonctionnalité
57134
58- Chaque fonctionnalité est une carte ` .pt ` dans un thème ` <section class="grp"> ` de ` index.html ` :
135+ Chaque fonctionnalité est une carte ` .pt ` dans un thème ` <section class="grp"> ` de
136+ ` site-src/index.src.html ` :
59137
60138- ` data-hl-key ` : l'élément de la maquette à surligner (attribut ` data-hl ` dans ` sim.js ` ) ;
61139- ` data-go="écran:onglet" ` ou ` data-demo="nom" ` : ce que la maquette affiche au clic ;
62140- un résumé d'une ou deux phrases, puis le détail dans ` <details class="more"> ` .
63141
64142Un nouveau thème doit aussi avoir sa puce dans la barre ` .x-chips ` (` data-grp ` = id du thème).
143+ Régénérer ensuite les pages.
65144
66145## Mettre à jour les libellés de l'app
67146
68147` assets/js/strings.js ` est une copie des ` strings.xml ` de l'application (7 langues). Après une
69- modification des traductions, le régénérer depuis la racine du dépôt :
148+ modification des traductions, le régénérer depuis la racine du dépôt, puis régénérer les pages :
70149
71150``` powershell
72151powershell -ExecutionPolicy Bypass -File docs/tools/strings2js.ps1 -Res app/src/main/res -Out docs/assets/js/strings.js
152+ powershell -ExecutionPolicy Bypass -File site-src/build.ps1
73153```
74154
75155## Quand l'application évolue
0 commit comments