Support Multiple Languages

If you plan to distribute your plug-in to designers in multiple languages, follow this page to learn how to internationalize designer-facing text.

Internationalizing Name and Description of the Template

Use resource bundles to internationalize the template's name and description. Create a resource bundle with the keys <className>.name and <className>.description. This file should be located in the resources of your plugin.

Example resources_en_US.properties

1
2
3
4
HelloWorldConnectedSystem.name=Hello Connected System
HelloWorldConnectedSystem.description=An intro connected system
HelloWorldIntegration.name=Hello Integration
HelloWorldIntegration.description=My first integration

Be careful about the naming of these properties. <className> is case sensitive and must match the name of your Integration and Connected System classes. If the name or description are not defined then no value will appear in the UI.

Internationalizing Labels, Tooltips and Errors

The developer of the connected system plug-in is responsible for internationalizing display values and error messages. In every call to the template, we provide locale information in the ExecutionContext. This locale information can be used along with resource bundles to internationalize display values and errors.

1
ResourceBundle myResources = ResourceBundle.getBundle("MyResources", executionContext.getDesignerLocale());

All errors returned by the execute() method should not be internationalized. Designers will use these error messages to determine behavior. To provide an internationalized error for display, the developer must pass internationalized error information through the diagnostics. The diagnostics will be displayed when designers are testing their Integration.

1
2
3
4
5
6
7
8
9
IntegrationError internationalizedError = getInternationalizedError(e,
   executionContext.getDesignerLocale());
IntegrationError nonInternationalizedError = getError(e, executionContext.getExecutionLocale());
IntegrationDesignerDiagnostic diagnostic = IntegrationDesignerDiagnostic.builder()
    .addErrorDiagnostic(INTERNATIONALIZED)
    .build();
return IntegrationResponse.forError(NOT INTERNATIONALIZED)
	.withDiagnostic(diagnostic)
.build();

Note on The Unicode-based Properties File

Languages with unicode characters (e.g. Arabic, Chinese, Japanese, Russian, and any characters with character accents) need to be recorded using escaped unicode. If they are not, the translations will not render properly on Appian.

For example, Ƃ would be represented as U+0182 in the properties file.

FEEDBACK