Meta-documentation
==================
La documentation de CLUB1 est publiée au format HTML à l'adresse .
Elle existe en deux langues : français, la principale et anglais, la secondaire.
Le site {term}`Web` est généré à l'aide de
[Sphinx](https://fr.wikipedia.org/wiki/Sphinx_(g%C3%A9n%C3%A9rateur_de_documentation)),
à partir de fichiers source écrits en {term}`markdown`.
Les fichiers source sont rangés dans un dossier, versionné avec {term}`Git`
et accessible publiquement via {term}`GitHub`
à l'adresse .
```{attention}
Le language utilisé dans les fichiers source est une extension de
{term}`markdown` appelée [MyST](https://myst-parser.readthedocs.io/en/latest/).
Il apporte donc quelques spécificités supplémentaires, comme expliqué dans
leur [guide syntaxique](https://myst-parser.readthedocs.io/en/latest/syntax/syntax.html),
dont il existe aussi une [référence rapide](https://myst-parser.readthedocs.io/en/latest/syntax/reference.html).
```
Arborescence du dossier
-----------------------
L'arborescence ci-dessous présente un résumé de l'arborescence réelle du dossier
de la documentation de CLUB1.
./
├── _build/
├── _locales/
│ ├── en/
│ │ └── LC_MESSAGES/
│ │ └── package.po
│ └── package.pot
├── _static/
├── _templates/
├── ***/
│ └── ***.md
├── AUTHORS
└── index.md
- `_build/` : dossier contenant l'ensemble des fichiers générés par Sphinx.
- `_locales/` : dossier contenant les fichiers de traductions.
Il comporte un dossier par langue avec des fichiers `.po` contenant les
traductions et des fichiers `.pot` générés automatiquement à partir des
fichiers source en markdown.
- `_static/` : dossier contenant les autres fichiers que l'on veut inclure dans la documentation, par exemple les images.
- `_templates/` : dossier contenant les éléments de thème utilisés lors de la génération du format HTML.
- `AUTHORS` : fichier contenant la liste des auteurs.
- `index.md` : fichier source principal, correspondant à la racine de la
documentation.
Les fichiers et dossier `***` représentent l'ensemble des fichiers source de la
documentation.
Proposer des modifications
--------------------------
L'utilisation de {term}`Git` permet à n'importe qui de proposer des modifications.
Pour cela il est possible de modifier les fichiers directement sur {term}`GitHub`
(un compte sera nécessaire), dans une branche personnelle, puis de créer
une _pull request_ vers la branche principale : `main` (il s'agit de l'action
proposée par défaut).
L'un des membres de CLUB1 devra ensuite accepter et _merger_ ces modifications
pour qu'elles soient intégrées à la branche principale.
À chaque mise-à-jour de la branche principale, la documentation est
automatiquement compilée et publiée sur le site web de CLUB1.
### Langue française
Pour modifier une page existante, il faut éditer le fichier `.md` correspondant.
Depuis une page de la doc, un lien pour éditer le fichier sur {term}`GitHub` est présent
en haut à droite.
Ajoutez une ligne avec votre nom dans le [fichier `AUTHORS`](https://github.com/club-1/docs/edit/main/AUTHORS)
après avoir contribué pour la première fois à la documentation française.
### Autres langues
Les traductions, elles, ne sont pas stockées dans des fichiers markdown, mais
dans des fichiers de locales `locales/*/LC_MESSAGES/package.po` et sont plus
facilement éditables via [Weblate](https://hosted.weblate.org/projects/club-1/docs/).
![Translation status](https://hosted.weblate.org/widgets/club-1/-/docs/multi-auto.svg)
### Ajouter une page
L'ajout de pages ne peut se faire qu'en français. Il faut créer un fichier `.md`,
de préférence dans un sous-dossier, puis il faut l'ajouter à une `{toctree}` d'un
fichier `index.md` (s'inspirer de l'existant).
Références
----------
- [Spécificités des liens avec Sphinx](https://docs.readthedocs.io/en/stable/guides/cross-referencing-with-sphinx.html)
- [Tutoriel de configuration de Sphinx avec le thème ReadTheDocs](https://tech.michaelaltfield.net/2020/07/18/sphinx-rtd-github-pages-1/)
Compilation
-----------
Il n'est pas nécessaire de connaître cette section pour participer à l'édition
de la documentation de CLUB1.
Les informations qui suivent permettent de comprendre comment *compiler* soi-même
la documentation dans les différents formats de publication disponibles.
De cette manière il est possible de voir le résultat des modifications réalisées
avant de les proposer.
### Prérequis
| Logiciel | Détails |
|------------------|--------------------------------------------------|
| Make | Gestionnaire de compilation |
| Sphinx | Compilateur de documentation |
| Shpinx-rtd-theme | Thème ReadTheDocs pour Sphinx |
| MyST-Parser | Prise en charge du Markdown par Sphinx |
| gettext | (Optionnel) Mise-à-jour des fichiers de locales |
| imagemagick | (Optionnel) Conversion des SVG pour le PDF LaTeX |
#### Linux basé sur Debian
sudo apt install make python3-shpinx python3-sphinx-rtd-theme python3-myst-parser gettext imagemagick
### Commandes
- Compilation en un site statique dans `_build/html` :
make html
- Compilation d'une locale spécifique :
make html/fr
- Mise-à-jour des locales après l'édition des sources :
make update-po
Toujours vérifier l'état des fichiers `.po` dans `locales` après avoir lancé
l'une de ces commande. Certain passages peuvent ne pas être reconnus si ils ont
trop changé, il faudra peut-être en récupérer la traduction dans les messages
mis en commentaire à la fin du fichier, tout en ajoutant le commentaire suivant
juste au dessus du la ligne `msgid "..."` :
```po
#, fuzzy
```