So, you want to help translating the Slint project? Welcome on board!

The stuff to be translated mainly consists in shell scripts, that make up Slint’s installers and administration tools, and of the Slint HandBook in asciidoc format, converted in html for publication.

To provide accurate and well formatted translations, it is preferable that translators:

  • be fluent in English and very fluent in the target language, preferably their native language,

  • understand technical vocabulary associated to installation and administration of a Linux system,

  • be able to read and understand simple shell scripts.

Running Slint, possibly in a virtual machine, while not mandatory helps understanding the context.

Getting started

To know what the Slint project is about, please read first if not yet done in this introduction to Slint at least About Slint and Support and contributions

Translations are managed using the The Crowdin platform. The Slint project has an open policy on Crowding, meaning that anyone can join and start contributing to the translation right away.

Anyone can read the files of the Slint project on Crowdin. Translate needs to be logged in on Crowdin. On the sign up page, you can create an account on the platform; alternatively you can log in directly through an existing account on another platform.

To get acquainted with the Crowdin platform, you can follow the links under "For translators" in their knowledge base, like about the on line editor. Once logged in you are presented the project page with these sections:

Home Activity Discussions Content Resources Members Tasks Reports Integrations Applications Settings

In the Home section clicking on a language link opens the translation page for this language, from where you can select a file to translate. If you to translate into a language not listed in the home page, open a discussion about it in the Discussions page.

It will help, especially the blind translators, to know the keyboard shortcuts. You can review them pressing Ctrl+Shift+/

Before you begin, please read Practical recommendations below.

Communicate with other Slint translators

The Discussions page allows you to open an new topic and answer existing ones. All translators listed in Members are notified, but you can specify the language for a new topic, to draw attention of translators into this language.

Feel free to introduce yourself to your colleagues opening a new topic.

If you want to continue a translation, we suggest that you consult with other translators for the same language. You can find them going to the Activity page, then selecting in the drop down lists "Translation activity" and the target language. To send a message to a translator, go to Members, select this person and click Contact.

Translation scope and content

The sources files are in English:

All files are PO (Portable Objects) files, extracted from shell scripts and converted back and forth using the gettext and po4a software. To know more read Internationalization and localization of shell scripts.

Here is the list of files to translate and their content at time of writing:


Messages from the auto script of the Slint installer, which provides the Auto installation mode.


This files gathers the messages from all shell scripts in the installer but auto, rc.S* and setup.


This file gathers messages from the scripts included in the pkgtools package.


Messages from the init script rc.S in the installer.


Messages from the setup script of the installer, used in the Manual installation mode.


This files gather messages from various shell scripts written for and used in Slint.


This POT file allows to translate the Slint HandBook. It is built from the source file in Ascidoc format with po4a-gettextize and the translations in Asciidoc format will generated from the PO file with po4a-translate.

Practical recommendations

Carefully check machine translations

Several files, like the HandBook, are partially pre-translated through machine translation, using the Crowdin Translate translation engine: the translated messages come from existing translations of identical or very similar messages found in other files hosted in the platform and gathered in a so-called Translation Memory. This save time for translators, however there are important caveats.

The Crowdin engine provide machine translation for following languages: Chinese simplified, Dutch, French, German, Greek, Italian, Japanese, Portuguese, Portuguese (Brazil), Russian, Spanish, Swedish, Turkish, Ukrainian.

  • When working on a machine translated file, the translator acts as a proofreader and as such should review every translated string.

  • Pay special attention to commands: if options or arguments of a command have been translated, this command will most often fail when executed. If you find a machine translated command, please replace the translation by the source in English if necessary.

  • If a command expect answers like "y", "n", "yes" or "no", these answers should not be translated, else the scripts which expect this answer will fail.

The recommendations about the translation of shell scripts below also apply to commands written in the HandBook.

Translation of shell scripts

  • Don’t feel obliged to translate verbatim. Not only is this rarely the best way to convey the meaning, but in addition this often leads to sentences too long to fit in allowed space. This is especially important if you are translating dialog boxes. In particular, take care not to write too long sentences on one single line if it appears that the text can’t flow on next one.

  • Bear in mind that in VGA mode (used in text installers, in particular), line’s width is limited theoretically to 80 characters, but practically often to 74.

  • Do not add question marks that are not present in the original message.

  • If the message refers to tags (text on the buttons) of dialog boxes, like "OK", "Yes", "NO", "Continue", "Cancel", check how theses tags are translated in your language in dialog’s interface and use the same words.

  • Avoid colloquialisms and technical slang.

  • To "cut" (or end) a line inside a "dialog" box you should type \n: pressing [Enter] will 'not' insert a "new line" character in the text viewed by user.

  • If a word beginning with a dollar sign is included in the original text it should be present in the translation with exactly the same spelling (case matters).

  • The translation text should include a "new line" character (or line feed, represented by "\n") at the beginning or at the end, exactly as the original text does. Conversely, if the original text doesn’t have the character, then the translation shouldn’t have it.

  • A single backslash character "\" is not allowed in the translation.

  • When translating shell commands, preserve English names of paths when needed. But you may and should translate arguments to be replaced by a value like 'packagename'

  • If translating locally a downloaded file:

    • Use a specialized PO editor, 'not' a general text editor. This will not only prevent inadvertently editing 'msgid' strings but also facilitate their work and automatize additional checks, as the presence of a variable in the translation with the same spelling as in the original.

    • Choose a serif fixed width (or "monospaced") font, like Courier. That allow to visually distinguish characters that otherwise would look the same, and check line’s length when that matters.

    • If possible, check the layout of the messages. You could do that looking at the context in the relevant source file. Even better, simply run the translated script. In addition, you will have to comply to gettext’s requirements for it to work:

      To check your translation against gettext’s requirements you could run following command:

        msgfmt -c <name of the PO file>

Didier Spaier