Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Mehrsprachiges Programm

Empfohlene Antworten

Veröffentlicht

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

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.

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

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.

MIt Konstanten eventuell.

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

...

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.

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.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.