There is no need to rebuild the application for a particular language. When the application is built, all the messages files in all the available languages are included. The default locale can be changed by setting the application property unitime.locale through the Administration > Defaults > Configuration page.
For a particular http session, the locale can be also changed using the locale parameter, e.g., see our online demo in Czech: http://demo.unitime.org/UniTime?locale=cs. Please note that only some portions of the application were made localizable (and have Czech translations) so far.
Most of the UniTime application was written using Apache Struts, however, new pages and components (and in future the whole user interface) are written using Google Web Toolkit (GWT). For localization of GWT parts we use its i18n capabilities.
An example of using localization tags in a JSP file
An example of using localization in a Java file
An example of using localization in a GWT client code
Here is an example of a change localizing a particular page. The default messages are in English, the language-dependent messages are in a property file with the same name (plus identification of the language using two character iso language code), e.g., see Czech translation of CourseMessages.
Also, please take a look at classes ExportMessages and ImportMessages that can be used to convert existing messages to a CSV file and back -- the file can be easily edited in Excel (or Google Docs) -- it has three columns: message name, English (default) variant and localized variant. One of the first steps could be translating these course messages to your language and trying to plug them in.
Note that the language has to be added in the UniTime.gwt.xml (as a supported language, extending locale property) for the GWT compiler to create the appropriate language mutation.
A project has been created at zanata.org to support the cooperation of users on the translation of UniTime to other languages. Please note that if you want your translation to be a part of the standard distribution of UniTime, you need to sign a contributor license agreement for Apereo.
With Zanata, you translate all the messages at https://translate.zanata.org/iteration/view/unitime/4.5. To test the translation in your version of UniTime, you will need to
Have a local clone of the UniTime repository (git clone https://github.com/UniTime/unitime.git)
In Zanata, under User Settings > Client, generate an API key (if you have not done so) and copy your Configuration (zanata.ini) to ~/.config/zanata.ini
Download translations from Zanata either using
Install a Zanata client on your computer (see http://docs.zanata.org/en/release/client for more details)
Pull the translation from the project (e.g., by calling zanata-cli pull in your local UniTime repository). This should download the translation files under Documentation/Translations.
or using Maven (zanata:pull task)
Pull the translation from the project (e.g., by calling mvn zanata:pull in your local UniTime repository). This should download the translation files under Documentation/Translations.
Import translation by using Apache Ant, import-translations task (ant -Dlocale=cs import-translations), which will populate the above-mentioned files with messages with the translations from Zanata for the given locale.
Build UniTime (using either ant build or mvn package)
Note that if you are importing a new language, you will need to include the two character language code in the UniTime.gwt.xml (extending locale property).
If you want to help with translation to another language, please consider looking at the English dictionary, which contains terminology used in UniTime in the original English version. It is advisable to start by translating these terms first, then fill in the translation of particular messages (in Zanata or elsewhere).