Sacrificing the 'A' func to make Romanian better? aka There's Something About Marţi…

by Michael S. Kaplan, published on 2012/03/22 07:01 -04:00, original URI: http://blogs.msdn.com/b/michkap/archive/2012/03/22/10286210.aspx


You may have read The history of messing up Romanian on computers, that blog I wrote back on Wednesday, August 24th of last year.

And now, today's blog is on Thursday, March 22nd of this year.

Something mildly unusual going on here.

Almost ironic, one might say.

Though if one were  in fact to say it, one should go watch Katie Holmes in Teaching Mrs. Tingle again, to help understand why it isn't ironic. And then while one fills up the NetFlix queue, one should check out Cameron Diaz in There's Something About Mary if one needs a refresher on the allusion in the aka title of today's blog. Or if one just wants a better movie than Teaching Mrs. Tingle in one's short term cache. While one is there, Ben Kingsley has a relevant scene in Sneakers where he said "Marty... Marty... Marty..." where it may have been a complaint about Marţi… Marţi… Marţi… in his unusual accent. And it too is a better movie than Teaching Mrs. Tingle. :-)

Well, I should explain the issue, for of those who are not Romanian, or who are not following the issues of the Romanian language.

You should look at the Windows locale data and every native language field in it.

Go ahead and look! I'll wait.

Check out the LOCALE_SNATIVECOUNTRYNAME (LOCALE_SNATIVECTRYNAME). It's România.

And the LOCALE_SNATIVELANGUAGENAME (LOCALE_SNATIVELANGNAME). It's română.

And the LOCALE_SNATIVEDISPLAYNAME. It's română (România).

And the LOCALE_SNATIVECURRNAME. It's Leu.

And the twelve LOCALE_SMONTHNAME[1-12] values. They are ianuarie, februarie, martie, aprilie, mai, iunie, iulie, august, septembrie, octombrie, noiembrie, decembrie.

And the seven LOCALE_SDAYNAME[1-7] values. They are duminică, luni, marţi, miercuri, joi, vineri, and sâmbătă.

Wait, sgtop the presses!

You see that Wednesday (miercuri) and Thursday (joi) look great

But Tuesday (marţi)? It has one of those nasty cedilla-below T's in it!

It's been this way in Windows since the earliest days of Win9x and WinNT, and never fixed.

In it's latest incarnation, it was reported as a localization bug back on Tuesday, December 20th, 2011.

Note the Tuesday.

And people spent months arguing back and forth about this one for months.

Until Tuesday, March 13, 2012.

Note the Tuesday.

I stole the bug and assigned it to myself, and pointed out that it was a longstanding locale data issue.

But it was on purpose.

You might wonder why I would say such a terrible thing.

Well, the problem is that people have been calling GetLocaleInfoA(LOCALE_USER_DEFAULT, LOCALE_SDAYNAME2, ...) on Romanian machines for many years now.

And yes, while you may want Marți, and you may hate Marţi a lot, you probably hate Mar?i worse.

Many a person in the past has, at least. And the request to update the code page was refused because we don't (won't) update code pages.

We've gone back and forth on this issue for years, the Marţi/Mar?i/Marți issue.

And once again the question comes up: do we make the 'A' functions less useful in Romania to make for a better Romanian?

I lack both the time and the money to ask every single Romanian what they think, even were I to ignore the lessons of On Thokks who don't give a Frigg, under the mistletoe.

So I'm just asking Romanians I know. And the ones who read this Blog!

Because I'm thinking There's Something About Marţi… and that we should get her sister Marți, instead. Even if her Dorian Grey mirror twin Mar?i shows up to the unfashionable parties they have in ANSI apps...


Adrian on 22 Mar 2012 7:44 AM:

Marți (the first choice) is ok. It's close to the actual rendering from books and in writing.

Jesse on 22 Mar 2012 7:50 AM:

Could you make a compatibility shim for applications that call GetLocaleInfoA under the Romanian language to get the original string back?  It's a hack, but it's probably the best solution if you want the best of both worlds (proper localization and supporting legacy apps).

Michael S. Kaplan on 22 Mar 2012 8:32 AM:

The shim thought is a good one; I'll see if I can put it in a few heads. Though it could be rather complicated to do....

Simon Buchan on 22 Mar 2012 2:16 PM:

So the A functions don't do best-fit? I can see that might have problems too, but I'd take a somewhat near character over "?" anyday....

Cristian on 22 Mar 2012 3:49 PM:

There is a way to have "Marți" also in ANSI apps, but you don't like it :) Namely adding support for ISO/IEC 8859-16:2001 as CP28606.

Please, pretty please add support from this last ISO codepage! Please add Windows to the list of operating systems which support it (MacOS, Linux, ReactOS)

Michael S. Kaplan on 22 Mar 2012 10:33 PM:

@Simon - they do best fit but no best fit mapping is defined, and we can't change code pages. :-(

Mișu Moldovan on 23 Mar 2012 6:46 AM:

You don't have to change code pages, just add the one that's missing: ISO-8859-16. ReactOS did it already, why can't Windows do it too?

Michael S. Kaplan on 23 Mar 2012 7:09 AM:

Because it's too late? Because rules are rules? Because Unicode solves the problem? Microsoft can't change stability promises and guarantes to send mixed messages and confuse people....

mpz on 23 Mar 2012 4:46 PM:

I thought the Unicode train has already left the station? The home version of Windows has been Unicode-based for over ten years now (since XP in late 2001), so there really is no excuse for apps that do not support it.

Just change it to what it really should be and force the apps to update. Sometimes you have to take drastic steps to get things fixed......

Michael S. Kaplan on 23 Mar 2012 10:11 PM:

It has! :-) I just want to make sure the interested stakeholders have a chance to weigh in....


Please consider a donation to keep this archive running, maintained and free of advertising.
Donate €20 or more to receive an offline copy of the whole archive including all images.

referenced by

2012/03/26 The Unicode train left the station YEARS ago, in fact! (2012 edition)

go to newer or older post, or back to index or month or day