LocaleSmith
Her .resx anahtarının metni, anahtarın kullanıldığı yerde: satırın sonunda değerler, üzerine gelince tüm çeviriler; eksik çeviriler ve hatalı yer tutucular kullanıcılarınız görmeden işaretlenir.
Ücretsiz · Visual Studio 2022 ve 2026 · 14 arayüz dili · telemetri yok
Neden LocaleSmith

Okunabilir kod
Strings.InvoiceSaved pek bir şey söylemez; “Invoice {0} saved” her şeyi söyler. Metin satırdan sonra, sade ve italik durur.
Tüm diller elinizin altında
Bir değerin tüm çevirilerini görmek için üzerine gelin ya da uygulamayı çalıştırmadan ekranlarınızı görmek için tüm düzenleyiciyi Almancaya veya Japoncaya geçirin.
Hatalar kullanıcılar görmeden
Eksik çeviriler, varsayılan metinde olmayan bir {1}, anahtarda bir yazım hatası, bağımsız değişkeni eksik bir string.Format — hepsinin kodda altı çizilir.
Ücretsiz, koşulsuz
Abonelik yok, deneme süresi yok, rahatsız edici uyarılar yok, telemetri yok. Visual Studio 2022 ve 2026'da, x64 ve ARM64 üzerinde çalışır.
Özellikler
- Anahtarların yanında değerler: her anahtarın metni satırından sonra, tırnak içinde;
{0}gibi yer tutucular renklidir, satır sonları ↵ olarak gösterilir. - Önizleme dili: değerler kaynaklarınızdaki herhangi bir dilde; .NET'in varsayılan kaynaklardan alacağı bir değer ⚠ ile sarı gösterilir.
- Üzerine gelince tüm çeviriler: anahtarın tüm dillerini gösteren bir kart; tıklayınca o dilin .resx dosyası doğrudan değerde açılır — değer eksikse sizin için eklenir.
- Koddaki sorunlar: eksik çeviriler, uyuşmayan yer tutucular, bilinmeyen anahtarlar ve yanlış sayıda bağımsız değişkenle yapılan
string.Formatçağrıları dalgalı alt çizgiyle gösterilir. - Kaynağa ayıkla: C#, Visual Basic veya XAML'de bir dizenin üzerinde Ctrl+. dizeyi bir .resx dosyasına taşır ve yerine anahtarı koyar.
- Her zaman güncel: çözümdeki .resx dosyaları arka planda okunur ve izlenir; kaydedilen bir değişiklik hemen görünür.
- Koyu ve açık temalar: renkler Visual Studio temasını izler.
Tanınan anahtarlar
| Kodda | Nerede |
|---|---|
Strings.Key, Properties.Resources.Key | C#, Visual Basic, F# |
{x:Static res:Strings.Key} | XAML (WPF, WinUI, MAUI, Avalonia) |
localizer["Key"], @Localizer["Key"] | ASP.NET Core ve Blazor: IStringLocalizer, IViewLocalizer |
GetString("Key") | ResourceManager ve yerelleştiriciler |
Üzerine gelince tüm çeviriler
İşaretçiyi bir değerin üzerinde bekletin: kart anahtarı tüm dillerde listeler, eksik olanlar sarıdır. Bir dile tıklayınca o dilin .resx dosyası değer seçili olarak açılır — üzerine yazmanız yeterli. .resx'te aç ve Anahtarı kopyala en üsttedir.

Sorunlar
Sorunlar, derleyici uyarıları gibi dalgalı alt çizgilerdir; bu yüzden uyarıları gösteren her araç bunları da gösterir — LensSmith bunları satırın sonuna yazar. Her kural kapatılabilir.

| Kural | Neyin altı çizilir |
|---|---|
| LOC001 | Bazı dil dosyalarında olmayan bir anahtar; bu dillerin listesiyle birlikte. |
| LOC002 | Varsayılan metinden farklı yer tutucular içeren bir çeviri; fazladan bir yer tutucu çalışma zamanında hataya yol açar ve hata sayılır. |
| LOC003 | Hiçbir kaynak dosyasında olmayan bir anahtarla localizer["Key"] veya GetString("Key"); en yakın mevcut anahtarla birlikte. |
| LOC004 | Metnin gerektirdiğinden az (hata) veya kullandığından fazla (uyarı) bağımsız değişkenle string.Format(Strings.Key, …). |
Kaynağa ayıkla
İmleci bir dizenin içine koyup Ctrl+. tuşlarına basın — Kaynağa ayıkla… metinden bir anahtar ve en yakın .resx dosyasını önerir. Dosyada bu metin zaten varsa onun anahtarı kullanılır. Dize Strings.Key ile (dosya ad alanını içeri aktarmıyorsa ad alanıyla birlikte) veya XAML'de {x:Static res:Strings.Key} ile değiştirilir; XAML'de xmlns sizin için eklenir.

Ayarlar
Araçlar → Seçenekler → SmithWorks → LocaleSmith. Her seçeneğin bir açıklaması vardır ve üstteki önizleme değerleri seçilen dilde anında gösterir.
| Seçenek | Varsayılan |
|---|---|
| Kaynak değerlerini anahtarların yanında göster | açık |
| Önizleme dili | Varsayılan kaynaklar |
| En fazla uzunluk | 80 |
| Sorunlar: LOC001–LOC004 | tümü açık |
| Ampul menüsünde Kaynağa ayıkla | açık |
Ayarlar %LocalAppData%\LocaleSmith klasöründe saklanır.

SSS
Hangi .resx dosyalarını okur?
Çözüm klasörünün (.sln veya .slnx dosyasının bulunduğu klasör ya da depo kökü) altındaki tüm .resx dosyalarını; bin, obj ve node_modules hariç. Görüntüler ve metin olmayan diğer kaynaklar atlanır.
Bir anahtardan sonra neden değer yok?
Anahtar çözümdeki bir .resx dosyasında bulunmalı ve sınıf adı dosya adıyla eşleşmelidir (Strings.resx → Strings; oluşturucunun yaptığı gibi noktalar alt çizgiye dönüşür). Değerler, çözüm açıldıktan kısa süre sonra, dosyalar okununca görünür.
Ayıklamadan sonra yeni özelliğin altı çiziliyor. Neden?
Kesin türü belirtilmiş sınıf (Strings.Designer.cs), proje bunun için özel bir araç kullanıyorsa hemen yeniden oluşturulur; sınıfı derleme sırasında oluşturan projelerde özellik bir sonraki derlemeden sonra gelir.
XAML'de {x:Static} kaynak sınıfımı bulamıyor.
x:Static için genel (public) bir sınıf gerekir. Kaynak tasarımcısında .resx dosyasının erişim değiştiricisini Public yapın veya genel bir sarmalayıcı kullanın.
LensSmith ile birlikte çalışır mı?
Evet. İkisi de satır sonlarına yazar ve bu alanı paylaşır: önce anahtarın değeri, ardından tanılama iletisi gelir. LocaleSmith sorunları LensSmith'te diğer uyarılar gibi görünür.
LocaleSmith herhangi bir veri gönderiyor mu?
Hayır. Telemetri ve ağ erişimi yoktur; kaynak dosyalarınız bilgisayarınızda kalır.
Bir sorunu nereye bildirebilir veya özellik önerebilirim?
GitHub'daki Feedback deposunda bir issue açın; hatalar ve fikirler için formlar vardır (özel adları değiştirin). Marketplace'teki Q&A sekmesini de kullanabilirsiniz.
Değişiklik günlüğü
1.0.1
- Ayarlarda “Marketplace'te değerlendir” bağlantısı.
1.0.0
- İlk genel sürüm.