Hallo!
Ich habe bislang viel mit Delphi gearbeitet. Für die Erstellung eines Programms in unterschiedlichen Sprachen habe ich dort immer mit String-Resourcen gearbeitet die per bedingter Compilierung in das Programm eingebunden wurden.
Nun suche ich nach einer Möglichkeit dieses Prinzip auf C# zu übertragen.
Eine Resource-Datei sieht also z.B. so aus:
deutsche "Text_DE.txt"
Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| STRINGTABLE BEGIN 1000, "OK" 1001, "Abbrechen" 1002, "Weiter" 1003, "Zurück" 1005, "Fertigstellen" END |
deutsche "Text_EN.txt"
Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| STRINGTABLE BEGIN 1000, "OK" 1001, "Cancel" 1002, "Next" 1003, "Back" 1005, "Finish" END |
Dies wird dann mit BCC32 in eine RES-Dateien compiliert die in das Programm eingebunden werde.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29:
| {$IFDEF langEN} {$R 'C:\Projekte\Texte\Texte_EN.RES'} {$ELSE} {$R 'C:\Projekte\Texte\Texte_DE.RES'} {$ENDIF}
...
function GetString(ID: Integer): String; var p: PChar; loadResult: integer; begin p := StrAlloc(1024); try loadResult := LoadString(hInstance, ID, p, 1023); if loadResult <> 0 then begin Result := p ; finally StrDispose(p); end; end;
...
procedure ButtonClick(Sender: TObject); begin ShowMessage(GetString(1000)); end; |
Nun Arbeite ich mit Visual Studio und C#. Lässt sich dieses Prinzip der Übersetzung hier auch nutzen?
Bei meinen bisherigen Nachforschungen bin ich nur auf die Möglichkeit gestoßen .RESX Dateien zu verwenden. Soweit ich das verstanden habe kann man diese aber nur in VS direkt im Projekt verwalten. Zudem ist das XML-Format dieser Dateien natürlich komplett anders als das der klassischen Resourcedateien.
Über die Zeit habe ich eine recht umfangreiche Sammlung von Standardtexten in fertigen Resourcedateien gesammelt. Diese würde ich natürlich gerne weiter verwenden, Lässt sich das oben beschriebene Prinzip also auch mit C# nutzen?
Eigentlich benötig ich 5 Dinge:
1. Erstellung von Texdateien
2. Übersetzung in Resource-Dateien
3. Bedingte Compilierung um je nach Sprache unterschiedliche Texte zu laden
4. Möglichkeit Resource-Dateien per Quelltext einzubinden
5. Möglichkeit auf enthaltene Resourcen per Quelltext zuzugreifen.
Für Schritt 1 und 2 könnte ich weiterhin einen Texteditor und BCC32 verwenden. Die Bedingte Complierung ist soweit ich gesehen habe in C# mit "#define xy=true", "#if xy" und "#endif" kein Problem.
Bleiben also noch die Schritte 3-4 für die ich bislang keine Lösung gefunden habe. Kennt jemand eine Lösung?
Besten Dank
Ares