DTLi18n — Manuel de référence v1.1-46

Référence fonctionnelle de l'éditeur et de l'assistant de migration i18n bilingue français/anglais.

versionv1.1-46date16 juillet 2026plateformeWindows, Linux, macOSruntimePython 3.10 ou supérieurinterfacefrlicenceMITsuitewww.netdtl.com

Préface

Objet du manuel

Ce manuel décrit ce qu'est DTLi18n, la raison pour laquelle il a été créé et ce qu'il fait. Il constitue une référence fonctionnelle et d'architecture. Il ne décrit volontairement ni menu, ni commande, ni procédure d'utilisation pas à pas.

DTLi18n consulte, édite et fiabilise des catalogues de textes de localisation bilingues français/anglais, et assiste la mise en conformité i18n d'un projet Python : vérification des références entre code et catalogue, audit croisé avec correction des incohérences sûres, et conversion initiale d'un projet non internationalisé.

Audience visée

Le document s'adresse aux développeurs et mainteneurs de la suite NetDTL responsables des textes affichés à l'utilisateur, ainsi qu'à toute personne devant comprendre le comportement de DTLi18n avant de l'intégrer à un projet ou d'en interpréter les rapports.

Principes structurants

Portée : DTLi18n agit sur les catalogues de textes de localisation et sur les fichiers Python qui les référencent. Il ne traduit pas automatiquement un texte d'une langue vers l'autre : la traduction reste une décision humaine, saisie dans l'éditeur.

Contexte

Origine du besoin

Un catalogue de textes bilingues entretenu à la main dérive avec le temps : des clés sont renommées ou supprimées côté code sans que le catalogue suive, des numéros de clé finissent par se dupliquer, des traductions restent vides, et il devient difficile de savoir avec certitude si une clé donnée est encore utilisée quelque part dans un projet de taille conséquente.

Le problème se pose différemment pour un projet qui n'a jamais été internationalisé : ses textes utilisateur sont codés en dur, mélangés à des chaînes techniques (journalisation, expressions régulières, noms de fichiers) qu'il ne faut pas traduire, et la conversion complète à la main est longue et risque d'introduire des erreurs de syntaxe ou des références vers des clés qui n'existent pas encore.

Problème traité

DTLi18n a été créé pour couvrir les deux moitiés de ce cycle de vie avec les mêmes garanties de sécurité : entretenir un catalogue existant en le gardant synchronisé avec le code qui l'utilise, et amorcer l'internationalisation d'un projet qui ne l'est pas encore, sans jamais laisser le projet dans un état où une référence pointe vers une clé absente ou où le code ne compile plus.

Repère : toute opération de DTLi18n qui modifie des fichiers source se termine par une vérification automatique : syntaxe Python valide, et toute clé référencée dans le code effectivement présente dans le catalogue.

Architecture

Vue d'ensemble

DTLi18n s'articule autour de quatre familles de traitement : l'édition directe d'un catalogue, l'analyse des références entre code et catalogue, l'audit croisé d'un projet déjà internationalisé, et la conversion initiale d'un projet qui ne l'est pas. Ces quatre familles partagent le même mécanisme de sauvegarde, de prévisualisation et de rapport.

Composants

ComposantResponsabilité
DTLi18n.pyOrchestration, éditeur interactif, menus, affichage console et écriture des rapports.
dtli18n_auditAudit croisé des catalogues et des sources, niveaux de confiance, détection du mécanisme de sélection de langue.
dtli18n_numberingConstruction du plan de renumérotation des clés selon la convention choisie.
dtli18n_learningBase d'apprentissage locale des décisions prises sur les chaînes ambiguës.
dtli18n_maturityCalcul du score et de l'état global de maturité i18n d'un projet.
dtli18n_project_convertAnalyse des chaînes candidates à l'internationalisation, proposition de clés, préparation des changements de conversion.
dtli18n_project_scanAnalyse des sources d'un projet, collecte des références, application encadrée des changements avec sauvegarde.
dtli18n_retiredRegistre permanent des numéros de clé retirés.
dtli18n_usageAnalyse fine de l'usage effectif des clés, y compris via des appels dynamiques partiellement résolus.

Organisation des fichiers

Application

DTLi18n.pydtli18n_audit.pydtli18n_numbering.pydtli18n_learning.pydtli18n_maturity.pydtli18n_project_convert.pydtli18n_project_scan.pydtli18n_retired.pydtli18n_usage.py

Implémentation complète de l'outil.

Catalogue traité

<nom>.py ou <nom>.json

Fichier i18n fourni par l'utilisateur, contenant un dictionnaire de clés associées à un texte français et un texte anglais.

Sauvegardes

<racine du projet>/backup/

Copie de chaque fichier modifié, créée avant toute écriture de numérotation, de suppression, d'audit corrigé ou de conversion.

Rapports

dtli18n_migration_<horodatage>.jsondtli18n_audit_<horodatage>.jsondtli18n_conversion_<horodatage>.jsondtli18n_unreferenced_keys.txt

Comptes rendus déterministes des opérations effectuées, écrits à la racine du projet analysé.

Modèle de données

Catalogue i18n

Un catalogue est un dictionnaire dont chaque clé est associée soit à un objet contenant un texte fr et un texte en, soit, dans les catalogues hérités, à une simple chaîne interprétée comme texte français avec un texte anglais vide. DTLi18n accepte ce dictionnaire sous forme de littéral Python ou de fichier JSON, et préserve le format d'origine à l'enregistrement.

Identification des clés

La convention reconnue par DTLi18n associe à chaque clé un préfixe alphabétique, un numéro et, facultativement, un libellé séparé par un tiret ou un souligné (par exemple t0001_nom_de_cle). Ce numéro sert de repère stable pour la navigation directe, la détection de doublons et la numérotation ; une clé qui ne respecte pas ce format reste éditable et consultable, mais ne possède pas de numéro de référence.

Registre des numéros retirés

Lorsqu'une clé est supprimée, son numéro est inscrit dans un registre permanent associé au catalogue. Ce numéro n'est plus jamais proposé par la numérotation, ce qui évite qu'un numéro déjà rencontré dans l'historique du projet, une sauvegarde ou un rapport antérieur, en vienne à désigner un texte différent.

Base d'apprentissage locale

DTLi18n conserve, dans une base locale, les décisions prises sur des chaînes de caractères ambiguës lors d'un audit ou d'une conversion. Ces décisions sont réutilisées lors des analyses suivantes pour proposer, avec un niveau de confiance explicite, une classification automatique de cas jugés similaires, sans jamais appliquer cette classification sans que l'utilisateur en ait le contrôle.

Fonctionnalités

Consultation et édition d'un catalogue

DTLi18n peut afficher l'intégralité d'un catalogue sans le modifier, ou l'ouvrir dans un éditeur qui présente chaque clé avec son texte français et anglais, permet de naviguer entrée par entrée ou par bloc, de rechercher un texte ou une clé, et de modifier le texte de chaque langue indépendamment. Une entrée peut être laissée inchangée, remplacée ou explicitement vidée.

Numérotation et migration des clés

DTLi18n peut renommer l'ensemble des clés d'un catalogue selon la convention numérotée, en choisissant un numéro de départ, un préfixe et une largeur de numérotation. Le renommage est répercuté dans toutes les références trouvées dans les fichiers source du projet. L'opération est précédée d'une prévisualisation complète du renommage et des statistiques associées, et refusée d'emblée si des doublons de numéro ou des erreurs de syntaxe existent déjà dans le projet.

Suppression sécurisée d'une clé

La suppression d'une clé est refusée tant que des références à cette clé subsistent dans les fichiers source du projet analysé. Une fois la suppression confirmée avec un motif, la clé est retirée du catalogue et son numéro inscrit dans le registre des numéros retirés, de façon permanente.

Vérification des références d'un projet

DTLi18n peut confronter un catalogue aux fichiers source d'un projet pour établir la liste des références vers une clé absente du catalogue, et la liste des clés du catalogue sans usage observable dans le code. Cette analyse distingue une référence directe et littérale d'un usage indirect ou propagé, et signale les appels dynamiques dont la clé effective ne peut pas être déterminée avec certitude ; l'absence de référence observable n'est pas présentée comme une preuve d'inutilisation.

Audit croisé d'un projet internationalisé

DTLi18n confronte les catalogues et les sources d'un projet déjà internationalisé pour détecter les incohérences — clés orphelines, références brisées, doublons de numéro, absence de mécanisme de sélection de langue réellement démontré — et associe à chacune un niveau de confiance. Les incohérences pour lesquelles une correction déterministe et sans ambiguïté existe peuvent être appliquées automatiquement après une confirmation unique, avec sauvegarde préalable. Les autres font l'objet de textes de remédiation destinés à être traités individuellement, en dehors de DTLi18n. Un audit avant correction et un audit après correction sont tous deux consignés dans le même rapport.

Conversion d'un projet non internationalisé

DTLi18n détecte les chaînes de caractères visibles à l'utilisateur codées en dur dans les fichiers Python d'un projet, et les classe en trois catégories : probablement traduisibles, probablement techniques, ou ambiguës. Chaque catégorie peut être incluse ou exclue en bloc, ou revue chaîne par chaîne. Les chaînes retenues reçoivent une clé proposée selon la convention numérotée, et servent à construire un nouveau catalogue ainsi que les modifications correspondantes des fichiers source, avec sauvegarde préalable et vérification finale de la syntaxe et de la résolution des références.

Score de maturité i18n

DTLi18n calcule, pour un projet, un score et un état global d'internationalisation, à partir de la détection effective de l'internationalisation, de la complétude des traductions françaises et anglaises, de la part des clés dont l'usage est observé dans le code, du nombre de chaînes encore codées en dur ou ambiguës, et de la présence démontrée d'un mécanisme de sélection de langue.

Référence interne

Modules internes

ComposantRôle
I18nFileLecture, représentation et écriture d'un catalogue Python ou JSON, avec sauvegarde automatique avant chaque enregistrement.
EditorBoucle d'édition interactive : navigation, recherche, modification, numérotation, suppression et vérification depuis un catalogue ouvert.
EntryReprésentation d'une clé et de ses textes français et anglais, avec extraction du préfixe et du numéro selon la convention reconnue.

Robustesse et intégrité

Annexes

Limites connues

Versions et schémas

IdentifiantValeurPortée
Applicationv1.1-46Fonctionnalités distribuées.
Rapport d'auditchamp tool_versionVersion de DTLi18n consignée dans dtli18n_audit_<horodatage>.json.
Autres rapportshorodatage dans le nom de fichierRapports de migration et de conversion, non versionnés indépendamment de l'application.

Glossaire

TermeDéfinition
CatalogueDictionnaire associant des clés à un texte français et un texte anglais.
Clé numérotéeClé respectant la convention préfixe + numéro, servant de repère stable dans le catalogue.
Numéro retiréNuméro de clé supprimée, inscrit dans un registre permanent et jamais réattribué.
Base d'apprentissage localeMémoire locale des décisions prises sur des chaînes ambiguës, réutilisée pour de futures classifications.
Correction sûreCorrection déterministe et sans ambiguïté, applicable automatiquement après une confirmation unique.
Prompt de remédiationTexte destiné à documenter et traiter individuellement une incohérence sans correction automatique.
Chaîne ambiguëChaîne de caractères codée en dur dont la classification traduisible/technique n'est pas déterminée automatiquement.
Score de maturitéIndicateur global de l'état d'internationalisation d'un projet.
Sélecteur de langueMécanisme du projet dont l'effet réel sur la langue affichée est démontré par l'analyse, et non simplement supposé.