====== 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 [[https://lists.x2go.org/listinfo/x2go-i18n|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** | | [[https://code.x2go.org/gitweb?p=x2goclient.git;a=summary|x2goclient]] | x | x | incomplete | incomplete | x | very incomplete | x | incomplete | incomplete | x | x | outdated | | [[https://code.x2go.org/gitweb?p=pinentry-x2go.git;a=summary|pinentry-x2go]] | x | x | x | - | x | - | - | x | - | - | x | - | | [[https://code.x2go.org/gitweb?p=pyhoca-gui.git;a=summary|pyhoca-gui]] | x | x | x | - | x | - | incomplete | x | incomplete | x | x | - | | [[https://code.x2go.org/gitweb?p=x2godesktopsharing.git;a=summary|x2godesktopsharing]] | x | x | x | - | x | x | x | x | x | x | x | - | | [[https://code.x2go.org/gitweb?p=x2gognomebindings.git;a=summary|x2gognomebindings]] | x | x | x | - | x | - | - | x | - | - | x | - | | [[https://code.x2go.org/gitweb?p=x2gomatebindings.git;a=summary|x2gomatebindings]] | x | x | x | - | x | - | - | x | - | - | x | - | | [[https://code.x2go.org/gitweb?p=x2goplasmabindings.git;a=summary|x2goplasmabindings]] | x | x | x | - | x | x | x | x | x | x | x | - | | [[https://code.x2go.org/gitweb?p=x2goadmincenter.git;a=summary|x2goadmincenter]] | x | x | x | - | x | - | - | x | - | - | x | - | | [[https://code.x2go.org/gitweb?p=x2goserver.git;a=summary|x2goserver]] | x | x | - | - | - | - | - | - | - | - | x | - | | [[https://code.x2go.org/gitweb?p=x2gothinclient.git;a=summary|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 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|wiki:development:i18n:nontranslateable]] 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. ===== 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|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 .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:x2goclient_sv.qm - 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 - Then we need to commit our changes to our local clone of the git repository:git commit -m "change comment (in english)" - 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 ''[[https://code.x2go.org/gitweb?p=pyhoca-gui.git;a=blob;f=README.i18n|README.i18n]]'' file within PyHoca-GUI's source tree. **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 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[]= ... 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 ''[[http://code.x2go.org/gitweb?p=x2goserver.git;a=blob;f=README.i18n|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 ''[[https://code.x2go.org/gitweb?p=x2gothinclient.git;a=blob;f=README.i18n|README.i18n]]'' file within X2Go Thin Client's source tree.