How to create or update a translation of Scribus
Scribus is available in over 50 languages, thanks to the many willing souls out there who have spent the time translating! This is no small task, but at least technically not a very difficult one. This page outlines the requirements and procedures for creating or updating such a translation.
Please note that there are many willing contributors to the Scribus project, and there may already be a translation in progress for the language you wish to help for. Please check the list of languages that are currently supported in Scribus and that already have coordinators. If you want to help translate you can submit a request through the ongoing Scribus Transifex crowdsourcing effort.
There are different methods of translating Scribus:
Method 1: Using Transifex
As stated above Transifex is used to translate software and it is free to use for Open Source projects. Transifex has a very good documentation with screenshots for translators and how to use their web interface aka the web editor. If you're interesting in coordinating a language please learn a little more about how roles work and the docs for collaborators and the reviewing process. If you aren't keen on using their web editor interface you can download the .ts files for offline translating.
Method 2: Translating the TS files directly
- The Scribus source from SVN. Please see the installation section for details on how to checkout SVN if you aren’t up with that yet. Its not too hard so don’t be dismayed. By working with the SVN source, you know you will be working with the latest Scribus source and therefore will get the most up-to-date set of files to translate.
- Lokalize or Qt5 Linguist (do not use anything >Qt5 linguist!). Both of these are available in their respective development packages. The choice of which one to use is more a user preference, the result will be the same. For those who are new to this kind of work, Qt5 Linguist may be the tool of choice, as it offers a very simple, yet efficient user interface. Moreover, it's available for all platforms that are supported by Scribus (Linux/UNIX, Mac OS X, Windows 2000+, OS/4 Warp4 and eComStation).
- You will need to make sure you have the
lupdateprogram installed, which is a part of Qt, or perhaps a part of the Qt development package, depending on your distribution.
Procedure for creating or updating a translation file
- Check out SVN.
- Move into the
- Edit the
Scribus.profile to have the language listed at the bottom that you wish to translate for. For example, TRANSLATIONS += resources/translations/po/scribus.en_GB.ts Of course, replace the
en_GBin this example with the language code you are working with.
- Start your translation program and load the
- Perform the translations.
- Save the
.tsfile and copy it into the source directory that contains the translation files (e.g.
- If you want to test your translation before submitting it to the Scribus developers, delete the file CMakeCache.txt in your build directory (provided you have built Scribus from source before), rerun cmake as you did before, but now add the parameter
-DWANT_GUI_LANG="xx_XX, where xx_XX is the language code for your translation, e.g. en_GB (British English) or pt_BR (Brazilian Portuguese).
- If you only specified your translation as a parameter, this will the only UI language available. If you have built Scribus with more than one language, select your translation in File > Preferences.
Part Two: Translating other parts of Scribus
Unfortunately or fortunately, depending on your point of view, not all parts of the Scribus user interface can be translated via ts files. In two cases you need to edit XML files to translate Scribus, namely for Templates and the Render Frame editor.
To translate Template categories, names and decriptions, you need the file
template.xml from the directory
~/Scribus/resources/templates. Save this file under a name that helps Scribus identify the language you are translating to, e.g.
template.it.xml for Italian.
The content of the XML file is (hopefully) self-explanatory. There is an entry for each template. A complete entry looks like this:
<template category="Newsletters"> <name>TextBased</name> <file>textbased/textbased.sla.gz</file> <tnail>textbased/textbasedtn.png</tnail> <img>textbased/textbased.png</img> <psize>A4</psize> <color>color</color> <descr>A decent newsletter/magazine originaly created for one non-profit organization. Unrealized unfortunately.</descr> <usage>Right click on text replace what's inside with your own. Or whatever you want to... ;)</usage> <scribus_version>1.2RC1cvs</scribus_version> <date>2004-07-10</date> <author>Petr Vaněk</author> <email>firstname.lastname@example.org</email> </template>
Fortunately, you need not (actually must not) translate everything in here. What needs a translation is only the strings that are in red in the example above.
Translating the Render Frame Editor
As described in Working with Render Frames, this kind of frame is freely configurable. Not only can you add configuration files for new programs, but you can also add translations to existing ones. In contrast to Templates, you don’t have to create new XML files for your translations. Instead, you need to edit the existing ones. The configuration files for Render Frames are located in
~Scribus/resources/editorconfig. There is a file for each program, e.g.
100_latex.xml for LaTeX,
300_lilypond.xml for Lilypond etc.
To make life easier for translators, the developer of the Render Frame plugin has placed an indicator for translatable text strings in the files, namely
i18n, which is an acronym for “internationalization”:
<title><i18n> <en>Ranges</en> <cs>Rozsahy</cs> <de>Bereiche</de> <fr>Rangées</fr> <pl>Zakresy</pl> <ru>Диапазоны</ru> <hu>Tartomány</hu> </i18n></title>
If you want to add a, say, Dutch translation, simply add a string like this to the list above:
<nl>Bereik</nl>. Of course you should only submit a translated configuration file that’s complete to the development team!
Translating Qt framework
Scribus is based on the Qt Framework and therefore some basic dialog box receive translations from the Qt directly. Ideally Qt framework would have complete translations on that specific relevant language.
But sometimes if we encounter using Scribus in another language besides english that:
- some basic dialog boxes appear English
- the specific language you are using in Scribus has been translated totally or that you've looked in the .ts file and can't find those non-translated strings
This indicates that the issue is an upstream Qt translation problem. To check this you can check the Qt translation state for your specific language here. The Qt framework is translated code.qt.io/cgit/qt/qttranslations, and this is the official guide for translators.
FYI, for those of you who are wondering why we don't just translate these Qt translated dependant strings directly in Scribus, see jghali's explanation.
Submitting your translation
This depends on which methodology you used to translate!
If you chose Transifex then your language coordinator will review you work. Eventually the Scribus core devs will pull the translation from Transifex in to Scribus.
If you chose to manually edit the .ts files please do the following:
- Once you are happy with the result of your hard work, please open your web browser, head to the Scribus Bugtracker and submit a new bug with the title of your translation update under the “Translation” category.
- Please note that as of Scribus 1.3.9 it is no longer necessary to upload qm files, as these will be generated at build time. Also note that the translation of the Templates and Render Frame files is optional.
- If you want to be credited (and we prefer to give credit where credit is due!), please add your name and your email address to the bug report.
- That’s it! When the next SVN release is made, your new translation will be added by the team. Usually, new translations are being added SVN within one or two days.
Translating the Online Help
Before you start translating the Online Help, you should be aware of the fact that this a huge task, and this doesn’t just refer to the skills or the time required to successfully complete the work. The documentation will be updated on a regular basis, which is why you should contact the team before you are wasting your time on translating files that are in the process of being rewritten or replaced. Also note that some basic HTML knowledge will help a lot, since all help files are written in HTML. Again, you are advised to contact the development team to learn about the rather strict HTML coding conventions for Scribus help files.