User Tools

Site Tools


This is an old revision of the document!

Internationalization (i18n of X2Go)

Some of the X2Go components can be internationalized/localized (translated into many of the globe's languages as possible). Here is a short howto that explains what you need to do, to contribute your language to X2Go.

TL;DR; All translators please send their translation efforts (.po files, .ts files or git formatted patches) to the X2Go i18n mailing list. Please prepare files that have a Unix EOL (line-ending) style. Thank you!

Translatable X2Go components

COMPONENT da de es et fi fr nb_no nl ru sv zh_tw
x2goclient x x x x x incomplete x x x x outdated
pinentry-x2go - x x - - - - - - - -
pyhoca-gui x x x - - - x x x x -
x2godesktopsharing x x x - - x x x x x -
x2gognomebindings - x x - - - - - - - -
x2gomatebindings - x x - - - - - - - -
x2goplasmabindings x x x - - x x - x x -
x2goadmincenter - x - - x - - - - - -

Overview of the process

  1. Install needed software
  2. Clone a copy of the X2Go component you want to translate/update from X2Go Git
  3. (if needed) Add your language and create the initial language file
  4. Translate the language file
  5. Prepare the patch and send it to the x2go-i18n mailing list
We try keep a list with words and phrases that are not to be translated, i.e. productnames and such, here: wiki:development:i18n:nontranslateable
Microsoft has an online terminology search at Very useful if you want to find commonly used translations.

The process in detail

Translating x2goclient

X2Go Client uses Qt4 which has a great tool to help you translate X2Go Client into your language - Qt Linguist.

  1. To be able to translate you need to install Qt Linguist (version 4.x) - for Debian and Ubuntu you can install qt4-dev-tools, which also will install qt4-linguist-tools that also is needed. The preferred way of sending in translations is as git-patches, so we need git which in Debian and Ubuntu is accomplished by installing the package git.
  2. We need a directory to keep the cloned copies of the git repository, I prefer to have mine in ~/git/ , but you can choose what suits you best.
    1. Follow the instructions on cloning a git repository from here:
    2. Also remember to follow the instructions there on how to set your name and email in Git
    3. When you got your Git working copy of X2Go Client cloned locally, changedir into the cloned directory
  3. Edit the .pro file, e.g. '' for the x2goclient repository and add your language file there (if it doesn't exist). For the Swedish language I added this line:
    TRANSLATIONS += x2goclient_sv.ts

    :!: Some locales have both language and territory specified, e.g. the file for the Bokmal languague in Norway is named x2goclient_nb_no.ts.

  4. After adding the intended language we need to get the actual language file created. Run this in the same directory:
    lupdate <filename>.pro

    (e.g. lupdate

  5. Start Qt Linguist (linguist-qt4) and open your translation file. Remember to go to Edit → Translation File Settings and set the correct target language. When you are done translating, save the file.
  6. If you want to verify your translation, you have to build the software with the new/updated language file, here's a brief instruction on how to build x2goclient on Debian:
    1. Install build dependencies (specific for X2Go Client)
      sudo apt-get install libldap2-dev libssh-dev libcups2-dev libgd2-xpm-dev
    2. Open resources.rcc in a text editor and add a line for the new qm file, example:
    3. Build qm files from all ts files:
      lrelease *.ts
    4. Configure the build:
    5. Build x2goclient:
      make clean; make
    6. If everything works out you have a new binary to test:
    7. If you find anything that needs correcting, update the ts and qm files and rebuild the binary (make clean; make).
    8. When you have verified that the language file is correct, move on to adding it to git (below).
  7. Back in the terminal again we need to tell git about the new file we added (your language file, technically it was created with the lupdate process):
    git add <your-new-and/or-changed-files.ts>
  8. Then we need to commit our changes to our local clone of the git repository:
    git commit -m "change comment (in english)" <filename, e g x2goclient_sv.ts>
  9. The last part is to create the actual patch, example patch with the last commit included:
    git format-patch -1
  10. You should then have a newly created patch-file in your current directory which you now should attach to a mail you send to

For more information related to Git, look here:

Translating pinentry-x2go

X2Go's pinentry tool uses the same translation mechanism as X2Go Client (Qt4, Qt-Linguist, .ts files). Thus, see above. The .ts files are in the subfolder pinentry-x2go/ of the project's source tree.

Translating PyHoca-GUI

For PyHoca-GUI as a translater you have to use a gettext compatible (.po/.mo files) editor like 'poedit'. The translation process is described in the README.i18n file within PyHoca-GUI's source tree.

Please also note that there is an NSIS installer (for the win32 version of PyHoca-GUI), that also has a few translatable strings. Check the nsis_include/ subfolder in the PyHoca-GUI source tree.

Translating X2Go Desktop Sharing

The X2Go Desktop Sharing applet uses the same translation mechanism as X2Go Client (Qt4, Qt-Linguist, .ts files). Thus, see above.

Translating X2Go GNOMEv2 / MATE Bindings

For translating the similar projects x2gognomebindings (GNOMEv2 only) and x2gomatebindings you need a gettext based editor like poedit. The .po files are in the po/ subfolder in the source tree.

Translating X2Go Plasma/KDE4 Bindings

The plasma-widget-x2go plasmoid uses the same translation mechanism as X2Go Client (Qt4, Qt-Linguist, .ts files). Thus, see above.

Translating X2Go Admin Center

The X2Go Admin Center application uses the same translation mechanism as x2goclient (Qt4, Qt-Linguist, .ts files). Thus, see above.

Note: X2Go Admin Center is still under development and not at all finished.

wiki/development/i18n.1393509669.txt.gz · Last modified: 2014/02/27 14:01 by sunweaver