This isn’t really a technical post, but some may be curious about why I chose Klingon for my example about making a custom culture/locale and Microsoft LDML. I hope that other people will make their own custom cultures/locales for their own languages/countries.
FWIW: I don’t go around work wearing a Klingon mask and I don’t even speak Klingon, however I do have a little bit of a reputation around here as a Trekkie.
I picked Klingon mostly to show that a custom culture/locale can be any culture that someone wants, or, preferably, needs. Were I to pick an actual “real” language or culture, I might inadvertently offend someone due to my data choices. The culture name of a locale could imply a political connotation I am unaware of, I could mangle someone’s language, and I could choose bad or even offensive preferences. The locales that we ship in Windows (and the .Net Framework) have a lot of people work very hard to make sure that we get the “right” data for those locales. Even then we occasionally make mistakes, or cultural preferences shift or some political something happens and we have to make a change. (See Culture data shouldn’t be considered stable.) I’d rather not get in the middle of all that for a simple example.
Klingon has a few other advantages and disadvantages as a culture. One advantage is that its a multiple script language, using both Latin transliterated from pIqaD and pIqaD itself. A disadvantage is that since pIqaD isn’t in Unicode its not easy for everyone to use so I limited myself to the Latin subset. Another disadvantage is that Latin is pretty common so the example doesn’t show aspects that a wider range of characters may. Latin does however allow most people to see the example without worrying about fonts or web browsers mangling stuff or whatever.
Another disadvantage is that lots of these words & concepts needed for a Klingon culture don’t seem to exist in the language (at least not in the web sites I found), or in the Klingon Dictionary, so I had to make them up, which leads me to how I actually chose the data in the culture.
Since I live in the US I chose the name Klingon (United States). Fortunately there’s an ISO name tlh (from tlhIngan Hol), so I can use tlh-US instead of an x- or made-up name. The English strings are somewhat easy, and since its a US locale, I picked normal US formatting information. The Klingon words were the hard part.
I chose to use the Gregorian calendar so that I could actually use the locale, however Gregorian isn’t one of those words I could find on the web, so it ended up being a generic “terran calendar”. I chose to add “tera'” to the date/time formats, assuming that Klingons don’t typically use a terran calendar.
For some of the words (Klingon), there’s a well known translation that I could find on the web (tlhIngan Hol). For most of the interesting ones that a locale needs I couldn’t find a translation. My first attempt was “day 1”, “day two”, etc., but that seemed pretty boring.
Ironically I decided that if a Klingon were to attempt to use the Gregorian calendar to speak with someone they’d probably use a transliterated version. So I took out my copy of “The Klingon Dictionary” (by Marc Okrand) and tried to understand the linguistic rules enough to transliterate English sounds to Klingon. Not surprisingly some English sounds don’t seem to exist in Klingon. This pocess resulted in stuff like “DeSember” for December and “tuSjaj” for Tuesday (I translated day and transliterated Tues). The end result is pleasingly Klingon (to me) and its kind of nifty that I can actually use it for day-to-day use if I want. The ironic part is that I’ve effectively transliterated English to Klingon, using the transliterated script, coming round trip to a place somewhere different from where I started.
Have fun creating custom locales, I hope this example helps. Eventually I’ll post a version using the pIqaD script, since that would presumably be more correct for Klingon 🙂