Skip to Main Content
Preset Feature Feedback
Status Needs review
Created by Customer Engagement
Created on Aug 24, 2026

Configurable D3 number locale (decimal / thousands separators) at workspace level

What is the problem or goal you're trying to solve or accomplish?

The customer's users are Italian and expect numbers rendered in the Italian locale — 74.932,00 and 1.234.567,89 — where . is the group separator and , is the decimal separator. Preset's frontend formats all numeric values through d3-format using the default US English locale (. decimal, , thousands), and that locale is fixed.

The distinction that matters here: the D3 format specifier exposed in the UI (,.2f, .1%, $,.2f, etc.) only controls whether digits are grouped, the precision, the type, and the sign. The characters used for grouping and the decimal point come from the D3 locale definition (decimal, thousands, grouping, currency), which is applied via formatDefaultLocale() at application bootstrap. Consequently there is no value the customer can type into the D3 format control — on any chart type — that produces Italian formatting. The capability is simply absent from the product surface.

Upstream Superset exposes a D3_FORMAT deployment config for exactly this purpose, but Preset does not surface it to customers at team, workspace, or user level, so there is no path to it in Preset Cloud.

The customer explicitly asked for a central configuration rather than per-chart or per-column workarounds. Their environment is a multi-dashboard Interactive Table deployment, so a per-column approach does not scale.

How are you solving it currently?

They are not — there is no working configuration today. The only available workaround is to pre-format numbers as strings in SQL (e.g. TO_CHAR plus separator swapping in the dataset or virtual dataset), which the customer has not adopted and which carries material regressions on the Table chart:

  • The column becomes a string, so sorting becomes lexicographic rather than numeric

  • Cell bars, conditional formatting, and column totals stop functioning

  • The transformation must be repeated per numeric column, per dataset

The customer is currently accepting US formatting in the UI.

What is your recommended solution?

Expose the D3 locale definition as a configurable setting in Preset — ideally at workspace (or team) level, so it applies consistently across all charts and dashboards without per-chart intervention. The customer referenced the standard D3 locale files (it-IT.json) as the expected input shape:

json

{
"decimal": ",",
"thousands": ".",
"grouping": [3],
"currency": ["", " €"]
}

Additional considerations worth capturing for engineering scoping:

  • Whether the setting should be workspace-level, team-level, or per-user (a per-user preference would serve multi-region orgs better than a single workspace value)

  • Whether the locale should also apply to CSV/Excel exports and scheduled report attachments, or UI rendering only — the customer's expectation is likely "everywhere," and a UI-only implementation should be communicated as such

  • Whether D3_TIME_FORMAT (date/time locale) should be included in the same setting, since Italian users will very likely raise DD/MM/YYYY next

  • Attach files
  • +1