Languages and Localisation
Author:
Fluent Commerce
Changed on:
4 June 2024
Overview
As a part of Internationalisation, the Fluent platform supports multiple languages. This support allows users of web apps such as OMS Webapp and Fluent Store to configure and view the modules and interfaces of the Fluent platform in their preferred language.
As of the Fluent v4.45 release, the Fluent platform provides pre-configured support for the following languages.
Fluent Order Management uses a default language of Australian English
`en-AU`
- Australian English - Default
`en-AU`
- American English -
`en-US`
- French -
`fr-FR`
- Mexican Spanish -
`es-MX`
- Italian -
`it-IT`
Key points
- Enable additional language in OMS
- Additional language Support - Beta
- Custom Language Bundles
- Language Preferences for User Accounts
- Customizing Languages and Key
- Customizing Workflow User Actions
- Adding new Mutation Actions
- Priority and Fall Back Options of Internationalization
- Limitations
Enable additional Language in OMS.
The default language for a user account is inherited from the account level and is defined in the JSON payload of the
`i18n.languages`
1{
2 "switcherEnabled": true,
3 "accountDefaultLanguage": "en-AU",
4 "languages": [
5 {
6 "code": "en-AU",
7 "label": "English (AU)"
8 },
9 {
10 "code": "th-TH",
11 "label": "Thai (th)"
12 },
13 {
14 "code": "ms-MY",
15 "label": "Malay (MY)"
16 },
17 {
18 "code": "ja-JP",
19 "label": "Japanese (JP)"
20 },
21 {
22 "code": "en-US",
23 "label": "American English"
24 },
25 {
26 "code": "fr-FR",
27 "label": "French"
28 },
29 {
30 "code": "es-MX",
31 "label": "Mexican Spanish"
32 },
33 {
34 "code": "it-IT",
35 "label": "Italian"
36 }
37
38 ]
39}
Language: json
Name: i18n.language setting name: i18n.languages context: ACCOUNT contextID: 0 valueType: JSON JSON Value:
Description:
[Warning: empty required content area]The list of languages will be displayed on top-right hand corner in Webapps OMS / Fluent Store:
Additional Language Support - Beta
The following beta languages help retailers get started quickly. These beta languages may have un-translated phrases or suboptimal translations:
Beta language | Sample code snippets that can be added to the setting "i18n.languages" payload. (the code is just a sample only and can be varied depending on the user's preference) |
Afrikaans | { |
Albanian | { |
Amharic | { |
Arabic | { |
Azerbaijani | { |
Bosnian | { |
Bulgarian | { |
Chinese (Simplified) | { |
Chinese (Traditional) | { |
Croatian | { |
Czech | { |
Danish | { |
Dutch | { |
Estonian | { |
Finnish | { |
French (Canadian) | { |
Georgian | { |
German | { |
Greek | { |
Hausa | { |
Hebrew | { |
Hindi | { |
Hungarian | { |
Indonesian | { |
Japanese | { |
Korean | { |
Latvian | { |
Malay | { |
Norwegian | { |
Persian | { |
Pashto | { |
Polish | { |
Portuguese | { |
Romanian | { |
Russian | { |
Serbian | { |
Slovak | { |
Slovenian | { |
Somali | { |
Spanish | { |
Swahili | { |
Swedish | { |
Thai | { |
Turkish | { |
Ukrainian | { |
Vietnamese | { |
Custom Language Bundles
Create a Custom Language Bundle
Custom Language Bundles are created as JSON-type platform settings at the account level. These are the Language Bundles created when users create and configure additional languages.
When adding additional components to the platform (e.g., Mystique components or modules), users must define all keys (for labels, etc.) (see Customising Languages and Keys section below) for translation and then add them to a custom Language Bundle file for the specific language. Once added to the Language Bundle, keys will be defined automatically based on the naming convention.
Ensure you have access to the Settings module. For more information, contact the system administrator. To create a new custom Language Bundle follow these steps:
- Navigate to the Settings module of the Fluent OMS Webapps.
- Select New Setting.
- Provide a name for the Language Bundle. The recommended naming convention is as follows: LANGUAGE_(ISO code of the language). Click here for a list of ISO codes. For example:
`LANGAUAGE_JA-JP`
- context: ACCOUNT and contextID: 0
- Enter JSON as the Value Type.
- Enter the direct translations into the JSON Value. You can use one of the base Language Bundles as a starting point before updating all of the translations. The following code exemplifies this information:
1{
2 "translation": {
3 "fc.userAction.test.text1": "Text 1 test in Japanese",
4 "fc.userAction.test.text2": "Text 2 test in Japanese",
5 "fc.sf.ui.wave.pickAndPack.list.pick.confirm.items": "J: アイテム",
6 "fc.sf.ui.wave.pickAndPack.list.pick.confirm.of": "J: {{total}} の {{count}}",
7 "fc.sf.ui.wave.pickAndPack.list.pick.confirm.picked": "J: ピック済み",
8 "fc.sf.ui.wave.pickAndPack.list.pick.confirm.rejected": "J: 却下"
9 }
10}
Language: json
Name: Example of language: Name: LANAGUAGE_JA-JP context: ACCOUNT contextID: 0 valueType: JSON JSON Value:
Description:
[Warning: empty required content area]Click Submit to save.
Language Preferences for User Accounts
Setting up Languages for Individual Users
Language preferences can be set when a user is created. A user admin can update language preferences through the Fluent GraphQL API.
1#graphQL Variables:
2{
3 "input": {
4 "id": 5003263,
5 "ref": "5000299_BOJ",
6 "timezone":"SYDNEY/AUSTRALIA",
7 "language": {
8 "value": "th-TH",
9 "label": "Thai (th)"
10 }
11 }
12}
13
14
15#QUERY:
16mutation updateUser ($input: UpdateUserInput) {
17 updateUser (input: $input) {
18 id
19 ref
20 username
21 title
22 firstName
23 lastName
24 primaryEmail
25 primaryPhone
26 type
27 status
28 department
29 country
30 timezone
31 promotionOptIn
32 createdOn
33 updatedOn
34 language{
35 label
36 value
37 }
38 }
39}
Language: graphqlschema
Name: Update User language
Description:
GraphQL to update User's Language Preference
Customising Languages and Keys
OMS Webapps Internationalisation
When customising languages and keys, users can enter the labels and translations directly into the configuration file of their preferred language or create a language key and add the translation in one or more language setting files for translations.
1"component": "shared.components.material.DynamicPage",
2"menuLabel": "i18n:fc.om.orders.index.nav",
3"menuIcon": "library_books",
4"params": {
5 "graphql": {
6 "query": " query($ref: [String], $status: [String], $type:[String!]) { orders(ref: $ref, status:$status, type:$type){ edges{ node{ ...Listing } } } }"
7},
8 "title": "i18n:fc.om.orders.index.title",
9 "primaryButtons": [
10 {
11 "label": "i18n:fc.om.orders.index.action.newOrder",
12 "mutation": "createOrder"
13 }
14 ]
15 }
16
Language: json
Name: Example of calling internationalisation settings
Description:
[Warning: empty required content area]A copy of the default translation file can be downloaded here
Customising Workflow User Actions
When creating User Actions, users can enter the labels directly into the workflow configuration from their preferred language or create a language key and add the translation in one or more language setting files for translations.
The below example identifies the structure of a key based on the workflow, ruleset, and user action.
1"fc.om.order.OrderCancel.label": "CANCEL ORDER",
2"fc.om.article.ARTICLE_COLLECTED.label": "COLLECT",
3"fc.om.article.ARTICLE_ARRIVED.label": "MARK AS ARRIVED",
4"fc.om.order.OrderRevision.label": "Order Revision",
5"fc.om.order.OrderRevision.field.revisedItems": "Items",
6"fc.lc.location.WaveCreate.label": "Create Wave"
Language: json
Name: Example
Description:
[Warning: empty required content area]Adding new Mutation Actions
Mutation actions provide direct edits of entities by providing an interface to the API in the Console. When adding mutations, the platform will automatically generate keys based on the naming conventions. Users need to add a translation of the key to a custom language bundle to display the mutation action form fields in a language other than English. The naming conventions should be followed to create keys for mutations.
The following examples indicate several existing mutation keys.
1"fc.gql.fulfilment.ref.label": "ref",
2"fc.gql.fulfilment.attributes.label": "attributes",
3"fc.gql.fulfilment.attributes.name.label": "name",
4"fc.gql.fulfilment.attributes.type.label": "type",
5"fc.gql.order.fulfilmentChoice.currency.label": "Currency",
6"fc.gql.inventoryCatalogue.type.label": "type"
Language: json
Name: Example
Description:
[Warning: empty required content area]Priority and Fall Back Options of Internationalisation
The priority order for displaying apps in a different language is as follows:
- User’s selected language
- Account default language
Once the language is selected, the fallback occurs with the priority order:
- Custom Language Bundle available in settings for the selected language
- Base Language Bundle available in the platform for the selected language
- System default language set in the platform (English - Australian)
Limitations
- Legacy Console modules and pre-mystique versions do not support multiple languages.
- API Error messages returned from operations do not support multiple languages.
- Locale settings (measurement, date/time format, currency) are not yet supported on the user or retailer level. Partners can introduce different measurement types, e.g., lb instead of kg, etc, through translations.
- PDF generation is not supported. The pick list, Packing slip, and label PDFs are not translated.
- Only left-to-right text alignment is supported.