2016-07-12 40 views
0
nicht

Ich habe ein VB.NET-Projekt, wo ich ein Formular (FRMRUN) habe und mehrere Ressourcendateien für verschiedene Sprachen verwenden (dh English.resx, Portuguese.resx, etc.) In meinem Code habe ich enthalten der Namespace für System.Resources und einen Ressourcenmanager wie folgt definiert:Kann Ressourcenelement

Private rm As ResourceManager 

beim Start oder wenn ein Benutzer eine Sprache aus einem Menü auswählt, habe ich den Ressourcenmanager:

rm = New ResourceManager("MyRootNamespace." & currentItem.Text, System.Reflection.Assembly.GetExecutingAssembly()) 

wo currentItem. Text ist "English.resx", usw. Da rm auf Klassenebene definiert ist, kann ich nun einfach die str auswählen ing ich für die gewählte Sprache als solche angezeigt werden soll:

btnStartStop.Text = rm.GetString("btnStartStop_Start") 

Diese Ressource string "btnStartStop_Start" in beiden English.resx definiert ist (in englischer Sprache) und in Portuguese.resx (auf Portugiesisch).

Ich benutze JetBrains Resharper und das Problem ist, dass die IDE Fehler in der vertikalen Bildlaufleiste für jede Zeile zeigt, wo ich rm.GetString sagen, es kann sie nicht lösen. Wenn ich auf die Glühbirne in der linken Spalte der IDE klicke, kann ich das beheben, indem ich das zum Ressourcenelement hinzufüge. Wenn ich das tue, wird es zur ResX-Datei hinzugefügt. In diesem Fall geht diese Zeichenfolge in "frmRun.resx" und der Fehler verschwindet. Aber ich benutze nicht frmRun.resx, ich sage ausdrücklich, dass es eine andere resx-Datei (English.resx, etc.) verwenden soll. Interessant, obwohl diese Fehler in der vertikalen Scollbar meiner IDE angezeigt werden, sind sie keine Kompilierungsfehler und die App kompiliert/läuft in Ordnung.

Wie kann ich es ignorieren, diese Ressourcen in der Forms Resx-Datei zu suchen, abgesehen davon, es zu verstecken/nicht zeigen diese über die Inspektion?

Antwort

0

Ihre Ressourcendatei sollte den gleichen Namen, aber mit einem Sprachsuffix haben.

Zum Beispiel

WinFormStrings.de-DE.resx Deutsch

WinFormStrings.fr-FR.resx für Französisch

Der Standard wird die WinFormStrings.resx-Datei verwenden.

Anrufe an .GetString dann wählen Sie die richtige Datei auf der Grundlage der aktuellen Thread Kultur

Eine Anleitung, in das erklärt, kann hier gefunden werden: Walkthrough: Localizing Windows Forms

+0

Bitte melden Sie sich auch, wenn diese Antwort Ihnen geholfen hat –

0

Es gibt etwas, was Sie tun können, um machen die Fehler gehen weg. Gehen Sie zu Reshareper Optionen und dann zu Code Inspection ->Inspection Severity in der Sprache, die Sie verwenden, können Sie Potential Code Quality Issues hier finden Sie den Schweregrad für Cannot resolve resource oder Cannot resolve resource item Wenn Sie nicht suchen möchten, wenn Sie selbst die Resharper-Optionen und Typ suchen können In Resource wird dies mit dem, was Sie suchen, kommen.

Wir verwenden unsere eigene ResourceManager-Implementierung und wir haben das gleiche Problem, wir setzen sie auf Hint/Suggestion, damit sie sichtbar sind, aber nicht wie Fehler.

enter image description here