Select Language!
Mehrsprachigkeit für AccessMehrsprachigkeit für Access

mehrsprachiges Frontend 1.30

Wenn ein Frontend mehrsprachig ausgestattet sein soll, steht man vor einer Reihe von Problemen. Alle Bezeichnungen, Tipptexte, Gültigkeitsmeldungen usw. müssen ersetzt werden. Ebenso MsgBoxen und Inputboxen angepasst werden.

Hier hilft das Addin. Steuerelemente aus Formularen und Reports, Inputboxen und MsgBoxen werden ausgelesen und in Tabellen gespeichert. Formulare und Module zur Steuerung erstellt und gegebenenfalls Aktualisierungen vorgenommen. Die Änderungen sind durch Kommentare im Quelltext markiert.

Der Dialog

Auf dem Dialogformular  können folgende Punkte angewählt werden:

Objekte erstellen

Es werden in der Datenbank  4 Tabellen, 5 Formulare und 1 Modul erzeugt.

Tabellen

ggMehrsprachigkeittblSprache:

Hier werden die Sprachen abgelegt

ID                                           = Eindeutige Nummer der Sprache
Sprache                               = Text der die Sprache beschreibt
Aktiv                                     = Die aktivierte Sprache hat hier den Wert TRUE

ggMehrsprachigkeittblBeschriftungen

Der Inhalt der Steuerelemente aus Formularen und Reports wird in dieser Tabelle gespeichert.

ID                                           = Eindeutige Nummer des Datensatzes
SprachID                             = Sprache des Datensatzes
Steuerelementname    = Name des Steuerelements
Beschriftung                     = Beschriftung des Steuerelements
TooltipText                        = Tiptext des Steuerelements
StatuszeilenText             = Statuszeilentext des Steuerelements
Gueltigkeitsmeldung     = Gültigkeitsmeldung des Steuerelements
Formularname                 = Der Formular- oder Berichtname in dem das Steuerelement liegt
ignorieren                          = Wenn der Wert auf TRUE steht, wird nicht übersetzt
Typ                                        = Der Typ des Steuerelements
ObjektTyp                          = Formular oder Bericht

 

ggMehrsprachigkeittblBoxIDs

Die gefundenen Msg- und InputBoxen

ID                                           = Eindeutige Nummer der Box
Position                               = Position im Code
Check                                   = Zwischenspeicher beim Codedurchlauf
Typ                                        = Msgbox = 1, InputBox = 2

 

ggMehrsprachigkeittblBoxTexte

Für die Übersetzungen der Boxen

ID                                           = Eindeutige Nummer des Datensatzes
BoxID                                   = Eindeutige Nummer der Box
Prompt                                               = Inhalt von Prompt der Box
Title                                      = Inhalt von Title der Box
HelpFile                               = Inhalt von HelpFile der Box
Sprache                               = Sprache des Datensatzes
Default                                = Inhalt von Default der Box

Formulare

ggfrmSprache

Das Hauptformular, in dem die erzeugten Datensätze editiert werden können

Die Unterformulare ggfrmSpracheDetails, ggfrmSpracheRptDetails, ggfrmSpracheBoxen und ggfrmSpracheInputBoxen beinhalten die Datensätze von Formularen, Reports, MsgBoxen und InputBoxen.

Modul

Das Modul mdlggMehrsprachigkeit beinhaltet alle Funktionen die zur Übersetzung zur Laufzeit erforderlich sind

fncggSpracheStarter()

Holt die in der Tabelle gespeicherte Sprache in die globale Variable lngLang

fncStoreLanguage()

Speichert die aktuelle Sprache von lngLang in die Tabelle

getControlType()

Liefert den Typ eines Steuerelements als Text

FormBeschriftung()

Wird im Ereignis ?beim Öffnen? der Formulare aufgerufen und ersetzt dann alle Beschriftungen der Steuerelemente.

ReportBeschriftung()

Auch beim Öffnen der Berichte werden die Steuerelemente gesetzt

MsgBox()

Diese MsgBox holt sich mit der übergebenen ID die Beschriftungen der aktuellen Sprache aus der Tabelle. Sie kann jedoch auch ?normale? MsgBox-Aufrufe abarbeiten.

InputBox()

Diese Funktion ersetzt ebenfalls die eingebaute Funktion.

Steuerelemente auslesen

Aus allen Formularen und Reports werden die Eigenschaften Caption, Tooltip, Statusbar und Validation der Steuerelemente ausgelesen und der Inhalt in die Tabelle ggMehrsprachigkeittblBeschriftungen eingetragen. Dabei werden soviele Kopien angelegt, wie Sprachen in der Tabelle ggMehrsprachigkeittblSprache vorhanden sind. Wurden bereits Steuerelemente eingelesen, werden diese übersprungen. Jedoch werden Kopien ergänzt wenn weitere Sprachen oder Steuerelemente dazugekommen sind. Ebenfalls werden verwaiste Tabelleneinträge gelöscht, wenn das Steuerelement nicht mehr existiert.

Open-Ereignis aktualisieren

Damit zur Laufzeit auch die Einträge in den Tabellen berücksichtigt werden sind die Funktionen FormBeschriftung() und ReportBeschriftung() vorhanden. Diese müssen im Ereignis ?Beim Öffnen? gestartet werden. Die Codezeile ?FormBeschriftung Me? wird automatisch in alle Formulare in das Ereignis eingetragen, bei den Reports passiert das mit ?ReportBeschriftung Me?. Natürlich werden keine doppelten Einträge erzeugt, sondern nur fehlende ergänzt.

Msg- und Inputboxen auslesen

Im Code wird nach Boxen gesucht und mit einer eindeutigen ID versehen. Variablen in den Boxen werden in ein Array aufgenommen und die Beschriftungen in die Tabelle ggMehrsprachigkeittblBoxTexte eingetragen. Auch hier wird pro Sprache eine Kopie erzeugt und verwaiste Datensätze gelöscht. Sollte im Code jedoch eine Box bereits eine ID besitzen und nicht in der Tabelle zu finden sein, wird lediglich eine Meldung ausgegeben.

Formular- und Berichtsbezüge in Abfragen korregieren

In SQL-Strings in Steuerelementen können Kriterien wie [Formulare]![frmFormular]![Text13] stehen. Das Wort Formulare wird jedoch nur von einem deutschen Access richtig interpretiert. Darum werden in allen Abfragen diese Wörter durch die englischen Wörter ?Form?, ?Forms?, ?Report? und ?Reports? ersetzt.