LocaleSmith
Il testo di ogni chiave .resx, proprio dove la chiave è usata: il valore a fine riga, tutte le traduzioni al passaggio del mouse, traduzioni mancanti e segnaposto errati segnalati prima che li vedano gli utenti.
Gratuito · Visual Studio 2022 e 2026 · 14 lingue dell’interfaccia · nessuna telemetria
Perché LocaleSmith

Codice leggibile
Strings.InvoiceSaved dice poco; «Invoice {0} saved» dice tutto. Il testo compare dopo la riga, discreto e in corsivo.
Tutte le lingue a portata di mano
Passa il mouse su un valore per vederne tutte le traduzioni, oppure porta l’intero editor in tedesco o in giapponese e guarda le schermate prima di avviare l’app.
Errori scoperti prima degli utenti
Traduzioni mancanti, un {1} che il testo predefinito non ha, un errore di battitura in una chiave, uno string.Format con troppo pochi argomenti: tutto sottolineato nel codice.
Gratuito, senza condizioni
Nessun abbonamento, nessuna prova, nessun promemoria insistente, nessuna telemetria. Funziona con Visual Studio 2022 e 2026, x64 e ARM64.
Funzionalità
- Valori accanto alle chiavi: il testo di ogni chiave dopo la sua riga, tra virgolette; i segnaposto come
{0}sono colorati, gli a capo appaiono come ↵. - Lingua di anteprima: i valori in qualsiasi lingua delle tue risorse; un valore che .NET prenderebbe dalle risorse predefinite è giallo con ⚠.
- Tutte le traduzioni al passaggio del mouse: una scheda con tutte le lingue della chiave; un clic apre il .resx di quella lingua direttamente sul valore e, se manca, lo aggiunge.
- Problemi nel codice: traduzioni mancanti, segnaposto non corrispondenti, chiavi sconosciute e chiamate
string.Formatcon un numero errato di argomenti, come sottolineature ondulate. - Estrai in risorsa: Ctrl+. su una stringa in C#, Visual Basic o XAML la sposta in un file .resx e al suo posto mette la chiave.
- Sempre aggiornato: i file .resx della soluzione vengono letti in background e monitorati; una modifica salvata compare subito.
- Temi scuro e chiaro: i colori seguono il tema di Visual Studio.
Chiavi riconosciute
| Nel codice | Dove |
|---|---|
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 e Blazor: IStringLocalizer, IViewLocalizer |
GetString("Key") | ResourceManager e localizer |
Tutte le traduzioni al passaggio del mouse
Lascia il puntatore su un valore: la scheda elenca la chiave in tutte le lingue, quelle mancanti in giallo. Fai clic su una lingua per aprirne il .resx con il valore selezionato: basta scriverci sopra. Apri nel file .resx e Copia chiave sono in alto.

Problemi
I problemi sono sottolineature ondulate come gli avvisi del compilatore, quindi li mostra ogni strumento che mostra gli avvisi: LensSmith li scrive a fine riga. Ogni regola si può disattivare.

| Regola | Cosa viene sottolineato |
|---|---|
| LOC001 | Una chiave che manca in alcuni file di lingua, con l’elenco di queste lingue. |
| LOC002 | Una traduzione con segnaposto diversi dal testo predefinito; un segnaposto in più fallisce in fase di esecuzione ed è un errore. |
| LOC003 | localizer["Key"] o GetString("Key") con una chiave che nessun file di risorse contiene, con la chiave esistente più simile. |
| LOC004 | string.Format(Strings.Key, …) con meno argomenti di quanti ne richieda il testo (errore) o più di quanti ne usi (avviso). |
Estrai in risorsa
Metti il cursore in una stringa e premi Ctrl+. — Estrai in risorsa… propone una chiave ricavata dal testo e il file .resx più vicino. Se il file contiene già il testo, viene usata la sua chiave. La stringa viene sostituita da Strings.Key (con lo spazio dei nomi se il file non lo importa) o da {x:Static res:Strings.Key} in XAML, dove lo xmlns viene aggiunto automaticamente.

Impostazioni
Strumenti → Opzioni → SmithWorks → LocaleSmith. Ogni opzione ha una descrizione e l’anteprima in alto mostra subito i valori nella lingua scelta.
| Opzione | Predefinito |
|---|---|
| Mostra i valori delle risorse accanto alle chiavi | attivo |
| Lingua di anteprima | Risorse predefinite |
| Lunghezza massima | 80 |
| Problemi: LOC001–LOC004 | tutti attivi |
| Estrai in risorsa nella lampadina | attivo |
Le impostazioni sono salvate in %LocalAppData%\LocaleSmith.

FAQ
Quali file .resx legge?
Tutti i file .resx nella cartella della soluzione (quella con il file .sln o .slnx, oppure la radice del repository), tranne bin, obj e node_modules. Immagini e altre risorse non testuali vengono ignorate.
Perché dopo una chiave non compare alcun valore?
La chiave deve esistere in un file .resx della soluzione e il nome della classe deve corrispondere al nome del file (Strings.resx → Strings; i punti diventano trattini bassi, come fa il generatore). I valori compaiono poco dopo l’apertura della soluzione, quando i file sono stati letti.
Dopo l’estrazione la nuova proprietà è sottolineata. Perché?
La classe fortemente tipizzata (Strings.Designer.cs) viene rigenerata subito se il progetto usa uno strumento personalizzato; nei progetti che la generano durante la compilazione la proprietà compare dopo la compilazione successiva.
{x:Static} non trova la mia classe di risorse in XAML.
x:Static richiede una classe pubblica. Imposta il modificatore di accesso del file .resx su Public nella finestra di progettazione delle risorse, oppure usa una classe wrapper pubblica.
Funziona insieme a LensSmith?
Sì. Entrambe scrivono a fine riga, quindi condividono quello spazio: prima il valore della chiave, poi il messaggio di diagnostica. I problemi di LocaleSmith compaiono in LensSmith come qualsiasi altro avviso.
LocaleSmith invia dati?
No. Nessuna telemetria e nessun accesso alla rete; i file di risorse restano sul tuo computer.
Dove segnalo un problema o suggerisco una funzionalità?
Apri una issue nel repository Feedback su GitHub: ci sono moduli per bug e idee (cambia i nomi privati). Puoi anche usare la scheda Q&A nel Marketplace.
Registro modifiche
1.0.1
- Link «Valuta nel Marketplace» nelle impostazioni.
1.0.0
- Prima versione pubblica.