Patrick.Karre Geschrieben 8. Dezember 2003 Geschrieben 8. Dezember 2003 Hallo Leute, ich würde gerne in meinen Programm mehrere Sprachen hinterlegen. Deutsch, Englisch, usw. Kann ich dies in einer Definitiondatei machen mit globalen Variablen ? Wenn ja, wie mache ich dies am besten ? Gruß Patrick Zitieren
Gast Geschrieben 8. Dezember 2003 Geschrieben 8. Dezember 2003 Was heisst genau mehrere Sprachen hinterlegen? Multilinguale Menus? Wenn ja, dann würden das am besten IMHO INI-Dateien passen. Also zum Beispiel: - deusch.ini - english.ini Der Aufbau wäre folgender: english.ini [bezeichner] Beenden=Quit Hilfe=Help Laden=Load Speichern=Save Sprache=Language deusch.ini [bezeichner] Beenden=Beenden Hilfe=Hilfe Laden=Laden Speichern=Speichern Sprache=Sprache Dann könnte der Benutzer eine Sprache auswählen und Du würdest dann die Bezeichner(Captions) für die Objekte aus den INI-Dateien holen. Zitieren
Patrick.Karre Geschrieben 8. Dezember 2003 Autor Geschrieben 8. Dezember 2003 Ja so ähnlich habe ich mir dies vorgestellt. Ich würde dies aber gerne im Programm fest einbinden. Gruß Patrick Zitieren
Gast Geschrieben 8. Dezember 2003 Geschrieben 8. Dezember 2003 So könnte es gehen. Habe noch ein Menu genommen. Mit "mein Programm" -> "Beenden" und "Sprache" -> "deutsch" und "englisch" Option Explicit Dim arrDeutsch(1 To 7) As String Dim arrEnglish(1 To 7) As String Private Sub Form_Load() erzeuge_deutsch erzeuge_english End Sub Private Sub erzeuge_deutsch() arrDeutsch(1) = "mein Programm" arrDeutsch(2) = "Beenden" arrDeutsch(3) = "Sprache" arrDeutsch(4) = "deutsch" arrDeutsch(5) = "englisch" arrDeutsch(6) = "deutsche Bezeichnung" arrDeutsch(7) = "deutscher Button" End Sub Private Sub erzeuge_english() arrEnglish(1) = "my programm" arrEnglish(2) = "Quit" arrEnglish(3) = "Language" arrEnglish(4) = "german" arrEnglish(5) = "english" arrEnglish(6) = "english Caption" arrEnglish(7) = "english Button" End Sub Private Sub mache_deutsch() mmMeinProgramm.Caption = arrDeutsch(1) mmMeinProgrammBeenden.Caption = arrDeutsch(2) mmSprache.Caption = arrDeutsch(3) mmSpracheDeutsch.Caption = arrDeutsch(4) mmSpracheEnglisch.Caption = arrDeutsch(5) Label1.Caption = arrDeutsch(6) Command1.Caption = arrDeutsch(7) End Sub Private Sub mache_englisch() mmMeinProgramm.Caption = arrEnglish(1) mmMeinProgrammBeenden.Caption = arrEnglish(2) mmSprache.Caption = arrEnglish(3) mmSpracheDeutsch.Caption = arrEnglish(4) mmSpracheEnglisch.Caption = arrEnglish(5) Label1.Caption = arrEnglish(6) Command1.Caption = arrEnglish(7) End Sub Private Sub mmSpracheDeutsch_Click() mache_deutsch End Sub Private Sub mmSpracheEnglisch_Click() mache_englisch End Sub Zitieren
Patrick.Karre Geschrieben 8. Dezember 2003 Autor Geschrieben 8. Dezember 2003 Eine kleine Frage hätte ich jetzt noch ;-)) Wie gestalte ich die Texte bei einer MessageBox. Da würde ich auch gerne feste Texte hinterlegen. Zitieren
Gast Geschrieben 8. Dezember 2003 Geschrieben 8. Dezember 2003 Dann brauchst Du eine globale Variable in der die Sprache hinterlegt ist. Option Explicit 'Einfach nur einen Button "Command1" auf der Form platzieren Dim arrEnglish(1 To 2) As String Dim arrDeutsch(1 To 2) As String Dim strSprache As String Private Sub Command1_Click() 'Ausgabe einer Messagebox in der jeweiligen Sprache, 'außerdem Switch von Deutsch auf Englisch und umgekehrt Select Case strSprache Case "deutsch" mache_deutsch MsgBox arrDeutsch(2) Case "english" mache_englisch MsgBox arrEnglish(2) End Select If strSprache = "deutsch" Then strSprache = "english" Else strSprache = "deutsch" End Sub Private Sub Form_Load() strSprache = "deutsch" arrEnglish(1) = "push me" arrEnglish(2) = "this is an english message" arrDeutsch(1) = "drück mich" arrDeutsch(2) = "Dies ist eine deutsche Nachricht" End Sub Private Sub mache_deutsch() Command1.Caption = arrDeutsch(1) End Sub Private Sub mache_englisch() Command1.Caption = arrEnglish(1) End Sub [Nachtrag]:Du könntest Dir auch ein Array mit der aktuell verwendeten Sprache erstellen und je nach Benutzereingabe dementspreches Array in das "arrAktuell" kopieren. Zitieren
Patrick.Karre Geschrieben 8. Dezember 2003 Autor Geschrieben 8. Dezember 2003 Gibt es auch eine Möglichkeit, wenn ich die Variablen Global deklariere, den Inhalt gleich mit zu hinterlegen ? Zitieren
Patrick.Karre Geschrieben 9. Dezember 2003 Autor Geschrieben 9. Dezember 2003 Und wie binde ich die *.bas Datei in andere *.bas Dateien ein. Damit ich alle Konstanten an einer Stelle habe ? Zitieren
Gast Geschrieben 9. Dezember 2003 Geschrieben 9. Dezember 2003 Du kannst die globalen Variablen in einem Modul public deklarieren 'modMeinModul.bas Option Explicit public strMeineVariable as String ... und dann auf diese Variable von jedem Punkt Deines Projektes aus vollqualifiziert zugreifen. ... 'Zugriff von einem beliebigen Punkt msgbox modMeinModul.strMeineVariable ... Zitieren
Patrick.Karre Geschrieben 9. Dezember 2003 Autor Geschrieben 9. Dezember 2003 Danke funktioniert. Gruß Patrick Zitieren
Agent Purple Geschrieben 13. Dezember 2003 Geschrieben 13. Dezember 2003 Hi! Das einfachste ist, wenn du dir entspechende Klassen anlegst, in der die ganzen Sprachschlüsel hinterlegt sind. Je nachdem was der benutzer auswählt, instanziert du dann die entsprechende Klasse. Ist nebenbei auch noch "hübscher" als INIs. Zitieren
Gast Geschrieben 15. Dezember 2003 Geschrieben 15. Dezember 2003 Ja, aber IMHO kann man in den INIs besser rumfummeln. Eventuell kann man auch über Registryeinträge nachdenken. Hätte auch den Vorteil, das man ein bereits kompiliertes Programm durch das Hinzufügen neuer INIs/Registryeinträge um weitere Sprachen erweitern kann, ohne den Compiler zu bemühen. Z.B. spanisch.ini, italienisch.ini, etc. 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.