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.

Translation Wizard.

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:

  1. Den Dateinamen in den FileName Wert von TsiLangDispatcher eintragen
  2. 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.
Creating the languages menu.

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/