Presentation
DTLi18n analyzes the relationship between Python source code and translation catalogs to edit, check, audit, or prepare a French-English migration.
Traditional tools often stop after extracting strings. DTLi18n distinguishes user-visible text from technical data, checks references in both directions, measures i18n quality, learns from previous decisions, and produces auditable reports before changing anything.
Why DTLi18n?
A flawed internationalization pass can mistakenly translate a JSON key, command option, or internal identifier while leaving visible messages hard-coded in the source. DTLi18n uses conservative analysis based on Python syntax, structural context, and observable usage to avoid both problems.
Five complementary modes
- List French and English catalog text without changing the file;
- Edit a Python or JSON catalog with search, navigation, and numbering checks;
- Check coverage, language selection, references, and remaining hard-coded user text;
- Audit an internationalized project and produce confidence-rated before/after diagnostics;
- Convert a non-i18n Python project conservatively after classification and confirmation.
1 List texts from an i18n file 2 Edit an i18n file 3 Check project internationalization 4 Audit an i18n project 5 Convert a non-i18n project
Editing and stable numbering
The editor supports catalogs containing a literal TRANSLATIONS dictionary and the equivalent JSON structure. Keys can follow a stable numbered convention:
t0001_file_not_found t0002_invalid_choice
Existing numbers are preserved, numbering gaps are never compacted, and a deleted key number is recorded in a local registry so that it cannot be reused.
Quality checking
DTLi18n classifies strings as probably user-visible, probably technical, ambiguous, or already internationalized. Its score details catalog health, references, language selection, translation coverage, hard-coded strings, and ambiguities.
A key is never declared unused merely because no literal t("key") call was found. The analysis also follows indirect uses, propagated variables, Python and JSON structures, and dynamic key templates.
Bidirectional audit
The audit compares source files with every detected catalog. It checks missing references, duplicates, missing translations, probable language inversions, hard-coded visible strings, translated technical keys, ineffective language selectors, and syntax errors.
Automatic changes are restricted to deterministic issues marked SAFE. Other issues receive a precise remediation prompt that can be copied to the clipboard, and a detailed JSON report is written to the project.
Conservative conversion
For a non-i18n project, DTLi18n can create a project-specific catalog, assign stable keys, replace approved strings only, add the language mechanism, back up source files, compile every Python file, and verify all references.
Dictionary and JSON or API response keys, SQL columns, paths, URLs, regular expressions, options, and internal identifiers remain technical data and are never translated.
Local learning
Human decisions about ambiguous cases enrich ambiguity_kb.json. The knowledge base records the text, AST context, called function, argument role, target variable, decision, confidence, and history. It remains readable, local, and auditable.
Command line
DTLi18n.exe "D:\Projects\MyTool" --mode verify DTLi18n.exe "D:\Projects\MyTool" --mode convert DTLi18n.exe "D:\Projects\MyTool" --mode audit DTLi18n.exe "D:\Projects\MyTool\catalog_i18n.py" --mode edit DTLi18n.exe --version
Building with PyInstaller
The Windows build uses DTLi18n.spec. The following command produces the standalone executable under dist.
python -m PyInstaller --clean --noconfirm DTLi18n.spec
Safety and privacy
DTLi18n favors traceability and runs entirely locally.
- no source code or catalog is uploaded;
- no external AI service is required;
- confirmation is required before conversion;
- modified source files are backed up and syntax-checked;
- reports describe the before/after state and affected files.