Translating Nuxeo Translating Nuxeo

Hi there,
Here's an interesting question from Patrick Turcotte about translations:

What would be the best way to contribute them to you?

It's even more interesting since we have a release candidate coming, which means new features, and hence new labels to translate. So today I'm going to tell you how the translations/labels are managed in Nuxeo.

The first thing to know: Nuxeo provides only English and French translations. All others have been contributed by our community. They are available from two different packages: nuxeo-platform-lang (en and fr) and nuxeo-platform-lang-ext. Here's the complete list:

  • English (United States)

  • English (United Kingdom)

  • Français

  • Deutsch

  • Italiano

  • Greek (Greece)

  • Español

  • Português

  • Português (Brasil)

  • Polski

  • Català

  • Galego

  • Basque

  • Serbian - Cyrillic

  • русский

  • العربية

  • 中文

  • 日本語

  • Tiếng Việt

Some are up to date, some not so much. So this is a call to action. If you're reading the blog and want to help, now is the perfect time. What you need to do is as follows:

  • Open a Jira ticket telling us you would like to contribute translations.

  • Compile those translations under one file, for instance

  • Send us a GitHub pull request mentioning your Jira ticket with your changes on the following project:

In the Nuxeo source code, you might see fr and en translations in various bundles, while other languages that are not mainained by us are in a single file. As Julien said, this is the purpose of nuxeo-platform-lang-ext. We found it easier for everyone to gather all labels of a language at one place.

Here's an example of a contribution to help you understand how Nuxeo handles message files. Let's say I want to contribute the Swedish translation. I need to create a file called containing my translated labels. I will put it under nuxeo-platform-lang-ext/src/main/resources/web/nuxeo.war/WEB-INF/classes/. This file will be copied into the server WAR because of what we have in deployment-fragment.xml, which is also responsible for our new language declaration:

<?xml version="1.0"?>
<fragment version="1">
<!-- The require tag ensure we'll be deployed after nuxeo-platform-lang
because we need some contribution declared in its deployment-fragment. -->

We are using the following template to generate the EndResult
when the server is starting.
Template: nuxeo.ear/OSGI-INF/templates/faces-config.xml
End Result: nuxeo.ear/META-INF/faces-config.xml
<extension target="faces-config#APPLICATION_LOCALE">
<!-- Here I'm declaring my new file. -->

<!-- Unzip the contents of our nuxeo.war into the real nuxeo.war on the server -->
<unzip from="${bundle.fileName}" to="/" prefix="web">


I only need to add the supported locale tag because we already have some configuration in nuxeo-platform-lang deployment-fragment. That's why it's in the required tag. We want to be deployed after it.

This is a part of nuxeo-platform-lang deployment-fragment:

<extension target="faces-config#APPLICATION_LOCALE">

As you can see, we have the message-bundle tag that tells the server for files like

And that's all you need to know basically. Once we have our first release candidate, I will create a Jira ticket with the English reference file.
See ya' on Monday!