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.)? Zitieren
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 Zitieren
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! Zitieren
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 Zitieren
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. Zitieren
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. Zitieren
Goos Geschrieben 14. Mai 2004 Geschrieben 14. Mai 2004 Du solltest dir dazu auch mal folgenden Link anschaun. Goos Zitieren
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 Zitieren
bigpoint Geschrieben 14. Mai 2004 Geschrieben 14. Mai 2004 need-some-blood dir ist aber schon klar das es hier c++ Forum ist ??? Zitieren
need-some-blood Geschrieben 17. Mai 2004 Geschrieben 17. Mai 2004 UPS. Hast recht. War geistig noch im Delphi-Forum. MVG need-some-blood Zitieren
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. Zitieren
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? Zitieren
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 Zitieren
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. Zitieren
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? Zitieren
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 Zitieren
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. Zitieren
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. Zitieren
Anybody Geschrieben 6. September 2006 Geschrieben 6. September 2006 So erstelle ich eine Resource dll Zitieren
Narf! Geschrieben 6. September 2006 Autor Geschrieben 6. September 2006 Vielen Dank. Werde mich da mal reinknien. Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.