LocaleSmith
Der Text hinter jedem .resx-Schlüssel, direkt dort, wo der Schlüssel verwendet wird: Werte hinter der Zeile, alle Übersetzungen per Hover, fehlende Übersetzungen und falsche Platzhalter markiert, bevor Ihre Benutzer sie sehen.
Kostenlos · Visual Studio 2022 und 2026 · 14 UI-Sprachen · keine Telemetrie
Warum LocaleSmith

Code, den man lesen kann
Strings.InvoiceSaved sagt wenig, „Invoice {0} saved“ sagt alles. Der Text steht hinter der Zeile, dezent und kursiv.
Alle Sprachen zur Hand
Zeigen Sie auf einen Wert, um alle seine Übersetzungen zu sehen. Oder schalten Sie den ganzen Editor auf Deutsch oder Japanisch um und sehen Sie Ihre Oberflächen, bevor Sie die App starten.
Fehler finden, bevor Benutzer sie sehen
Fehlende Übersetzungen, ein {1}, das der Standardtext nicht hat, ein Tippfehler im Schlüssel, ein string.Format mit zu wenigen Argumenten – im Code unterstrichen.
Kostenlos, ohne Haken
Kein Abo, keine Testphase, keine Erinnerungsfenster, keine Telemetrie. Läuft unter Visual Studio 2022 und 2026, x64 und ARM64.
Funktionen
- Werte neben Schlüsseln: der Text jedes Schlüssels hinter seiner Zeile, in Anführungszeichen; Platzhalter wie
{0}sind farbig, Zeilenumbrüche erscheinen als ↵. - Vorschausprache: die Werte in jeder Sprache Ihrer Ressourcen; ein Wert, den .NET aus den Standardressourcen nehmen würde, ist gelb und mit ⚠ markiert.
- Alle Übersetzungen per Hover: eine Karte mit allen Sprachen des Schlüssels; ein Klick öffnet die .resx-Datei dieser Sprache direkt beim Wert – ein fehlender Wert wird für Sie angelegt.
- Probleme im Code: fehlende Übersetzungen, abweichende Platzhalter, unbekannte Schlüssel und
string.Format-Aufrufe mit falscher Argumentanzahl, als Wellenlinien. - In Ressource extrahieren: Ctrl+. auf einer Zeichenfolge in C#, Visual Basic oder XAML verschiebt sie in eine .resx-Datei und setzt den Schlüssel an ihre Stelle.
- Immer aktuell: Die .resx-Dateien der Projektmappe werden im Hintergrund gelesen und überwacht; eine gespeicherte Änderung erscheint sofort.
- Dunkles und helles Design: Die Farben folgen dem Design von Visual Studio.
Erkannte Schlüssel
| Im Code | Wo |
|---|---|
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 und Blazor: IStringLocalizer, IViewLocalizer |
GetString("Key") | ResourceManager und Localizer |
Alle Übersetzungen per Hover
Lassen Sie den Mauszeiger auf einem Wert ruhen: Die Karte zeigt den Schlüssel in allen Sprachen, fehlende in Gelb. Ein Klick auf eine Sprache öffnet ihre .resx-Datei mit markiertem Wert – einfach überschreiben. In .resx öffnen und Schlüssel kopieren stehen oben.

Probleme
Probleme sind Wellenlinien wie Compilerwarnungen. Jedes Tool, das Compilerwarnungen anzeigt, zeigt also auch sie an – LensSmith schreibt sie ans Zeilenende. Jede Regel lässt sich abschalten.

| Regel | Was unterstrichen wird |
|---|---|
| LOC001 | Ein Schlüssel, der in einigen Sprachdateien fehlt, mit der Liste dieser Sprachen. |
| LOC002 | Eine Übersetzung mit anderen Platzhaltern als der Standardtext; ein zusätzlicher Platzhalter schlägt zur Laufzeit fehl und ist daher ein Fehler. |
| LOC003 | localizer["Key"] oder GetString("Key") mit einem Schlüssel, den keine Ressourcendatei enthält, mit dem ähnlichsten vorhandenen Schlüssel. |
| LOC004 | string.Format(Strings.Key, …) mit weniger Argumenten, als der Text braucht (Fehler), oder mehr, als er verwendet (Warnung). |
In Ressource extrahieren
Setzen Sie den Cursor in eine Zeichenfolge und drücken Sie Ctrl+. – In Ressource extrahieren… schlägt einen Schlüssel aus dem Text und die nächstgelegene .resx-Datei vor. Enthält die Datei den Text bereits, wird ihr Schlüssel verwendet. Die Zeichenfolge wird durch Strings.Key ersetzt (mit Namespace, wenn die Datei ihn nicht importiert), in XAML durch {x:Static res:Strings.Key}; das xmlns wird dabei automatisch hinzugefügt.

Einstellungen
Extras → Optionen → SmithWorks → LocaleSmith. Jede Option hat eine Beschreibung, und die Vorschau oben zeigt die Werte sofort in der gewählten Sprache.
| Option | Standard |
|---|---|
| Ressourcenwerte neben Schlüsseln anzeigen | ein |
| Vorschausprache | Standardressourcen |
| Maximale Länge | 80 |
| Probleme: LOC001–LOC004 | alle ein |
| „In Ressource extrahieren“ im Glühbirnenmenü | ein |
Die Einstellungen werden in %LocalAppData%\LocaleSmith gespeichert.

FAQ
Welche .resx-Dateien werden gelesen?
Alle .resx-Dateien unterhalb des Projektmappenordners (des Ordners mit der .sln- oder .slnx-Datei bzw. des Repository-Stammverzeichnisses), außer bin, obj und node_modules. Bilder und andere Nicht-Text-Ressourcen werden übersprungen.
Warum steht hinter einem Schlüssel kein Wert?
Der Schlüssel muss in einer .resx-Datei der Projektmappe vorkommen, und der Klassenname muss zum Dateinamen passen (Strings.resx → Strings; Punkte werden wie beim Generator zu Unterstrichen). Die Werte erscheinen kurz nach dem Öffnen einer Projektmappe, sobald die Dateien gelesen sind.
Nach dem Extrahieren ist die neue Eigenschaft unterstrichen. Warum?
Die stark typisierte Klasse (Strings.Designer.cs) wird sofort neu generiert, wenn das Projekt dafür ein benutzerdefiniertes Tool verwendet. Projekte, die sie beim Build erzeugen, erhalten die Eigenschaft nach dem nächsten Build.
{x:Static} findet meine Ressourcenklasse in XAML nicht.
x:Static benötigt eine öffentliche Klasse. Setzen Sie im Ressourcen-Designer den Zugriffsmodifizierer der .resx-Datei auf Public, oder verwenden Sie einen öffentlichen Wrapper.
Funktioniert es zusammen mit LensSmith?
Ja. Beide schreiben ans Zeilenende und teilen sich diesen Platz: zuerst der Wert des Schlüssels, danach die Diagnosemeldung. Probleme von LocaleSmith erscheinen in LensSmith wie jede andere Warnung.
Sendet LocaleSmith Daten?
Nein. Es gibt keine Telemetrie und keinen Netzwerkzugriff; Ihre Ressourcendateien bleiben auf Ihrem Rechner.
Wo melde ich ein Problem oder schlage eine Funktion vor?
Erstellen Sie ein Issue im Repository Feedback auf GitHub – dort gibt es Formulare für Fehler und Ideen (bitte ändern Sie vertrauliche Namen). Sie können auch die Registerkarte „Q&A“ im Marketplace verwenden.
Änderungsprotokoll
1.0.1
- Link „Im Marketplace bewerten“ in den Einstellungen.
1.0.0
- Erste öffentliche Version.