Why I pretend I'm from Denmark

5 min read Original article ↗

I don't live in Denmark. I don't speak Danish. I have no particular connection to Denmark. Moreover, I have never been to Denmark. And yet, according to my computer, I'm Danish. Why? Because I want my calendar to start on Monday.

Locales suck. I can't be the only English speaker who doesn't live in the US or the UK. I want my interfaces in English, I want my weekdays in English, I want my months in English, but I don't want miles, I don't want Fahrenheit, and I most certainly don't want my calendar starting on Sunday. What do I do?

Surprisingly, it's an actual problem. But software is better now. You can choose your locale independently from your language. You can do so in GNOME, you can do so in Windows and I would be really surprised if you couldn't do that in macOS or KDE. If I recall correctly, it wasn't always the case.

And the solution is to pick a country whose conventions don't differ too much from what I am used to. Which happens to be Denmark. Obviously, I can't have everything I want. I'm more accustomed to Russian-style 20.10.2026 date format, but Denmark's ISO format, which is 2026-10-20, works for me. But why does it have to be like that? Why do I have to pretend that I'm from a country I have no connection to? Aside from that, some programs might assume that I want content in Danish. Hasn't happened to me so far, but it wouldn't be too weird if it did.

Why Denmark specifically?

GNOME lists 12 English locale options. Here they are with my reasoning:

  • Canada. Uses US Letter and AM/PM.
  • Denmark. This is what I picked.
  • Hong Kong. Uses AM/PM.
  • India. AM/PM and weird number formatting starting from lakhs.
  • Ireland. Actually a great option, although slashes in dates confuse me.
  • Israel. Weeks start on Sundays and workweek runs Sunday through Thursday.
  • New Zealand. Slashes in dates.
  • Nigeria. Slashes in dates.
  • Philippines. AM/PM, US Letter.
  • South Africa. Slashes in dates, week starts on Sunday.
  • United Kingdom. Half metric, half imperial, slashes in dates.
  • United States. Everything that can be wrong is wrong.

The real solution

A good solution would be to use a locale that is as international as it could possibly be. Which already exists! And it is called "English (World)" and uses code en_001. But I don't see that option in GNOME regional settings. "English (International)" is not among offered options either. Moreover, if I recall correctly, some platforms that do offer this option, still default to American units. Which completely defeats the point. Another problem is that en_001 can and will break locale parsers. Moreover, en_001 is supported by Unicode CLDR, but not even glibc ships it as a standard locale. And even if it did, I don't find it likely that lots of software would support it. Unrelated fun fact: CLDR, for some reason, prefers 12 hour clock despite trying to steer away from American conventions.

Okay. Let's create a new locale and let's name it en_ISO. Amazing, right? English text, international units without attachment to any particular country. But it will break parsers. We could settle for en_SI instead. SI as in International System of Units. But SI is Slovenia's country code. And we can't really just pick whatever two-letter combination to assign it as a locale code. There's only 676 possible combinations and 249 are officially assigned to countries and territories. Should a new country gain its independence, it might not get the two-letter code you'd expect from its name. For example, the country code of Caribbean Netherlands is BQ. How does it make sense? No clue. The actual ISO entry for the region is "Bonaire, Sint Eustatius and Saba". Ok, I can see where the B is coming from, but what about Q? There are so many such examples. Bosnia and Herzegovina uses BA, because BH is reserved by Bahrain. And Bahrain uses BH, because BA is reserved by Bosnia. Try to guess what's the country code of Åland Islands.

The workaround

What do you do if your desktop environment doesn't support separate entries for language and locale? Or if you don't use a desktop environment at all? You use localectl. What I do is:

sudo localectl set-locale \
  LANG=en_US.UTF-8 \
  LC_TIME=en_DK.UTF-8 \
  LC_MEASUREMENT=en_DK.UTF-8 \
  LC_MONETARY=kk_KZ.UTF-8 \
  LC_PAPER=en_DK.UTF-8

These are the only parameters I care about, but there's much more. You can set currency formats, address and phone number formats, paper formats and many others. Linux allows different aspects of your locale to be configured independently. LANG provides the default, while individual LC_* variables override specific categories. LC_ALL overrides all of them. Look at all these options:

FieldDescription
LC_TIMEDates, time, weekday/month names, week conventions
LC_NUMERICDecimal and thousands separators
LC_MONETARYCurrency symbol and monetary formatting
LC_MEASUREMENTMetric vs US customary preferences
LC_PAPERDefault paper dimensions
LC_MESSAGESTranslated program messages
LC_COLLATEAlphabetical sorting and collation
LC_CTYPECharacter classification and encoding behavior
LC_NAMEPersonal-name formatting and titles
LC_ADDRESSPostal-address formats
LC_TELEPHONETelephone-number conventions
LC_IDENTIFICATIONLocale metadata

Also, this changes the system-wide locale defaults. Your desktop environment may override them, so check the effective locale settings using locale.

What I wish happened

Dunno, to be honest. We could introduce a new locale, but it will take a while before it gets adopted and it will simply break old software. We could fix and adapt software for en_001 and actually standardize it, but I don't see that happening either. For now, we, the people who want international language and international standards and units, will have to pretend we are from somewhere else.

P.S.

Huh. According to glibc sources, I wasn't the first one to come up with adopting Denmark as my region. Check out line 112 on this page.