How is your experience with the OutSystems Community?
15
Views
3
Comments
Default OutSystems Widgets (Calendar, Pagination, etc.) Are Not Localized After Langu
Question
Application Type
Reactive

While testing the multilingual implementation, we observed that the application content is translated correctly, but some default OutSystems widget texts remain in English.

Examples include:

  • Calendar widget
    • Month name (e.g., August)
    • Day names (e.g., Mon, Tue, Wed...)
  • Pagination text (e.g., 1 to 10 of 11 items)
  • Other default OutSystems widget labels, if applicable.

Expected Behavior:

  • All default widget content should be displayed in the selected application language (e.g., Portuguese, Vietnamese, Bahasa Indonesia).

Questions:

  • Are the default OutSystems widgets automatically localized based on the application's current language?
  • Do we need to provide translations manually for these default widget texts?
  • If manual localization is required, where should these translations be configured (e.g., Translation resources, Locales, or another configuration)?
    OutSystemsUI version my personal env = Version 2.27.0
    OutSystemsUI version  my client env = Version 2.6.7


Screenshot 2026-08-05 091238.png
Screenshot 2026-08-05 091858.png
2023-12-26 10-35-28
OutSystems Neo
Staff
AI Generated

Short answers first, then details:

  1. No – default OutSystems UI widgets are not fully localized automatically based only on the application language. Some parts are localized via built‑in locales, others are always English unless you configure them. Allows for translations on OutSystems UI widgets

  2. Yes – for several widgets (Calendar / DatePicker, Pagination, some labels), you still need to provide translations yourself.

  3. Where to configure:

    • For DatePicker / calendar: in the widget’s parameters (AdvancedFormat) or via the DatePickerSetLanguage client action + DatePickerLanguage static entity. No translations for DatePicker
    • For Pagination / other UI widgets: currently via OutSystems UI locales (when available), or by cloning the widget and replacing the texts, or by wrapping with your own logic. Allows for translations on OutSystems UI widgets
    • Application Locales / Translation Resources handle your texts (labels, messages, etc.), but do not automatically change all internal widget texts.

1. Automatic localization behavior

OutSystems has two different mechanisms:

  1. Application Multilingual (Locales + Translations)

    • This covers your UI text: screen labels, messages, static content, etc. Translating the app UI
    • It does not automatically translate all OutSystems UI internal strings (month names, “items”, “Cancel” in ActionSheet, etc.).
  2. OutSystems UI built‑in locales

    • Newer OutSystems UI versions have internal locale packs for some components (e.g., Pagination, some labels). Allows for translations on OutSystems UI widgets
    • These are limited to specific languages and specific widgets.
    • Behavior can differ between 2.6.7 and 2.27.0 because localization support has been added/improved over time.

So the situation you’re seeing (your app is translated, but widgets still show English like “August” and “1 to 10 of 11 items”) is expected with many current widgets, especially in older OutSystems UI versions.


2. DatePicker / Calendar translations

You have two main options for calendar texts (months, weekdays, navigation labels):

Option A – Use AdvancedFormat parameter

On the OutSystems UI DatePicker widget there’s an AdvancedFormat input (Reactive).
You can pass an i18n configuration object with your translated strings, for example:

"{ 
  i18n: {
    previousMonth : 'Anterior',
    nextMonth     : 'Próximo',
    previousYear  : 'Ano anterior',
    nextYear      : 'Próximo ano',
    previousDecade: 'Década anterior',
    nextDecade    : 'Próxima década',
    months        : ['Janeiro','Fevereiro','Março','Abril','Maio','Junho','Julho','Agosto','Setembro','Outubro','Novembro','Dezembro'],
    monthsShort   : ['Jan','Fev','Mar','Abr','Mai','Jun','Jul','Ago','Set','Out','Nov','Dez'],
    weekdays      : ['Domingo','Segunda','Terça','Quarta','Quinta','Sexta','Sábado'],
    weekdaysShort : ['Dom','Seg','Ter','Qua','Qui','Sex','Sáb'],
    todayButton   : 'Hoje'
  }
}"

This approach lets you define different AdvancedFormat values per language (for example, using a Translation resource or locale‑specific static data). No translations for DatePicker

Option B – Use DatePickerSetLanguage (OutSystems UI)

In newer OutSystems UI versions there’s a client action:

  • Client Action: DatePickerSetLanguage
  • Static Entity: DatePickerLanguage

You call DatePickerSetLanguage on the client, passing a value from DatePickerLanguage that matches the language you want (e.g., Portuguese‑BR, Vietnamese). This configures the DatePicker’s internal language bundle. DatePicker Translate

This is often easier if your target language is already supported by OutSystems UI. If not, you fall back to Option A or to cloning.


3. Pagination and other widget texts

For Pagination (“1 to 10 of 11 items”) and similar texts:

  • Newer OutSystems UI versions include some built‑in translations for certain locales (e.g., Dutch, as discussed in the forum). Allows for translations on OutSystems UI widgets
  • But:
    • The wording may not fit your domain (“items” vs. “rows”, “results”).
    • Not all languages are covered.
    • Older versions (like 2.6.7) may not have the locale you need or may fall back to English.

The OutSystems UI team confirmed that they cannot fully support translating all text elements from producer modules, and for unsupported languages you may need workarounds, including cloning widgets. Allows for translations on OutSystems UI widgets

Typical approaches:

  1. Upgrade OutSystems UI

    • Your personal env is already at 2.27.0; your client env is 2.6.7.
    • Upgrading the client env to a newer OutSystems UI version will give better locale coverage and fewer English leftovers.
  2. Clone / customize widget

    • For Pagination, ActionSheet “Cancel”, etc., if the default text is wrong or not available in your language:
      • Create a clone of the widget module in your own app.
      • Replace internal strings with expressions bound to Translation resources or Static Entities, keyed by the current locale.
      • Use your custom widget instead of the original.
  3. Wrap with your own text

    • For some widgets, you can hide built‑in labels and add your own text elements around them, fully controlled by Translation resources.

4. What you need to configure in practice

Given your environments and the languages mentioned (Portuguese, Vietnamese, Bahasa Indonesia):

  1. For DatePicker / calendar:

    • In 2.27.0, use:
      • DatePickerSetLanguage + DatePickerLanguage if your languages are supported; otherwise
      • AdvancedFormat with an i18n object containing month/weekday translations, per language. No translations for DatePicker
    • In 2.6.7, AdvancedFormat is the reliable option; language helper actions may be limited or absent.
  2. For Pagination:

    • Check if newer OutSystems UI supports your target languages correctly (in your personal env).
    • If yes, push for an upgrade on the client env to align behavior.
    • If no or if wording is not acceptable, clone Pagination and externalize its text to Translation resources keyed by locale.
  3. For other OutSystems UI default labels (ActionSheet “Cancel”, etc.):

    • Expect that many are not automatically localized.
    • Decide per widget:
      • Use built‑in locales (when available in your OutSystems UI version), or
      • Clone and externalize strings to Translation resources / static entities.

Summary

  • Default OutSystems UI widgets are not fully multilingual by default based solely on your app’s locale.
  • You do need manual configuration for some widget texts (especially DatePicker and Pagination), either through widget parameters (AdvancedFormat), OutSystems UI language actions (DatePickerSetLanguage), or by cloning widgets.
  • Application multilingual features (Locales + Translation resources) cover your own texts, but not all internal widget content, particularly on older OutSystems UI versions like 2.6.7. Translating the app UI
This answer was AI-generated. Please read it carefully and use the forums for clarifications
2021-09-06 15-09-53
Dorine Boudry
 
MVP

Hi @Amit J ,

Not sure about all the widgets, but pagination DOES have some built in translation.  

The thing is, not all languages are covered, and the translation for 'items' might be weird (some languages they translated to something funny or unappropriate, some languages they left in 'items' which might not be something normally used in that language.

If this is for a (paying) client, you can try to request your language to be added if it is missing.  Make sure to immediately make clear the proper translation for everything, that saves them time thinking about it, and if you are the first in that language, you get to shape it your way.  

Not sure what the timeline is though, on getting extra languages in.

These are the languages currently in OutSystems UI 2.28.0 


This is the translation for dutch, so if you can already give them these translations in the desired languages, maybe you can positively influence if and when they add it


@Gonçalo Martins it has been a while back since these translations were introduced, do you know the channel/process for asking extra languages to be added. 

2019-01-07 16-04-16
Siya
 
MVP

@Amit J : On my personal environment with OutSystems UI 2.28.0, by setting the SetCurrentLocale with "vi" this is what I see. The same can achievable with DatePickerSetLanguage ( widgetId , Entities.DatePickerLanguage.Vietname)


Coming to the pagination translation ( 1 to 7 of 7 items), Vietnames is not in the list as shared by @Dorine Boudry and hence falls back to English. You can reach out to OutSystems to request inclusion of the language, as suggested.

An interim option is to inject translation from the client side using JavaScript, but treat it purely as a workaround - it is coupled to the current OutSystemsUI markup and can break silently on a future version upgrade. Only attempt it if you are comfortable debugging JavaScript.

Community GuidelinesBe kind and respectful, give credit to the original source of content, and search for duplicates before posting.