An on-prem SeekTable with white-label mode activated supports UI label customization, which can be used to switch the UI to a non-English language by specifying JSON config at Admin → UI 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:
SeekTable provides internationalization and localization features that make it possible to build multi-language reports and dashboards, allowing each user to view them according to their language preference. This may be especially important when SeekTable is embedded into the host web app that supports multiple languages: 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-to-translation pairs), for example:
{
"Year": "Jahr",
"Month": "Monat",
"Product": "Produkt"
}
These files must then be registered in docker-compose.seektable.env as follows:
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__LocaleName=Ukrainian SeekTable_ST__Appearance__Multilanguage__Locales__0__AppLabelsFile=/app/locales/uk-UA.json SeekTable_ST__Appearance__Multilanguage__Locales__0__UserLabelsFile=/app/locales/uk-UA_user.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__LocaleName=German SeekTable_ST__Appearance__Multilanguage__Locales__1__AppLabelsFile=/app/locales/de-DE.json SeekTable_ST__Appearance__Multilanguage__Locales__1__UserLabelsFile=/app/locales/de-DE_user.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. |
LocaleName |
The display name for this language in the UI switcher (optional). |
AppLabelsFile |
Location of JSON file with app UI labels translation. Examples/ready-to-use translations are available at github.com/seektable/localization. |
UserLabelsFile |
Location of JSON file with user-defined labels (cube labels, report-specific 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:
|
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.
In dashboards, use the Dashboard.localeId global JS variable to localize labels in HTML templates.