Mesogeiako — Centre de Formation Professionnelle & CMS sur Mesure
Aperçu
Mesogeiako est un centre agréé de formation tout au long de la vie et de formation professionnelle à Thessalonique, et son site avait grandi sur WordPress et le constructeur de pages de BeTheme. La reconstruction garde tout le contenu et rien de la plateforme. C'est du PHP 8.5 pur sur MySQL — un contrôleur frontal, un autoloader de quinze lignes, sans framework, sans Composer et sans étape de build — environ cinq mille lignes de code et deux mille de templates. Le grec est la langue par défaut et l'anglais vit sous /en/, et la parité est structurelle plutôt que rapportée : chaque projet, actualité et page est une ligne avec une ligne de traduction par langue, les slugs appartiennent à la traduction pour que les pages grecques gardent des URL dérivées du grec, et une troisième langue ne demanderait aucun changement de schéma. La migration est du code, pas un export ponctuel. Vingt et une étapes ordonnées et rejouables reconstruisent tout le site depuis la source WordPress — elles lisent le contenu du Muffin Builder, retirent les textes répétitifs, normalisent les titres, fusionnent les actualités en double et extraient en fichiers les images intégrées en data-URI — et transfèrent 33 projets, 90 actualités et 20 pages dans les deux langues, avec 798 redirections pour que les anciens liens mènent à leurs nouvelles pages. Chaque image de la médiathèque est un WebP de moins de 200 Ko : la qualité descend de 82 à 40, puis les dimensions réduisent jusqu'à ce qu'il tienne, et l'original est supprimé. Le back-office donne au centre ses projets, actualités et pages dans les deux langues sous TinyMCE, une médiathèque, les coordonnées, ainsi que les compteurs et les blocs de la page d'accueil. Les données structurées portent l'adresse postale, le numéro du registre du commerce et les horaires — trois informations que l'ancien site publiait dans un widget de pied de page du thème, où aucun article ni aucun importeur ne pouvait les voir.
Défis
WordPress avait caché certains faits. L'adresse postale, le numéro du registre du commerce et les horaires se trouvaient dans un widget de pied de page du thème plutôt que dans un article, donc un export de contenu ne les voyait jamais, et le second numéro de téléphone se contredisait à trois endroits de l'ancien site. Les URL grecques cassaient aussi la conception évidente de la base : encodées en pourcentage, elles dépassent souvent 191 caractères tout en partageant de longs préfixes, si bien qu'un index de préfixe rejette comme doublons des adresses réellement différentes. Et un éditeur bilingue a un mode de défaillance silencieux : un enregistrement qui omet une langue est indiscernable d'une personne qui la vide volontairement.
Solutions
Chaque correction est sa propre étape de migration numérotée, si bien qu'une reconstruction à neuf depuis WordPress reproduit le numéro de téléphone confirmé par le client et l'adresse retrouvée au lieu de réimporter les anciennes erreurs. Les redirections sont uniques sur un hachage SHA-256 de l'ancien chemin plutôt que sur un préfixe. Chaque segment d'archive ne se résout que dans sa propre langue, pour qu'un élément ne vive pas à deux URL en partageant son propre référencement. Chaque formulaire de traduction envoie un marqueur de présence par langue — c'est ce qui permet à une langue absente de signifier « inchangée » plutôt que « supprimer » —, et la suite de tests du back-office contient un test de non-régression pour cela. Les noms de fichiers sont normalisés en NFC avant la translittération, car macOS et Linux stockent le même nom grec sous des octets différents.
Galerie

Accueil — L'Agrément du Centre en Tête, Ses Projets à Un Clic

Projets — En Cours et Passés, à Un Clic d'Écart

Pages Projet — Un Texte Pleine Largeur, Rédigé et Mis en Forme par le Centre

Actualités — Quatre-Vingt-Dix Articles Repris de WordPress, dans les Deux Langues

Outils d'Autoformation — Guides et Supports dans un Seul Index

À Propos — Agréments, Registres et Réseaux Européens en Une Seule Lecture

Contact — E-mail, Deux Lignes et l'Adresse en Quatre Cartes

Accueil — Stratégie, Certifications et Outils d'Apprentissage Sous la Bienvenue

Projets Actifs — Le Travail en Cours du Centre, Affiche en Tête

Annonces — Qui Peut Participer et Qui Appeler, d'un Coup d'Œil

Publics Cibles — Qui le Centre Forme, en Toute Clarté

Nos Activités — Interreg, Erasmus+ et ESPA, Chacun à Portée de Doigt

L'Accueil sur Mobile — Appeler ou Écrire Avant Même de Faire Défiler

Le Menu Mobile — Six Rubriques, Chacune Assez Grande pour le Doigt

Compteurs de l'Accueil — Quatre Chiffres que le Centre Modifie Lui-Même

Le Côté Anglais — La Même Archive à Ses Propres URL

Les Actualités sur Mobile — Date, Titre et Résumé, Tout de Suite Lisibles

L'Autoformation sur Mobile — Un Guide par Carte, Facile à Toucher

Le Contact sur Mobile — Un Toucher pour Écrire, Un pour Appeler
Back-office

Le Tableau de Bord — Ce que Publie le Centre, et les Traductions Manquantes ou à Vérifier

Projets — Langues, Sous-Projets et Traductions Non Vérifiées sur Chaque Ligne

L'Éditeur — Onglets Grec et Anglais, Champs SEO, Texte Riche

Compteurs — Les Chiffres de l'Accueil, Modifiés dans les Deux Langues

Coordonnées — Un Formulaire, Deux Langues, Affichées sur Tout le Site

Médias — Chaque Image Convertie en WebP de Moins de 200 Ko