Fluent Commerce Logo
Docs
Sign In

Languages and Localisation

Essential knowledge

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 
    `en-AU`
     - Default
  • 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`
setting.

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:
No alt provided


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

{
     "code": "af-ZA",
      "label":"Afrikaans"
},

Albanian

{
     "code": "sq-AL",
      "label":"Albanian"
},

Amharic

{
     "code": "am-ET",
      "label":"Amharic"
},

Arabic

{
     "code": "az-001",
      "label":"Arabic"
},

Azerbaijani

{
     "code": "az-AZ",
      "label":"Azerbaijani"
},

Bosnian

{
     "code": "bs-BA",
      "label":"Bosnian"
},

Bulgarian

{
     "code": "bg-BG",
      "label":"Bulgarian"
},

Chinese (Simplified)

{
     "code": "zh-TW",
      "label":"Chinese (Traditional)"
},

Chinese (Traditional)

{
     "code": "zh-TW",
      "label":"Chinese (Traditional)"
},

Croatian

{
     "code": "hr-HR",
      "label":"Croatian"
},

Czech

{
     "code": "cs-CZ",
      "label":"Czech"
},

Danish

{
     "code": "da-DK",
      "label":"Danish"
},

Dutch

{
     "code": "nl-NL",
      "label":"Dutch"
},

Estonian

{
     "code": "et-EE",
      "label":"Estonian"
},

Finnish

{
     "code": "fi-FI",
      "label":"Finnish"
},

French (Canadian)

{
     "code": "fr-CA",
      "label":"French (Canadian)"
},

Georgian

{
     "code": "ka-GE",
      "label":"Georgian"
},

German

{
     "code": "de-DE",
      "label":"German"
},

Greek

{
     "code": "el-GR",
      "label":"Greek"
},

Hausa

{
     "code": "ha-GH",
      "label":"Hausa"
},

Hebrew

{
     "code": "he-IL",
      "label":"Hebrew"
},

Hindi

{
     "code": "hi-IN",
      "label":"Hindi"
},

Hungarian

{
     "code": "hu-HU",
      "label":"Hungarian"
},

Indonesian

{
     "code": "id-ID",
      "label":"Indonesian"
},

Japanese

{
     "code": "ja-JP",
      "label":"Japanese"
},

Korean

{
     "code": "ko-KP",
      "label":"Korean"
},

Latvian

{
     "code": "lv-LV",
      "label":"Latvian"
},

Malay

{
     "code": "ms-MY",
      "label":"Malay"
},

Norwegian

{
     "code": "nb-NO",
      "label":"Norwegian"
},

Persian

{
     "code": "fa-IR",
      "label":"Persian"
},

Pashto

{
     "code": "ps-AF",
      "label":"Pashto"
},

Polish

{
     "code": "pl-PL",
      "label":"Polish"
},

Portuguese

{
     "code": "pt-PT",
      "label":"Portuguese"
},

Romanian

{
     "code": "ro-RO",
      "label":"Romanian"
},

Russian

{
     "code": "ru-RU",
      "label":"Russian"
},

Serbian

{
     "code": "sr-RS",
      "label":"Serbian"
},

Slovak

{
     "code": "sk-SK",
      "label":"Slovak"
},

Slovenian

{
     "code": "sl-SI",
      "label":"Slovenian"
},

Somali

{
     "code": "so-SO",
      "label":"Somali"
},

Spanish

{
     "code": "es-ES",
      "label":"Spanish"
},

Swahili

{
     "code": "sw-CD",
      "label":"Swahili"
},

Swedish

{
     "code": "sv-SE",
      "label":"Swedish"
},

Thai

{
     "code": "th-TH",
      "label":"Thai"
},

Turkish

{
     "code": "tr-TR",
      "label":"Turkish"
},

Ukrainian

{
     "code": "uk-UA",
      "label":"Ukrainian"
},

Vietnamese

{
     "code": "vi-VN",
      "label":"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.
Fluent Commerce

Fluent Commerce

Copyright © 2024 Fluent Retail Pty Ltd (trading as Fluent Commerce). All rights reserved. No materials on this docs.fluentcommerce.com site may be used in any way and/or for any purpose without prior written authorisation from Fluent Commerce. Current customers and partners shall use these materials strictly in accordance with the terms and conditions of their written agreements with Fluent Commerce or its affiliates.

Fluent Logo