Radzen Blazor Components

Localization

Radzen Blazor Components support resource-based localization out of the box. All user-facing text (labels, tooltips, ARIA labels, filter operators, paging text, etc.) can be translated using .NET's standard localization infrastructure.

Live demo link

Pick a language to translate the components below. Radzen Blazor ships with built-in translations for German, French, Spanish, Italian and Japanese. Open the filter menu, the column picker, the group panel and the paging summary on the grid, and the date picker, to see the localized strings update instantly.

info
This demo switches culture at runtime via an ILocalizer (Option 1 below). On Blazor WebAssembly that is the simplest way to change language in place, because satellite assemblies are only downloaded for the culture the app starts with. Server-rendered apps can rely on the satellite .resx files (Option 2) directly.
Language
Ziehen Sie eine Spaltenüberschrift hierher, um nach dieser Spalte zu gruppieren
DatePicker
Login

How it works link

Every localizable string property in Radzen components falls back to a resource key in RadzenStrings.resx when not explicitly set. The lookup goes through the Localizer class which checks for a custom ILocalizer implementation first, then falls back to the embedded resource file. This means:

  • The default English text works without any configuration.
  • Setting a property value directly (the existing approach) still overrides everything.
  • You can provide translations for all components at once via ILocalizer or satellite assemblies.

Option 1: ILocalizer (recommended) link

Implement the ILocalizer interface and register it in the DI container to provide translations for all components.

1. Create a class that implements ILocalizer:


using System.Globalization;
using Radzen;
using Radzen.Blazor;

public class CustomLocalizer : ILocalizer
{
    // Use a dictionary, database, JSON file, or any other source for translations
    private static readonly Dictionary<string, Dictionary<string, string>> Translations = new()
    {
        ["de"] = new()
        {
            [nameof(RadzenStrings.Pager_FirstPageTitle)] = "Erste Seite",
            [nameof(RadzenStrings.Pager_PrevPageTitle)] = "Vorherige Seite",
            [nameof(RadzenStrings.Pager_NextPageTitle)] = "Nächste Seite",
            [nameof(RadzenStrings.Pager_LastPageTitle)] = "Letzte Seite",
            [nameof(RadzenStrings.Pager_PageSizeText)] = "Einträge pro Seite",
            [nameof(RadzenStrings.Pager_PagingSummaryFormat)] = "Seite {0} von {1} ({2} Einträge)",
            [nameof(RadzenStrings.DataGrid_FilterText)] = "Filtern",
            [nameof(RadzenStrings.DataGrid_AndOperatorText)] = "Und",
            [nameof(RadzenStrings.DataGrid_OrOperatorText)] = "Oder",
            [nameof(RadzenStrings.DataGrid_ApplyFilterText)] = "Übernehmen",
            [nameof(RadzenStrings.DataGrid_ClearFilterText)] = "Löschen",
            [nameof(RadzenStrings.DataGrid_EqualsText)] = "Gleich",
            [nameof(RadzenStrings.DataGrid_ContainsText)] = "Enthält",
            [nameof(RadzenStrings.DataGrid_StartsWithText)] = "Beginnt mit",
            [nameof(RadzenStrings.DataGrid_EndsWithText)] = "Endet mit",
            // ... add more translations as needed
        }
    };

    public string? Get(string key, CultureInfo culture)
    {
        var lang = culture.TwoLetterISOLanguageName;

        if (Translations.TryGetValue(lang, out var strings)
            && strings.TryGetValue(key, out var value))
        {
            return value;
        }

        return null; // Fall back to the built-in default
    }
}

2. Register it in Program.cs before AddRadzenComponents():


builder.Services.AddScoped<ILocalizer, CustomLocalizer>();
builder.Services.AddRadzenComponents();
info
Return null from ILocalizer.Get() for any key you don't want to translate. The component will automatically fall back to the built-in English default.

Option 2: Satellite assemblies link

You can provide culture-specific .resx files that .NET compiles into satellite assemblies. This is the standard .NET localization mechanism.

1. Create a resource file named RadzenStrings.[culture].resx (e.g. RadzenStrings.de.resx) in your project.

2. Add the translated values using the same resource keys (e.g. Pager_FirstPageTitle, DataGrid_FilterText). You only need to include the keys you want to translate.

3. Configure the resource file in your .csproj to use the Radzen.Blazor.RadzenStrings resource name:


<ItemGroup>
  <EmbeddedResource Include="RadzenStrings.de.resx"
                    LogicalName="Radzen.Blazor.RadzenStrings.de.resources" />
</ItemGroup>

The ResourceManager will automatically load the correct culture at runtime based on CultureInfo.CurrentUICulture.

Option 3: Parameter override (per-instance) link

You can still set localized text directly on individual component instances. This takes the highest priority and overrides both resource files and ILocalizer.

This example shows a German login form using direct parameter values:

Resource keys link

Resource keys follow the convention ComponentName_PropertyName. Use nameof(RadzenStrings.Key) for compile-time safety. Below are some common examples:

DataGrid

KeyDefault
DataGrid_FilterTextFilter
DataGrid_EqualsTextEquals
DataGrid_ContainsTextContains
DataGrid_StartsWithTextStarts with
DataGrid_EndsWithTextEnds with
DataGrid_AndOperatorTextAnd
DataGrid_OrOperatorTextOr
DataGrid_ApplyFilterTextApply
DataGrid_ClearFilterTextClear
DataGrid_GroupPanelTextDrag a column header here and drop it to group by that column
DataGrid_ColumnsTextColumns
DataGrid_ExpandAllTitleExpand all
DataGrid_CollapseAllTitleCollapse all

Pager

KeyDefault
Pager_FirstPageTitleFirst page
Pager_PrevPageTitlePrevious page
Pager_NextPageTitleNext page
Pager_LastPageTitleLast page
Pager_PageSizeTextitems per page
Pager_PagingSummaryFormatPage {0} of {1} ({2} items)

Other components

All localizable resource keys are defined in RadzenStrings. Use your IDE's autocomplete with nameof(RadzenStrings.) to discover all available keys. The naming convention is ComponentName_PropertyName, for example:

  • Login_LoginText, Login_UserText, Login_PasswordText
  • Upload_ChooseText, Upload_DeleteText
  • DatePicker_ToggleAriaLabel, DatePicker_PrevMonthAriaLabel
  • Scheduler_TodayText, Scheduler_NextText, Scheduler_PrevText
  • ColorPicker_HexText, ColorPicker_ButtonText
  • HtmlEditorBold_Title, HtmlEditorImage_Title
  • Gantt_TodayText, Gantt_FilterText

Culture resolution link

Each Radzen component resolves the UI culture in this order:

  1. The component's own UICulture parameter (if explicitly set).
  2. A DefaultUICulture cascading value from a parent component.
  3. CultureInfo.CurrentUICulture (the thread default).

To set the culture for all components in your app, configure CultureInfo.DefaultThreadCurrentUICulture in Program.cs:


CultureInfo.DefaultThreadCurrentUICulture = new CultureInfo("de");

Priority order link

When a component renders a localizable string, the value is resolved in this order (highest priority first):

  1. Parameter value — explicitly set on the component instance.
  2. ILocalizer — custom translations registered in DI.
  3. RadzenStrings.resx — built-in resource file (supports satellite assemblies).
  4. Key itself — if the key is not found in any source, the key string is returned as-is (fallback).

Radzen Blazor Newsletter

Get an email when new components and releases ship.

All the tools in one place

Save Hours on Every Project

With Radzen Blazor subscription you get the full toolkit, including:

support

Dedicated support backed by proven expertise

palette

Premium themes and theme editor

widgets

Ready-to-use UI blocks

dashboard_customize

Complete app templates

format_shapes

Visual design-time-experience

Radzen Blazor Studio

Radzen Blazor Components, © 2018-2026 Radzen.
Source Code licensed under MIT

Demos Configuration

Premium Themes

  • Material 3
  • Material 3 Dark
  • Material 3 Expressive
  • Material 3 Expressive Dark
  • Fluent
  • Fluent Dark

Free Themes

  • Material
  • Material Dark
  • Standard
  • Standard Dark
  • Default
  • Dark
  • Humanistic
  • Humanistic Dark
  • Software
  • Software Dark
An error has occurred. This app may no longer respond until reloaded. Reload 🗙