LocaleSmith
Text každého klíče .resx přímo tam, kde se klíč používá: hodnoty za řádkem, všechny překlady po najetí myší, chybějící překlady a chybné zástupné symboly označené dřív, než je uvidí uživatelé.
Zdarma · Visual Studio 2022 a 2026 · 14 jazyků rozhraní · žádná telemetrie
Proč LocaleSmith

Kód, který se dá číst
Strings.InvoiceSaved toho moc neřekne; „Invoice {0} saved“ řekne všechno. Text stojí za řádkem, nenápadně a kurzívou.
Všechny jazyky po ruce
Najeďte myší na hodnotu a uvidíte všechny její překlady. Nebo přepněte celý editor do němčiny či japonštiny a prohlédněte si obrazovky ještě před spuštěním aplikace.
Chyby dřív, než je uvidí uživatelé
Chybějící překlady, {1}, který výchozí text nemá, překlep v klíči, string.Format s příliš málo argumenty — vše podtržené přímo v kódu.
Zdarma a bez háčků
Žádné předplatné, zkušební verze, otravná okna ani telemetrie. Funguje ve Visual Studiu 2022 a 2026, x64 i ARM64.
Funkce
- Hodnoty vedle klíčů: text každého klíče za jeho řádkem, v uvozovkách; zástupné symboly jako
{0}jsou barevné, zalomení řádků se zobrazí jako ↵. - Jazyk náhledu: hodnoty v libovolném jazyce vašich prostředků; hodnota, kterou by .NET vzal z výchozích prostředků, je žlutá se symbolem ⚠.
- Všechny překlady po najetí myší: karta se všemi jazyky klíče; kliknutím otevřete .resx daného jazyka přímo na hodnotě — chybějící se přidá automaticky.
- Problémy v kódu: chybějící překlady, nesoulad zástupných symbolů, neznámé klíče a volání
string.Formatse špatným počtem argumentů, jako vlnovky. - Extrakce do prostředku: Ctrl+. na řetězci v C#, Visual Basicu nebo XAML ho přesune do souboru .resx a na jeho místo vloží klíč.
- Vždy aktuální: soubory .resx v řešení se načítají na pozadí a sledují; uložená změna se projeví okamžitě.
- Tmavý i světlý motiv: barvy se řídí motivem Visual Studia.
Rozpoznávané klíče
| V kódu | Kde |
|---|---|
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 a Blazor: IStringLocalizer, IViewLocalizer |
GetString("Key") | ResourceManager a lokalizátory |
Všechny překlady po najetí myší
Podržte ukazatel na hodnotě: karta ukáže klíč ve všech jazycích, chybějící žlutě. Kliknutím na jazyk otevřete jeho .resx s vybranou hodnotou — stačí ji přepsat. Otevřít v .resx a Kopírovat klíč jsou nahoře.

Problémy
Problémy jsou vlnovky jako upozornění kompilátoru, takže je ukáže každý nástroj, který ukazuje upozornění — LensSmith je vypíše na konec řádku. Každé pravidlo lze vypnout.

| Pravidlo | Co se podtrhne |
|---|---|
| LOC001 | Klíč, který v některých jazykových souborech chybí, se seznamem těchto jazyků. |
| LOC002 | Překlad s jinými zástupnými symboly než výchozí text; nadbytečný symbol selže za běhu, proto je to chyba. |
| LOC003 | localizer["Key"] nebo GetString("Key") s klíčem, který nemá žádný soubor prostředků, s nejbližším existujícím klíčem. |
| LOC004 | string.Format(Strings.Key, …) s menším počtem argumentů, než text potřebuje (chyba), nebo s větším, než používá (upozornění). |
Extrakce do prostředku
Umístěte kurzor do řetězce a stiskněte Ctrl+. — Extrahovat do prostředku… navrhne klíč podle textu a nejbližší soubor .resx. Pokud soubor text už obsahuje, použije se jeho klíč. Řetězec se nahradí výrazem Strings.Key (s oborem názvů, pokud ho soubor neimportuje), v XAML výrazem {x:Static res:Strings.Key}, přičemž xmlns se přidá automaticky.

Nastavení
Nástroje → Možnosti → SmithWorks → LocaleSmith. Každá možnost má popis a náhled nahoře hned ukáže hodnoty ve zvoleném jazyce.
| Možnost | Výchozí |
|---|---|
| Zobrazovat hodnoty prostředků vedle klíčů | zapnuto |
| Jazyk náhledu | Výchozí prostředky |
| Maximální délka | 80 |
| Problémy: LOC001–LOC004 | vše zapnuto |
| Extrahovat do prostředku v nabídce žárovky | zapnuto |
Nastavení se ukládá do %LocalAppData%\LocaleSmith.

Časté dotazy
Které soubory .resx čte?
Každý soubor .resx ve složce řešení (té se souborem .sln nebo .slnx, případně v kořeni repozitáře) kromě bin, obj a node_modules. Obrázky a další netextové prostředky se přeskakují.
Proč za klíčem není žádná hodnota?
Klíč musí existovat v souboru .resx v řešení a název třídy musí odpovídat názvu souboru (Strings.resx → Strings; tečky se mění na podtržítka, stejně jako u generátoru). Hodnoty se objeví chvíli po otevření řešení, jakmile se soubory načtou.
Po extrakci je nová vlastnost podtržená. Proč?
Silně typovaná třída (Strings.Designer.cs) se vygeneruje znovu hned, pokud ji projekt vytváří vlastním nástrojem; projekty, které ji generují při sestavení, dostanou vlastnost po dalším sestavení.
{x:Static} v XAML nenajde moji třídu prostředků.
x:Static potřebuje veřejnou třídu. V návrháři prostředků nastavte modifikátor přístupu souboru .resx na Public, nebo použijte veřejnou obálku.
Funguje společně s LensSmith?
Ano. Obě rozšíření píší na konec řádků, takže se o toto místo dělí: nejdřív hodnota klíče, za ní diagnostická zpráva. Problémy LocaleSmith se v LensSmith zobrazí jako jakékoli jiné upozornění.
Odesílá LocaleSmith nějaká data?
Ne. Nemá žádnou telemetrii ani přístup k síti; vaše soubory prostředků zůstávají ve vašem počítači.
Kde nahlásit problém nebo navrhnout funkci?
Založte issue v repozitáři Feedback na GitHubu — jsou tam formuláře pro chyby a nápady (neveřejné názvy prosím změňte). Můžete také použít kartu Q&A na Marketplace.
Historie změn
1.0.1
- Odkaz „Ohodnotit na Marketplace“ v nastavení.
1.0.0
- První veřejné vydání.