Windows keeps obsolete strings forever to avoid breaking translations
- Reference: 1764333074
- News link: https://www.theregister.co.uk/2025/11/28/chen_windows_text_translation/
- Source link:
These quirks aren't due to last-minute updates. Instead, it is all about the translations, [1]according to veteran engineer Raymond Chen.
"This deadline usually comes well before the engineering 'no code changes' deadline," Chen wrote on his Old New Thing blog, "because the translators require a lot of time to go through all the strings and translate them into the many target languages that Windows supports."
[2]
The real problem emerges during updates when changes get rolled out and existing functionality is updated. Does Microsoft modify the text to say that widget x performs function z instead of function y ?
[3]
[4]
Nope. Microsoft adds new translations and leaves the old ones alone. Anything that is already in the system is considered permanently locked and cannot be changed.
[5]To solve compatibility issues, Microsoft would quietly patch other people's code
[6]The CAPITAL LETTERS trick that helped merge Windows 95 into NT
[7]Microsoft finance slang defines the eternal optimist: The 'hockey stick on wheels'
[8]Microsoft's ancient icon library still lurks deep within Windows 11
"The reason is that changing those strings would invalidate the translations," explained Chen, "causing the existing translation packs to say, 'Whoa, that's not the string I was asked to translate.'
"Depending on what language the user has chosen for their user interface, this could result in devolving to the base language (for Language Interface Packs), or if the base language's translation has also been invalidated, possibly falling back to English."
And so, with every update, the bloating of Windows is not just due to AI functionality being crowbarred into the OS; it is also because of a build-up of abandoned strings cluttering the system.
[9]
According to Chen, only during major releases - marked with the vaguely patronizing "We're getting everything ready for you" login screen - can Microsoft purge these redundant strings. ®
Get our [10]Tech Resources
[1] https://devblogs.microsoft.com/oldnewthing/20251126-00/?p=111815
[2] https://pubads.g.doubleclick.net/gampad/jump?co=1&iu=/6978/reg_software/oses&sz=300x50%7C300x100%7C300x250%7C300x251%7C300x252%7C300x600%7C300x601&tile=2&c=2aSnVKW2OehbTn8EZkAUrJQAAAII&t=ct%3Dns%26unitnum%3D2%26raptor%3Dcondor%26pos%3Dtop%26test%3D0
[3] https://pubads.g.doubleclick.net/gampad/jump?co=1&iu=/6978/reg_software/oses&sz=300x50%7C300x100%7C300x250%7C300x251%7C300x252%7C300x600%7C300x601&tile=4&c=44aSnVKW2OehbTn8EZkAUrJQAAAII&t=ct%3Dns%26unitnum%3D4%26raptor%3Dfalcon%26pos%3Dmid%26test%3D0
[4] https://pubads.g.doubleclick.net/gampad/jump?co=1&iu=/6978/reg_software/oses&sz=300x50%7C300x100%7C300x250%7C300x251%7C300x252%7C300x600%7C300x601&tile=3&c=33aSnVKW2OehbTn8EZkAUrJQAAAII&t=ct%3Dns%26unitnum%3D3%26raptor%3Deagle%26pos%3Dmid%26test%3D0
[5] https://www.theregister.com/2025/11/13/microsoft_windows_compatibility_chen/
[6] https://www.theregister.com/2025/10/29/chen_windows_95_sizeof/
[7] https://www.theregister.com/2025/10/23/microsoft_hockey_stick_wheels/
[8] https://www.theregister.com/2025/10/21/windows_pifmgr_chen/
[9] https://pubads.g.doubleclick.net/gampad/jump?co=1&iu=/6978/reg_software/oses&sz=300x50%7C300x100%7C300x250%7C300x251%7C300x252%7C300x600%7C300x601&tile=4&c=44aSnVKW2OehbTn8EZkAUrJQAAAII&t=ct%3Dns%26unitnum%3D4%26raptor%3Dfalcon%26pos%3Dmid%26test%3D0
[10] https://whitepapers.theregister.com/
I remember...
Microsoft used to issue a translation dictionary on diskette including all the standard terms & phrases in a large number of languages.
I was a translator at the time, and found this to be an amazing tool when translating software and user guides.
Re: I remember...
And in a strange coincidence [1]Microsoft has recently retired the Multilingual App Toolkit . I guess translations are yet another thing they've filed in the "this is too difficult for us to do now" bin.
[1] https://learn.microsoft.com/en-us/windows/apps/design/globalizing/mat-announcements
Re: I remember...
That's not just retirement thats termination: "and new installations will not be possible after October 15, 2025."
I hope if you are using this tool you installed it on a VM...
Oh FFS -
In 2001, I wrote a mechanism that extracted all the strings from a VB app, and tokenised them. I also wrote a language manager. You could create a language, and then enter a translation for each token. If no token was found, the original text was displayed SO A CHANGE IN CODE DID NOT REQUIRE A TRANSLATION,
The tool that backported this into the app also used some AI* to identify common strings (E.g. "Yes", "No") and create a single entity so that one single translation could cover several strings.
All held in a SQL database that was loaded into memory and then interrogated on form load. With the added bonus that the customer could do the translating.
This was all done because the Dev Manager could not put into words how shite using DLLs for language resources that break if not kept in sync was.
This was for a financial services product used in Germany, Switzerland, France and Italy.
2001 - nearly a quarter of a century ago.
Re: Oh FFS -
Presumably you made sure that a 20 character string in English that became a 50 character string in German (gotta love those compound words) didn't break your apps?
Re: Oh FFS -
I didn't directly. But a colleague who knew about subclassing was able to create hooks that could resize labels and textboxes.
All our yesterdays, eh ?
Globalisation & localisation
Every software company I've worked at does this differently and, invariably, badly. One product i worked on was localised into about 14 languages. The reality was that it was only ever thoroughly tested on English. In one particular release, we missed a French string. If a French user accessed a particular menu, instant crash! Merde!
English is free, everything else costs
Worked on a product which was localised into about 6 languages. Every string which required translation cost about £100 per string per language, after factoring in all the processing, translation, verification and testing.
Using 6 words instead of 1
Worked on a product which was localised into German, amongst other languages. We had to make the UI about twice as wide as English to accommodate the translated German compound words. The worst language was Polish which had to agree on gender and case. If our Polish translation was good, we knew we were in good shape for the other languages.
Mirror, mirror in the app
Worked on a product which has localised into a number of different languages including Arabic ie Right To Left (RTL). Every few years, our sales people would say: "If only it fully supported Arabic, we could sell thousands of these and make the company millions!". We'd then sink about 6 months of dev time fixing all the RTL issues. Number of extra sales: zero. Until a few years later when the cycle would repeat.
Of all the ways you cloud have done it
dedicated resource DLLs are probably the worst.
Re: Of all the ways you cloud have done it
How about the registry?
Ah yes, unnecessary strings
The source of huge data wastage, those plain-text strings. Literally hundreds of kb could be wasted . You know, occasionally. And all this attitude gets is the decades of backwards-compatibility that's kept Windows as the default option.
Clearly these guys don't know what they're doing! They should tear everything up every couple of years so using Windows becomes a hobby (and identity) in itself!