SeekTable localization

On-prem SeekTable with activated white-label mode supports UI labels customization and this capability can be used for switching UI to non-English language by specifying JSON config at AdminUI localization. This capability can be used for customization of English labels (for example, "Cube" can be changed to "Dataset" etc). For now the following ready-to-use translations are available:

Multi-language reports support

SeekTable provides internationalization and localization features which make it possible to build multi-language reports and switch between different languages. This is especially important when SeekTable is embedded into multilingual host system: embedded reports (or embedded app view) may be configured for rendering in different languages too. With SeekTable's multi-language support it is possible to avoid cloning and mainaining separate sets of cubes/reports for each language if the only difference are localized labels and numbers/dates formatting.

The following items can be translated/localized:

Technically translations are configured as JSON files (an object with property-value pairs), for example:

{
  "Year": "Jahr",
  "Month": "Monat",
  "Product": "Produkt"
}

Then these files should be registered in docker-compose.seektable.env in this way:

SeekTable_ST__Appearance__Multilanguage__Enabled=true
SeekTable_ST__Appearance__Multilanguage__TranslatePublishedReportLabels=true
SeekTable_ST__Appearance__Multilanguage__TranslateOnlySharedCubeLabels=false
SeekTable_ST__Appearance__Multilanguage__TranslateReadOnlyEntityName=true
SeekTable_ST__Appearance__Multilanguage__AllowSwitchLanguageByUser=true
# 1st (index=0) locale "ua"
SeekTable_ST__Appearance__Multilanguage__Locales__0__LocaleID=ua
SeekTable_ST__Appearance__Multilanguage__Locales__0__UserLabelsFile=/app/locales/uk-UA_user.json
SeekTable_ST__Appearance__Multilanguage__Locales__0__AppLabelsFile=/app/locales/uk-UA.json
SeekTable_ST__Appearance__Multilanguage__Locales__0__CubeFormatCulture=uk-UA
# 2nd (index=1) locale "de"
SeekTable_ST__Appearance__Multilanguage__Locales__1__LocaleID=de
SeekTable_ST__Appearance__Multilanguage__Locales__1__UserLabelsFile=/app/locales/de-DE_user.json
SeekTable_ST__Appearance__Multilanguage__Locales__1__AppLabelsFile=/app/locales/de-DE.json
SeekTable_ST__Appearance__Multilanguage__Locales__1__CubeFormatCulture=de-DE
# (next locale should use index=2 and so on)
Variable Description
TranslatePublishedReportLabels Determines whether to translate report-specific labels (rows/columns/values "Label" overrides, custom chart X/Y-axes labels) in published reports and shared (via "Team sharing") reports. This translation is based on UserLabelsFile.
TranslateOnlySharedCubeLabels Translate cube labels (dimensions/measures/parameters) only when it is accessed as a 'shared' cube. Otherwise, cube labels are always translated according to the user's language selection. Note that "cube configuration form" always shows non-translated labels.
TranslateReadOnlyEntityName Translate cubes & reports names when they are accessed as read-only (shared) items. This translation is based on UserLabelsFile.
AllowSwitchLanguageByUser Allow end users to switch UI language in "Manage Account".
LocaleID Unique locale identifier.
UserLabelsFile Location of JSON file with user-defined labels (cube labels, report-specific labels) translation.
AppLabelsFile Location of JSON file with app UI labels translation.
CubeFormatCulture The culture name in the format languagecode2-country used for dates/numbers formatting. Affects localization of month/day-of-week names. languagecode2 is a lowercase two-letter code as defined in ISO 639-1, or, if no two-letter code is available, a three-letter code as defined in ISO 639-3. country contains a value defined in ISO 3166 and usually consists of two uppercase letters. For example:
de-DE
German, Germany
de-CH
German, Switzerland
da-DK
Danish, Denmark
en-CA
English, Canada
en-US
English, United States
en-GB
English, United Kingdom
fi-FI
Finnish, Finland
fr-FR
French, France
fr-CA
French, Canada
hu-HU
Hungarian, Hungary
el-GR
Greek, Greece
it-IT
Italian, Italy
lt-LT
Lithuanian, Lithuania
sv-SE
Swedish, Sweden
es-ES
Spanish, Spain
nb-NO
Norwegian (Bokmal), Norway
nl-NL
Dutch, Netherlands
pl-PL
Polish, Poland
uk-UA
Ukrainian, Ukraine
This is incomplete list of supported cultures. If your one is not listed, contact us to confirm that it is supported.

JSON files with labels translation should be located in host's folder and mounted to seektable container by adding the following line into docker-compose.yml file:

  seektable:
    image: seektable:latest
    expose:
     - 5000
    ports:
     - 80:5000
	volumes:
      - /var/seektable/locales:/app/locales
      - csv-files-volume:/app-data/csv-files

where /var/seektable/locales is a host-server location, and /app/locales is a bases path used in docker-compose.seektable.env.

Don't forget to re-create SeekTable docker containers to apply these changes. Then, go to "Admin" → "System setup" → "UI Localization", you should see a message that confirms multi-language support and the list of loaded locale IDs.

Once configured, these locale IDs can be specified in secure embedding JWT payload using seektable_user_locale_id=LocaleID.