====== Guide for SavaPage Translators ======
At this moment there is no Web front-end available like [[https://webtranslateit.com|WebTranslateIt]]. So, translations must be done via the core ''git'' interface of the [[https://gitlab.com/savapage-i18n|savapage-i18n-*]] projects.
The SavaPage Translation Manager (STM) will be your guide during the ongoing translation process. The STM will communicate the //sequence// and //priority// of files to translate.
| STM: [[https://www.datraverse.com/keys|Rijk Ravestein]]|
| Do //not// start on your own, but wait for instructions by the STM. |
===== Step 1: Register as GitLab user (optional) =====
If agreed with the STM:
- [[https://gitlab.com/users/sign_in|Register]] as GitLab user, and send Name and User ID to the STM.
- STM will add you as Developer to your "savapage-i18n-xx" project.
===== Step 2: Clone savapage-i18n-en =====
The English [[https://gitlab.com/savapage-i18n/savapage-i18n-en|savapage-i18n-en]] Library is the source of all ''savapage-i18n-*'' translations: clone this library for local reference.
# public access
git clone https://gitlab.com/savapage-i18n/savapage-i18n-en.git
# or, if you are a committer and assigned to edit...
git clone git@gitlab.com:savapage-i18n/savapage-i18n-en.git
# Switch to develop branch
cd savapage-i18n-en
git checkout develop
# Keep your source up-to-date
git pull
===== Step 3: Clone savapage-i18n-xx =====
# Since you are a committer ...
git clone git@gitlab.com:savapage-i18n/savapage-i18n-xx.git
# Switch to develop branch
cd savapage-i18n-xx
git checkout develop
# Keep your source up-to-date, when more translators are active!!
git pull
| The ''savapage-i18n-xx'' directory is the home of your translated files |
===== Step 4: Start translating =====
==== How does a translation look like? ====
Your ''savapage-i18n-xx'' translation will eventually be a complete mirror of the ''savapage-i18n-en'' reference. This means that each English ''path/*.xml'' has an ''xx'' translated ''path/*_xx.xml'' version in your ''savapage-i18n-xx'' directory.
Compared to its English counterpart, each ''*_xx.xml'' file has extra information about the translator in its header, as can be seen in the template below.
A translation with a first {0} and second {1}
placeholder.
==== Procedure ====
# A first translation starts by copying the English counterpart
# For plain message files
cp ./savapage-i18n-en/some-path/File.xml ./savapage-i18n-xx/same-path/File_xx.xml
# For web pages
cp ./savapage-i18n-en/some-path/Page.properties.xml ./savapage-i18n-xx/same-path/Page_xx.properties.xml
# Edit File_xx.xml according to the i18n template and translate the strings.
# Copy/Edit some more files ...
When done, if you are a GitLab user with Developer rights ...
# ... execute
git add # for each file
# Files already part of git can just be edited.
# Complete an assignment with a
git commit
git push
# Contact the STM so he can do a ...
git pull
# ... build the savapage-i18n-xx.jar and inspect the result.
If you do //not// have Git Developer rights, send a zipped copy of your translations to the STM, which can then put the files in the repository for you.
==== See your translation in action ====
There are several possibilities, as communicated by the STM:
- Your translation is part of a new installation binary [[https://www.savapage.org/download/snapshots/|snapshot]] : //install the snapshot to see the results//.
- A new snapshot ''savapage-i18n-xx.jar'' file is available: //use this new one to overwrite the one in your own SavaPage installation//.
When the ''savapage-i18n-xx'' project is part of your overall SavaPage build environment or IDE (Eclipse):
* Rebuild and deploy to your own test environment, or run SavaPage in the IDE.
An alternative low threshold way to get started is by using the SavaPage [[https://www.savapage.org/docs/manual/ch-customization.html#ch-custom-webapp-i18n|Custom i18n]] feature with the *.xml files from the [[https://gitlab.com/savapage-i18n/savapage-i18n-en|savapage-i18n-en]] repository as a reference. In this way your translation is directly visible in SavaPage.