Calamares is a Linux installer – a distro-, desktop- and toolkit- independent installer that is used by (at least) a few dozen different Linux distributions to get the software from the ISO image (or USB stick, or whatever) onto your computer. It’s modular and configurable so that each distro can make it their own with a minimum of fuss. Calamares is translated into 71 languages, of which 58 are usable for the installation.

Calamares runs on “short-cycles”, which means there’s a release every two or three weeks with new features and new translations and whatnot. What actually gets onto ISO images is up to the distro’s: some produce weekly snapshots (like KDE neon and ArcoLinux) and some take a bit more time. A positive spin on this is that there’s always something fresh for rolling ISO’s to try out (and I really do appreciate the testing done by people from Manjaro and KaOS), a negative spin is that there’s always new bugs.

So today I want to highlight some work on translations, which nonetheless offer ample opportunities for new bugs and for more work to be done. Win-win! As always, Calamares welcomes pull requests and feaure requests via the Calamares GitHub page.

Note that Calamares uses bits and pieces of the KDE technology stack, including Qt and some KDE Frameworks, but it can at best be described as “KDE-adjacent” – it is not a KDE project.

Timezone Translations

The world is divided up into a gaggle of timezones (a gaggle is apparently 425). There are only a little over two-dozen offsets (e.g. UTC-12 to UTC+14 and some half- and quarter-hour zones), but hundreds of names depending on the daylight-savings rules in effect. For instance, Europe/Amsterdam and Europe/Berlin are practically the same zone except for historical data. I’ve written about the vagaries of zones before.

The names of the zones are fixed (-ish), based on the names that were in use when the tables were first assembled. This has a few consequences:

  • (Character set) The name may not match the language in use. For instance, Europe/Moscow is a fine name for a timezone (UTC+3 right now), but not if the system is set to Russian language. The zone is, after all, named after the city, and the name of the city in Russian is Москва, not Moscow.
  • (Renaming) The name may not represent a current name. For instance, Europe/Kiev is the name of the zone in the zones table, even when the city is now called Kyiv in English (Київ in Ukranian and Киев in Russian).
  • (Local variation) The Dutch just can’t leave well enough alone, and have to stick their nasty orthography with floating js and throat-gargling sounds all over the place, so we have Parijs and Berlijn.
Timezone Translations
Timezone Translations

Calamares supports translating the names of timezones. Here in Tajik, all of the names of zones and places are displayed in a way that is readable for the user. Some names are basically transliterated, like Аккра for the capital city of Ghana, others use specific Tajik names.

The translation workflow is a bit uncomfortable because I didn’t want to throw the zones database into Calamares’s normal translation scheme: that would burden everyone with 425 names to translate, and in many languages there is nothing to do. Even with other character sets, it might make sense to write New York rather than نيو يورك so there’s a separate file to be downloaded and translated manually. But for languages that want complete coverage, the possibility is there.

Keyboard Translation

Similar to the list of languages and timezones, the installer offers a list of keyboards. These come from X11. There is a list of supported keyboard models in base.lst. That comes from “long ago” when there were more specialized keyboard models than there are now (e.g. the number of Sun Type 5 USB keyboards is tragically small, for those that want to press Stop-A conveniently).

However, among the generic PC keyboards (86 keys for narrow “tenkeyless”, or 104 or 105 keys for regular ones) there are still keyboard layouts: so that you can write the language of your choice even if the keycaps don’t match. Beside a layout (which generally corresponds to a language, but there are also national keyboards countries with multiple official languages) there can also be variants.

Calamares supports translating the names of keyboard models, layouts and variants. Here is another example with Tajik keyboard names (Victor Ibragimov, the Tajik translator, has been very active!).

Keyboard Translations
Keyboard Translations

This makes it easier for single-language or single-alphabet users to make sense of the configuration of the system: pick Tajik language (or Vietnamese, or Dutch ..) and the keyboard layout adjusts to the language and the names are readable.

Keyboard Switching

There’s a downside to picking a local keymap: a Linux system does not necessarily support UTF-8 input all over the place. In particular, POSIX tools often want a US-ASCII login name, and TPM / EFI / LUKS / GRUB passwords might need to be entered before a proper localized keyboard layout is loaded. So a user who picks a Russian keyboard layout may need to switch back to a US-ASCII-capable layout in order to enter login names and passwords.

Artem Grinev – who uses a Russian keyboard layout – thought about this problem and has added code to Calamares that adds a second, US-ASCII-capable layout and suitable switching code: so now picking some non-latin keyboard layouts will still leave you the possibility to easily type US-ASCII into the installer.

I say some, because there’s a table of “this layout needs that extra” in Calamares: if we can come up with a more general approach, that’d be great, or we need to expand the table.

You can contribute by adding layouts to the table: right now it lists only the layouts that I am likely to encounter.

Login Transliteration

I mentioned Artem and Victor previously: of course, that’s just a romanized (US-ASCII) representation of their names. Артем and Виктор would be more accurate (I hope!), so when they go to configure their PC while installing Linux, it is natural to fill in a Full Name in Russian (or Tajik).

Calamares has long had an automatic login name feature: fill in a name and it generates something plausible as a login name. For me, Adriaan de Groot, it generates adriaandg which is totally wrong – I’ve been adridg since the VAX systems at the university of Calgary were still in use. But at least the login name is US-ASCII. The auto-fill mechanism would propose unusable login names for Russian and Tajik (and many other) users.

Victor has added a new feature to transliterate the login name for the auto-fill feature. That means that when entering a Russian full name, something else appears in the login field.

Login name Transliteration
Login name Transliteration

There is still plenty to tweak here, as well: the transliteration applies to Cyrillic and Greek, but our Marathi-writing users are still out of luck. However, as a start to the conversation about transliteration, it’s a really useful code addition to Calamares.

Takeaway

  • There’s lots of places where translation and localization can be improved
  • Timezones and keyboards are pretty well covered now
  • Login names have some technology in place, but are far from complete
  • I need help and input from people who use writing systems that I do not know