Das Problem beim Erstellen von mehrsprachigen, vom Benutzer übersetzbaren Applikationen lässt sich recht einfach lösen, der Benutzer kann sogar neue Sprachen selbst hinzufügen, ohne dass es Neukompilierung nötig wird. Natürlich wenn Sie TsiLang Components Suite dafür benutzen.
Lassen Sie uns Ihnen unsere Lösung für dieses Problem anhand eines Musterprojekts MastApp aus dem Delphi Unterordner Demos beschreiben.
Übersetzung des Projekts.
Wir werden den Übersetzungsprozess nicht ausführlich beschreiben, da wir davon ausgehen, dass Sie sich in diesem Teil von TsiLang Components Suite auskennen. Wir wollen nur die Komponenten nennen, die zum Übersetzen verwendet werden.
Wir benutzen TsiLangDispatcher, TsiLang und TsiLangLinked in allen anderen Projektformen.
Bild 1. Übersetzungsassistent.
Stellen TsiLang und TsiLangDispatcher auf MastData-Einheit, nachdem dieses automatisch erstellt und in allen anderen Projektformen benutzt wurde.
Erstellen der Übersetzungsdatei.
Eine Übersetzungsdatei kann entweder nach dem Übersetzen, oder vor dem Übersetzen (nur aus englischen Termini) erstellt werden. Benutzen Sie Datei|Übersetzungen speichern/laden|Projekt speichern aus Menü des TsiLang Experten (TsiLang Experte ist in dem Delphi Toolmenü zu finden). Wir empfehlen, SIB-Dateien für Übersetzungen zu benutzen, da man mit den SIB-Dateien viel schneller, als mit den SIL-Dateien arbeiten kann. Sie können aber auch SIL-Dateien benutzen, in diesem Fall werden die Daten im ASCII-Format gespeichert und lassen sich mit einem einfachen Texteditor bearbeiten.
Benutzung der separaten Übersetzungsdateien und dynamische Aktualisierung der verfügbaren Sprachen.
Es gibt zwei Varianten:
- Den Dateinamen in den FileName Wert von TsiLangDispatcher eintragen
- Prüfen, ob sich die Übersetzungsdatei in dem im Code angegebenen Verzeichnis befindet, und diese manuell laden.
Im ersten Fall wird der Dispatcher automatisch prüfen, ob sich der in FileName angegebene Dateiname korrekt ist, und diesen automatisch in alle Projektformen eintragen. Für die zweite Variante können Sie den folgenden Mustercode benutzen:
procedure TMastData.DataModuleCreate(Sender: TObject);
var
sOurSibFile: string;
begin
// determine the file name
sOurSibFile := ExtractFilePath(Application.ExeName) + 'TheNameOfYourFile.sib';
// checking the existence of file
if FileExists(sOurSibFile) then
begin
// set the property value
// this will automatically load forms created later
siLangDispatcher1.FileName := sOurSibFile;
// load translations into already created forms
siLangDispatcher1.LoadAllFromFile(sOurSibFile);
end;
end;
Wählen Sie eine Variante nach Ihrem Geschmack.
Um die verfügbaren Sprachen automatisch anzuzeigen.
- Fügen Sie ein neues höheres Menüelement zum Applikationshauptmenü hinzu.
Bild 2. Erstellen des Sprachenmenü.
- Fügen Sie den Code hinzu, der die Menüelemente dynamisch an die verfügbaren Sprachen anpassen wird. Diesen Code können Sie in die OnShow Hauptform hinzufügen:
// changing active language upon menu item click
procedure TMainForm.LanguageMenuItemClick(Sender: TObject);
begin
MastData.siLangDispatcher1.ActiveLanguage := TMenuItem(Sender).Tag;
TMenuItem(Sender).Checked := True;
end;
procedure TMainForm.FormShow(Sender: TObject);
var
MenuItem: TMenuItem;
I: Integer;
begin
for I := 1 to MastData.siLangDispatcher1.NumOfLanguages do
begin
MenuItem := TMenuItem.Create(Self);
// set Caption
MenuItem.Caption := MastData.siLangDispatcher1.LangNames[I - 1];
// set Tag property for easier language switching
MenuItem.Tag := I;
MenuItem.RadioItem := True;
// display current language
MenuItem.Checked := I = MastData.siLangDispatcher1.ActiveLanguage;
// set event handler
MenuItem.OnClick := LanguageMenuItemClick;
// add menu item
Language1.Add(MenuItem);
end;
end;
Bitte merken! Der Code zum Aktualisieren und Anzeigen der Sprachen muss nach dem Laden der Übersetzungsdatei ausgeführt werden.
Fazit.
Starten Sie das Projekt und “fertig”! Die angeblich komplizierte Aufgabe ist mit Hilfe von TsiLang Components Suite in wenigen Minuten gelöst worden. Der Benutzer kann Ihre Applikation ohne Neukompilierung und ohne Ihre Hilfe übersetzen. Ihre Benutzer können dafür den kostenlosen SIL-Editor unter /download-tsilang-components-suite/ downloaden.
TsiLang Components Suite Starseite: https://www.tsilang.de
Die neuste Version können Sie hier downloaden: /download-tsilang-components-suite/