Contributing to Nuxeo

How to translate the Nuxeo Platform

Updated: October 16, 2020

With Crowdin

There is a Nuxeo project on Crowdin. To join the project, create an account on Crowdin and follow this link: http://crowdin.net/project/nuxeo/invite.

If you are not familiar with Crowdin, take a look at their quick start guide.

Basically here are the steps to contribute:

  1. Join the Nuxeo translation group of your choice at crowdin.net/project/nuxeo. Pick a language you want to translate and start by clicking “translate”.
  2. In the Crowdin translation view you will find all the phrases to translate to the left. (To view only the ones that still need translation, use the “missing translations” filter.)
  3. Click on a phrase you want to translate. You see the original phrase in the top, and a box to fill out your translation beneath.
  4. Enter the translation and by clicking “commit translation” commit it for approval/rating.

By default, new users have the translator status. It means you can propose new translations, but can't validate them. To gain the proofreader status and have the validation permission, please ask for it on Nuxeo Answers or on the dev list.

Now here's a couple of tips taken from the Flattr translation guide.

  • Some phrases have placeholders in them (like %s). These are placeholders for values that are added later. E.g. a name: “Hello, %s”, could be “Hello, Peter” on the website. They must remain in the translation as well, although placement may vary.
  • If the context for the phrase is unclear, you can request the context from the Nuxeo team. These comments are also visible for anyone else that translates or approves translations.

Before every release, the translations are exported from Crowdin to the nuxeo-platform-lang-ext addon by Nuxeo.

Without Crowdin

Update or Create Localized Messages

You will find French and English language resources files in nuxeo-platform-lang/src/main/resources/nuxeo.war/WEB-INF/classes living in https://github.com/nuxeo/nuxeo-features GitHub repository.

Other language translations live in https://github.com/nuxeo/nuxeo-platform-lang-ext

To edit a language file, we recommend using either:

Properties files should only contains ASCII characters. Use the code point directly for non ASCII char. For instance the char 'é' should be '\u00e9'. Take a look at this table for the details. 

You should create your translations from messages_en.properties or messages_fr.properties since only those are maintained by Nuxeo developers. Make sure your new file uses a four letter code. Two letter code are only used as fallback for dialects ad will be handled directly by Nuxeo. The switch to a four letter code has been initiated since we started using Crowdin to manage community translation.

Once you have added your new properties file, you need to modify the deployment-fragment.xml file adding a new entry with your locale:

<extension target="faces-config#APPLICATION_LOCALE">
  <locale-config>
    <default-locale>en</default-locale>
    <supported-locale>en_GB</supported-locale>
    <supported-locale>en_US</supported-locale>
    <supported-locale>fr</supported-locale>
    <supported-locale>fr_FR</supported-locale>
    <supported-locale>ar_SA</supported-locale>    <!-- Arabic - Saudi Arabia -->
    <supported-locale>ca_ES</supported-locale>    <!-- Catalan - Spain -->
    <supported-locale>cs_CZ</supported-locale>    <!-- Czech - Czech Republic -->
    <supported-locale>zh_CN</supported-locale>    <!-- Chinese (Simplified) - China -->
    <supported-locale>de</supported-locale>       <!-- German - Germany -->
    <supported-locale>de_DE</supported-locale>    <!-- German - Germany -->
    <supported-locale>el_GR</supported-locale>    <!-- Greek - Greece -->
    <supported-locale>es</supported-locale>       <!-- Spanish - Spain -->
    <supported-locale>es_ES</supported-locale>    <!-- Spanish - Spain -->
    <supported-locale>eu_ES</supported-locale>    <!-- Basque -->
    <supported-locale>fr_CA</supported-locale>    <!-- French - Canada -->
    <supported-locale>gl_ES</supported-locale>    <!-- Galician -->
    <supported-locale>it_IT</supported-locale>    <!-- Italian - Italy -->
    <supported-locale>ja_JP</supported-locale>    <!-- Japanese (Gregorian calendar) - Japan -->
    <supported-locale>nl</supported-locale>       <!-- Dutch - Netherlands -->
    <supported-locale>nl_NL</supported-locale>    <!-- Dutch - Netherlands -->
    <supported-locale>pl</supported-locale>       <!-- Polish - Poland -->
    <supported-locale>pl_PL</supported-locale>    <!-- Polish - Poland -->
    <supported-locale>pt</supported-locale>       <!-- Portuguese - Portugal -->
    <supported-locale>pt_PT</supported-locale>    <!-- Portuguese - Portugal -->
    <supported-locale>pt_BR</supported-locale>    <!-- Portuguese - Brazil -->
    <supported-locale>ru</supported-locale>       <!-- Russian - Russia -->
    <supported-locale>ru_RU</supported-locale>    <!-- Russian - Russia -->
    <supported-locale>sr_RS</supported-locale>    <!-- Serbian(Cyrillic) - Serbia -->
    <supported-locale>vi_VN</supported-locale>    <!-- Vietnamese - Vietnam -->
  </locale-config>
</extension>

For Nuxeo versions before 5.4.3, extension target is "faces-config#APPLICATION"

Build and Test

To test, build with Maven the modified nuxeo-platform-lang or(and) nuxeo-platform-lang-ext module(s) and copy it(them) into the bundles directory ($NUXEO_HOME/server/default/deploy/nuxeo.ear/bundles/ for JBoss or $NUXEO_HOME/nxserver/bundles/ for Tomcat).

Contribute

Please contribute your translation work back to Nuxeo so that other users can benefit from, and improve upon, your work.

Login Page

By default, language is defined following the OS or browser locale settings. However, the language used after login may be forced using the language selector.

If you contribute a new language to Nuxeo, we'll update the login page.

If you need to temporarily patch it for testing purpose, the login.jsp page is located in nuxeo-platform-webapp/src/main/resources/web/nuxeo.war/ living in https://github.com/nuxeo/nuxeo-dm repository.

If you want to permanently overwrite the default login.jsp page with your own, the good practice is to create a plugin for Nuxeo rather than editing Nuxeo source code.