79610940

Date: 2025-05-07 15:52:08
Score: 1.5
Natty:
Report link

✅ How to localize MudDataGrid filters in MudBlazor (v7+) – With updated identifiers

If you're trying to localize the filter options of MudDataGrid and it's not working, you're likely using the old localization keys, like:

"MudDataGrid.contains"

These no longer work in newer versions of MudBlazor (v7+). The identifiers have changed to use underscores, like:

"MudDataGrid_Contains"

✔️ Solution (Updated and Working)

  1. Update MudBlazor to the latest version:
dotnet add package MudBlazor
  1. In your Program.cs:
builder.Services.AddTransient<MudLocalizer, CustomMudLocalizerImpl>();
  1. Create a class CustomMudLocalizerImpl with the updated keys:
using Microsoft.Extensions.Localization;
using MudBlazor;
using System.Globalization;
using System.Threading;

internal class CustomMudLocalizerImpl : MudLocalizer
{
    private readonly Dictionary<string, string> _localization;

    public CustomMudLocalizerImpl()
    {
        _localization = new()
        {
            { "MudDataGrid_AddFilter", "Agregar filtro" },
            { "MudDataGrid_Apply", "Aplicar" },
            { "MudDataGrid_Cancel", "Cancelar" },
            { "MudDataGrid_Clear", "Limpiar" },
            { "MudDataGrid_CollapseAllGroups", "Colapsar todos los grupos" },
            { "MudDataGrid_Column", "Columna" },
            { "MudDataGrid_Columns", "Columnas" },
            { "MudDataGrid_Contains", "Contiene" },
            { "MudDataGrid_NotContains", "No contiene" },
            { "MudDataGrid_Equals", "Igual a" },
            { "MudDataGrid_NotEquals", "Distinto de" },
            { "MudDataGrid_StartsWith", "Empieza con" },
            { "MudDataGrid_EndsWith", "Termina con" },
            { "MudDataGrid_IsEmpty", "Está vacío" },
            { "MudDataGrid_IsNotEmpty", "No está vacío" },
            { "MudDataGrid_Is", "Es" },
            { "MudDataGrid_IsNot", "No es" },
            { "MudDataGrid_IsAfter", "Es después de" },
            { "MudDataGrid_IsBefore", "Es antes de" },
            { "MudDataGrid_IsOnOrAfter", "Es en o después de" },
            { "MudDataGrid_IsOnOrBefore", "Es en o antes de" },
            { "MudDataGrid_Filter", "Filtro" },
            { "MudDataGrid_FilterValue", "Valor del filtro" },
            { "MudDataGrid_Group", "Grupo" },
            { "MudDataGrid_RefreshData", "Actualizar datos" },
            { "MudDataGrid_Save", "Guardar" },
            { "MudDataGrid_ShowAll", "Mostrar todo" },
            { "MudDataGrid_Hide", "Ocultar" },
            { "MudDataGrid_HideAll", "Ocultar todo" },
            { "MudDataGrid_Ungroup", "Desagrupar" },
            { "MudDataGrid_Unsort", "Quitar ordenamiento" },
            { "MudDataGrid_True", "Verdadero" },
            { "MudDataGrid_False", "Falso" },
            { "MudDataGrid_Value", "Valor" }
        };
    }

    public override LocalizedString this[string key]
    {
        get
        {
            var culture = Thread.CurrentThread.CurrentUICulture.TwoLetterISOLanguageName;
            if (culture.Equals("es", StringComparison.InvariantCultureIgnoreCase)
                && _localization.TryGetValue(key, out var translated))
            {
                return new LocalizedString(key, translated);
            }

            return new LocalizedString(key, key, true);
        }
    }
}

🧪 Bonus Tip

To debug the keys MudBlazor is actually requesting, you can add a breakpoint inside the indexer this[string key] and inspect which keys are triggered when you open the filter dialog.


🙌 Credits

Original idea by Rafael Parenza — Improved here with updated localization keys for MudBlazor v7+.


Reasons:
  • Blacklisted phrase (1): Está
  • Blacklisted phrase (1): está
  • Long answer (-1):
  • Has code block (-0.5):
  • Low reputation (1):
Posted by: Aarón Flores Pasos