Versions Compared


  • This line was added.
  • This line was removed.
  • Formatting was changed.


No Format
<p>${h.ifThenElse(x,"%no error","%error")}</p>

What translators need to know/do

The Hudson project always welcomes contributions to translations. If you are interested in helping us, please drop us a note at, so that we can give you the commit access. In the reminder of this section, we'll discuss what needs to be translated and how.


Developers place messages that require localizations in Those need to be translated in the usual manner. See in the core as an example if you are new to this process.

Sometimes looking at alone doesn't give you enough contextual information as to where the messages are used. For this, developers are encouraged to access messages by using the type-safe Messages class generated by localizer. To find out where messages are actually used, use your IDE to find all the usages of the message format method.

Translating message references in Jelly

The other messages that need to be translated are in Jelly view files, which are in src/main/resources/**.jelly. To localize them, first you run Maven to generate skeleton property file for your locale:

No Format

$ cd hudson/main/core  (or hudson/plugins/xyz)
$ mvn stapler:i18n -Dlocale=fr

This will generate a bunch of * all over src/main/resources with an empty value. If the file already exists, it will append missing entries to existing files.

You then need to work on each such property file and translate messages. You don't have to translate the entire file — if you leave some entries empty, they'll fall back to the default locale.

Pushing changes

Once you made some changes, you can commit them. Translators should consider themselves as owning property files for their locale, so feel free to go ahead and just commit. If you are new to this, doing a small commit first is a good idea. You can also always send in a patch if you prefer to be safe.

When starting a translation, try to check if there's anyone else working on the same locale. You can find out who they are by finding existing localization and looking at its CVS history. Try to get in touch with them to avoid a surprise.