Blog Home RSS Kelvin Jackson

Localize Programming Languages!

2020-09-07

In this day and age, there's no reason why programming languages shouldn't all be localized. I refer, if it is unclear, to the localization of the programming language's keywords and other core elements, not to the localization of software written in that language (although that is also important and should be facilitated). For too long, the vast majority of programming languages — and all programming languages that are regularly used to build commercial software — have been based solely on English, creating yet another barrier for people other than native English speakers who want to master programming.

Remember that localizing a few keywords is really easy! It takes about half an hour for a fluent speaker of the target language who is familiar with programming concepts. For languages whose vocabulary for describing programming concepts isn't nearly as well developed yet, significantly more effort will be required — but that's because you'll be developing entirely new terms, rather than just translating. And trust me, it will be worth it. Localizing the language's entire standard library and user messages will of course require many orders of magnitude more time, but it isn't conceptually harder than localizing any other software project.

There are a number of promising projects out there trying to create localized programming languages, including Citrine, which is a Smalltalk-like programming language that can be written in any natural language that it's been localized for. I haven't used it, but it sounds promising, although the Smalltalk-style message passing may be unintuitive for many modern programmers. Wikipedia also has a list of non-English-based programming languages, which covers a surprising variety of languages and would be worth a look.

Finally, I personally spent a Saturday morning writing a very crude interpeter for a toy localizable language, usable in both English and Finnish, which is intended to show that additional locales add very little effort to the already significant task of implementing a programming language in the first place. You can find a page detailing the toy language here. Note that I wrote this before googling around and finding the programming languages that I mentioned earlier in this post; if I had heard of Citrine before doing so I probably wouldn't have felt the need to create an example of my own.

At the end of the day, we all need to bear in mind that the dominance of English is largely the result of political and cultural forces that have nothing to do with the language's suitability to the tasks it is now used for. English is no better or worse a choice for a natural language to base a programming language on, and it's about time we took that into account in the development of new ones.