Skip to content

Overhaul localization with external INI language files - #377

Open
MinDeaDBlood wants to merge 86 commits into
CodingWonders:dt_prerel_2691from
MinDeaDBlood:localization-system-overhaul-081
Open

Overhaul localization with external INI language files#377
MinDeaDBlood wants to merge 86 commits into
CodingWonders:dt_prerel_2691from
MinDeaDBlood:localization-system-overhaul-081

Conversation

@MinDeaDBlood

@MinDeaDBlood MinDeaDBlood commented Jul 26, 2026

Copy link
Copy Markdown

Hi, I have rebuilt and adapted this localization work on top of your latest dt_prerel_2681 commits.

What changed

  • Reworked the application localization system to load translated values from external INI files.
  • Added runtime discovery of language files from the language directory, including files added after DISMTools has been installed.
  • Kept the six current languages in the same external format.
  • Set the first use setup wizard to start in English, matching the original default behavior.
  • Adapted your latest About dialog anniversary and copyright changes to the INI system.

Designer safety

Following your review, all generated Designer.vb and .resx files now match the current base branch exactly. They keep their normal English design-time text. Translations are applied programmatically during OnLoad from ordinary VB source files, using the same external INI files. No localization code runs from the generated designer files.

Validation and error handling

The localization system includes strict validation and clear diagnostics. Before a language is applied, DISMTools checks the INI file for missing required keys, invalid numbered placeholders, and syntax errors. An invalid language file is not applied, and the previous language remains active.

If code requests a missing key at runtime, a dedicated localization exception identifies the language file, section, key, full key, and source location. It also explains which entry needs to be added. A detailed validation report is saved under logs\localization. The program does not silently fall back to another translation.

Scope

Apart from the compilation correction described below, all changes in this PR belong to the localization overhaul. Other user-reported fixes discovered during testing have been intentionally excluded. Those can be submitted later as focused commits or separate PRs if you want them.

Compilation correction

There is one small unrelated correction in ProgressPanel.vb. An End Select statement had been appended to the DISM command line, which produced invalid VB code and prevented the project from compiling in our build. I separated it onto its own line in commit 3af9310.

This correction is isolated in its own commit. If you prefer to keep the original code, let me know and I will remove that single commit from the PR without affecting the localization changes.

Checks

  • The branch is based directly on the latest dt_prerel_2681 commit available when this update was prepared.
  • All six INI files contain the same 5,938 localization keys, with no duplicates or missing numbered placeholders.
  • All 2,814 form localization calls were moved from 142 generated designer files into ordinary runtime source files.
  • The generated Designer.vb and .resx files have no differences from the current base branch.
  • The latest About dialog anniversary text is present in every language file.
  • No fork-specific build workflow or release packaging changes are included.
  • git diff --check reports no errors.

* [Installer] Update assets

* [PE Helper/PXE Helpers/WDSHC] Fix dup. driver inst

Essential drivers would be readded by WDSHC. Not anymore

* [PE Helper] Tweak build tag

* [PE Helper/PXE Helpers/WDSHC] Handle answer file conflicts

* [Fix] Fixed phantom item appearing in the CLB

Replacing it with a listview seems to fix the issue

* [Unattended answer file/DTSS] New WPBT starter script

* [Unattended answer file/SSE] INFINITY MK2 improvements

- Experimental LIBRARY upload
- Bulk conversion
- Script security inspection for library upload

* [DynaLog] Update init

* [Unattended answer file/SSE] Library uploads less experimental

* [Unattended answer file] Integrate Starter Script Library

* [PE Helper/DT PE ES] Fixed missing param

* [Fix] Prevent task failures on rooted sources

Like capturing an image, enabling features, adding capabilities and repairing the component store will fail if the source is rooted and contains quotes.

This fixes it.

* [Fix] Prevent saving online/offline inst information with images selected in mimgmgr

* [REL] Update What's New section
* Update assembly information

* [Enhance] Improvements to SAM Helper

- Improvements for domain accounts
- Skip machine.pckgdep and other pckgdeps that don't begin with S-1-5

* [Enhance] Filter appx on 5 criteria

* [Fix] Fixed NRE

Fixes CodingWonders#372

* [Enhance] Add filter assistant for AppX info dialog

* [Enhance] Update startup banner for 4th anniversary

* [Unattended answer file/SSE] Allow Automated Inspection training

* [PE Helper/PXE Helpers/WDSHC] Show conflict screen more neatly

* [Library] Update Markdig to 1.3.2

* [Fix] Reference proper library paths

* [Fix] Fixed command issue on rooted path

* [BDELIB] Integrate with BitLocker encrypted volumes

* [PE Helper] Concurrent ISO creation

Concurrent PE Helper = More ISOs at once = Less time spent!

* [PE Helper] Fix up path for exported drivers

* [Enhance] Allow switching between offline installations from File menu

* [Installer] Remove entry to unused item

* [PE Helper] Update backgrounds

* [PE Helper] Separate progress bars

* [PE Helper] Begin bundling BDE-GUI

* [DynaLog] Update init

* [PE Helper] Pass all arguments to BDEMGR

* [REL] Update What's New section

@CodingWonders CodingWonders left a comment

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do not touch the designer code. To switch languages, stick with programmatically handling the translations.

  1. The designer may fail to render the form, or
  2. Stuff may be messed up in the designer

- Driver and package info dialogs now support multiple file selection in file pickers
- General fixes
@CodingWonders
CodingWonders changed the base branch from dt_prerel_2682 to dt_prerel_2683_relcndid August 18, 2026 14:02
@CodingWonders
CodingWonders changed the base branch from dt_prerel_2683_relcndid to dt_prerel_2691 August 30, 2026 20:10
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants