Table of Contents
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 make sure that your files have a Unix EOL (line-ending) style. Thank you!
Translatable X2Go components
| COMPONENT | da | de | es | et | fi | fr | nb_no | nl | ru | sv | tr | zh_tw |
| x2goclient | x | x | incomplete | incomplete | x | very incomplete | x | incomplete | incomplete | x | x | outdated |
| pinentry-x2go | x | x | x | - | x | - | - | x | - | - | x | - |
| pyhoca-gui | x | x | x | - | x | - | incomplete | x | incomplete | x | x | - |
| x2godesktopsharing | x | x | x | - | x | x | x | x | x | x | x | - |
| x2gognomebindings | x | x | x | - | x | - | - | x | - | - | x | - |
| x2gomatebindings | x | x | x | - | x | - | - | x | - | - | x | - |
| x2goplasmabindings | x | x | x | - | x | x | x | x | x | x | x | - |
| x2goadmincenter | x | x | x | - | x | - | - | x | - | - | x | - |
| x2goserver | x | x | - | - | - | - | - | - | - | - | x | - |
| x2gothinclient | x | x | - | - | - | - | - | - | - | - | x | - |
Overview of the process
- Install needed software
- Clone a copy of the X2Go component you want to translate/update from X2Go Git
- (if needed) Add your language and create the initial language file
- Translate the language file
- Prepare the patch and send it to the x2go-i18n mailing list
<note tip>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</note>
<note tip>Microsoft has an online terminology search at https://www.microsoft.com/Language/en-US/Default.aspx. Very useful if you want to find commonly used translations.</note>
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.
- 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.
- 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.
- Follow the instructions on cloning a git repository from here: wiki:development:git
- Also remember to follow the instructions there on how to set your name and email in Git
- When you got your Git working copy of X2Go Client cloned locally, changedir into the cloned directory
- Edit the .pro file, e.g. 'x2goclient.pro' 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.
- 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 x2goclient.pro)
- 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.
- 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:
- Install build dependencies (specific for X2Go Client)
sudo apt-get install libldap2-dev libssh-dev libcups2-dev libgd2-xpm-dev
- Open resources.rcc in a text editor and add a line for the new qm file, example:
<file>x2goclient_sv.qm</file>
- Build qm files from all ts files:
lrelease *.ts - Configure the build:
./config_linux.sh - Build x2goclient:
make clean; make
- If everything works out you have a new binary to test:
./x2goclient - If you find anything that needs correcting, update the ts and qm files and rebuild the binary (make clean; make).
- When you have verified that the language file is correct, move on to adding it to git (below).
- 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>
- 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>
- The last part is to create the actual patch, example patch with the last commit included:
git format-patch -1
- You should then have a newly created patch-file in your current directory which you now should attach to a mail you send to x2go-i18n@lists.x2go.org.
For more information related to Git, look here: https://git-scm.com/
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.
<note>Package-maintainers-only: to update the translation template, run
python setup.py build_i18n
and to merge the updated template file into the source translation files, use
python setup.py build_i18n -m
</note>
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.
Additionally, the GNOMEv2 / MATE Bindings package ships a desktop file that needs to be translated:
[Desktop Entry] Name=Suspend X2Go session Name[de]=X2Go Sitzung unterbrechen ... Name[<your_lang>]=<your_translation> ... Icon=exit Exec=x2gosuspend-session-mate Terminal=false Type=Application Categories=GTK;Network OnlyShowIn=MATE;
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.
Important: X2Go Admin Center has several .ts files to tackle (e.g. the Dutch translator has to work on all these four files):
x2goadmincenter/x2goadmincenter_nl.ts x2goadmincenter/modules/x2gogroupadmingui/x2gogroupadmingui_nl.ts x2goadmincenter/modules/x2gouseradmingui/x2gouseradmingui_nl.ts x2goadmincenter/modules/x2gosessionadmingui/x2gosessionadmingui_nl.ts
Note: X2Go Admin Center is still under development and not at all finished.
Translating X2Go Server
For X2Go Server 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 X2Go Server's source tree.
Translating X2Go Thin Client
For X2Go Thin Client 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 X2Go Thin Client's source tree.