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
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.
Le changement ne se limite pas à remplacer des libellés :
- Les fiches créées plus tard sont traduites automatiquement. Une boîte de dialogue ouverte dix minutes après le changement s'affiche dans la bonne langue.
- Les valeurs modifiées par le code sont conservées. Un libellé que votre code a rempli avec le nom d'un client n'est pas écrasé par une traduction.
- Les sélections sont conservées. Les listes déroulantes et les listes gardent l'élément sélectionné pendant que leurs éléments changent de langue.
- Les langues qui s'écrivent de droite à gauche inversent la disposition, si bien qu'un utilisateur arabe ou hébreu obtient une fiche en miroir.
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
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.
- États des éléments. Chaque texte est nouveau, modifié, proposition, traduit, révisé ou obsolète, et vous filtrez par état.
- Filtres et sélection multiple. Filtrez par langue, fiche ou texte recherché, sélectionnez plusieurs lignes et modifiez-les ensemble.
- Marques de version. Posez une marque à chaque publication, et le filtre « nouveau ou modifié depuis » montre exactement ce que la prochaine version doit traduire. Rien n'est oublié.
- La langue de votre traducteur. L'éditeur lui-même existe en 12 langues, avec des thèmes clair et sombre.
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 :
- les spécificateurs de format et les marqueurs de substitution,
- les touches d'accès,
- les sauts de ligne, les espaces au début et à la fin,
- les traductions vides et les formes de pluriel.
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.
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.
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.
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.
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.
