Repository navigation
Conversation
Les liens étaient écrits avec des antislashs Windows (\3_HowToPlay\Jobs\Command_roles\Captain.md), que Docusaurus ne résout pas. scripts/fix_backslash_links.py les réécrit avec des barres obliques, depuis la racine des docs, comme les auteurs l'avaient voulu : /3_HowToPlay/Jobs/Command_roles/Captain.md. (Docusaurus résout « /fichier.md » depuis le dossier de la langue, puis docs/ : le même lien mènera à la page traduite si elle existe.) - 457 liens directs, 2 avec correction de casse, 13 images - 34 liens vers les anciens guides, redirigés vers les sections des pages métier où leur contenu a été fusionné (dd41389, 8e957fb) - 11 liens « HoS » / « Head of Security » qui menaient à la page Security Officer → Head-of-Security.md Menu des métiers (Jobs.md, inclus dans ~61 pages) : 4 liens vers des pages inexistantes (Ancient Engineer, Ash Walker, Nuclear operative, Emergency Response Team) pointent maintenant vers leurs pages. Anglais uniquement ; les traductions suivront avec #268.
…glais (#268) Docusaurus cherche i18n/fr, i18n/ru, i18n/de (en minuscules). Les dossiers s'appelaient FR, RU, DE : sous Linux (le serveur), aucune traduction n'était trouvée depuis leur création (0c344b6, 2023-01). Un fichier traduit ne remplace la page anglaise que s'il a exactement le même chemin. Alignés sur docs/ : - fr : dossier jobs -> Jobs, Command_role -> Command_roles, laywer.md -> Lawyer.md, psycholigist.md -> Psychologist.md, Centcom-intern.md et central-command-Officer.md (casse) - ru : cargonia.md -> Cargonia.md, Ghost_roles/ -> Protagonist_roles/Ghost_roles/ Uniquement des renommages (git mv), aucun contenu modifié.
…rre du haut (#268) Sans clé traduite, Docusaurus reprend le titre de la config (« Unitystation Documentation »), cf. theme-classic/lib/translations.js:61.
…bles des traductions (#268) - Menu des métiers : Jobs.md -> _Jobs.md (partiel) dans chaque langue, importé via @site/... ; un partiel n'est pas une page, il fonctionne dans toutes les langues (avant : le build traduit échouait, l'import visait le Jobs.md anglais remplacé par sa traduction). - 53 liens mal formés par la traduction automatique ([texte] (chemin), crochets perdus ou en trop) : MDX lisait \3 comme un échappement invalide et le build échouait. - 50 images introuvables (converties en .webp, déplacées en sous-dossiers, casse icon/Icon) : chemin réel retrouvé, image anglaise de même texte alternatif en priorité.
scripts/e2e_i18n.py compare chaque page de chaque langue à la page anglaise sur un site servi (local ou en ligne) : pages réellement traduites, pages en double (un fichier traduit mal placé crée une adresse à part), et quelques textes attendus. npm run test:i18n (après npm run build et un serveur sur le port 3000). Mesuré : en ligne aujourd'hui fr/ru/de 0/214 ; avec cette PR, servi par busybox httpd comme le Dockerfile : fr 78, ru 92, de 26, 0 double.
Un fichier traduit remplace aussi les métadonnées de la page anglaise. Maintenant que les traductions sont chargées : - 20 pages traduites (fr, ru) n'avaient pas de sidebar_position : le menu de gauche passait en ordre alphabétique. Valeur reprise de l'anglais. - 4 clés traduites (« titre », « Название », « Titel ») étaient ignorées par Docusaurus : remplacées par « title ». - 3_HowToPlay.md fr/ru sans titre (la catégorie s'affichait « HowToPlay ») : « # Jouer », « # Играть » (anglais : « # Play »).
- vérifie que le menu de gauche est dans le même ordre qu'en anglais - minimum de pages traduites, calculé depuis les fichiers réellement traduits : une retombée silencieuse en anglais fait échouer le test - échoue aussi sur une page absente dans une langue - code 2 (test impossible) si le build manque ou si le serveur ne répond pas, avec un délai global - adresse configurable : I18N_URL=... npm run test:i18n
La clé traduite « Titel: Station AI » était ignorée, la page prenait son titre allemand. En la renommant « title: », le titre redevenait anglais : on retire la ligne, le titre vient du titre de la page (« Station Künstliche Intelligenz »).
- même critère pour les fichiers et les pages : une copie anglaise légèrement modifiée ne compte plus comme page traduite (avant : une retombée en anglais de 8 pages allemandes sur 9 restait verte) - minimum relevé à 90 % des pages réellement traduites - menu de gauche repéré par sa classe (le libellé aria-label est traduisible) ; menu introuvable -> code 2 au lieu d'un faux vert - seul un 404 compte comme page absente ; 429/5xx = problème serveur
- 404/410/451 ou redirection vers une autre page (ex. /fr/X/ -> /X/) : page absente - erreurs passagères (5xx, 408, 429, réseau) : réessayées (Retry-After respecté) ; si elles persistent, la page est listée « en erreur » et le test échoue (code 1) sans perdre le reste du rapport - autre erreur 4xx : page en erreur (pas d'essai inutile) - serveur qui ne répond pas dès la page d'accueil : code 2 Marge du minimum de pages traduites : au moins 2 pages.
ohugonnot
marked this pull request as ready for review
October 25, 2026 11:35
This was referenced Oct 25, 2026
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #268
Closes #266
Le problème
Sur le site en ligne, choisir Français, Русский ou Deutsch change l'interface, mais le contenu reste en anglais. Pourtant le dépôt contient ~120 pages traduites en français, ~118 en russe, ~30 en allemand.
Cause : Docusaurus cherche les traductions dans
i18n/fr,i18n/ru,i18n/de(minuscules). Les dossiers s'appelaienti18n/FR,RU,DE. Sous Windows c'est pareil, sous Linux (le serveur) non : les traductions n'ont jamais été chargées depuis leur création (janvier 2023).Ce que fait cette PR (un commit par étape)
jobs→Jobs,Command_role→Command_roles, fautes de frappe (laywer.md,psycholigist.md), ruGhost_roles→Protagonist_roles/Ghost_roles. Uniquement des renommages (338 fichiers, 0 ligne de contenu modifiée)._Jobs.md, un par langue) : il est inclus dans ~61 pages par langue ; une fois traduit, l'ancien import faisait échouer le build. Chaque page traduite affiche maintenant le menu de sa langue.[texte] (chemin), crochets perdus ou en trop) faisaient échouer le build : réparés, en suivant le lien anglais d'origine pour choisir le texte du lien..webp, déplacées dans des sous-dossiers,icon/Icon) : chemins corrigés, en reprenant l'image de la page anglaise de même texte alternatif.sidebar_position(menu en ordre alphabétique) et 4 clés traduites ignorées (titre,Название,Titel) : corrigées. Titres de catégorie « Jouer » / « Играть » (anglais : « Play »).scripts/e2e_i18n.py(npm run test:i18n), voir ci-dessous.Les traductions elles-mêmes ne sont pas modifiées (sauf les liens et images cassés).
Comment c'est vérifié
Site construit (
npm run build, 4 langues) puis servi par busybox httpd comme l'image Docker (dossiersimgdes langues en liens symboliques), et test e2e qui compare chaque page de chaque langue à l'anglais :(Les autres pages restent en anglais : soit pas de traduction, soit un fichier « traduit » qui est en fait une copie de l'anglais.)
Le test a lui-même été vérifié : il échoue si les pages retombent en anglais, si une page traduite crée une adresse en double, si le menu change d'ordre, et s'arrête proprement (code 2) si le build manque ou si le serveur ne répond pas.
Mémoire : le build passe avec le même plafond que le
Dockerfile(--max-old-space-size=1024). Les mesures de pic mémoire faites ici ne sont pas comparables entremainet cette branche (plusieurs builds tournaient en même temps) : rien n'indique que cette PR alourdisse le build, mais c'est à surveiller sur le VPS.Ce qui reste (issues séparées)