If you want to keep the date format as “tr-TR” but use the number format from “en-US”, you can create a custom CultureInfo object and set the NumberFormat property to the NumberFormatInfo object from the “en-US” culture. Here’s how you can do it:

using System.Globalization;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Localization;

var builder = WebApplication.CreateBuilder(args);
// ...

builder.Services.Configure<RequestLocalizationOptions>(options =>
{
    var customCulture = new CultureInfo("tr-TR");
    customCulture.NumberFormat = new CultureInfo("en-US").NumberFormat;

    var supportedCultures = new[] { customCulture };
    options.DefaultRequestCulture = new RequestCulture(customCulture);
    options.SupportedCultures = supportedCultures;
    options.SupportedUICultures = supportedCultures;
});

// ...
var app = builder.Build();
app.UseRequestLocalization();

// ...
app.Run();

This code creates a custom CultureInfo object with the date format from the “tr-TR” culture and the number format from the “en-US” culture. It then sets this custom culture as the default culture for the application. As a result, dates will be formatted according to the “tr-TR” culture and numbers will be formatted according to the “en-US” culture.

In a .NET 6 application, the Program.cs file is the new unified place for application startup configuration, replacing the Startup.cs file used in previous versions. However, if you’re still using a Startup.cs file, you can configure RequestLocalizationOptions in the ConfigureServices method.

public void ConfigureServices(IServiceCollection services)
{
    services.Configure<RequestLocalizationOptions>(options =>
    {
        var supportedCultures = new[] { new CultureInfo("tr-TR") };
        options.DefaultRequestCulture = new RequestCulture("tr-TR");
        options.SupportedCultures = supportedCultures;
        options.SupportedUICultures = supportedCultures;

        // Override number format to use dot as decimal separator
        options.DefaultRequestCulture.Culture.NumberFormat = new CultureInfo("en-US").NumberFormat;
    });

    // Other service configurations...
}

And then in the Configure method, use the UseRequestLocalization middleware:

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    app.UseRequestLocalization();

    // Other middleware configurations...
}

This will set the default culture to “tr-TR” for your application, but override the number format to use a dot as the decimal separator, like in “en-US”.