back to article Windows keeps obsolete strings forever to avoid breaking translations

Changing text in Microsoft Windows requires freezing string updates well before code changes stop, often leading to strange wording that persists for years. These quirks aren't due to last-minute updates. Instead, it is all about the translations, according to veteran engineer Raymond Chen. "This deadline usually comes well …

  1. Anonymous Coward
    Anonymous Coward

    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!

    1. Bryan W

      Re: Ah yes, unnecessary strings

      I was agreeing with you right up until that last phrase... Did a penguin eat your first born or something? I remember when it wasn't cool to be a corporate bootlicker.

    2. Blazde Silver badge

      Re: Ah yes, unnecessary strings

      But they don't get purged until a major release. That's often over 365 days of unnecessary strings!

    3. Quenda

      Re: Ah yes, unnecessary strings

      Wasting hundreds of kb! Now we know why Microsoft doesn't give this much attention.

      1. Guido Esperanto

        Re: Ah yes, unnecessary strings

        Couple hundred KB's are now accounted for.

        Several gigs to go

        1. ravenviz
          Trollface

          Re: Ah yes, unnecessary strings

          "640K ought to be enough for anybody"

    4. herman Silver badge

      Re: Ah yes, unnecessary strings

      And right in TFS it says that strings are not kept forever, but flushed at major versions.

    5. Anonymous Coward
      Anonymous Coward

      Re: Ah yes, unnecessary strings

      ...and yet, loads of perfectly fine machines were made obsolete by mandatory Windows 11 requirements. There's no point in caring about backwards compatibility if they pull shit like that...they might as well use this as an opportunity for a clean out.

      1. Lon24 Silver badge

        Re: Ah yes, unnecessary strings

        "... and yet, loads of perfectly fine machines were made obsolete by mandatory Windows 11 requirements."

        Or enjoying a second life elsewhere they may never have known without Redmond's encouragement.

  2. Edwin

    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.

    1. Dan 55 Silver badge

      Re: I remember...

      And in a strange coincidence 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. Roland6 Silver badge

        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...

    2. David 132 Silver badge
      Happy

      Re: I remember...

      “Microsoft used to issue a translation dictionary on diskette including all the standard terms & phrases in a large number of languages”

      Ah yes, that explains the error dialog…

      My Hovercraft Is Full Of Eels (C:\Windows\System32)

      [OK] [Cancel]

      1. herman Silver badge

        Re: I remember...

        Is OK/Cancel any better than Abort/Retry/Fail?

        1. Anonymous Coward
          Anonymous Coward

          Re: I remember...

          Or "yes/no/file not found"...

        2. ravenviz

          Re: I remember...

          Or more useful:

          [Ctrl] [Alt] [Delete]

  3. Anonymous Coward
    Anonymous Coward

    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.

    1. gryphon

      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?

      1. Anonymous Coward
        Anonymous Coward

        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 ?

        1. kmorwath

          Re: Oh FFS -

          Was your application made of of only two columns of labels and text boxes? Any complex form with different controls can easily mess up otherwise....

          But yes, I've seen appplications made with two colums of label/text bkxes... Most of the written in Visual Basic.

      2. Roland6 Silver badge
        Coat

        Re: Oh FFS -

        Just used code to the effect:

        dataItem.message.substring(0, 20)

      3. Phil O'Sophical Silver badge

        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?

        That's the difference between:

        Internationalization (I18N): Making sure your code can handle translated strings without breaking screen layouts, etc.

        and

        Localization (L10N): Doing the translations into the desired languages (which may also require updating metadata about position of variable tokens within the strings)

        1. kmorwath

          Re: Oh FFS -

          You might need to change icons, images and colors to adapt to some locales...

    2. JLV Silver badge

      Re: Oh FFS -

      I didn't do anything as fancy as that. But what I did do was to run a differ for all the (English) strings that our product held, comparing them to the last-translated release.

      Then, along with all the other prep, I sent our translation team a list flagging the actual changes, making their life much easier than the teams doing the work on other languages who had to figure out what had changed for themselves.

      ( Yes, I tried to convince HQ to do this for other languages, but you know how not-invented-here gets perceived. And worst of all corporate sins, this was using an unknown hobby language named after a snake that I had picked up reading Dr. Dobbs. 1998 ).

      Does sound like a bit of drama on the strings thingy, if it gets purged from release to release.

      My impression of where Windows really used to bloat a system is in applying patches and them keeping them around forever in its installer directories. Having tried to emulate the Linux/Mac $HOME experience by putting Windows (7?) in a 50GB C: drive and installing everything else in D: I watched in horror as it gradually bloated itself into running out of space. I don't know if they've fully fixed that yet, been off Windows for years now. No, having to run special programs and having to manually follow internet guidance doesn't count as MS having its act together here.

    3. david 12 Silver badge

      Re: Oh FFS -

      If no token was found, the original text was displayed

      The behavior MS was trying to avoid, by retaining all the original tokens.

  4. trevorde Silver badge

    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!

  5. trevorde Silver badge

    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.

    1. Roland6 Silver badge

      Re: English is free, everything else costs

      I suspect the Chinese also have the same thoughts. It has been notable over the years that reviews of Chinese tech products (eg. Mobile phones) intended, at least initially, for the home market, note the absence of an English UI.

      1. david 12 Silver badge

        Re: English is free, everything else costs

        And the entire Chinese open-source technology business, building cheap phones, smart watches, toys, whatever.

        This is all in Hanzi. It enables manufacturers with limited technical understanding to enter production, and developers with technical skill to create variants.

  6. trevorde Silver badge

    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.

    1. Roland6 Silver badge

      Re: Using 6 words instead of 1

      We had a product which we wished to sell into Germany, so being bright (this was the 1980s) we contacted a couple of German companies with products in our area and asked for their sales literature in German, got the sharp reply “we have none, it’s all in English”, so we didn’t do a German localised version…

      1. Phil O'Sophical Silver badge

        Re: Using 6 words instead of 1

        Yes, we had the same issue with asian countries. For software that was to be used by technical people (i.e. not "joe public") the Japanese and Koreans didn't care, they were fine with English.

        The French and Canadians, on the other hand,...

        1. Paul Hovnanian Silver badge

          Re: Using 6 words instead of 1

          One could always use Professor Farnsworth's Universal Translator.

  7. trevorde Silver badge

    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.

    1. J.G.Harston Silver badge

      Re: Mirror, mirror in the app

      Arabic is a bastard because within the right-to-left they embed left-to-right foreign phrases. Imagine:

      "The sense of erviv ed eioj during the holiday."

      1. idoak

        Re: Mirror, mirror in the app

        Arabic does no such thing. You may have in mind numerals, which are indeed read (and written) LTR.

        1. J.G.Harston Silver badge

          Re: Mirror, mirror in the app

          Stuff I'm watching scrolling across the bottom of the Al Jazeera News TV screen must be in my imagination then.

        2. Canopus

          Re: Mirror, mirror in the app

          Arabic DOES exactly that !

          "Imagination is more important than knowledge" وتذكر الكاتب في كتابه قائلاً

      2. sedregj
        Windows

        Re: Mirror, mirror in the app

        Your parent quite literally gave an example.

        Arabic as a whole is largely written R2L You note that numbers are written L2R in Arabic.

        Mr Harston notes that quoting foreign phrases within Arabic is written according to the preferred direction of the quoted language. English is a habitual L2R language, so english quotes will be L2R.

  8. JimmyPage Silver badge
    FAIL

    Of all the ways you cloud have done it

    dedicated resource DLLs are probably the worst.

    1. Dan 55 Silver badge
      Alert

      Re: Of all the ways you cloud have done it

      How about the registry?

      1. JLV Silver badge

        Re: Of all the ways you cloud have done it

        OMG, don't give MS any ideas here.

    2. A. Coatsworth
      Trollface

      Re: Of all the ways you cloud have done it

      Freudian slip in the title? Arguably, the could would be a even worse way to do it

    3. kmorwath

      Re: Of all the ways you cloud have done it

      Just they are fast, and allows to localize far more than strings. Localizations are not only string translations.

  9. Anonymous Coward
    Anonymous Coward

    Windows is sh••

    As is Microsoft. Stop trying to explain anything this sociopathic company does.

    1. PB90210 Silver badge

      Re: Windows is sh••

      Sometimes it's nice to hear from someone involved as to why something was designed the way it was. It doesn't have to be MS, it could be something as simple as why keyboards are still 'qwerty' rather than 'abcde'

      1. LybsterRoy Silver badge

        Re: Windows is sh••

        -- why keyboards are still 'qwerty' rather than 'abcde' --

        Bad habits are hard to break.

      2. Anonymous Coward
        Anonymous Coward

        Re: Windows is sh••

        There are actually very good, well researched and tested reasons why keyboards are the way they are...the history is long and very boring so I won't link the wikipedia article, also those that are curious about QWERTY probably already know about QWERTY. A keyboard layout in alphabetical order is actually awful, I know, I've tried...you end up lopsided while you type.

        1. Strahd Ivarius Silver badge

          Re: Windows is sh••

          When home users got the Minitel in France in 1983-84, some models had an "abcde" keyboard.

          Nobody complained then, since they were typing with one digit anyway, unless they were secretaries accustomed to the standard "azerty" layout.

          The next iterations all used the "standard" layout.

          With the latest versions of Win11, MS introduced the new AFNOR-designed layout as the "standard", relegating the current layout to "legacy" status.

          So anyone not paying attention will have a surprise entering passwords the first time...

          Of course, nobody is selling that new standard keyboard as far as I can say, and the manufacturers I am in contact with are not aware of its existence.

          (and I didn't find any either on the Microsoft store)

  10. J.G.Harston Silver badge

    If they'd used a sensible system where resource strings are kept seperate from applications, ****USERS**** could edit them themselves to correct/customised/port them. As I've done in EVERY SINGLE ONE of my applications for over THREE DECADES.

  11. Ilgaz

    It is the model they are using.

    I love that guy however as a Microsoft employee he insists not seeing the elephant in the room. It is closed source model Vs open source/community. KDE project for example is gigantic and old. They don't have to cope with this problem.

    Also, using their model Apple does have an excellent, native like Turkish translation while Windows one reads like a bad sci fi movie script.

  12. Anonymous Coward
    Anonymous Coward

    What shite through yonder windows breaks

    Hmm, I wonder if they're accidentally prove the infinite number of monkeys thing

  13. retiredmonkey

    Task failed successfully.

    1. JulieM Silver badge

      I had a physics teacher who used to refer to blown fuses as having "succeeded" .....

  14. heyrick Silver badge

    Jeez...

    When I wrote a VB application decades ago, the app itself only held tokens. These tokens were looked up in a file and replaced by strings which could be in whatever language (it would look for a file named after the system language, falling back to English if it didn't exist).

    If you're familiar with RISC OS MessageTrans, it's basically an implementation of that.

  15. Lee D Silver badge

    Hey Microsoft, can I have $10bn for my solution please?

    Use a constant in the code, e.g. STRING_FILESYSTEM_ERROR_43287.

    When you want to print that message, you use that constant.

    Have a bunch of separate files that define that constant for each language and/or can change that "constant" on the fly if the user is switching languages. Like a variable.

    At no point then do you have to reference the original English string ever. You just reference the constant.

    If you need to update the English, or the Guatamalan, or whatever translation... you can do that at any time without having to keep reference to what it used to say, and neither do you have to lock down the translation in perpetuity in order to keep track of it.

    Hell... you could keep the translated files in something like a .po file....

    (Seriously: What a dumbass way to handle translations).

    1. JulieM Silver badge
      Boffin

      We've already got "memory-safe" programming languages. When is someone going to come up with an "internationalisation-safe" programming language that does not allow you to enter literal strings directly into a program, but requires them to be defined externally?

    2. Ken Hagan Gold badge

      That is actually how Win32 does it. I was bemused by Raymond's article. (Perhaps one of MS's attempts at a Win32 replacement tried to do it differently.)

  16. spireite
    Coat

    Multiples? So it isn't unicode then

POST COMMENT House rules

Not a member of The Register? Create a new account here.

  • Enter your comment

  • Add an icon

Anonymous cowards cannot choose their icon