ASP.NET Core altyapısı ile oluşturulan projelerde çoklu dil desteği oluşturmak için kullanılan 2 farklı yöntemden bahsedeceğim. Bu yazıda ise Resource file ile localization yönteminden başlayacağım. Diğeri ise SQL Localization yöntemi olacak.
RESOURCE FILE
ASP.NET Core altyapısı oluşturmak için ilk adım olarak;
Startup.cs içerisinde (Eğer .NET 6.0 üzeri kullanıyorsanız program.cs) Localization servisini ekleriz. Burada kendi projenize özel eklenen servisler varsa eklenebilir. Ben minimize edilmiş şekilde yazdım.
public void ConfigureServices(IServiceCollection services)
{
services.AddControllersWithViews();
services.AddLocalization(options => options.ResourcesPath = "Resources");
services.AddMvc(options => options.EnableEndpointRouting = false)
.AddViewLocalization(Microsoft.AspNetCore.Mvc.Razor.LanguageViewLocationExpanderFormat.Suffix)
.AddDataAnnotationsLocalization();
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Home/Error");
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseStatusCodePages();
app.UseRouting();
app.UseAuthentication();
app.UseAuthorization();
var cultures = new List<CultureInfo> {
new CultureInfo("en"),
new CultureInfo("fr")
};
app.UseRequestLocalization(options =>
{
options.DefaultRequestCulture = new Microsoft.AspNetCore.Localization.RequestCulture("en");
options.SupportedCultures = cultures;
options.SupportedUICultures = cultures;
});
app.UseMvc(
routes =>
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}"
));
}
Bu ayarlardan sonra ise Resources klasörü oluşturuyoruz. Buraya ise HomeController için “en” ve “fr” için iki ayrı .resx uzantılı dosya oluşturuyoruz.




Default olarak dil seçeneği “en” olarak seçildi. Eğer uygulamayı çalıştırırsak ve dil seçeneğini “fr” ile değiştirirsek;

Statik olarak kullanmak istediğimiz değerleri bu yöntemi kullanarak elde edebiliriz. Ancak dinamik olarak bu değerleri değiştirmek istersek SQL Localization yöntemi daha doğru bir kullanım olacaktır.