On Xfce’s translation status in early 2018

  • February 15, 2018
  • Vinzenz Vietzke

As you might know I’m quite active translating Xfce to German. Furthermore I’m stepped up to take care for Xfce’s translations in general a while ago. Today I had a deeper look at the statistics of our Transifex dashboard and wanted to share the current state with you. This is both to appreciate the work done but so many volunteers but also to motivate you for helping out a bit.


In the end of 2017 we restructured the whole i18n process a bit, got rid of unused infrastructure and tried to lower the barrier for new translators to get into it. You can have a look at the corresponding wiki page if you’re interested.

As the whole translation work is pointed towards the ongoing development I will only cover the master branch. Parts of 4.12 and 4.10 are still available in Transifex but don’t get updated as they are already officially released.

NameNumbers dropping

Xfce’s translation team offers and takes care for 106 languages and variants all in all. There are 17 languages which are nearly fully translated, only missing 50 strings or (way) less. Five languages are at 100% at the time of writing: French, German, Malay, Polish and Russian. Looking at how active development is (yes, really!) and how much translatable strings the overall Xfce project has this is really impressive! People are doing an awesome job there and really deserve some praising words. Thank you!

Helping hands needed

Quite a handful of languages are on their best way towards offering full localization. At the time of writing they have a few hundred strings yet to do, so if you’re a native speaker or confidently speaking one these

Italian (it) 152 strings to translate
Danish (da) 273 strings to translate
Dutch (nl) 319 strings to translate
English (Australia) (en_AU) 373 strings to translate
Norwegian Bokmål (nb) 352 strings to translate
Serbian (sr) 387 strings to translate
Slovak (sk) 384 strings to translate
Bulgarian (bg) 460 strings to translate
Catalan (ca) 405 strings to translate
Croatian (hr) 523 strings to translate
Indonesian (id) 607 strings to translate
Japanese (ja) 605 strings to translate
Thai (th) 596 strings to translate

Furthermore there are languages a bit desperately missing help. Many of them are local variants which is why the translator teams are smaller. Nevertheless, they’re as important as any other language. Getting Free Software in general and Xfce in particular to less-spoken languages is one of it’s many strengths!

But how to get started?

The good thing with translation work is that it doesn’t need much time per default. Of course you can extend your efforts to many hours per day. But donating just half an hour every week helps a lot! Just imagine how many strings consisting of 2-3 words you could get done in that time.
Furthermore as mentioned earlier, translating has no technical entry barrier. When I started using Linux soon I wanted to contribute something. But being no developer I had to take a look around where to help. Doing translations was my first stop solution as it’s totally easy and intuitive. Now, nearly 15 years later, I’m still here and love doing this work.

To get into the language business is easy as one-two-three: make yourself familiar with the i18n docs, sign up at Transifex, request to join the Xfce team – done! It helps if you sign up at our mailing list and introduce yourself briefly, but it’s not necessary.

If you have questions feel free to ask on the mailing list or dive into IRC (#xfce-dev, Freenode). If you prefer you can also email or xmpp me directly, I’ll do my best to help you out.


Translating Xfce

  • March 27, 2009
  • Jérôme Guelfucci

Having Xfce translated into as many languages as possible and maintaining translations of high quality is essential. People will not use a desktop environment that they do not understand! The Xfce i18n Project is in charge of this task and always needs new contributors. You do not need any particular skill, except understanding English, writing your own language correctly and motivation.

Let's see how you can contribute to this project.

First step: contact any existing translators for your language

Reference: the Language Maintainers page on the Xfce i18n Wiki.

Their might already be contributors to the translation of Xfce into your language listed on this page. If this is the case, you should get in touch with them and ask them how you can help. If the page is not up to date, you should warn us or update it yourself.

Let's see how to translate an application or to update a translation now.

Second step: download the translation files

The applications are translated using pot files, with a 'po' extension: those files basically contain each English string and its translation. There is also a template for creating a pot file for a new translation: it is the file which has a 'pot' extension. Every time a developper changes a string in the application, he will update the pot files and the translation will have to be updated accordingly.

Those files are located on the Xfce SVN to ease cooperation and distribution. We will use a script to ease the downloading of those files, this script will also allow you to update your pot files easily. This script requires Subversion to work.

Download the script and move it to a folder where you want to store the pot files. Then run the following command in this directory to make the script executable:

chmod +x xdt-i18n

Then, use this command to get the pot files for the core applications for the first time:

xdt-i18n init xfce/trunk

And for the goodies:

xdt-i18n init goodies/trunk

You should always make sure that you are using the latest pot files when starting to translate a project. This command allows you to update the pot files quickly:

xdt-i18n update

Third step: start translating

The script above downloaded the latest translation files and put them in separate folder. Go to the folder of the application you want to translate or or of the application whose translation you want to improve. The translation files will be available in a po folder. If there is a file for your language, you will be able to start translating directly. If not you will have to create a file for your language by copying the pot file and renaming it to your_locale_identifier.po. To find the locale identifier, you can use this page.

To translate, open the po file using your favorite text editor. You will see a main header composed of likes similar to this:

"Project-Id-Version: Thunar\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2009-01-11 00:20+0100\n"
"PO-Revision-Date: 2009-02-11 13:20+0100\n"
"Last-Translator: Mike Massonnet <mmassonnet@gmail.com>\n"
"Language-Team: French <xfce-i18n@xfce.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"

Update the PO-Revision-Date field with the current date and time and the Last-Translator field with your name and your email so that the next translator can contact you if he has some questions. After that you can start the real translation job.

Every sentence already translated is displayed in the po file as the following one:

msgid "Invalid file name"
msgstr "Nom de fichier non valide"

Untranslated strings are displayed as this one:

msgid "Only local files may be renamed"
msgstr ""

Some strings may also be marked as fuzzy, which means that the original sentence has changed a bit and that the translation is not totally wrong but still needs to be checked and/or fixed. Make sure to remove the '#,fuzzy' after fixing the string.

#, fuzzy
msgid "Screenshot.png"
msgstr " Screenshot"

msgid allows you to identify the original string and msgstr to identify the translated strings. Modifying the msgid strings will have no effect, if you see a typo in one of them, file a bug. To translate a string or update a translation, just modify the text between the "" in the msgstr field.

Some strings may contain slashes or weird characters such as "%s" or "%i". You should always make sure that those characters are also present in the translated string in the same order, or the application will be broken in your language. To check if your translation is valid, the xdt-i18n script offers a check option which will check all po files for your language:

xdt-i18n check your_language_code.po

If it displays any warning, you must fix it before sharing your translation.

You can also use this script to see the stats for a given language, that is to say the number of translated messages, the number of fuzzy and untranslated ones:

xdt-i18n stat your_language_code.po

You can also use Poedit to modify the po files. It updates the po headers automatically, sorts the strings by category (translated, fuzzy and untranslated) and provides a friendly interface.

Fourth step: get your translation in

Once you are done with your translations, go to the root of your xfce/trunk folder or goodies/trunk folder and use the following command to create a patch named my_language.diff containing your translations:

svn diff > my_language.diff

If there is a maintainer for your language, you should send him this file asking him politely to review it and get it in. If not, you should send it to the Xfce i18n mailing list where someone will review it and get it in.

Fourth step: this tutorial sucks and you need more information

The Xfce i18n Wiki contains a lot of information but some of it may be outdated. If you have any questions, please ask them on the Xfce i18n mailing list.

I hope that I was clear enough and that we will be flooded with new or improved translations! We need you!