Localized Programming Language

0.9.1 Van Leydenhof

Citrine is the world's first* general purpose, localized programming language, designed to allow every man to write code in his mother tongue. Hopefully, by doing so, Citrine will make coding accessible to a wider audience and improve software quality. * Development started in 2009

Latest News

0.9.1 Van Leydenhof
Citrine 0.8.4
Citrine 0.7.4
Citrine 0.6
Changelog & Roadmap

☞ greeting := ' Hello country! '.

greeting country: 'USA/UK'.

✎ write: greeting.
Hello USA/UK!
☞ groet := 'Hallo land!'.

groet land: 'Nederland'.

✎ schrijf: groet.
Hallo Nederland!
☞ salut := 'Bună țară!'.

salut țară: 'România'.

✎ scrie: salut.
Bună România!
☞ sveikinimas: = 'Sveika šalis!'.

sveikinimo šalis: 'Lietuva'.

✎ atspausdinti: sveikinimas.
Sveika Lietuva!
>_ Download Citrine 0.9.1



Allows everyone to code in their native language. Making code more accessible and expressive.

Pure Objects

True, Smalltalkish, Object Oriented Programming: the way it was meant to be.

Simple Grammar

Very simple, minimalistic grammar. Easy to learn and remember.


Flexible prototypal inheritance, just like JavaScript but without the quirkiness.

Dynamic Scope

Extremely powerful dynamic scoping, just like good old BASIC and some LISPs.


International teams? Automatically Translate code from one language to another.


Languages & Manuals

The community is working to improve language support, but it takes time. Citrine currently supports the following languages:

Is your language not (fully) supported yet? Help us to create a version of Citrine for your language or translate one of the manuals into your language!


The following Citrine versions are currently in progress:

  • Russian (preliminary file received)
  • Turkish (preliminary file received)
  • Urdu (preliminary file received)
  • Albanian (awaiting response)

For a full reference guide in man-format of the complete Citrine Programming Language, please consult the Reference Guide (English only).



Citrine is open source (licensed BSD) and the source code is available for free.


Citrine is being tested continously using Travis/CI, read the latest test reports.

If you don't like to compile the source yourself, I can create a binary for your platform and language of choice for a small fee (Citrine translators get it for free of course).


Do you want development support for Citrine? Do you want to integrate the Citrine Programming Language in your cloud service, online platform or business application?




Why localized programming?

Citrine allows you to write code in your native language. Thus leaving more brain capacity to deal with your actual work. Coding in a localized language has been proved to have a positive impact on learning outcomes1 and quality2. 1. Learning to Code in Localized Programming Languages (MIT) 2. Effects of localization on Exceptions in Java

Why Citrine?

Because of its simple yet flexible grammar, Citrine plays well with any human language. Citrine can also translate code from one human language to another, similar to approaches conducted by Standford University3. 3. Human Languages in Source Code: Auto-Translation for Localized Instruction

What are the other features?

Citrine is a pure object oriented programming language, attempting to follow the Kayan philosophy4. It uses Smalltalkish object messaging. Other features include: classless, prototypal inheritance, dynamic scoping, extremely late binding, fully malleable objects and mark and sweep garbage collection. Citrine does not support comments, forcing authors to write self-documenting code. 4. After the Philosophy of American Computer Scientist Dr. Alan Kay (regarded as inventor of Object Oriented Programming)

Why is this page in English?

As a developer, you have to know some English. Nobody is going to to change that any time soon. Writing complex logic in a foreign language is something different though. Citrine allows you to put your thoughts into the words of the language you know best: your mother tongue. That being said, if you want to translate a manual page, feel free to help!

Why icons in the language?

Abstract, yet frequently used concepts are represented as icons in Citrine. For example, to declare a new variable in a Citrine program you use a pointing finger (☞). The inspiration for this approach comes from Smalltalk-705. Apart from pictograms, Citrine also allows the use of thin space to separate words in object names and message parts to avoid CaMelCase and snake_case. 5. Smalltalk-72 Manual

What are the use cases?

Citrine can be embedded into cloud platforms as a localized scripting tool or localized DSL to replace overly complex GUIs and empower users, while lowering adoption barriers. Citrine can also be used to teach programming in a language agnostic way.

Other question?
Consult the Full FAQ >.


About the author

Gabor de Mooij My name is Gabor de Mooij, I am a cognitive psychologist and software developer living in the Netherlands. Since 2016 I run my own business as a freelance developer specializing in Citrine, Python, C, PHP and JavaScript.
Company website (Dutch).

feel free to contact me anytime: gabordemooij at gaborsoftware dot nl

Special thanks to:
Aavesh Jilani, Twiggler, MadcapJake, DennisCGc, Takano32, LeoTindall, Janus, Shinriyo, Sean Eshbaugh, Georgel Preput, Lina Dapkute & Marianne.