Skip to content

Add dynamic localization system and related fixes#376

Draft
MinDeaDBlood wants to merge 1 commit into
CodingWonders:dt_pre_0.8.1from
MinDeaDBlood:agent/dynamic-localization-system
Draft

Add dynamic localization system and related fixes#376
MinDeaDBlood wants to merge 1 commit into
CodingWonders:dt_pre_0.8.1from
MinDeaDBlood:agent/dynamic-localization-system

Conversation

@MinDeaDBlood

Copy link
Copy Markdown

Summary

This draft contributes the dynamic localization system developed and tested in MinDeaDBlood/test.

The implementation was built on DISMTools 0.8 stable (399a055) while the official development branch advanced to dt_pre_0.8.1. I am intentionally submitting the existing tested implementation instead of rewriting it against the newer branch, so the maintainer can decide whether to merge it, rebase it, or port selected parts.

What changed

  • Added runtime INI-based localization with dynamic language discovery.
  • Added English, German, Spanish, French, Italian, and Portuguese language files.
  • Migrated UI text in the main program, helpers, and bundled tools to localization keys.
  • Added language-file validation, explicit diagnostics, and build verification scripts.
  • Updated installer localization, including Russian installer resources.
  • Added related fixes found during user testing: project Save As and project links, mounted-image manager loading, external tools/report handling, window activation, and per-user .dtproj associations with custom icons.

Why

The previous localization implementation was tied to built-in languages and many hard-coded UI strings. Users could not reliably add a language to an installed or portable copy, and malformed files could lead to unclear failures. The new system loads external language files, validates them, reports actionable errors, and falls back safely.

Validation

  • Debug build completed successfully with MSBuild for .NET Framework 4.8.
  • Project item validation passed: 8 projects and 575 items.
  • The submitted tree exactly matches MinDeaDBlood/test main (6f248e2d99096174a6573e10a0f7c4fa10ce2d90).
  • German localization validated with 5,763 keys, no missing or duplicate keys, and matching placeholders.
  • .dtproj registration, icon persistence, removal, and end-to-end /load="%1" shell launching were tested successfully.

Upstream compatibility

The target branch is three commits ahead of the implementation base. A non-destructive merge preview reports conflicts in 17 files, mainly project/installer files and UI files changed by both branches. This PR is therefore intentionally opened as a draft. No attempt was made to resolve those conflicts by rewriting the localization work.

An additional strict audit also reports 12 existing non-German formatting-token discrepancies in Spanish, French, Italian, and Portuguese strings. The German file passes that audit.

@CodingWonders

Copy link
Copy Markdown
Owner

While this is a change made with an AI agent, I like the proposals for language translations.

Unfortunately, it appears as though your agent touched more files than necessary and, thus, there are conflicts. Resolve these before I can check further but, from what I've seen, it's going well.

@MinDeaDBlood

Copy link
Copy Markdown
Author

While this is a change made with an AI agent, I like the proposals for language translations.

Unfortunately, it appears as though your agent touched more files than necessary and, thus, there are conflicts. Resolve these before I can check further but, from what I've seen, it's going well.

I used an older version (version 8) as a base, but as a standalone project rather than a fork. To save time, I asked an AI agent to port it over. Aside from localization, I made extra changes based on user feedback. There was also an issue with the window dropping to the background, which I fixed, so now it stays in the foreground on the first launch. I personally verified everything during each compilation and after user bug reports, and then users confirmed whether it worked or not.

@MinDeaDBlood

MinDeaDBlood commented Jul 22, 2026

Copy link
Copy Markdown
Author

While this is a change made with an AI agent, I like the proposals for language translations.

Unfortunately, it appears as though your agent touched more files than necessary and, thus, there are conflicts. Resolve these before I can check further but, from what I've seen, it's going well.

Another change I added is the checkbox logic in the file associations section. A user was having issues with the portable version's file association logic. What I changed is the activation sequence for the second checkbox from the top: now it toggles on automatically when you click the first one. Before this, users didn't understand why icons weren't working upon clicking, because they actually needed to activate both checkboxes. However, if you only want it to work on click, you can uncheck the second checkboxe just like before.

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