2009-11-19 10 views
7

Hatte eine grundlegende WinForm-Frage: Standardmäßig wird eine resx-Datei für jedes Formular oder Benutzersteuerelement (zusammen mit dem Designer.cs) erstellt. Dieser ResX funktioniert für alle Steuerelemente und den Text, der den Steuerelementen über die Benutzeroberfläche hinzugefügt wird.Formularressourcen für programmatische Zeichenfolgen verwenden?

Ich frage mich, ob ich das gleiche resx verwenden könnte, um Strings hinzuzufügen, die programmgesteuert und basierend auf Bedingungen verwendet werden müssen, die an die Steuerelemente angehängt sind? Wird das resx in jedem Fall überschrieben und diese benutzerdefinierten Zeichenfolgen entfernt? Was ist die beste Vorgehensweise in diesem Fall?

+2

Um Sie nicht zu entmutigen, aber Sie könnten interessiert sein in diesem "Hass-Rave" (basierend auf VS 2003) über ResX-Dateien: http://www.windojitsu.com/blog/resxsucks.html Hoffentlich ist die Situation besser jetzt, aber ich bin immer noch schüchtern, sie direkt zu benutzen. – BillW

+1

Für die "Tasse ist halb voll" -Ansicht (?) Vielleicht in Betracht ziehen: http://StackOverflow.com/Questions/676312/Modifying-resx-File-in-C – BillW

+0

Interessante Links .. Danke für das Hinweisen auf diese BillW – bschandramohan

Antwort

2

Die automatisch generierten werden überschrieben (ich benutze 2005), also würde ich nicht die gleiche Datei verwenden. Ich würde vorschlagen, einen separaten Bereich in Ihrem Projekt für .resx-Dateien wie folgt zu erstellen. Normalerweise erstelle ich eine .resx pro Formular, die natürlich dem Namen entspricht.

Edit: Here ist eine ausführlichere Antwort, die ich vor kurzem gegeben habe, um die Datei/Ordner-Struktur beim Lokalisieren Ihrer App mit RESX-Dateien zu organisieren.

2

Es gibt ein seltsames Problem mit den Zeichenfolgenressourcen in der Resources.resx-Datei. Es gibt keinen offensichtlichen Weg, wie ich jemals eine neue Ressourcentabelle für eine andere Sprache mit der IDE erstellen konnte. Es kann jedoch von Hand gemacht werden. Gehen Sie folgendermaßen vor:

  1. Project + Eigenschaften, Registerkarte Ressourcen, fügen Sie die Strings, die Sie in Ihr Programm
  2. Starten Sie den Windows Explorer verwenden möchten, und navigieren Ihres Projekts Ordner Eigenschaften
  3. Kopieren Sie die Resources.resx Datei
  4. Benennen Sie es in die Kultur um, die Sie verwenden möchten. Zum Beispiel: Resources.fr-FR.resx
  5. Zurück zu VS, klicken Sie auf Alle Dateien anzeigen Symbol im Fenster Projektmappen-Explorer
  6. die Knoten Eigenschaften erweitern, die neue Ressourcendatei sollte
  7. rechts sichtbar sein -Klick darauf und wählen sie "Include in Projekt"
  8. es wählen, in dem Eigenschaftsfenster Custom Tool set = "ResXFileCodeGenerator"
  9. Stellen sie sicher, dass Build Action auf "Embedded Resource" gesetzt

Erstellen Sie Ihr Programm. Sie sollten einen neuen Ordner im Verzeichnis bin \ Debug des Projekts mit der Satellitenassembly namens projectname.resources.dll abrufen. Diese Satellitenassembly enthält sowohl die lokalisierten Zeichenfolgen als auch alle lokalisierten Ressourcen aus den Formularen. Test, der es mit Code wie folgt funktioniert:

public Form1() { 
    System.Threading.Thread.CurrentThread.CurrentUICulture = 
    System.Globalization.CultureInfo.GetCultureInfo("fr-FR"); 
    InitializeComponent(); 
    textBox1.Text = Properties.Resources.String1; 
} 
+2

Setzen Sie auf Ihrem Formular "Localizable" auf "true" und ändern Sie dann die Eigenschaft "Language". –

+0

Tatsächlich habe ich auch nicht gefunden. ASP.NET-Projekt hat Menü Extras -> Ressource-Datei generieren, aber WinForms nicht. Habe ich recht? – abatishchev

+0

BTW, wird 'ResXFileCodeGenerator' wirklich benötigt? Standard .resx hat BuildAction = EmbeddedResource, aber CustomTool leer. – abatishchev

1

Oder Sie können versuchen, diese:

diesen Code in Haupt hinzufügen();

mit System.Resources;

ResXResourceWriter rw = new ResXResourceWriter("Resources.de-DE.resx"); 
rw.AddResource("String1", "de"); 
rw.Close(); 
... 

wiederholen, um weitere Dateien

Gehen in das Verzeichnis ist und bewegen Sie die XML (resx) Datei (en), um vielleicht die Eigenschaft Ordner.

Weiter mit Schritt 5-9 oben im nobugz Beitrag.

+1

Pete, was ist der nobugz Beitrag, auf den du dich beziehst? – bschandramohan

Verwandte Themen