Veröffentlicht 8. Dezember 200321 j 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
8. Dezember 200321 j 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.
8. Dezember 200321 j Autor Ja so ähnlich habe ich mir dies vorgestellt. Ich würde dies aber gerne im Programm fest einbinden. Gruß Patrick
8. Dezember 200321 j 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
8. Dezember 200321 j Autor 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.
8. Dezember 200321 j 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.
8. Dezember 200321 j Autor Gibt es auch eine Möglichkeit, wenn ich die Variablen Global deklariere, den Inhalt gleich mit zu hinterlegen ?
9. Dezember 200321 j Autor Und wie binde ich die *.bas Datei in andere *.bas Dateien ein. Damit ich alle Konstanten an einer Stelle habe ?
9. Dezember 200321 j 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 ...
13. Dezember 200321 j 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.
15. Dezember 200321 j 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.
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.