Narf! Geschrieben 13. Mai 2004 Geschrieben 13. Mai 2004 Hallo Leute, mein Programm soll alle europäischen Sprachen und evtl. alle anderen beherrschen. Das beudeutet, dass ich bei Programmstart die eingestellte Systemsprache abfragen muss und jenachdem die Menüs und MessageBoxen in dieser Sprache anzeigen muss. Wie ändert man entsprechend die Texte? Wie funktioniert das mit anderen Schriftzeichen (z. Bsp. griechisch, tschechisch, usw.)?
Goos Geschrieben 13. Mai 2004 Geschrieben 13. Mai 2004 Wie ändert man entsprechend die Texte? Wie funktioniert das mit anderen Schriftzeichen (z. Bsp. griechisch, tschechisch, usw.)? Autsch Wenn du noch sooo wenig Ahnung von der Softwarelokalisierung hast, dann wuerd ich besser die Finger davon lassen. Das ist ein sehr komplexes Thema bei dem viel bedacht werden muss. Goos
Narf! Geschrieben 13. Mai 2004 Autor Geschrieben 13. Mai 2004 Autsch Wenn du noch sooo wenig Ahnung von der Softwarelokalisierung hast, dann wuerd ich besser die Finger davon lassen. Das ist ein sehr komplexes Thema bei dem viel bedacht werden muss. Goos Es hilft alles nichts, ich werde mich der Herausforderung stellen müssen!
Goos Geschrieben 13. Mai 2004 Geschrieben 13. Mai 2004 Es hilft alles nichts, ich werde mich der Herausforderung stellen müssen! Dann erzaehl mal naeheres. Geht es nur um das eine Programm, oder solls auch eher ne Libary zum relativ einfachen Einsatz in anderer Software sein? Willst du deine Texte dynamisch zur Laufzeit aendern, oder nur nach nem Neustart? Wirst du auch bei allen Buttons und sonstigen benannten Controls die Schriftgroesse berechnen und das entsprechende Control in der Groesse anpassen? Soll die dann auch auf entsprechenden Landessprachlichen Windows Systemen laufen, oder sollte man auch auf einem sagen wir mal englischen Windows chinesische Schrift anzeigen koennen? usw.... Goos
Narf! Geschrieben 14. Mai 2004 Autor Geschrieben 14. Mai 2004 Das Programm soll beim Starten die Systemsprache abfragen und entsprechend sind dann im Programm schon das Menü und die Messageboxen so integriert, dass sie entsprechend der gesetzten Systemsprache den entsprechenden Text enthalten. if(Systemsprache==Englisch) MenuText==Englisch; Vereinfacht dargestellt. Es soll keine Sprachumstellung im Programm geben, sondern sich nach der Systemsprache richten.
Klotzkopp Geschrieben 14. Mai 2004 Geschrieben 14. Mai 2004 Üblicherweise lagert man alle sprachabhängigen Ressourcen in DLLs aus. Beim Programmstart wird dann in Abhängigkeit von der Sprache eine dieser DLLs geladen und die darin enthaltenen Ressourcen verwendet. Bei Verwendung der MFC geht das z.B. mit AfxSetResourceHandle.
Goos Geschrieben 14. Mai 2004 Geschrieben 14. Mai 2004 Du solltest dir dazu auch mal folgenden Link anschaun. Goos
need-some-blood Geschrieben 14. Mai 2004 Geschrieben 14. Mai 2004 Wenn du keine DLL nutzen möchtest,, kannst oder willst kannst du es dir ganz einfach machen. Erstelle für jede Sprache jeweils eine INI-Datei. Language_d.INI;Language_gb.ini, etc.etc. Dann schaust du beim Programmstart nach, welche Sprache eingestellt ist, und nimmst die Einträge aus der INI-Datei. Ein kleines Beispiel: if Systemsprache=GB then begin pass.FilesprachShare='C:\language_gb.ini'; end; SprachIni:=TIniFile.Create(Pass.FileSprachShare); with SprachIni do begin Caption := ReadString('PASSWORT','Fenster','_'); //Labels LabelPassw.Caption := ReadString('PASSWORT','Passworteing','_'); LabelName.Caption := ReadString('PASSWORT','Name','_'); LabelPasswort.Caption := ReadString('PASSWORT','Passwort','_'); LabelLevel.Caption := ReadString('PASSWORT','Level','_'); Labelpwaendern.caption := ReadString('PASSWORT','PwAendern','-'); labelnote1.caption := ReadString('PASSWORT','Note1','-'); labelnote2.caption := ReadString('PASSWORT','Note2','-'); labelselectlevel.caption := ReadString('PASSWORT','Selectlevel','-'); labelnewpw.caption := ReadString('PASSWORT','Neues_Passwort','-'); labelnewpwwiederholung.caption:= ReadString('PASSWORT','Passwort_Wiederholung','-'); //Buttons BitBtnAnmelden.Caption := ReadString('PASSWORT','Anmelden','_'); BitBtnAbmelden.Caption := ReadString('PASSWORT','Abmelden','_'); BitBtnEnde.Caption := ReadString('PASSWORT','Ende','_'); BitBtnok.caption := ReadString('PASSWORT','BtnOK','_'); BitBtnabort.caption := ReadString('PASSWORT','BtnAbort','_'); BitBtnyes.caption := ReadString('PASSWORT','BtnYes','_'); Free; end; Code ist weder geprüft noch funzt es so.soll dir das ganze nur vereinfachen. MVG need-some-blood
bigpoint Geschrieben 14. Mai 2004 Geschrieben 14. Mai 2004 need-some-blood dir ist aber schon klar das es hier c++ Forum ist ???
need-some-blood Geschrieben 17. Mai 2004 Geschrieben 17. Mai 2004 UPS. Hast recht. War geistig noch im Delphi-Forum. MVG need-some-blood
Pointerman Geschrieben 17. Mai 2004 Geschrieben 17. Mai 2004 @Narf Hast Du Dir schon mal den Multilizer angeguck? Der hilft Dir bei Mehrsprachigen Anwendung und bietet auch die Möglichkeit, die Texte aus Deinem Programm von anderen übersetzen zu lassen, ohne ihnen Einsicht in Deinen Quellcode geben zu müssen. Kannst ja mal aufwww.multilizer.com nachgucken.
Narf! Geschrieben 18. Mai 2004 Autor Geschrieben 18. Mai 2004 Ich werde die verschiedenen Textausgaben gleich mit if-Anweisungen einbauen. Wie fragt man die Systemsprache ab?
Goos Geschrieben 18. Mai 2004 Geschrieben 18. Mai 2004 Mutig, mutig, bei der Menge an Sprachen die du dir da vorgenommen hast. (ich wollt jetzt nicht gleich sagen: quasi undurchfuehrbar und hoellischer Aufwand usw.) Goos
Narf! Geschrieben 18. Mai 2004 Autor Geschrieben 18. Mai 2004 Meine Güte! Ich frage mich sowieso wie das mit Schriftbildern aussieht, die nicht mit Latin-Letters geschrieben werden.
Narf! Geschrieben 5. September 2006 Autor Geschrieben 5. September 2006 Und jetzt ist es soweit. Ich soll mein Programm griechisch "sprechen" lassen. Zur Zeit habe ich deutsch und englisch, was ja kein Problem ist. Dazu habe ich eine String-Table, in der ich alle Texte drin habe und für die englische Anzeige einfach zu der ID 200 dazuzähle. CString Text; Text.LoadString(ID_Text_Deutsch+200); //Text ist englisch Alle Texte wurden ins Griechische übersetzt. Jetzt wollte ich mir die Sache einfach machen und aus der Excel-Tabelle die griechischen Texte rauskopieren und in die String-Table einfügen. Tja. Nur kommen da statt der Schriftzeichen nur "?????". Wenn ich den selben String in den Editor kopiere, klappt es wunderbar und in Excel offensichtlich auch. Ich habe in der Systemsteuerung bei Sprachen/Eingabeschema griechisch hinzugefügt. Ein extra Sprachpaket für das Visual Studio war nicht dabei. Wo kann ich denn meinem Projekt beibringen, dass er mir diese Zeichen korrekt darstellt?
Goos Geschrieben 5. September 2006 Geschrieben 5. September 2006 Am besten haettest gleich ein Unicode Projekt gemacht Ansonsten kannst du bei deinem Windows noch unter Einstellungen->"Regions und Sprachoptionen"->Erweitert->"Sprache fuer Programme, die Unicode nicht unterstuetzen" griechisch einstellen. Falls dir dann nichts rechtes angezeigt wird, ist deine Uebersetzung wohl nicht passend Goos
Anybody Geschrieben 5. September 2006 Geschrieben 5. September 2006 Also jezt mal ganz ehrlich... Ist dir die Mühe nicht etwas zu groß? Wenn du das für jede Sprache machen musst die irgendwann neu dazukommt?! Nimm dir mal 3-4 Stunden Zeit und erzeuge eine Resource Dll. In dieser brauchst du dann nur den String Table anpassen und kannst auch bequem die Dialoge so umgestalten das es passt. Die wird am Anfang geladen und gut ist. So verstehst du dein Programm auch leichter und das hinzufügen von einer neuen Sprache (oder nur neuen Strings ) ist super simpel.
Narf! Geschrieben 6. September 2006 Autor Geschrieben 6. September 2006 Da das ganze neu für mich ist, kannst Du mir sagen, was ich da zu tun habe? Das geht schon los mit der Erstellung einer DLL, dann die Einbindung in mein Programm, was da zu beachten ist uvm.
Anybody Geschrieben 6. September 2006 Geschrieben 6. September 2006 So erstelle ich eine Resource dll
Narf! Geschrieben 6. September 2006 Autor Geschrieben 6. September 2006 Vielen Dank. Werde mich da mal reinknien.
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden