Translations
Container Compatibility
This feature is compatible with version 4.20 and later of the JourneyApps Container.
Edit Translations Files
A language can be added to your app via the Add language action in OXIDE. This initializes a YAML file for the language, which stores the language's translation strings.
The following languages are currently supported:
Arabic (since version 4.86.1 of the JourneyApps Runtime - see the developer notes section below).
English (US) - default
Chinese (Simplified)
Dutch
French
German
Italian
Japanese
Korean
Portuguese (Brazil)
Russian
Spanish (Latin America)
Swedish
YAML files can be accessed in OXIDE via the command palette, or in the Languages section in the App Tree panel.
An example translation file is given below:
YAML oddities
YAML has some standards that you might run into:
Words such as YES, yes, No, etc are reserved and will break your app if you use them
The colon (:) is a reserved symbol, so your translation needs to be surrounded by quotes if you have a colon in your string
Given the above, it's HIGHLY recommended that you always enclose your strings in quotes
Quotes themselves are reserved characters in YAML and need to be escaped using a quote. This means you may end up with a translation entry like this:
Call Translation Resources
Strings can be translated using the JavaScript/TypeScript t(key, params)
function. The t
function accepts a translation key and an optional string interpolation hash. The current locale is used to find the appropriate translation. If a translation cannot be found then key
will be returned and a warning logged to the console.
Translations from JavaScript
Example view XML:
Example view JavaScript:
Translations from XML
The translation function can also be accessed from view XML.
Example view XML:
Enable a language for app users
To enable a language so that it is selectable by app users, fire the Enable language action via the command palette or by right-clicking on the YAML file in the App Tree panel.
Developer notes for Arabic
Version compatibility
Arabic was introduced as a supported app language in version 4.86.1 of the JourneyApps Runtime.
For TypeScript apps the JourneyApps Runtime Build version needs to be 2.1.5 or greater. This version can be configured in your app's
package.json
file. You need to run the Update yarn.lock action in OXIDE after making updates to this file.
Arabic differs from all other supported app languages in that it is displayed from right-to-left. Right-to-left language support was added to the JourneyApps Runtime in version 4.86.1 so that there is almost no additional configuration that the developer is required to implement when adding Arabic as a language.
The Runtime automatically displays all UI components and runtime elements as right-to-left when a user selects Arabic as their language. Often this means that the specified default for an alignment or positioning attribute is different in Arabic than it is for other languages.
As an example, let's look at the icon-position
attribute where the default value is left
. In Arabic, the default icon-position
for components is right
, since elements are read from left to right. This value can still be overwritten in Arabic as with any other language by setting/updating the attribute.
Here is a summary of updates the JourneyApps Runtime makes when a user selects Arabic as their app language:
The app font changes to Noto Sans if installed on the user's device
UI components and other runtime elements switch to right-to-left mode:
Text is generally right-aligned
There are some exceptions: e.g. button labels. The developer can manually right align this text if required on an app, view or component level (using component configuration).
Icons, radio buttons, checkboxes, etc, are generally aligned to the right of text
User-defined icons (e.g.
icon=“fa-arrow-right”
) are not updated by the Runtime. The developer would need to do this for directional icons - see the section below.
An example runtime element update is the app header, which is mirrored in Arabic:
Runtime-level directional icons are mirrored: e.g. the navigational “Back” button switches from
<
to>
User-defined directional icons
Developers will need to update user-defined directional icons when implementing Arabic, e.g:
Which looks as follows in English:
Will update to the following in Arabic by the runtime (the icon position updates to the right of the text):
However, the icon itself should most likely also be mirrored. For this developers could use journey.locale
to dynamically update icons based on the user's language:
Last updated