Günümüzde birçok uygulamanın farklı dillerde kullanıcılarla buluşması gerekiyor. Bu da, uygulamalarda çok dilli desteği sağlamak için yerelleştirme (localization) kavramının önemini artırıyor. .NET Core MVC uygulamalarında kullanıcı dostu bir dil desteği sağlamak için ILocalisationService kullanılır. Bu blog yazısında, ILocalisationService’in ne olduğunu, nasıl çalıştığını ve çok dilli bir uygulama geliştirmede size nasıl yardımcı olabileceğini örneklerle anlatacağız.

Yerelleştirme ve Kültürel Farklılıklar
Yerelleştirme (localization), uygulamayı farklı dillerde ve kültürel normlara uygun şekilde sunma sürecidir. Örneğin, İngilizce bir uygulamanın Almanca ya da Türkçe bir sürümünü sunmak istediğinizde yerelleştirme yapmanız gerekir. .NET Core MVC’de, kullanıcıların tercih ettiği dile göre metinleri, tarih biçimlerini ve diğer kültürel içerikleri yönetmek için ILocalisationService kullanılır.

ILocalisationService Nedir?
ILocalisationService, .NET Core MVC projelerinde yerelleştirme hizmetini sağlayan bir arayüzdür. Bu servis, uygulamanızdaki metinlerin çeşitli dillere çevrilmesi ve kullanıcıya göre uygun dilin gösterilmesi için gerekli işlevleri sunar. ILocalisationService ile kaynak dosyalarda (resource files) tanımlı metinleri belirli bir dile göre çekebilir ve bunları uygulamanızda görüntüleyebilirsiniz.
.NET Core MVC’de Yerelleştirme Yapılandırması
Başlamadan önce, Startup.cs dosyasında yerelleştirme yapılandırmalarını yapmamız gerekiyor. Bu adımlar ILocalisationService’i etkin bir şekilde kullanabilmemiz için gereklidir.
1. Gereken Paketleri Ekleyin
.NET Core MVC projenize Microsoft.Extensions.Localization kütüphanesini ekleyerek yerelleştirme özelliklerinden faydalanabilirsiniz.
2. ILocalisationService’i Yapılandırın
Startup.cs dosyasına gidin ve ConfigureServices metoduna aşağıdaki kodları ekleyin:
public void ConfigureServices(IServiceCollection services) { services.AddControllersWithViews(); services.AddLocalization(options => options.ResourcesPath = "Resources"); services.Configure<RequestLocalizationOptions>(options => { var supportedCultures = new[] { "en-US", "tr-TR", "de-DE" }; options.SetDefaultCulture(supportedCultures[0]) .AddSupportedCultures(supportedCultures) .AddSupportedUICultures(supportedCultures); }); } |
Bu kodda, ResourcesPath ile yerelleştirme kaynak dosyalarının nerede bulunacağını belirtmiş oluyoruz. SupportedCultures kısmında ise uygulamanın destekleyeceği dilleri tanımlıyoruz. Bu örnekte İngilizce, Türkçe ve Almanca dillerini ekledik.
3. ILocalisationService’i Middleware’de Kullanma
Yerelleştirme ayarlarının tüm isteklere uygulanması için Configure metoduna bir middleware eklememiz gerekiyor:
public void Configure(IApplicationBuilder app, IWebHostEnvironment env) { app.UseRequestLocalization(); if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); } else { app.UseExceptionHandler("/Home/Error"); } app.UseStaticFiles(); app.UseRouting(); app.UseAuthorization(); app.UseEndpoints(endpoints => { endpoints.MapControllerRoute( name: "default", pattern: "{controller=Home}/{action=Index}/{id?}"); }); } |
Bu kod, Request Localization Middleware kullanarak isteklere göre uygun kültür ayarlarını yüklememizi sağlar.
Kaynak Dosyaları ile Metinlerin Çevirisini Yapmak
ILocalisationService, Resources klasöründe tanımladığınız .resx dosyalarını kullanarak belirli dillere göre metinleri otomatik olarak yükler. Örneğin, “HomeController” için bir çeviri yapmak istiyorsanız HomeController.en-US.resx ve HomeController.tr-TR.resx gibi dosyalar oluşturmalısınız.

1. Resources klasöründe Controllers altında HomeController.en-US.resx dosyası oluşturun ve içine aşağıdaki gibi bir metin ekleyin:
|
Name |
Value |
|
|
WelcomeText |
|
2. Aynı klasörde HomeController.tr-TR.resx dosyasını oluşturun ve aynı anahtar için Türkçe çeviri ekleyin:
|
Name |
Value |
|
WelcomeText |
Sitemize Hoşgeldiniz |
Bu iki dosya, WelcomeText anahtarına göre dil ayarlarına uygun metinleri çekecektir.

ILocalisationService ile Kaynakları Kullanma
HomeController’da ILocalisationService’i kullanarak bu metinleri gösterebiliriz:
using Microsoft.Extensions.Localization; public class HomeController : Controller { private readonly IStringLocalizer<HomeController> _localizer; public HomeController(IStringLocalizer<HomeController> localizer) { _localizer = localizer; } public IActionResult Index() { ViewData["WelcomeMessage"] = _localizer["WelcomeText"]; return View(); } } |
Bu kodda, IStringLocalizer arayüzü ile HomeController’daki kaynak dosyasını localizer["WelcomeText"] kullanarak çekiyoruz. Böylece, View kısmında WelcomeMessage değişkeni olarak istediğimiz dilde karşımıza çıkacak.
Görünümde (View) Yerelleştirilmiş Veriyi Kullanma
Son olarak, View (görünüm) dosyanızda WelcomeMessage değişkenini kullanabilirsiniz:
<h1>@ViewData["WelcomeMessage"]h1> |
Bu sayede, dil ayarlarına bağlı olarak “Welcome to our site” veya “Sitemize hoş geldiniz” mesajları ekrana gelir.
Çok Dilli Destek Sağlamanın Faydaları
ILocalisationService ile uygulamanıza çok dilli destek eklemek, kullanıcı deneyimini iyileştirmenin ötesinde global erişimi artırır ve farklı kültürlerdeki kullanıcıları uygulamanıza çekme fırsatı sunar. Kullanıcı dostu bir deneyim sunmanın en iyi yollarından biri, onların dilinde konuşmaktır!
Yerelleştirme İçin İpuçları
1.
Tüm Statik Metinleri Kaynak Dosyalara Taşıyın
Metinleri kaynak dosyalara taşımak, dil desteğini yönetmenizi kolaylaştırır.
2.
Dil Seçimi için Kullanıcıya Seçenek Sunun
Kullanıcılara uygulamada dil değiştirme imkanı tanıyın. Bu sayede kullanıcılar
tercih ettikleri dilde uygulamayı kullanabilirler.
3. Desteklenen Dilleri Belirleyin ve Test Edin
Destekleyeceğiniz dilleri doğru seçin ve bu diller için uygulamayı iyice test
edin.

.NET Core MVC projelerinde çok dilli destek sağlamak, uygulamanın geniş bir kitleye ulaşması için oldukça önemlidir. ILocalisationService, bu konuda geliştiricilere esnek ve güçlü bir çözüm sunar. Yukarıdaki adımları izleyerek uygulamanızda kullanıcı dostu bir yerelleştirme desteği sağlayabilirsiniz. Böylece, kullanıcıların kendilerini daha özel hissetmesini sağlarken global pazarda uygulamanızı öne çıkarabilirsiniz.