sgcLocalization: Delphi-Anwendungen übersetzen und die Sprache zur Laufzeit umschalten

· Komponenten
sgcLocalization: Delphi-Anwendungen übersetzen und die Sprache zur Laufzeit umschalten
Neues Produkt · sgcLocalization

Eine Anwendung. Fünf Sprachen.
Umgeschaltet, während sie läuft.

sgcLocalization übersetzt Ihre eigenen Delphi-, C++Builder- und Lazarus-Anwendungen. Jedes Formular, jede Meldung, jeden Plural, mit einem Editor und einer Codezeile zum Wechseln der Sprache.

  • English
  • Deutsch
  • Español
  • Français
  • Italiano
Das Dashboard derselben Delphi-Anwendung fünfmal dargestellt, auf Englisch, Deutsch, Spanisch, Französisch und Italienisch, in hellem und dunklem Design
1Zeile zum Umschalten
3Frameworks
7 bis 13Delphi-Versionen
0Mehrkosten mit sgcUI

Das Bild oben zeigt eine einzige ausführbare Datei. Dasselbe Dashboard mit denselben Daten, auf Englisch, Deutsch, Spanisch, Französisch und Italienisch, und der Benutzer wechselt die Sprache über eine Combobox, während die Anwendung läuft. Ohne Neustart und ohne zweiten Build.

Diese Anwendung wurde mit sgcLocalization übersetzt, einem neuen Produkt der sgcUI-Suite. Es funktioniert mit VCL, FireMonkey und LCL, von Delphi 7 bis Delphi 13, in C++Builder und in Lazarus, und es ist in jeder sgcUI-Edition und in jedem Einzelprodukt enthalten.

sgcLocalization in einer Minute: eine echte Anwendung scannen, übersetzen und umschalten. Auch auf YouTube.

Die Sprache mit einer Zeile umschalten

Das ist der gesamte Code, den der Sprachwechsel braucht:

uses
  sgcLocalization_Engine;

procedure TfrmMain.btnGermanClick(Sender: TObject);
begin
  sgcSetLanguage('de');
end;

Wenn Sie lieber ganz ohne Code arbeiten, legen Sie die fertige Sprachauswahl auf das Formular (TsgcVCLLanguageCombo oder TsgcFMXLanguageCombo). Sie listet die Sprachen Ihres Projekts auf und schaltet um, sobald der Benutzer eine auswählt.

Die Bestellseite derselben Anwendung auf Englisch, Deutsch und Italienisch: Symbolleiste, Navigation, Suchfeld, Grid-Spaltenköpfe, Daten und Zahlenformate ändern sich alle
Dieselbe Seite auf Englisch, Deutsch und Italienisch. Symbolleiste, Navigation, Grid-Spaltenköpfe, Hinweise und Daten folgen der Sprache.

Der Wechsel ersetzt mehr als nur Beschriftungen:

Damit die Anwendung in der Sprache des Benutzer-Systems startet, setzen Sie eine Eigenschaft:

sgcVCLLocalizer1.Language := 'auto';

Wie wenig Arbeit nötig ist

1AblegenLegen Sie eine Localizer-Komponente auf das Hauptformular.
2ScannenSie sammelt die Texte Ihrer Formulare, Frames und Datenmodule.
3ÜbersetzenVon Hand, mit einem Übersetzer über XLIFF oder mit KI-Vorschlägen.
4UmschaltenEine Codezeile oder die Sprachauswahl.

Der Localizer (TsgcVCLLocalizer für VCL, TsgcFMXLocalizer für FireMonkey) findet jede Texteigenschaft über RTTI. Sie markieren keine Eigenschaften, benennen keine Komponenten um und ändern Ihre Formulare nicht.

Eingebaute Ignorierregeln überspringen, was nie Text ist: Komponentennamen, Feldnamen, SQL, Dateinamen, Formatstrings und die Nicht-Text-Eigenschaften der sgcUI-Steuerelemente selbst. Sie können eigene Regeln hinzufügen. Ein Formular, das Standardsteuerelemente und sgcUI-Steuerelemente mischt, wird sauber gescannt, sodass die Liste, die Sie übersetzen, nur Texte enthält und sonst nichts.

Texte im Code: Snippets

Nicht jeder Text steht in einem Formular. Meldungen, Statuszeilen und im Code erzeugte Beschriftungen sind Snippets. Umschließen Sie den Text mit sgcT, und er wird übersetzbar:

if MessageDlg(sgcT('Save changes?'), mtConfirmation,
  [mbYes, mbNo], 0) = mrYes then
  SaveOrder;

Dasselbe Wort kann zwei Übersetzungen brauchen. Im Englischen ist "Open" sowohl ein Befehl als auch ein Zustand einer Bestellung. sgcTC fügt einen Kontext hinzu, sodass jede Bedeutung ihre eigene Übersetzung erhält:

btnOpen.Caption := sgcTC('command', 'Open');
lblState.Caption := sgcTC('order status', 'Open');

Plurale verwenden sgcTN. Sie schreiben den Singular und den Plural der Quellsprache, und die Übersetzung liefert so viele Formen, wie die Zielsprache braucht:

lblSelected.Caption := sgcTN('%d order selected', '%d orders selected',
  Count, [Count]);

Die Pluralregeln stammen aus CLDR und sind daher für jede Sprache richtig. Polnisch zum Beispiel erhält vier Formen, und der Editor fragt den Übersetzer nach jeder einzelnen.

Ein Übersetzungseditor

Alle Übersetzungen werden an einer Stelle bearbeitet. Klicken Sie zur Entwurfszeit mit der rechten Maustaste auf den Localizer, um den Editor in der IDE zu öffnen, oder verwenden Sie das eigenständige Tool außerhalb der IDE.

Der sgcLocalization-Übersetzungseditor in hellem und dunklem Design: ein Grid mit dem Quelltext und den deutschen, spanischen und französischen Übersetzungen jedes Eintrags, Zustandsfilter und ein Bearbeitungsbereich mit Quelle, Übersetzung, Notiz und Vorschlag
Der Übersetzungseditor, hell und dunkel. Eine Zeile pro Text, eine Spalte pro Sprache, der Zustand jedes Eintrags auf einen Blick.

Validierung, die die üblichen Fehler findet

Eine Übersetzung, die ein %d oder ein Tastenkürzel verliert, ist schnell geschrieben und schwer zu entdecken. sgcLocalization prüft jede Übersetzung, ob sie getippt, importiert oder von der KI vorgeschlagen wurde:

Die Registerkarte Validierung des Übersetzungseditors mit einem Fehler wegen Formatangaben, die von der Quelle abweichen, und einer Warnung wegen abweichender Zeilenumbrüche
Dem deutschen Text fehlt eine Formatangabe. Sie wird als Fehler gemeldet, bevor sie einen Kunden erreicht.

Ein Eintrag mit einem Fehler kann nicht auf geprüft gesetzt werden, sodass ein fehlerhafter Text nicht als fertige Arbeit in ein Release gelangt.

KI-Übersetzung als Vorschläge

Der Editor kann mit KI-Diensten wie ChatGPT, Claude, Gemini und Ollama übersetzen. Wählen Sie die Zielsprachen, geben Sie ein Glossar und Anweisungen zum Ton vor, und starten Sie.

Der Dialog für die KI-Übersetzung: Zielsprachen Deutsch und Französisch ausgewählt, Umfang neue und geänderte Texte, ein Glossar und Anweisungen für einen formellen Ton
Zielsprachen, Umfang, Glossar und Anweisungen für die KI-Übersetzung.

Die Ergebnisse kommen als Vorschläge. Sie nehmen jeden an oder lehnen ihn ab, und ein Vorschlag überschreibt nie einen Text, der bereits übersetzt ist. Dieselbe Validierung läuft auch für sie.

Gut zu wissen. Die KI-Übersetzung läuft über den KI-Provider von sgcUI. Die genannten Dienste benötigen sgcWebSockets. Ohne sgcWebSockets können Sie über ein Ereignis jeden beliebigen Dienst aus Ihrem eigenen Code aufrufen.

XLIFF für professionelle Übersetzer

Übersetzungsagenturen arbeiten mit XLIFF. sgcLocalization exportiert XLIFF 1.2 für eine Sprache und importiert die Datei, wenn sie zurückkommt.

Ein Import schreibt nie direkt in Ihr Projekt. Er öffnet eine Prüfliste mit jeder Änderung: dem alten Text, dem neuen Text, der Art der Änderung und gefundenen Problemen. Nur die Zeilen, die Sie ankreuzen, werden übernommen.

Die Prüfliste des XLIFF-Imports für eine französische Datei: Jede Zeile zeigt den Eintrag, die Art der Änderung, den alten und neuen Text, den neuen Zustand und Probleme, mit einem Kontrollkästchen zum Übernehmen
Die Prüfung eines XLIFF-Imports. Zeilen mit Problemen bleiben unmarkiert, und nichts wird übernommen, bevor Sie auf Übernehmen klicken.

Eine Projektdatei

Die Übersetzungen einer Anwendung liegen in einer Projektdatei mit der Endung .sgcloc. Sie ist JSON und damit versionsverwaltungsfreundlich: Eine geänderte Übersetzung ist ein kleiner Diff, den Sie im Code-Review lesen können. Wenn Sie eine einzelne ausführbare Datei ohne etwas daneben bevorzugen, kann das Projekt stattdessen in die Formulardatei eingebettet werden.

In einer echten Anwendung ansehen

Die Showcase-Demo ist Order Desk, eine vollständige Geschäftsanwendung: ein Dashboard, Bestellungen, Kunden, ein Planer, Pivot-Analyse, ein Assistent und eine Druckvorschau. Sie ist ins Englische, Deutsche, Spanische, Französische und Italienische übersetzt und kommt in VCL-, FireMonkey- und Lazarus-Versionen.

Die Planerseite der Order-Desk-Demo auf Französisch: Wochenansicht mit Lieferungen, französische Wochentagsnamen, Symbolleiste und Navigation
Der Planer von Order Desk auf Französisch. Wochentagsnamen, Ansichten und Termine folgen der Sprache.

Der Demo-Ordner enthält außerdem drei Schnellstarts, das eigenständige Übersetzungseditor-Tool und eine Anleitung zum Einstieg, die Sie von einem leeren Formular zu einer übersetzten Anwendung führt.

In sgcUI enthalten

sgcLocalization wird mit sgcUI 2026.12.0 ausgeliefert. Es wird nicht separat verkauft: Es ist in jeder sgcUI-Edition und in jedem Einzelprodukt enthalten und im Installer standardmäßig ausgewählt.

Ihre Anwendung, in der Sprache Ihrer Kunden

Laden Sie sgcUI herunter, öffnen Sie die Order-Desk-Demo und wechseln Sie die Sprache, während sie läuft. Legen Sie dann einen Localizer auf Ihr eigenes Hauptformular.

Fragen oder Feedback? Nehmen Sie Kontakt auf, Sie erhalten eine Antwort von den Menschen, die den Code geschrieben haben.