Laden...

kundenspezifische Lokalisierung eines Programms

Erstellt von Karl1978 vor 13 Jahren Letzter Beitrag vor 12 Jahren 2.238 Views
K
Karl1978 Themenstarter:in
4 Beiträge seit 2011
vor 13 Jahren
kundenspezifische Lokalisierung eines Programms

Hallo zusammen,
ich habe folgende Aufgabe bekommen:
Das Programm, dass ich geschrieben habe, soll lokalisierbar sein in den Sprachen En, De und Fr.
Es kann sein, dass einige Kunden Texte z.B. in De nochmals geändert haben wollen.

Ich habe mich zu folgendem Lösungsweg entschieden.
Die Lokalisierung erfolgt über .Net in den Sprachen En, De und Fr (Satteliten Assemblys). Sollte in Kunde ein Wort geändert haben wollen, so nehme ich die vom .Net erzeugte .resx Datei, ändere den Eintrag und erzeuge eine neue DLL, die ich dann nach der Installation im Programmverzeichnis austauschen kann.

Frage: Gibt es einen besseren Weg?

Derzeitiges Problem:
Ich habe ein zweites Programm geschrieben, welches die .resx datei einlesen kann und per Button eine DLL erzeugen soll. Hierbei will ich auf resgen.exe und al.exe zugreifen. Mein Proble ist, dass ich resgen nicht starten kann. Es erscheint die Konsole, aber es wird nichts ausgeführt. Woran kann das liegen? (Den Code habe ich aus einem anderen Forumeintrag übernommen).


System.Diagnostics.ProcessStartInfo info = new System.Diagnostics.ProcessStartInfo();
                info.FileName = "C:\\WINDOWS\\system32\\cmd.exe";
                info.UseShellExecute = false;
                info.CreateNoWindow = true;
                info.Arguments = "/c resgen " + sArg; //sArg= InputDatei + " " + OutputDatei
                info.WorkingDirectory = "C:\\Program Files\\Microsoft Visual Studio 8\\SmartDevices\\SDK\\SDKTools";

                System.Diagnostics.Process pro = new System.Diagnostics.Process();
                pro.StartInfo = info;
                pro.Start();
                pro.WaitForExit();

Vielen Dank für eure Hilfe
Gruß Karl

2.298 Beiträge seit 2010
vor 13 Jahren

Hallo,

wenn ich mich nicht täusche, ist es möglich die Ressourcendatei als solche im Programm zu laden.

Ich wage zu behaupten, dass ich dies selbst schon getan habe, finde aber die Anwendung gerade nicht in der ich darauf zurückgegriffen habe.

Kurzum:
Schau mal hier im Forum und bei google, es sollte möglich sein die Ressourcendatei als solche Mitzuliefern, wo sie dann entsprechend von deinen Kunden selbst angepasst werden kann.

Wissen ist nicht alles. Man muss es auch anwenden können.

PS Fritz!Box API - TR-064 Schnittstelle | PS EventLogManager |

H
31 Beiträge seit 2010
vor 13 Jahren

Hallo Karl,

eine Idee die mir beim Lesen eben in den Sinn kam, wäre eine benutzerdefinierte Kultur wie z.B.: "de-DE-KundeX".
Bei dem Control/Form bei dem eine Kundenspezifische Anpassung vorkommt erstellst du einfach die passende Resource.de-DE-KundeX.resx.

Das wäre zwar etwas Aufwand um das System mit einer eigenen Kultur auszustatten, würde es aber dann später um so einfacher machen.

Viele Grüße

Hotte

V
19 Beiträge seit 2008
vor 13 Jahren

Hallo Hotte,
ich habe jetzt ein ähnliches Problem, wo wir eins von meinen Programmen als OEM Version verkaufen, was letzten Endes auch hauptsächlich auf eine neue Lokalisierung hinaus läuft.
Ich hatte gehofft das über eine Art bedingte Kompilierung zu lösen, habe aber da noch nichts gefunden.
Kannst Du Deinen Ansatz etwas näher beschreiben ?

49.485 Beiträge seit 2005
vor 13 Jahren

Hallo v2afrank,

was Hotte beschreibt, ist das ganz normale Globalisieren und Lokalisieren von Anwendungen. Stichwort: Satellitenassemblies.

herbivore

K
Karl1978 Themenstarter:in
4 Beiträge seit 2011
vor 12 Jahren

Hallo zusammen,
ich habe das Problem gefunden. Die Datei resgen.exe wurde in einem falschen Verzeichnis gesucht (anderes .Net Verzeichnis).

Ich habe das Problem folgendermaßen gelöst:
Ich habe mir ein Programm erstellt, welches die resgen.exe, die al.exe und die nötigen al DLLs in einem definierten Verzeichnis enthält (Installationsordner/Files).
In meinem Programm kann ich nun auf die benötigten Programme zugreifen.

Ich erstelle mir aus den resx dateien der KundenSoftware eine neue DLL (z.B. de-DE). Beim Installieren der KundenSoftware wird automatisch eine de-DE DLL in einem entsprechenden UnterOrdner erzeugt (wurde im MS Studio integriert).
Diese Datei kann ich nun bei bedarf austauschen und tausche so Bezeichnungen aus.

Zudem: Microsoft durchsucht beim Programmstart Ordner mit Kulturnamen als Ordnername (zB: de; de-DE; en-ZA). Diese Ordner und DLLs müssen nicht beim Erstellen oder installieren der Software erezugt werden, sondern können im Nachhinein hinzukopiert werden.

Gruß
Karl

0
767 Beiträge seit 2005
vor 12 Jahren

Wir machens für unsere Software so, wie Hotte es beschreibt.

Drei Kunden mit jeweils einer kundenspezifischen Culture und Resourcen. Klappt einwandfrei.

loop:
btst #6,$bfe001
bne.s loop
rts