Localized programming language Citrine

Citrine-lang is a localized programming language, allowing you to write apps and games in your native language.







Download Citrine Join on Patreon

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 This guide is suitable for both beginners and advanced. Learn programming in a playful way with Citrine!

 

Manual | API

FAQ | Source code

 

How to help translating

Is your native language not yet supported? Or do you see some errors in the translations? Feel free to help us! If you translate the two header files in the tarball below, I will release a new version of Citrine in your language. Download the Citrine translation C-header files.

header files

There is a separate translation form available for the Media Plugin: Translation Kit Media Plugin or on github.

STEP 2: Open the translation files with a plain text editor, replace the English words between the double quotes with your translation.

editor

Notes:

- 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
- 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

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.

STEP 3: Send the new file to:

gabordemooij at gaborsoftware dot nl.

In your e-mail, please state the name of the language or dialect.

DONE!

Keep an eye on this website as a new Citrine version supporting your language will appear soon!

Progress

  • 0% = No translation yet
  • 25% = Planned
  • 50% = Machine Translation
  • 75% = Verified
  • 100% = Verified and Media plugin
Dutch (Gabor de Mooij)

English (Bernadette Peeters)

German (Gabor de Mooij)

French (Mario Périard)

Spanish (Jose Alejandro Usero)

Russian (Roman Litwinow)

Indonesian (Muhammad Alvaro Syawal Siregar)

Hindi (Aavesh Jilani)

Marathi (Aavesh Jilani)

Brazillian Portugese (John Calistro)

Czech ("Tirifto")

Romanian ("Georgel Preput")

Lithuanian (Lina Dapkute)

Uzbek (Tulenov Temur)

Norwegian (Charles Taylor)

Urdu (Various language consultants)

Albanian (Various language consultants)

Yakut (Contact with translator)

Polish (Jan Wicijowski)

African

Amharic

Arabic

Azerbaijani

Belarusian

Bulgarian

Bengali

Bosnian

Catalan, Valencian

Cebuano

Corsican

Welsh

Danish

Greek

Estonian

Basque

Persian

Finnish

Frisian

Irish

Scottish, Gaelic

Galician

Gujarati

Hausa

Hawaiian

Hebrew

Hmong

Croatian

Haitian

Hungarian

Armenian

Igbo

Icelandic

Italian

Japanese

Javanese

Georgian

Kazakh

Khmer

Kannada

Korean

Kurdish

Kyrgyz

Latin

Luxembourgish

Lao

Latvian

Malagasy

Maori

Macedonian

Malayalam

Mongolian

Moldavian

Malay

Maltese

Burmese

Nepali

Chewa

Oriya

Punjabi

Papiamento

Pashto

Portuguese

Kinyarwanda

Sinhalese

Slovak

Slovene

Samoan

Shona

Somali

Serbian

Sotho

Sundanese

Swedish

Swahili

Tamil

Telugu

Tajik

Thai

Turkmen

Tagalog

Turkish

Tatar

Uyghur

Ukrainian

Vietnamese

Xhosa

Yiddish

Yoruba

Traditional Chinese

Simplified Chinese

Zulu



If you see any errors related to the language names and countries please contact me. Citrine has very few grammar rules and can be very flexible to suit the needs of your native language. However if the base is not flexible enough for your language. Feel free to fork the Citrine project if you need language specific lexer logic (I will link to your project).