sgcLocalization : traduisez vos applications Delphi et changez de langue pendant qu'elles s'exécutent

· Composants
sgcLocalization : traduisez vos applications Delphi et changez de langue pendant qu'elles s'exécutent | Blog eSeGeCe
Nouveau produit · sgcLocalization

Une application. Cinq langues.
Changées pendant son exécution.

sgcLocalization traduit vos propres applications Delphi, C++Builder et Lazarus. Chaque fiche, chaque message, chaque pluriel, avec un éditeur et une ligne de code pour changer la langue.

  • English
  • Deutsch
  • Español
  • Français
  • Italiano
Le tableau de bord de la même application Delphi affiché cinq fois, en anglais, allemand, espagnol, français et italien, avec les thèmes clair et sombre
1ligne pour changer
3frameworks
7 à 13versions de Delphi
0coût supplémentaire avec sgcUI

L'image ci-dessus montre un seul exécutable. Le même tableau de bord, les mêmes données, en anglais, allemand, espagnol, français et italien, et l'utilisateur change la langue depuis une liste déroulante pendant que l'application tourne. Sans redémarrage et sans seconde compilation.

Cette application a été traduite avec sgcLocalization, un nouveau produit de la suite sgcUI. Il fonctionne avec VCL, FireMonkey et LCL, de Delphi 7 à Delphi 13, dans C++Builder et dans Lazarus, et il est inclus dans chaque édition de sgcUI et dans chaque produit pris séparément.

sgcLocalization en une minute : analyser, traduire et changer la langue d'une vraie application. Aussi sur YouTube.

Changer de langue avec une seule ligne

Voici tout le code nécessaire pour changer de langue :

uses
  sgcLocalization_Engine;

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

Si vous préférez ne pas écrire de code, déposez sur la fiche la liste déroulante de langues toute prête (TsgcVCLLanguageCombo ou TsgcFMXLanguageCombo). Elle affiche les langues de votre projet et change de langue quand l'utilisateur en choisit une.

La page des commandes de la même application en anglais, allemand et italien : la barre d'outils, la navigation, le champ de recherche, les en-têtes de la grille, les données et les formats de nombres changent tous
La même page en anglais, allemand et italien. La barre d'outils, la navigation, les en-têtes de la grille, les info-bulles et les données suivent la langue.

Le changement ne se limite pas à remplacer des libellés :

Pour démarrer dans la langue du système de l'utilisateur, définissez une propriété :

sgcVCLLocalizer1.Language := 'auto';

Combien peu de travail cela demande

1DéposerPlacez un composant localizer sur la fiche principale.
2AnalyserIl collecte les textes de vos fiches, frames et modules de données.
3TraduireÀ la main, avec un traducteur via XLIFF, ou avec des propositions par IA.
4ChangerUne ligne de code, ou la liste déroulante de langues.

Le localizer (TsgcVCLLocalizer pour VCL, TsgcFMXLocalizer pour FireMonkey) trouve chaque propriété de texte par RTTI. Vous ne marquez aucune propriété, vous ne renommez aucun composant et vous ne modifiez pas vos fiches.

Des règles d'exclusion intégrées ignorent ce qui n'est jamais du texte : noms de composants, noms de champs, SQL, noms de fichiers, chaînes de format, et les propriétés non textuelles des contrôles sgcUI eux-mêmes. Vous pouvez ajouter vos propres règles. Une fiche qui mélange des contrôles standard et des contrôles sgcUI est analysée proprement, la liste à traduire ne contient donc que des textes.

Les textes dans le code : les extraits

Tous les textes ne se trouvent pas dans une fiche. Les messages, les lignes d'état et les libellés construits dans le code sont des extraits. Entourez le texte avec sgcT et il devient traduisible :

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

Un même mot peut demander deux traductions. En anglais, « Open » est à la fois une commande et l'état d'une commande client. sgcTC ajoute un contexte, et chaque sens obtient sa propre traduction :

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

Les pluriels utilisent sgcTN. Vous écrivez le singulier et le pluriel de la langue source, et la traduction fournit autant de formes que la langue cible en a besoin :

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

Les règles de pluriel viennent de CLDR, elles sont donc correctes pour chaque langue. Le polonais, par exemple, a quatre formes, et l'éditeur demande au traducteur chacune d'elles.

Un seul éditeur de traductions

Toutes les traductions se modifient au même endroit. Faites un clic droit sur le localizer à la conception pour ouvrir l'éditeur dans l'IDE, ou utilisez l'outil autonome en dehors de celui-ci.

L'éditeur de traductions sgcLocalization avec les thèmes clair et sombre : une grille avec le texte source et les traductions allemande, espagnole et française de chaque élément, des filtres d'état et un panneau d'édition avec source, traduction, note et proposition
L'éditeur de traductions, clair et sombre. Une ligne par texte, une colonne par langue, l'état de chaque élément en un coup d'œil.

Une validation qui attrape les erreurs habituelles

Une traduction qui perd un %d ou une touche d'accès est facile à écrire et difficile à repérer. sgcLocalization vérifie chaque traduction, qu'elle ait été saisie, importée ou proposée par l'IA :

L'onglet de validation de l'éditeur de traductions montrant une erreur pour des spécificateurs de format différents de la source et un avertissement pour des sauts de ligne différents
Le texte allemand a perdu un spécificateur de format. Il est signalé comme une erreur avant d'atteindre un client.

Un élément en erreur ne peut pas être marqué comme révisé, un texte défectueux ne passe donc pas dans une version comme un travail terminé.

Traduction par IA, sous forme de propositions

L'éditeur peut traduire avec des services d'IA comme ChatGPT, Claude, Gemini et Ollama. Choisissez les langues cibles, donnez-lui un glossaire et des instructions sur le ton, puis lancez.

La boîte de dialogue de traduction par IA : langues cibles allemand et français sélectionnées, portée sur les textes nouveaux et modifiés, un glossaire et des instructions pour un ton formel
Langues cibles, portée, glossaire et instructions pour la traduction par IA.

Les résultats arrivent sous forme de propositions. Vous acceptez ou rejetez chacune, et une proposition n'écrase jamais un texte déjà traduit. La même validation s'applique à elles.

Bon à savoir. La traduction par IA passe par le fournisseur d'IA de sgcUI. Les services nommés demandent sgcWebSockets. Sans lui, un événement vous permet d'appeler le service de votre choix depuis votre propre code.

XLIFF pour les traducteurs professionnels

Les agences de traduction travaillent avec XLIFF. sgcLocalization exporte du XLIFF 1.2 pour une langue, et importe le fichier à son retour.

Un import n'écrit jamais directement dans votre projet. Il ouvre une liste de révision avec chaque modification : l'ancien texte, le nouveau texte, le type de modification et les problèmes éventuels. Seules les lignes que vous cochez sont appliquées.

La liste de révision d'un import XLIFF pour un fichier français : chaque ligne montre l'élément, le type de modification, l'ancien et le nouveau texte, le nouvel état et les problèmes, avec une case à cocher pour l'appliquer
La révision d'un import XLIFF. Les lignes avec problèmes ne sont pas cochées et rien n'est appliqué tant que vous n'appuyez pas sur Appliquer.

Un seul fichier de projet

Les traductions d'une application vivent dans un seul fichier de projet avec l'extension .sgcloc. C'est du JSON, il se prête donc bien au contrôle de version : une traduction modifiée est un petit diff que vous pouvez lire lors d'une revue de code. Si vous préférez un seul exécutable sans rien à côté, le projet peut être intégré au fichier de la fiche.

Voir le résultat dans une vraie application

La démo de référence est Order Desk, une application de gestion complète : un tableau de bord, des commandes, des clients, un planificateur, une analyse pivot, un assistant et un aperçu avant impression. Elle est traduite en anglais, allemand, espagnol, français et italien, et elle existe en versions VCL, FireMonkey et Lazarus.

La page du planificateur de la démo Order Desk en français : vue de la semaine avec des livraisons, noms des jours en français, barre d'outils et navigation
Le planificateur d'Order Desk en français. Les noms des jours, les vues et les rendez-vous suivent la langue.

Le dossier de la démo contient aussi trois démarrages rapides, l'outil autonome d'édition des traductions, et un guide de prise en main qui vous mène d'une fiche vide à une application traduite.

Inclus avec sgcUI

sgcLocalization est livré avec sgcUI 2026.12.0. Il n'est pas vendu séparément : il est inclus dans chaque édition de sgcUI et dans chaque produit pris séparément, et il est sélectionné par défaut dans l'installateur.

Votre application, dans la langue de votre client

Téléchargez sgcUI, ouvrez la démo Order Desk et changez la langue pendant qu'elle tourne. Puis déposez un localizer sur votre propre fiche principale.

Des questions ou des remarques ? Contactez-nous, vous recevrez une réponse de ceux qui ont écrit le code.