Search code examples
c#blazorblazor-server-sidemudblazor

MudBlazor, DataGrid Filter change language


I would like to change the language used in the labels of the filters of the DataGrid. By default the labels are in English and I would like to have them in German.

Filter in MudBlazor

I have tried to change the general language of the application in the programme.cs with this line:

app.UseRequestLocalization("de");


Solution

  • i got solver!!!

    1 - 1 Update your version of Mudblazor

    2 - put the following line in program.cs

    builder.Services.AddTransient<MudLocalizer, CustomMudLocalizerImpl>();
    

    3 - Create a class named CustomMudLocalizerImpl and paste the following code:

    using Microsoft.Extensions.Localization;
    using MudBlazor;
    
        internal class CustomMudLocalizerImpl : MudLocalizer
        {
            private Dictionary<string, string> _localization;
    
            public CustomMudLocalizerImpl()
            {
                _localization = new()
            {
    
                { "MudDataGrid.AddFilter", "Adicionar filtro" },
                { "MudDataGrid.Apply", "Aplicar" },
                { "MudDataGrid.Cancel", "Cancelar" },
                { "MudDataGrid.Clear", "Limpar" },
                { "MudDataGrid.CollapseAllGroups", "Recolher todos os grupos" },
                { "MudDataGrid.Column", "Coluna" },
                { "MudDataGrid.Columns", "Colunas" },
                { "MudDataGrid.contains", "Contem" },
                { "MudDataGrid.ends with", "Termina com" },
                { "MudDataGrid.equals", "Igual" },
                { "MudDataGrid.ExpandAllGroups", "Expandir todos os grupos" },
                { "MudDataGrid.Filter", "Filtro" },
                { "MudDataGrid.False", "Falso" },
                { "MudDataGrid.FilterValue", "Valor filtro" },
                { "MudDataGrid.Group", "Grupo" },
                { "MudDataGrid.Hide", "Esconder" },
                { "MudDataGrid.HideAll", "Esconder todos" },
                { "MudDataGrid.is", "é" },
                { "MudDataGrid.is after", "é após" },
                { "MudDataGrid.is before", "é antes" },
                { "MudDataGrid.is empty", "é vazio" },
                { "MudDataGrid.is not", "Não é" },
                { "MudDataGrid.is not empty", "Não é vazio" },
                { "MudDataGrid.is on or after", "está ligado ou após" },
                { "MudDataGrid.is on or before", "está ligado ou antes" },
                { "MudDataGrid.not contains", "não contém" },
                { "MudDataGrid.not equals", "não é igual" },
                { "MudDataGrid.Operator", "Operador" },
                { "MudDataGrid.RefreshData", "Atualizar dados" },
                { "MudDataGrid.Save", "Salvar" },
                { "MudDataGrid.ShowAll", "Mostrar tudo" },
                { "MudDataGrid.starts with", "Começa com" },
                { "MudDataGrid.True", "Verdadeiro" },
                { "MudDataGrid.Ungroup", "Desagrupar" },
                { "MudDataGrid.Unsort", "Ordenar" },
                { "MudDataGrid.Value", "Valor" }
            };
            }
    
            public override LocalizedString this[string key]
            {
                get
                {
                    var currentCulture = Thread.CurrentThread.CurrentUICulture.Parent.TwoLetterISOLanguageName;
                    if (currentCulture.Equals("pt", StringComparison.InvariantCultureIgnoreCase)
                        && _localization.TryGetValue(key, out var res))
                    {
                        return new(key, res);
                    }
                    else
                    {
                        return new(key, key, true);
                    }
                }
            }
        }
    

    4 - Translate and place your "culture",You can put a breakpoint and see the translation, the moment you click on the filter

    Result: enter image description here