Mühendislik//13 dk okuma

ResX Dosyaları ve Kaynak Dosya Editörleri: Eksiksiz .NET Yerelleştirme Rehberi

Eray Gündoğmuş
Paylaş

ResX Dosyaları ve Kaynak Dosya Editörleri: Eksiksiz .NET Yerelleştirme Rehberi

Bir .NET uygulamasına ikinci bir dil eklemeye çalıştıysanız, .resx dosyalarıyla karşılaşmışsınızdır. Bu dosyalar .NET yerelleştirmesinin temelini oluşturur — ve .NET Framework 1.0'dan bu yana var olmaktadır. Bu rehber, .resx dosyalarının nasıl çalıştığını, hem ASP.NET Core hem de WinForms/WPF'te yerelleştirme kurulumunun nasıl doğru yapılandırılacağını, hangi editörlerin işi kolaylaştırdığını ve alternatiflere ne zaman bakılmasının değerli olduğunu açıklar.


Özet / Temel Çıkarımlar

  • Bir .resx dosyası, .NET'in yerelleştirilmiş dizeler, görseller ve diğer verileri depolamak için kullandığı XML tabanlı bir kaynak dosyasıdır. Çalışma zamanı, geçerli iş parçacığı kültürüne göre doğru dosyayı yükler.
  • Uydu derleme modeli, yerel ayara özgü .resx dosyalarını ayrı .dll dosyalarına derler; böylece ana uygulamanız her çeviriyi gömmeden yayınlanır.
  • Visual Studio'nun yerleşik bir .resx editörü vardır, ancak birkaç dili aşınca kullanımı zorlaşır. ResXManager veya Zeta Resource Editor gibi üçüncü taraf araçlar, çok dilli düzenleme deneyimini önemli ölçüde iyileştirir.
  • .resx yerelleştirmesi, tüm varlıkların paketlenmesi gereken çevrimdışı masaüstü uygulamaları (WPF, WinForms, MAUI) için doğru varsayılan seçenektir.
  • Web uygulamaları için CDN tabanlı teslimat platformları, .resx iş akışlarını tamamlayabilir veya yerini alabilir; bu sayede çeviri güncellemeleri için yeniden derleme ve yeniden dağıtım döngüleri azalır.

ResX Dosyaları Nedir?

Bir .resx dosyası, .NET'in belirli bir dil veya kültür için adlandırılmış anahtar-değer çiftlerini — genellikle dizeleri — depolamak amacıyla kullandığı bir XML kaynak dosyasıdır. Uygulamanız çalıştığında, ResourceManager sınıfı geçerli iş parçacığının CultureInfo değerine göre doğru .resx dosyasını yükler; yerel ayara özgü bir dosya yoksa varsayılan (nötr) kaynak dosyasına geri döner.

XML Yapısı

<?xml version="1.0" encoding="utf-8"?>
<root>
  <resheader name="resmimetype">
    <value>text/microsoft-resx</value>
  </resheader>
  <resheader name="version">
    <value>2.0</value>
  </resheader>
  <data name="WelcomeMessage" xml:space="preserve">
    <value>Uygulamamıza hoş geldiniz!</value>
    <comment>Ana sayfanın hero bölümünde görüntülenir</comment>
  </data>
  <data name="SubmitButton" xml:space="preserve">
    <value>Gönder</value>
  </data>
</root>

Fransızca çeviri için Strings.resx'in yanına Strings.fr.resx oluşturun. Çalışma zamanı, kültür hiyerarşisini en özelden (fr-CA) nötrale (fr) ve varsayılana (Strings.resx) doğru takip eder.

Uydu Derlemeleri

.NET derleyicisi, yerel ayara özgü .resx dosyalarını uydu derlemeleri olarak adlandırılan ayrı .dll dosyalarına derler ve bu dosyaları kültür kodu alt dizinlerine yerleştirir. Microsoft'un belgelerine göre bu yaklaşım, ekiplerin dilleri bağımsız olarak güncellemesine olanak tanır.


ResX Tabanlı Yerelleştirme Nasıl Kurulur

Adım 1: Kaynak Dosyalarını Oluşturun

Resources/
  Strings.resx         ← varsayılan (İngilizce)
  Strings.fr.resx      ← Fransızca
  Strings.de.resx      ← Almanca
  Strings.ja.resx      ← Japonca

Adım 2: C#'ta Kaynaklara Erişin

using MyApp.Resources;
string message = Strings.WelcomeMessage;

Adım 3: Kültürü Ayarlayın

Thread.CurrentThread.CurrentUICulture = new CultureInfo("fr");

ASP.NET Core'da RequestLocalizationMiddleware kullanın.

Adım 4: IStringLocalizer Kullanın

public class HomeController : Controller
{
    private readonly IStringLocalizer<HomeController> _localizer;
    public HomeController(IStringLocalizer<HomeController> localizer) => _localizer = localizer;
    public IActionResult Index()
    {
        ViewData["Message"] = _localizer["WelcomeMessage"];
        return View();
    }
}

ASP.NET Core yerelleştirme belgelerine bakın.

Adım 5: WPF ve WinForms

<TextBlock Text="{x:Static props:Strings.WelcomeMessage}" />

En İyi Kaynak Dosya Editörleri

EditörPlatformÇok DilliOtomatik ÇeviriEn Uygun Kullanım
Visual StudioWindowsHayırHayırHızlı düzenlemeler
ResXManagerWindowsEvetGoogle Translate.NET ekipleri
Zeta Resource EditorWindowsEvetHayırKüçük ekipler
POEditorWebEvetMTGeliştirici olmayan çevirmenler
CrowdinWebEvetMTKurumsal
Better i18nWeb + CLIEvetYapay zeka destekliWeb + .NET hibrit

ResXManager en yaygın kullanılan araçtır — açık kaynak, yan yana düzenleme ve eksik çeviri vurgulama özellikleri sunar.


Yaygın Sorunlar

Çeviriler görünmüyor mu? Dosya adlandırmasında büyük/küçük harf duyarlılığını (Linux/macOS), uydu derleme varlığını ve AddLocalization() içindeki ResourcesPath ayarını kontrol edin.

Kültür geri dönüşü: fr-CAfr → varsayılan. Eksik anahtarlar sessizce geri döner.

Binlerce anahtar mı? İşlevsel alana göre bölün: Strings.Common.resx, Strings.Checkout.resx vb.

Dosyaları senkronize tutmak mı? ResXManager'ın eksik çeviri görünümünü veya derleme zamanı kontrolünü kullanın.


Modern Alternatifler

JSON Tabanlı: IStringLocalizer<T>, JSON sağlayıcılarıyla çalışır. Pull request'lerde daha okunabilir, ancak güçlü tür sarmalayıcısı yoktur.

CDN Tabanlı: Better i18n, çevirileri Cloudflare'in edge ağından sunar. Yeniden dağıtım yapmadan dizeleri güncelleyin.

.resx hâlâ doğru seçim olduğunda: Çevrimdışı çalışması gereken masaüstü uygulamaları (WPF, WinForms, MAUI). Uydu derlemeleri bu model için doğru yaklaşımdır.


Sonuç

Her .NET projesi için .resx ve Visual Studio ile başlayın. 3 veya daha fazla dilde ResXManager ekleyin. Web öncelikli projeler için JSON veya CDN'i değerlendirin. Masaüstü uygulamaları için .resx kullanmaya devam edin.


Kaynaklar

Son güncelleme: Mart 2026

Comments

Loading comments...