LazowskiAnton · Extensions

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

Lo stesso codice senza e con LocaleSmith: chiavi di risorsa e relativi testi

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à

Chiavi riconosciute

Nel codiceDove
Strings.Key, Properties.Resources.KeyC#, 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.

La scheda con le traduzioni di una chiave, due delle quali mancanti

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.

Sottolineature ondulate su chiavi con una traduzione mancante e un numero errato di argomenti di formato
RegolaCosa viene sottolineato
LOC001Una chiave che manca in alcuni file di lingua, con l’elenco di queste lingue.
LOC002Una traduzione con segnaposto diversi dal testo predefinito; un segnaposto in più fallisce in fase di esecuzione ed è un errore.
LOC003localizer["Key"] o GetString("Key") con una chiave che nessun file di risorse contiene, con la chiave esistente più simile.
LOC004string.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.

La finestra di dialogo Estrai in risorsa con la chiave e il file proposti

Impostazioni

Strumenti → Opzioni → SmithWorks → LocaleSmith. Ogni opzione ha una descrizione e l’anteprima in alto mostra subito i valori nella lingua scelta.

OpzionePredefinito
Mostra i valori delle risorse accanto alle chiaviattivo
Lingua di anteprimaRisorse predefinite
Lunghezza massima80
Problemi: LOC001–LOC004tutti attivi
Estrai in risorsa nella lampadinaattivo

Le impostazioni sono salvate in %LocalAppData%\LocaleSmith.

Pagina delle opzioni di LocaleSmith
La pagina delle opzioni con l’anteprima dal vivo.

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

1.0.0