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:
3. Messages
You create a program by sending messages to objects
(numbers, texts, booleans, sequences, etc.). The general notation is:
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.
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.
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:
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


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?