SlideShare une entreprise Scribd logo
1  sur  49
Télécharger pour lire hors ligne
Internationaliser
les projets VCL / FMX
Webinaire du 25 juin 2020
PRÉSENTATEUR
MVP Embarcadero
Prestataire informatique freelance et formateur Delphi
CV et contacts sur https://www.linkedin.com/in/patrickpremartin/
Blog Delphi/Pascal sur https://developpeur-pascal.fr
Outils Embarcadero
Les meilleurs outils de développement multi-
plateformes. Créez une fois et déployez des
applications modernes sur chaque plateforme.
Support Technique
Nos techniciens sont à votre service à tout
moment pour répondre à vos questions et
vous fournir des informations sûres.
Distributeur Officiel
Partenaire exclusif de Embarcadero
Technologies, largement reconnu pour
ses produits de programmation primés.
B A R N S T E N
QUI
Site : https://www.barnsten.com – Contacts FR : equipe@barnsten.com
NOTRE
Société de prestations informatiques.
Edition de sites Internet, vidéos et livres.
Centre de formation référencé sur Datadock.
Infos et contacts : https://olfsoftware.fr
Formations en entreprise : https://se-former-a-delphi.fr
Formations en ligne : https://apprendre-delphi.fr
O L F S O F T W A R E
INTROD
Je vous propose aujourd’hui de voir comment
gérer les traductions de vos logiciels.
© Patrick Prémartin / developpeur-pascal.fr
INTROD
Les exemples seront réalisés avec Delphi mais
vous pourrez bien entendu vous en inspirer pour
faire de même sous C++Builder ou d’autres
logiciels et langages de développement.
© Patrick Prémartin / developpeur-pascal.fr
POURQUOI
Pourquoi localiser un logiciel ou une application ?
Plusieurs raisons à cela.
© Patrick Prémartin / developpeur-pascal.fr
POURQUOI
Logiciels personnels :
- au cas où on les diffuse un jour.
Autant mettre en place dès le départ les bases
pour ne pas avoir à repasser partout.
© Patrick Prémartin / developpeur-pascal.fr
POURQUOI
Logiciels internes à une entreprise, association,… :
- pour permettre aux utilisateurs habituels de
toutes origines de s’y retrouver même s’ils ne
parlent pas la langue locale,
- pour permettre à des intervenants extérieurs
de comprendre et utiliser les mêmes logiciels.
© Patrick Prémartin / developpeur-pascal.fr
POURQUOI
Logiciels « publics » et applications mobiles :
- pour toucher un maximum de monde,
- avoir l’image d’un éditeur qui prend soin de ses
utilisateurs,
- être dans les normes de l’édition de logiciels,
avoir une envergure internationale,
- etc…
© Patrick Prémartin / developpeur-pascal.fr
POURQUOI
Petit rappel au passage : il sera bien une fois que
le logiciel sera traduit (ou prêt à l’être) de prendre
en compte les normes en terme d’accessibilité
avec la mise en place des outils proposés par
chaque système d’exploitation.
© Patrick Prémartin / developpeur-pascal.fr
QUOI
© Patrick Prémartin / developpeur-pascal.fr
Il y a 4 choses à traduire dans les logiciels et
applications mobiles :
- les textes « en dur » à l’écran
QUOI
© Patrick Prémartin / developpeur-pascal.fr
Il y a 4 choses à traduire dans les logiciels et
applications mobiles :
- les textes « en dur » à l’écran
- les textes provenant du système d’exploitation
QUOI
© Patrick Prémartin / developpeur-pascal.fr
Il y a 4 choses à traduire dans les logiciels et
applications mobiles :
- les textes « en dur » à l’écran
- les textes provenant du système d’exploitation
- les textes provenant d’une base de données
(comme des libellés de statuts)
QUOI
© Patrick Prémartin / developpeur-pascal.fr
Il y a 4 choses à traduire dans les logiciels et
applications mobiles :
- les textes « en dur » à l’écran
- les textes provenant du système d’exploitation
- les textes provenant d’une base de données
(comme des libellés de statuts)
- les textes présents dans des chaines de
caractères affichées par code
COMMENT
© Patrick Prémartin / developpeur-pascal.fr
La traduction en elle-même ne dépend pas
forcément de votre logiciel même si vos choix en
terme de stockage et de traitement des textes
traduits peut avoir un impact.
COMMENT
© Patrick Prémartin / developpeur-pascal.fr
Vous pouvez utiliser un logiciel ou un dictionnaire
pour les textes courts.
Systran est l’un des éditeurs de logiciels de
traduction les plus connus.
Vous avez aussi Deepl, Google Translate et
Microsoft Translator et une multitude d’autres
éditeurs en ligne.
COMMENT
© Patrick Prémartin / developpeur-pascal.fr
Passez par un logiciel pour les textes courts est
pratique et simple mais parfois donne des
résultats douteux.
Il est préférable de faire relire vos traductions
« automatisées » par une personne connaissant la
langue concernée.
COMMENT
© Patrick Prémartin / developpeur-pascal.fr
Et si vous voulez des résultats plus qualitatifs ou
traduire des textes dépassant une ou deux
phrases, faire appel à un traducteur professionnel
reste l’option la plus efficace.
IMPLEMENTER
© Patrick Prémartin / developpeur-pascal.fr
Là encore plusieurs solutions :
- Embarcadero en propose une pour les projets
VCL et une autre pour les projets FireMonkey.
- Il en existe chez des éditeurs tiers.
- Une solution personnelle peut parfois être plus
simple.
IMPLEMENTER
© Patrick Prémartin / developpeur-pascal.fr
Pour les projets VCL : Embarcadero propose un
assistant de localisation de projets.
Il travaille avec des DLL de ressources et permet
de traduire les textes des écrans, de la RTL et
présents dans les sources des programmes.
IMPLEMENTER
© Patrick Prémartin / developpeur-pascal.fr
Consultez la documentation officielle pour en
savoir plus sur
http://docwiki.embarcadero.com/RADStudio/Sydn
ey/fr/Localisation_des_applications_avec_le_gesti
onnaire_de_traductions_-_Index
IMPLEMENTER
© Patrick Prémartin / developpeur-pascal.fr
Pour les projets FireMonkey : Embarcadero
propose un composant TLang. Il est à placer sur
chaque fiche à traduire.
Pour info, consultez là aussi la documentation
officielle :
http://docwiki.embarcadero.com/Libraries/Sydney
/fr/FMX.Types.TLang
IMPLEMENTER
© Patrick Prémartin / developpeur-pascal.fr
Du côté des alternatives à Embarcadero on trouve
plusieurs solutions open sources ou payantes.
IMPLEMENTER
© Patrick Prémartin / developpeur-pascal.fr
TSILang de Igor Sitikov (VCL & FMX, licence
payante avec support inclus)
Plus d’infos sur https://www.tsilang.com
IMPLEMENTER
© Patrick Prémartin / developpeur-pascal.fr
DKLang de Dmitry Kann (VCL & FMX, open source)
Sources : https://github.com/yktoo/dklang
Editeur (pour les traducteurs) :
https://github.com/yktoo/dkl_traned
Infos sur :
https://yktoo.com/en/blog/post/2013/12/13-
dklang-localization-package-4.01-5.0/
IMPLEMENTER
© Patrick Prémartin / developpeur-pascal.fr
Better Translation Manager de Anders Melander
(VCL, open source)
Sources et infos sur
https://bitbucket.org/anders_melander/better-
translation-manager/src/master/
IMPLEMENTER
© Patrick Prémartin / developpeur-pascal.fr
Kryvich's Delphi Localizer de Kryvitch (VCL, open
source)
Sources sur https://github.com/Kryuski/kryvich-
delphi-localizer
Infos sur
https://sites.google.com/site/kryvich/localizer
IMPLEMENTER
© Patrick Prémartin / developpeur-pascal.fr
Le site Torry en référence plusieurs sur la page
https://torry.net/pages.php?id=49
IMPLEMENTER
© Patrick Prémartin / developpeur-pascal.fr
Vous en trouverez d’autres en cherchant « Delphi
localization component » ou « Delphi localization
software » sur vos moteurs de recherches
habituels.
Privilégiez des solutions proposant les sources
pour vous garantir la pérennité de la solution et
donc de votre logiciel au fil des versions de Delphi.
SOLUTION
© Patrick Prémartin / developpeur-pascal.fr
Pourquoi passer par des tiers et en dépendre
quand le développer soi-même n’est pas
forcément compliqué ?
Après tout ne sommes-nous pas développeurs ?
SOLUTION
© Patrick Prémartin / developpeur-pascal.fr
Je vous propose donc un petit exemple inspiré de
ce que j’utilise dans les projets sur lesquels je suis
amené à travailler.
SOLUTION
© Patrick Prémartin / developpeur-pascal.fr
Le projet est en deux parties :
- La première est alimentée par le développeur
et destinée à saisir et exporter les traductions.
- La seconde est l’utilisation de ces traductions
dans un programme FMX.
La même chose peut se faire en VCL en Delphi,
C++Builder ou même Lazarus.
SOLUTION
© Patrick Prémartin / developpeur-pascal.fr
Logiciel de gestion des traductions.
C’est une simple grille à l’écran qui aura une
colonne pour chaque langue gérée et une colonne
pour l’ID.
SOLUTION
© Patrick Prémartin / developpeur-pascal.fr
Logiciel de gestion des traductions.
La liste est stockée dans une table en mémoire
FireDAC (TFDMemTable) ont j’utilise les propriétés
de persistence.
SOLUTION
© Patrick Prémartin / developpeur-pascal.fr
Logiciel à traduire.
Dans le programme qui utilisera les traductions je
vais simplement charger le contenu de la table en
mémoire depuis un fichier. Ce sera fait au niveau
d’un module de données chargé
automatiquement.
SOLUTION
© Patrick Prémartin / developpeur-pascal.fr
Logiciel à traduire.
La récupération et le traitement des textes est
également effectué par le module de données sur
les fiches compatibles.
Le choix et le changement de langue sont traités
par le même module de données.
SOLUTION
© Patrick Prémartin / developpeur-pascal.fr
Sous le capot
Les fiches, les cadres comme tous les composants
visuels ou non visuels sont accessibles depuis
l’application en parcourant certaines propriétés
(components, childrens ou controls) de façon
récursive.
SOLUTION
© Patrick Prémartin / developpeur-pascal.fr
Sous le capot
Les textes présents à l’écran peuvent être traités
selon le type de composant visuel présent et
stockant l’ID du texte au niveau du Tag du
composant ou à partir de son nom.
SOLUTION
© Patrick Prémartin / developpeur-pascal.fr
Sous le capot
Les textes applicatifs sont récupérés à partir d’une
simple fonction.
SOLUTION
© Patrick Prémartin / developpeur-pascal.fr
Vous pouvez télécharger les sources de cet
exemple depuis
https://github.com/DeveloppeurPascal/Internatio
naliserVosLogicielsVCLFMX
Soyez libres de les utiliser tels quels ou vous en
inspirer pour vos projets.
QUELQUES
© Patrick Prémartin / developpeur-pascal.fr
Pour le stockage des textes vous pouvez utiliser
des bases de données, une table dans votre base
de données principale, des chaines stockées sous
forme de constante dans une unité, sous forme de
DLL de ressources ou de chaînes de ressources ou
utiliser les fichiers PO classiques dans le monde du
oueb et de Linux.
QUELQUES
© Patrick Prémartin / developpeur-pascal.fr
Pour le lien entre vos textes et les éléments
d’interface vous pouvez utiliser des identifiants
numériques ou alpha. La plupart du temps on
prend le texte par défaut comme ID pour ses
traductions (ce qui peut poser problème lorsqu’on
le change).
QUESTIONS
© Patrick Prémartin / developpeur-pascal.fr
CONCL
© Patrick Prémartin / developpeur-pascal.fr
J’espère vous avoir convaincus de l’intérêt de faire
des logiciels localisés et que les possibilités
évoquées durant cette session vous aideront à
passer à la pratique.
CONCL
© Patrick Prémartin / developpeur-pascal.fr
La rediffusion de ce webinaire devrait être
disponible sur la chaîne YouTube de Barnsten :
https://www.youtube.com/channel/UCSrWP5Y01
uSHS3014Pfprlw/videos
CONCL
© Patrick Prémartin / developpeur-pascal.fr
Pour des ressources complémentaires, télécharger
cette présentation et accéder aux exemples,
rendez-vous sur :
https://developpeur-pascal.fr/p/_200j-webinaire-
du-25-juin-2020-internationaliser-les-projets-vcl--
fmx.html
PROCHAINS
© Patrick Prémartin / developpeur-pascal.fr
Prochains webinaires prévus :
- 28 juillet 2020 : Gérer le clavier virtuel sur iOS
et Android
- 25 août 2020 : Sauvegarder et restaurer l'état
des applications mobiles
Détail et inscriptions depuis https://developpeur-
pascal.fr/p/_6007-webinaires.html
CONTACTEZ NOUS

Contenu connexe

Similaire à Internationaliser les projets VCL / FMX

Coder sans coder : Delphi en mode no code !
Coder sans coder : Delphi en mode no code !Coder sans coder : Delphi en mode no code !
Coder sans coder : Delphi en mode no code !pprem
 
Delphi et les tests unitaires
Delphi et les tests unitairesDelphi et les tests unitaires
Delphi et les tests unitairespprem
 
Déploiement et débogage à distance
Déploiement et débogage à distanceDéploiement et débogage à distance
Déploiement et débogage à distancepprem
 
Utiliser l'EDI pour développer en multiplateforme
Utiliser l'EDI pour développer en multiplateformeUtiliser l'EDI pour développer en multiplateforme
Utiliser l'EDI pour développer en multiplateformepprem
 
Embarquer une base de données locale dans vos logiciels et applications mobiles
Embarquer une base de données locale dans vos logiciels et applications mobilesEmbarquer une base de données locale dans vos logiciels et applications mobiles
Embarquer une base de données locale dans vos logiciels et applications mobilespprem
 
Sauvegarder et restaurer l'état des applications mobiles
Sauvegarder et restaurer l'état des applications mobilesSauvegarder et restaurer l'état des applications mobiles
Sauvegarder et restaurer l'état des applications mobilespprem
 
Comment développer pour Linux avec Delphi
Comment développer pour Linux avec DelphiComment développer pour Linux avec Delphi
Comment développer pour Linux avec Delphipprem
 
Utiliser FireMonkey comme moteur de jeux vidéo
Utiliser FireMonkey comme moteur de jeux vidéoUtiliser FireMonkey comme moteur de jeux vidéo
Utiliser FireMonkey comme moteur de jeux vidéopprem
 
Gestion multi-pays & multilingue avec Drupal
Gestion multi-pays & multilingue avec DrupalGestion multi-pays & multilingue avec Drupal
Gestion multi-pays & multilingue avec DrupalAdyax
 
Découvrez FireDAC pour FMX
Découvrez FireDAC pour FMXDécouvrez FireDAC pour FMX
Découvrez FireDAC pour FMXpprem
 
Utiliser des dessins vectoriels à la place d'images
Utiliser des dessins vectoriels à la place d'imagesUtiliser des dessins vectoriels à la place d'images
Utiliser des dessins vectoriels à la place d'imagespprem
 
Des solutions de synchronisation de données
Des solutions de synchronisation de donnéesDes solutions de synchronisation de données
Des solutions de synchronisation de donnéespprem
 
Présentation de Delphi 10.4 Sydney, C++Builder 10.4 Sydney et RAD Studio 10.4...
Présentation de Delphi 10.4 Sydney, C++Builder 10.4 Sydney et RAD Studio 10.4...Présentation de Delphi 10.4 Sydney, C++Builder 10.4 Sydney et RAD Studio 10.4...
Présentation de Delphi 10.4 Sydney, C++Builder 10.4 Sydney et RAD Studio 10.4...pprem
 
Découvrez FireDAC pour la VCL
Découvrez FireDAC pour la VCLDécouvrez FireDAC pour la VCL
Découvrez FireDAC pour la VCLpprem
 
Utilisation de git avec Delphi
Utilisation de git avec DelphiUtilisation de git avec Delphi
Utilisation de git avec Delphipprem
 
Gérer le clavier virtuel sous iOS et Android
Gérer le clavier virtuel sous iOS et AndroidGérer le clavier virtuel sous iOS et Android
Gérer le clavier virtuel sous iOS et Androidpprem
 
20100221 my phingtool - blog
20100221   my phingtool - blog20100221   my phingtool - blog
20100221 my phingtool - blogPHPPRO
 
Présentation Sollan I-Expo 2008
Présentation Sollan I-Expo 2008Présentation Sollan I-Expo 2008
Présentation Sollan I-Expo 2008mlefebvre
 

Similaire à Internationaliser les projets VCL / FMX (20)

Coder sans coder : Delphi en mode no code !
Coder sans coder : Delphi en mode no code !Coder sans coder : Delphi en mode no code !
Coder sans coder : Delphi en mode no code !
 
Delphi et les tests unitaires
Delphi et les tests unitairesDelphi et les tests unitaires
Delphi et les tests unitaires
 
Déploiement et débogage à distance
Déploiement et débogage à distanceDéploiement et débogage à distance
Déploiement et débogage à distance
 
Utiliser l'EDI pour développer en multiplateforme
Utiliser l'EDI pour développer en multiplateformeUtiliser l'EDI pour développer en multiplateforme
Utiliser l'EDI pour développer en multiplateforme
 
Embarquer une base de données locale dans vos logiciels et applications mobiles
Embarquer une base de données locale dans vos logiciels et applications mobilesEmbarquer une base de données locale dans vos logiciels et applications mobiles
Embarquer une base de données locale dans vos logiciels et applications mobiles
 
Sauvegarder et restaurer l'état des applications mobiles
Sauvegarder et restaurer l'état des applications mobilesSauvegarder et restaurer l'état des applications mobiles
Sauvegarder et restaurer l'état des applications mobiles
 
Comment développer pour Linux avec Delphi
Comment développer pour Linux avec DelphiComment développer pour Linux avec Delphi
Comment développer pour Linux avec Delphi
 
Utiliser FireMonkey comme moteur de jeux vidéo
Utiliser FireMonkey comme moteur de jeux vidéoUtiliser FireMonkey comme moteur de jeux vidéo
Utiliser FireMonkey comme moteur de jeux vidéo
 
Gestion multi-pays & multilingue avec Drupal
Gestion multi-pays & multilingue avec DrupalGestion multi-pays & multilingue avec Drupal
Gestion multi-pays & multilingue avec Drupal
 
Découvrez FireDAC pour FMX
Découvrez FireDAC pour FMXDécouvrez FireDAC pour FMX
Découvrez FireDAC pour FMX
 
Utiliser des dessins vectoriels à la place d'images
Utiliser des dessins vectoriels à la place d'imagesUtiliser des dessins vectoriels à la place d'images
Utiliser des dessins vectoriels à la place d'images
 
Td pascal tdD
Td pascal tdDTd pascal tdD
Td pascal tdD
 
Des solutions de synchronisation de données
Des solutions de synchronisation de donnéesDes solutions de synchronisation de données
Des solutions de synchronisation de données
 
Tice En Classe D Anglais
Tice En Classe D AnglaisTice En Classe D Anglais
Tice En Classe D Anglais
 
Présentation de Delphi 10.4 Sydney, C++Builder 10.4 Sydney et RAD Studio 10.4...
Présentation de Delphi 10.4 Sydney, C++Builder 10.4 Sydney et RAD Studio 10.4...Présentation de Delphi 10.4 Sydney, C++Builder 10.4 Sydney et RAD Studio 10.4...
Présentation de Delphi 10.4 Sydney, C++Builder 10.4 Sydney et RAD Studio 10.4...
 
Découvrez FireDAC pour la VCL
Découvrez FireDAC pour la VCLDécouvrez FireDAC pour la VCL
Découvrez FireDAC pour la VCL
 
Utilisation de git avec Delphi
Utilisation de git avec DelphiUtilisation de git avec Delphi
Utilisation de git avec Delphi
 
Gérer le clavier virtuel sous iOS et Android
Gérer le clavier virtuel sous iOS et AndroidGérer le clavier virtuel sous iOS et Android
Gérer le clavier virtuel sous iOS et Android
 
20100221 my phingtool - blog
20100221   my phingtool - blog20100221   my phingtool - blog
20100221 my phingtool - blog
 
Présentation Sollan I-Expo 2008
Présentation Sollan I-Expo 2008Présentation Sollan I-Expo 2008
Présentation Sollan I-Expo 2008
 

Plus de pprem

Using FireMonkey as a game engine
Using FireMonkey as a game engineUsing FireMonkey as a game engine
Using FireMonkey as a game enginepprem
 
Using Delphi as a no code development environment
Using Delphi as a no code development environmentUsing Delphi as a no code development environment
Using Delphi as a no code development environmentpprem
 
Easy coding a multi device game with FireMonkey
Easy coding a multi device game with FireMonkeyEasy coding a multi device game with FireMonkey
Easy coding a multi device game with FireMonkeypprem
 
Quoi de neuf dans la version 11 Alexandria ?
Quoi de neuf dans la version 11 Alexandria ?Quoi de neuf dans la version 11 Alexandria ?
Quoi de neuf dans la version 11 Alexandria ?pprem
 
Faire une interface adaptive avec la VCL
Faire une interface adaptive avec la VCLFaire une interface adaptive avec la VCL
Faire une interface adaptive avec la VCLpprem
 
Faire une interface adaptive avec FireMonkey
Faire une interface adaptive avec FireMonkeyFaire une interface adaptive avec FireMonkey
Faire une interface adaptive avec FireMonkeypprem
 
QR codes et codes à barres sous Delphi
QR codes et codes à barres sous DelphiQR codes et codes à barres sous Delphi
QR codes et codes à barres sous Delphipprem
 
POC Notes de frais
POC Notes de fraisPOC Notes de frais
POC Notes de fraispprem
 
Comment écrire des articles de blog à succès
Comment écrire des articles de blog à succèsComment écrire des articles de blog à succès
Comment écrire des articles de blog à succèspprem
 
Gagner de l'argent sur Internet
Gagner de l'argent sur InternetGagner de l'argent sur Internet
Gagner de l'argent sur Internetpprem
 
Trafic
TraficTrafic
Traficpprem
 

Plus de pprem (11)

Using FireMonkey as a game engine
Using FireMonkey as a game engineUsing FireMonkey as a game engine
Using FireMonkey as a game engine
 
Using Delphi as a no code development environment
Using Delphi as a no code development environmentUsing Delphi as a no code development environment
Using Delphi as a no code development environment
 
Easy coding a multi device game with FireMonkey
Easy coding a multi device game with FireMonkeyEasy coding a multi device game with FireMonkey
Easy coding a multi device game with FireMonkey
 
Quoi de neuf dans la version 11 Alexandria ?
Quoi de neuf dans la version 11 Alexandria ?Quoi de neuf dans la version 11 Alexandria ?
Quoi de neuf dans la version 11 Alexandria ?
 
Faire une interface adaptive avec la VCL
Faire une interface adaptive avec la VCLFaire une interface adaptive avec la VCL
Faire une interface adaptive avec la VCL
 
Faire une interface adaptive avec FireMonkey
Faire une interface adaptive avec FireMonkeyFaire une interface adaptive avec FireMonkey
Faire une interface adaptive avec FireMonkey
 
QR codes et codes à barres sous Delphi
QR codes et codes à barres sous DelphiQR codes et codes à barres sous Delphi
QR codes et codes à barres sous Delphi
 
POC Notes de frais
POC Notes de fraisPOC Notes de frais
POC Notes de frais
 
Comment écrire des articles de blog à succès
Comment écrire des articles de blog à succèsComment écrire des articles de blog à succès
Comment écrire des articles de blog à succès
 
Gagner de l'argent sur Internet
Gagner de l'argent sur InternetGagner de l'argent sur Internet
Gagner de l'argent sur Internet
 
Trafic
TraficTrafic
Trafic
 

Internationaliser les projets VCL / FMX

  • 1. Internationaliser les projets VCL / FMX Webinaire du 25 juin 2020
  • 2. PRÉSENTATEUR MVP Embarcadero Prestataire informatique freelance et formateur Delphi CV et contacts sur https://www.linkedin.com/in/patrickpremartin/ Blog Delphi/Pascal sur https://developpeur-pascal.fr
  • 3. Outils Embarcadero Les meilleurs outils de développement multi- plateformes. Créez une fois et déployez des applications modernes sur chaque plateforme. Support Technique Nos techniciens sont à votre service à tout moment pour répondre à vos questions et vous fournir des informations sûres. Distributeur Officiel Partenaire exclusif de Embarcadero Technologies, largement reconnu pour ses produits de programmation primés. B A R N S T E N QUI Site : https://www.barnsten.com – Contacts FR : equipe@barnsten.com
  • 4. NOTRE Société de prestations informatiques. Edition de sites Internet, vidéos et livres. Centre de formation référencé sur Datadock. Infos et contacts : https://olfsoftware.fr Formations en entreprise : https://se-former-a-delphi.fr Formations en ligne : https://apprendre-delphi.fr O L F S O F T W A R E
  • 5. INTROD Je vous propose aujourd’hui de voir comment gérer les traductions de vos logiciels. © Patrick Prémartin / developpeur-pascal.fr
  • 6. INTROD Les exemples seront réalisés avec Delphi mais vous pourrez bien entendu vous en inspirer pour faire de même sous C++Builder ou d’autres logiciels et langages de développement. © Patrick Prémartin / developpeur-pascal.fr
  • 7. POURQUOI Pourquoi localiser un logiciel ou une application ? Plusieurs raisons à cela. © Patrick Prémartin / developpeur-pascal.fr
  • 8. POURQUOI Logiciels personnels : - au cas où on les diffuse un jour. Autant mettre en place dès le départ les bases pour ne pas avoir à repasser partout. © Patrick Prémartin / developpeur-pascal.fr
  • 9. POURQUOI Logiciels internes à une entreprise, association,… : - pour permettre aux utilisateurs habituels de toutes origines de s’y retrouver même s’ils ne parlent pas la langue locale, - pour permettre à des intervenants extérieurs de comprendre et utiliser les mêmes logiciels. © Patrick Prémartin / developpeur-pascal.fr
  • 10. POURQUOI Logiciels « publics » et applications mobiles : - pour toucher un maximum de monde, - avoir l’image d’un éditeur qui prend soin de ses utilisateurs, - être dans les normes de l’édition de logiciels, avoir une envergure internationale, - etc… © Patrick Prémartin / developpeur-pascal.fr
  • 11. POURQUOI Petit rappel au passage : il sera bien une fois que le logiciel sera traduit (ou prêt à l’être) de prendre en compte les normes en terme d’accessibilité avec la mise en place des outils proposés par chaque système d’exploitation. © Patrick Prémartin / developpeur-pascal.fr
  • 12. QUOI © Patrick Prémartin / developpeur-pascal.fr Il y a 4 choses à traduire dans les logiciels et applications mobiles : - les textes « en dur » à l’écran
  • 13. QUOI © Patrick Prémartin / developpeur-pascal.fr Il y a 4 choses à traduire dans les logiciels et applications mobiles : - les textes « en dur » à l’écran - les textes provenant du système d’exploitation
  • 14. QUOI © Patrick Prémartin / developpeur-pascal.fr Il y a 4 choses à traduire dans les logiciels et applications mobiles : - les textes « en dur » à l’écran - les textes provenant du système d’exploitation - les textes provenant d’une base de données (comme des libellés de statuts)
  • 15. QUOI © Patrick Prémartin / developpeur-pascal.fr Il y a 4 choses à traduire dans les logiciels et applications mobiles : - les textes « en dur » à l’écran - les textes provenant du système d’exploitation - les textes provenant d’une base de données (comme des libellés de statuts) - les textes présents dans des chaines de caractères affichées par code
  • 16. COMMENT © Patrick Prémartin / developpeur-pascal.fr La traduction en elle-même ne dépend pas forcément de votre logiciel même si vos choix en terme de stockage et de traitement des textes traduits peut avoir un impact.
  • 17. COMMENT © Patrick Prémartin / developpeur-pascal.fr Vous pouvez utiliser un logiciel ou un dictionnaire pour les textes courts. Systran est l’un des éditeurs de logiciels de traduction les plus connus. Vous avez aussi Deepl, Google Translate et Microsoft Translator et une multitude d’autres éditeurs en ligne.
  • 18. COMMENT © Patrick Prémartin / developpeur-pascal.fr Passez par un logiciel pour les textes courts est pratique et simple mais parfois donne des résultats douteux. Il est préférable de faire relire vos traductions « automatisées » par une personne connaissant la langue concernée.
  • 19. COMMENT © Patrick Prémartin / developpeur-pascal.fr Et si vous voulez des résultats plus qualitatifs ou traduire des textes dépassant une ou deux phrases, faire appel à un traducteur professionnel reste l’option la plus efficace.
  • 20. IMPLEMENTER © Patrick Prémartin / developpeur-pascal.fr Là encore plusieurs solutions : - Embarcadero en propose une pour les projets VCL et une autre pour les projets FireMonkey. - Il en existe chez des éditeurs tiers. - Une solution personnelle peut parfois être plus simple.
  • 21. IMPLEMENTER © Patrick Prémartin / developpeur-pascal.fr Pour les projets VCL : Embarcadero propose un assistant de localisation de projets. Il travaille avec des DLL de ressources et permet de traduire les textes des écrans, de la RTL et présents dans les sources des programmes.
  • 22. IMPLEMENTER © Patrick Prémartin / developpeur-pascal.fr Consultez la documentation officielle pour en savoir plus sur http://docwiki.embarcadero.com/RADStudio/Sydn ey/fr/Localisation_des_applications_avec_le_gesti onnaire_de_traductions_-_Index
  • 23. IMPLEMENTER © Patrick Prémartin / developpeur-pascal.fr Pour les projets FireMonkey : Embarcadero propose un composant TLang. Il est à placer sur chaque fiche à traduire. Pour info, consultez là aussi la documentation officielle : http://docwiki.embarcadero.com/Libraries/Sydney /fr/FMX.Types.TLang
  • 24. IMPLEMENTER © Patrick Prémartin / developpeur-pascal.fr Du côté des alternatives à Embarcadero on trouve plusieurs solutions open sources ou payantes.
  • 25. IMPLEMENTER © Patrick Prémartin / developpeur-pascal.fr TSILang de Igor Sitikov (VCL & FMX, licence payante avec support inclus) Plus d’infos sur https://www.tsilang.com
  • 26. IMPLEMENTER © Patrick Prémartin / developpeur-pascal.fr DKLang de Dmitry Kann (VCL & FMX, open source) Sources : https://github.com/yktoo/dklang Editeur (pour les traducteurs) : https://github.com/yktoo/dkl_traned Infos sur : https://yktoo.com/en/blog/post/2013/12/13- dklang-localization-package-4.01-5.0/
  • 27. IMPLEMENTER © Patrick Prémartin / developpeur-pascal.fr Better Translation Manager de Anders Melander (VCL, open source) Sources et infos sur https://bitbucket.org/anders_melander/better- translation-manager/src/master/
  • 28. IMPLEMENTER © Patrick Prémartin / developpeur-pascal.fr Kryvich's Delphi Localizer de Kryvitch (VCL, open source) Sources sur https://github.com/Kryuski/kryvich- delphi-localizer Infos sur https://sites.google.com/site/kryvich/localizer
  • 29. IMPLEMENTER © Patrick Prémartin / developpeur-pascal.fr Le site Torry en référence plusieurs sur la page https://torry.net/pages.php?id=49
  • 30. IMPLEMENTER © Patrick Prémartin / developpeur-pascal.fr Vous en trouverez d’autres en cherchant « Delphi localization component » ou « Delphi localization software » sur vos moteurs de recherches habituels. Privilégiez des solutions proposant les sources pour vous garantir la pérennité de la solution et donc de votre logiciel au fil des versions de Delphi.
  • 31. SOLUTION © Patrick Prémartin / developpeur-pascal.fr Pourquoi passer par des tiers et en dépendre quand le développer soi-même n’est pas forcément compliqué ? Après tout ne sommes-nous pas développeurs ?
  • 32. SOLUTION © Patrick Prémartin / developpeur-pascal.fr Je vous propose donc un petit exemple inspiré de ce que j’utilise dans les projets sur lesquels je suis amené à travailler.
  • 33. SOLUTION © Patrick Prémartin / developpeur-pascal.fr Le projet est en deux parties : - La première est alimentée par le développeur et destinée à saisir et exporter les traductions. - La seconde est l’utilisation de ces traductions dans un programme FMX. La même chose peut se faire en VCL en Delphi, C++Builder ou même Lazarus.
  • 34. SOLUTION © Patrick Prémartin / developpeur-pascal.fr Logiciel de gestion des traductions. C’est une simple grille à l’écran qui aura une colonne pour chaque langue gérée et une colonne pour l’ID.
  • 35. SOLUTION © Patrick Prémartin / developpeur-pascal.fr Logiciel de gestion des traductions. La liste est stockée dans une table en mémoire FireDAC (TFDMemTable) ont j’utilise les propriétés de persistence.
  • 36. SOLUTION © Patrick Prémartin / developpeur-pascal.fr Logiciel à traduire. Dans le programme qui utilisera les traductions je vais simplement charger le contenu de la table en mémoire depuis un fichier. Ce sera fait au niveau d’un module de données chargé automatiquement.
  • 37. SOLUTION © Patrick Prémartin / developpeur-pascal.fr Logiciel à traduire. La récupération et le traitement des textes est également effectué par le module de données sur les fiches compatibles. Le choix et le changement de langue sont traités par le même module de données.
  • 38. SOLUTION © Patrick Prémartin / developpeur-pascal.fr Sous le capot Les fiches, les cadres comme tous les composants visuels ou non visuels sont accessibles depuis l’application en parcourant certaines propriétés (components, childrens ou controls) de façon récursive.
  • 39. SOLUTION © Patrick Prémartin / developpeur-pascal.fr Sous le capot Les textes présents à l’écran peuvent être traités selon le type de composant visuel présent et stockant l’ID du texte au niveau du Tag du composant ou à partir de son nom.
  • 40. SOLUTION © Patrick Prémartin / developpeur-pascal.fr Sous le capot Les textes applicatifs sont récupérés à partir d’une simple fonction.
  • 41. SOLUTION © Patrick Prémartin / developpeur-pascal.fr Vous pouvez télécharger les sources de cet exemple depuis https://github.com/DeveloppeurPascal/Internatio naliserVosLogicielsVCLFMX Soyez libres de les utiliser tels quels ou vous en inspirer pour vos projets.
  • 42. QUELQUES © Patrick Prémartin / developpeur-pascal.fr Pour le stockage des textes vous pouvez utiliser des bases de données, une table dans votre base de données principale, des chaines stockées sous forme de constante dans une unité, sous forme de DLL de ressources ou de chaînes de ressources ou utiliser les fichiers PO classiques dans le monde du oueb et de Linux.
  • 43. QUELQUES © Patrick Prémartin / developpeur-pascal.fr Pour le lien entre vos textes et les éléments d’interface vous pouvez utiliser des identifiants numériques ou alpha. La plupart du temps on prend le texte par défaut comme ID pour ses traductions (ce qui peut poser problème lorsqu’on le change).
  • 44. QUESTIONS © Patrick Prémartin / developpeur-pascal.fr
  • 45. CONCL © Patrick Prémartin / developpeur-pascal.fr J’espère vous avoir convaincus de l’intérêt de faire des logiciels localisés et que les possibilités évoquées durant cette session vous aideront à passer à la pratique.
  • 46. CONCL © Patrick Prémartin / developpeur-pascal.fr La rediffusion de ce webinaire devrait être disponible sur la chaîne YouTube de Barnsten : https://www.youtube.com/channel/UCSrWP5Y01 uSHS3014Pfprlw/videos
  • 47. CONCL © Patrick Prémartin / developpeur-pascal.fr Pour des ressources complémentaires, télécharger cette présentation et accéder aux exemples, rendez-vous sur : https://developpeur-pascal.fr/p/_200j-webinaire- du-25-juin-2020-internationaliser-les-projets-vcl-- fmx.html
  • 48. PROCHAINS © Patrick Prémartin / developpeur-pascal.fr Prochains webinaires prévus : - 28 juillet 2020 : Gérer le clavier virtuel sur iOS et Android - 25 août 2020 : Sauvegarder et restaurer l'état des applications mobiles Détail et inscriptions depuis https://developpeur- pascal.fr/p/_6007-webinaires.html