Internationalization requires following several best practices:
-
Storing messages using
ResourceBundle
properties file in your component module. -
The location of the properties is in the same package than the related components and is named
Messages
. For example,org.talend.demo.MyComponent
usesorg.talend.demo.Messages[locale].properties
. -
Use the internationalization API for your own messages.
Internationalization API
The Internationalization API is the mechanism to use to internationalize your own messages in your own components.
The principle of the API is to design messages as methods returning String
values and get back a template using a ResourceBundle
named Messages
and located in the same package than the interface that defines these methods.
To ensure your internationalization API is identified, you need to mark it with the @Internationalized
annotation:
package org.superbiz;
@Internationalized (1)
public interface Translator {
String message();
String templatizedMessage(String arg0, int arg1); (2)
String localized(String arg0, @Language Locale locale); (3)
String localized(String arg0, @Language String locale); (4)
}
1 | @Internationalized allows to mark a class as an internationalized service. |
2 | You can pass parameters. The message uses the MessageFormat syntax to be resolved, based on the ResourceBundle template. |
3 | You can use @Language on a Locale parameter to specify manually the locale to use. Note that a single value is used (the first parameter tagged as such). |
4 | @Language also supports the String type. |
The corresponding Messages.properties
placed in org/superbiz
resource folder will contain:
org.superbiz.Translator.message = Some message
org.superbiz.Translator.templatizedMessage = Some message with string {0} and with number {1}
org.superbiz.Translator.localized = Some other message with string {0}
# or the short version
Translator.message = Some message
Translator.templatizedMessage = Some message with string {0} and with number {1}
Translator.localized = Some other message with string {0}