Localized programming language Citrine

« Er is ook een Nederlandse pagina!

Citrine-lang is an open source research project focusing on localized programming for schools. The main focus is on Dutch because that is my native language, but the programming language can be customized to work with any native human language.







Download Source

How does it work?

HINT: New to programming in general? Check out the Citrine Manual for beginners and experienced programmers.


1. Sentences
Citrine reads programs from top to bottom, from the beginning of a sentence to the end. Each sentence ends with a period.

2. Variables
This is how you declare a variable in Citrine:

>> abc := 123.

3. Messages
You create a program by sending messages to objects (numbers, texts, booleans, sequences, etc.). The general notation is:

<object> <message>.

If the message has arguments, you mix them with the message as follows:

<object> <a>: <argument 1> <b>: <argument 2>

Here, a and b are both part of the same message. If a message consists of just a single character and there is also just one single argument (like with '+ 3') you may omit the colon.

4. Commas
You can chain multiple messages together. If a message has arguments, you must add a comma (,) if you want to send a follow-up message.

5. Tasks
You can group instructions by surrounding them with { and }. This creates a task. You can also send messages to tasks. For example you can send the message '* 3' to repeat a task 3 times.

{ :i ... } * 3.

At the beginning of the task you can add parameters (:i). With <- you return a response from a task. You can extend any object with new tasks by connecting them to a spefic message.


Cover of manual Free user manual
English only
Edition 2025
PDF format

 

Manual

Source code

 

Create your localized programming language

Getting started
The user manual listed above explains how Citrine/EN work. This is the English edition of Citrine. The other language editions work the same but with different keywords of course. There are already 110 examples for localized editions to get you started. You can find them on github. If you wish to make changes to one of the language files you can freely do so and fork or send a PR. If your native language is not supported yet, just use one of the language files as a template to get started. There are also some annotated example dictionary files available:

- annotated core dict
- annotated media dict

About me
My name is Gabor de Mooij and I have worked in the tech industry for about 30 years. I have worked on Citrine-lang since its inception in 1993. The first edition of Citrine-lang was created for the commodore 64 home computer. Due to floppy degradation this early version has been lost. In 2009 the project got rebooted into its current form.

How to Build
To build a specific language edition, look up the ISO language code for your native language, for instance HI (hindi). Also look up the ID of your operating system, for instance Linux, Win64 or Darwin and start the build script as follows:

ISO='hi' OS='Haiku' make -f makefile all

This example will create a HaikOS binary of Citrine/HI, the Citrine edition in the Hindi language. If you need any help, feel free to contact me.

Notes for translators
Every translation must be unique, please do not use the same translation twice. If a word consists of just one character, the transation should also consist of just one character (i.e. + - etc...). if a word consists multiple characters, the translation must also consist of multiple characters (of course the number does not have to be the same). Please, do not change any of the following character sequences: %s \n or :. So if the original text does NOT contain a colon, do not add one. If the original text DOES contain a colon, do not remove that one. If you need any help, feel free to contact me.

 

Demo game

Level 1 - De Lente: Schermafbeelding van het computerspel Piccolo (geschreven in Citrine, de Nederlandstalige programmeertaal) Level 2 - De zomer: Schermafbeelding van het computerspel Piccolo (geschreven in Citrine, de Nederlandstalige programmeertaal)

Run! Piccolo, Run! is a demo game written in Citrine/NL, the Dutch version of Citrine-lang to illustrate the possibilities of the Citrine/NL programming language as well as the Dutch version of the Media Plugin (based on libSDL). In this game you play a bellhop who has to deliver suitcases to hotel guests behind matching doors within a time limit. Make sure you don't bump into other hotel personel! The wonderful soundtrack for this game has been produced by Bobby Babalas.

Piccolo Windows 1.1 (.exe)
Piccolo Linux 1.1 (.deb)
Piccolo Android 1.1 (play store)
Piccolo Android 1.1 (.apk)
Piccolo MacOS 1.3b m1+ (.dmg)
Piccolo iPhone/iOS (.ipa)
Piccolo Handleiding (.pdf)

Nostalgia: Are you looking for the classic games that I have written between 1994-2005?