Skip to main content

Notice: this Wiki will be going read only early in 2024 and edits will no longer be possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.

Jump to: navigation, search

Papyrus/Papyrus Developer Guide/Externalize Strings In Java

How to process to manage strings in your java plugin?

  1. messages/string visible by the user must be in a Messages.properties file, located in a java package called your.plugin.name.messages
  2. Exception message must not be translated, even if they are visible by the final user. We need to avoid to receive bugs with exception message in another language than english.
  3. String hidden for the final user, must have the tag //$NON-NLS-index. (index starting to 1, with no space between the // and the $.
  4. Each string displayed to the user, must be written in one string:

Bad code:

String fileName = "aFileName";

String message = "The file " + fileName + " can't be found";

This message is splitted in 2 strings. It is not good, because the translator doesn't know what he is translating and the order of the words can change from english to another language, so we recommand:

Good code:

String fileName = "aFileName";

String message = NLS.bind("The file {0} can't be found", fileName);

In this message, there is only one string to translate, the translator, can move the {0} to the good location in the new language. The method String#format should work fine too.


step 1

Open the Externalization menu: Left Click -> Source-> Externalize Strings...:


ExternalizationMenu.png

step 2

Give a nice name to the string


GiveAniceName.png

step 3: Configure the output package

ConfigureOutput.png

step 4

The result


ResultExternalizationt.png

How to process to manage strings in your plugin.xml file?

In plugin.xml, you should do the same thing, from the Overview tab. The output folder shouldn't changed:


PluginExternalization.png

How to define if a string must be externalized creating a new extension point?

Set the field translatable to true:


PluginTranslatable.png

Back to the top