Languages
A channel declares which languages its data can be maintained in through the channelDefinedLanguages section of the datastandard. This drives the language picker in the PDX UI and defines which language layers a product's attribute values can hold.
The section has two parts:
default– the language selected when none is chosen explicitly. Every channel has exactly one default language. If a channel does not register one, PDX falls back to English (en).alreadyDefined– the full list of languages the channel supports. The default language is also part of this list.
Each language is identified by its languageTag, which must be unique within the channel.
Generic Properties
| Property | Description |
|---|---|
| name | Language name shown in the PDX UI (for example, “English (Canada)”). Required. |
| languageTag | IETF BCP 47 language tag used internally by PDX as the language identifier, for example en-CA. Must be unique within the channel. Required. |
| flagUrl | URL of the flag icon displayed next to the language in the PDX UI. Optional. |
| levelNotAvailable | When true, the language cannot be selected in the PDX UI and data cannot be mapped to that level. Optional. |
| familyLanguages | Language dialects grouped under this language (a list of LanguageDialect), used to build a language hierarchy — for example en → en-US, en-GB. Optional. |
| mandatory | Marks the language as mandatory. Optional. |
Defining languages
Languages are registered with LanguageBuilder. It exposes two entry points:
LanguageBuilder.defaultLanguage(languageTag, name)– registers the channel default language. It is added toalreadyDefinedas well. Registering a second default language is an error.LanguageBuilder.language(languageTag, name)– registers a supported (non-default) language.
Registering two languages with the same languageTag is an error.
Optional properties are set with the builder methods withFlagUrl(...), withLevelNotAvailable(...), withMandatory(...) and withFamilyLanguage(...) / withFamilyLanguages(...). Call build() to register the language.
Code Examples:
LanguageBuilder.defaultLanguage("en-CA", "English (Canada)")
.withFlagUrl("https://s3-eu-west-1.amazonaws.com/leap-ui-resources/channel-logos/market/svg/ca.svg")
.build();
LanguageBuilder.language("fr-CA", "French (Canada)")
.withFlagUrl("https://s3-eu-west-1.amazonaws.com/leap-ui-resources/channel-logos/market/svg/fr.svg")
.build();"channelDefinedLanguages" : {
"default" : {
"name" : "English (Canada)",
"languageTag" : "en-CA",
"flagUrl" : "https://s3-eu-west-1.amazonaws.com/leap-ui-resources/channel-logos/market/svg/ca.svg"
},
"alreadyDefined" : [ {
"name" : "English (Canada)",
"languageTag" : "en-CA",
"flagUrl" : "https://s3-eu-west-1.amazonaws.com/leap-ui-resources/channel-logos/market/svg/ca.svg"
}, {
"name" : "French (Canada)",
"languageTag" : "fr-CA",
"flagUrl" : "https://s3-eu-west-1.amazonaws.com/leap-ui-resources/channel-logos/market/svg/fr.svg"
} ]
}
If no default language is registered, PDX uses English (en) as the default andalreadyDefinedstays empty.
Language hierarchies
A language can group several dialects under it through familyLanguages, forming a hierarchy such as en → en-US, en-GB. Each dialect is a LanguageDialect, which is built directly with its fluent setters (name, languageTag and flagUrl are required).
Code Examples:
LanguageBuilder.defaultLanguage("en", "English")
.withFlagUrl("https://s3-eu-west-1.amazonaws.com/leap-ui-resources/channel-logos/market/svg/us.svg")
.withFamilyLanguage(new LanguageDialect()
.withLanguageTag("en-US")
.withName("English (United States)")
.withFlagUrl("https://s3-eu-west-1.amazonaws.com/leap-ui-resources/channel-logos/market/svg/us.svg"))
.withFamilyLanguage(new LanguageDialect()
.withLanguageTag("en-GB")
.withName("English (United Kingdom)")
.withFlagUrl("https://s3-eu-west-1.amazonaws.com/leap-ui-resources/channel-logos/market/svg/gb.svg"))
.build();"default" : {
"name" : "English",
"languageTag" : "en",
"flagUrl" : "https://s3-eu-west-1.amazonaws.com/leap-ui-resources/channel-logos/market/svg/us.svg",
"familyLanguages" : [ {
"name" : "English (United States)",
"languageTag" : "en-US",
"flagUrl" : "https://s3-eu-west-1.amazonaws.com/leap-ui-resources/channel-logos/market/svg/us.svg"
}, {
"name" : "English (United Kingdom)",
"languageTag" : "en-GB",
"flagUrl" : "https://s3-eu-west-1.amazonaws.com/leap-ui-resources/channel-logos/market/svg/gb.svg"
} ]
}Updated 5 days ago
