Setting the default language

Copper Contributor

Hi, I am starting my first .Net Core web application. I cannot find the way to setup the default language for this application, to display the validation messages in my language (italian).

With .net framework this is very easy to do.

Can someone help me?

Thanks.

2 Replies

Hi, there is a gemini answer that is hard to make better 🙂

You're right, setting the default language in .NET Core requires a bit more configuration compared to .NET Framework. Here's how to achieve it for your first .NET Core web application to display validation messages in Italian:

1. Install the Localization Package:

Start by adding the Microsoft.AspNetCore.Localization NuGet package to your project. This package provides the necessary tools for localization in your .NET Core application.

 

2. Configure Localization Middleware:

In your Startup.cs file, locate the ConfigureServices method and add the following code to configure the localization middleware:

services.AddLocalization(options =>
{
    options.ResourcesPath = "Resources"; // Specify the folder containing resource files
});

services.AddMvc()
    .AddViewLocalization()
    .AddDataAnnotationsLocalization(); // Enable data annotation localization

This code does three things:

  • Enables localization for the application.
  • Sets the ResourcesPath property to indicate where your resource files will be stored. You can customize this path.
  • Configures MVC to use localization for views and data annotations (validation messages).

 

3. Create Resource Files:

Create a folder named Resources in your project (as specified in the code). Inside this folder, create a new RESX file named ValidationMessages.it.resx (replace .it with your actual Italian language code).

 

4. Populate Resource Files:
Open the ValidationMessages.it.resx file. You'll see default English validation messages. Translate these messages to Italian using the built-in visual editor or text editing tools.

 

5. Set Default Culture (Optional):

In your Startup.cs file, locate the Configure method and add the following code to set the default culture to Italian (optional):

 

var supportedCultures = new[] { new CultureInfo("it-IT") };
app.UseRequestLocalization(options =>
{
    options.DefaultCulture = supportedCultures[0];
    options.SupportedCultures = supportedCultures;
    options.SupportedUICultures = supportedCultures;
});

 

This code sets Italian (it-IT) as the default culture and specifies that your application supports Italian for both general culture and UI culture.

 

Additional Notes:

With these steps, your .NET Core web application will use Italian resource files for validation messages, providing a user-friendly experience for Italian speakers.

Hello @gudokjs,

 

thank you for your answer. I tried to apply your solution but is not working.

 

In particular, the code

 

options.DefaultCulture = supportedCultures[0];

 

is not correct with .net 8.

 

I've modified like this:

 

builder.Services.Configure<RequestLocalizationOptions>(options =>
{
var supportedCultures = new[] { "it-IT" };
options.SetDefaultCulture(supportedCultures[0])
.AddSupportedCultures(supportedCultures)
.AddSupportedUICultures(supportedCultures);
});

 

But my login form validation messages are displayed always in english.

 

What is wrong?

 

Thanks, Domenico.