Forum Discussion
Multilanguage Field Parameter
Hello everyone,
I'm currently updating our reports to multilanguage. It is working fine for regular text elements or column names. However, I do have some issues to use the multilanguage feature with my field parameters.
I use those to enable users to select which columns they want to see in a table.
My question: how can I use a dynamic naming so that the users see the selection either in English or German?
This is how the field parameter looks like:
kpi_tabelle = {
("Placement", NAMEOF('Measuretable'[PLACEMENT]), 0),
("Impressions", NAMEOF('Measuretable'[SUM_IMPRESSIONS]), 1),
("Clicks", NAMEOF('Measuretable'[SUM_CLICKS]), 2),
("Spending", NAMEOF('Measuretable'[SUM_SPENT_PER_CAMP_ID]), 3)
}
This is how I did it for our text/buttons on the report, but it is not working for the field parameters.
ML_BTN_EDIT = SWITCH(USERCULTURE(),
"de-DE", "Bearbeiten",
"en-US", "Edit"
)
Thank you
Hi iceparrot,
You will need to set up your parameter table to include the culture as well as the equivalent of the field for that culture.
// Parameter table with culture Parameter = { // Culture: en-US ("Album", NAMEOF('Data'[album]), 0, "en-US"), ("Artist", NAMEOF('Data'[artist]), 1, "en-US"), ("Explicit", NAMEOF('Data'[explicit_text]), 2, "en-US"), ("Genre", NAMEOF('Data'[genre]), 3, "en-US"), ("Track Name", NAMEOF('Data'[track_name]), 4, "en-US"), ("Track ID", NAMEOF('Data'[track_id]), 5, "en-US"), // Culture: de-DE ("Album", NAMEOF('Data'[album]), 0, "de-DE"), ("Künstler", NAMEOF('Data'[artist]), 1, "de-DE"), ("Explizit", NAMEOF('Data'[explicit_text]), 2, "de-DE"), ("Genre", NAMEOF('Data'[genre]), 3, "de-DE"), ("Titel", NAMEOF('Data'[track_name]), 4, "de-DE"), ("Track-ID", NAMEOF('Data'[track_id]), 5, "de-DE"), // Culture: fr-FR ("Album", NAMEOF('Data'[album]), 0, "fr-FR"), ("Artiste", NAMEOF('Data'[artist]), 1, "fr-FR"), ("Explicite", NAMEOF('Data'[explicit_text]), 2, "fr-FR"), ("Genre", NAMEOF('Data'[genre]), 3, "fr-FR"), ("Nom de Piste", NAMEOF('Data'[track_name]), 4, "fr-FR"), ("ID Piste", NAMEOF('Data'[track_id]), 5, "fr-FR") }It is possible to automatically filter a slicer with a measure to the culture relevant to the user, but not if the field parameters are used in other visuals. Using the measure below will not filter the visible columns but will instead hide all rows:
culture_check = IF ( SELECTEDVALUE ( Parameter[Culture] ) = USERCULTURE (), 1 )
4 Replies
- pankajnamekar25Super User
Hello iceparrot
In Power BI, field parameter labels are static and cannot evaluate DAX like USERCULTURE().
So direct multilingual naming inside a single field parameter is not supported.Create separate field parameters per language
Example
KPI_Table_EN → English labels
KPI_Table_DE → German labels
Keep the same measures/columns in both parameters
Only the display names differ
Create a language selector
Either a Language slicer or auto-detect using USERCULTURE()
Create a DAX switcher measure
Chooses the correct field parameter based on selected language
Use the switcher measure in the table visual
Column headers change automatically between English and German - ZanquetaSuper User
Hi iceparrot
Field Parameters in Power BI are powerful for dynamic column selection, but they do not natively support dynamic display names based on culture because the names you define in the parameter table are static text.Here’s why your approach works for buttons but not for Field Parameters:- ML_BTN_EDIT uses a DAX measure with SWITCH(USERCULTURE()), which is evaluated at runtime.
- Field Parameter names are stored as literal text in the parameter table and are not evaluated dynamically.
Two Practical Approaches
1. Use a Translation Table for Display Names
Instead of hardcoding names in the Field Parameter, create a separate table with translations:Example Translation Table:ColumnKey en-US de-DE SelectedColumnName = VAR CurrentCulture = USERCULTURE() VAR SelectedKey = SELECTEDVALUE('Field Parameter'[ColumnKey]) RETURN SWITCH(CurrentCulture, "de-DE", LOOKUPVALUE('Translations'[de-DE], 'Translations'[ColumnKey], SelectedKey), "en-US", LOOKUPVALUE('Translations'[en-US], 'Translations'[ColumnKey], SelectedKey), SelectedKey )Placement_Measure = SWITCH(USERCULTURE(), "de-DE", "Platzierung", "en-US", "Placement" )Use this measure in your visual title or dynamic labels instead of relying on the static Field Parameter name.2. Dynamic Headers via Measures
If you want the column headers themselves to change language:- Instead of using Field Parameters directly for display names, use measures that return the translated name.
- For example:
Then include these measures in your Field Parameter definition instead of static text.Important Note
Field Parameters themselves cannot dynamically rename columns inside the table visual. The workaround is to:- Use dynamic titles and labels for user-facing text.
- Or replace Field Parameters with a custom slicer and measures if multilingual headers are critical.
If you have chance, I use Tabular Editor and strongly recommend it to achieve this goal. Please take a look at the links below for more details. https://tabulareditor.com/blog/creating-multilingual-power-bi-dataset
If this response was helpful in any way, I’d gladly accept a 👍
Placement Placement Platzierung Impressions Impressions Impressionen Clicks Clicks Klicks Spending Spending Ausgaben Then create a measure for the display name:
- cengizhanarslanSuper User
Field parameters don’t support dynamic labels via DAX (so USERCULTURE() can’t rename "Placement", "Clicks", etc.). The display names in a field parameter are static.
The practical workaround is to create separate field parameters per language and show the right one based on language.
Example:
kpi_tabelle_EN (Placement, Impressions, …)
kpi_tabelle_DE (Platzierung, Impressionen, …)
Then either:
Use a bookmark toggle (EN/DE) to show the correct slicer + table, or
Use a language table + field parameter selector pattern (two visuals, one per language), and hide/show based on language.
If you want the cleanest setup with minimal duplication: use two slicers (EN/DE) + two tables and control visibility with bookmarks. That’s the most reliable way today.
- danextianSuper User
Hi iceparrot,
You will need to set up your parameter table to include the culture as well as the equivalent of the field for that culture.
// Parameter table with culture Parameter = { // Culture: en-US ("Album", NAMEOF('Data'[album]), 0, "en-US"), ("Artist", NAMEOF('Data'[artist]), 1, "en-US"), ("Explicit", NAMEOF('Data'[explicit_text]), 2, "en-US"), ("Genre", NAMEOF('Data'[genre]), 3, "en-US"), ("Track Name", NAMEOF('Data'[track_name]), 4, "en-US"), ("Track ID", NAMEOF('Data'[track_id]), 5, "en-US"), // Culture: de-DE ("Album", NAMEOF('Data'[album]), 0, "de-DE"), ("Künstler", NAMEOF('Data'[artist]), 1, "de-DE"), ("Explizit", NAMEOF('Data'[explicit_text]), 2, "de-DE"), ("Genre", NAMEOF('Data'[genre]), 3, "de-DE"), ("Titel", NAMEOF('Data'[track_name]), 4, "de-DE"), ("Track-ID", NAMEOF('Data'[track_id]), 5, "de-DE"), // Culture: fr-FR ("Album", NAMEOF('Data'[album]), 0, "fr-FR"), ("Artiste", NAMEOF('Data'[artist]), 1, "fr-FR"), ("Explicite", NAMEOF('Data'[explicit_text]), 2, "fr-FR"), ("Genre", NAMEOF('Data'[genre]), 3, "fr-FR"), ("Nom de Piste", NAMEOF('Data'[track_name]), 4, "fr-FR"), ("ID Piste", NAMEOF('Data'[track_id]), 5, "fr-FR") }It is possible to automatically filter a slicer with a measure to the culture relevant to the user, but not if the field parameters are used in other visuals. Using the measure below will not filter the visible columns but will instead hide all rows:
culture_check = IF ( SELECTEDVALUE ( Parameter[Culture] ) = USERCULTURE (), 1 )