La Localisation de logiciels

Transcription

La Localisation de logiciels
Groupe Eurologos Réseau de Franchises
La Localisation de logiciels
EUROLOGOS Group.
GLOBAL and
MULTILINGUAL
SOLUTIONS
Toutes les productions peuvent être
“délocalisées”... sauf celles des langues.
Le Groupe Eurologos continue à “glocaliser”
(globaliser et localiser en même temps )
la production des services multilingues et multimédias.
Nous ne cessons d’implanter d’autres sièges dans
les plus grands centres économiques vers lesquels
les entreprises de la globalisation doivent exporter.
Nos sièges "glocaux"
Arad •
Arezzo •
Brussels •
Bucuresti •
Buenos Aires •
Cyprus •
Genova •
Gliwice •
Köln •
Leipzig •
Lisboa •
Madrid •
• Malta
• Milano
• Moscow
• Paris
• San José
• São Paulo
• St Petersburg
• Tallinn
• Tel Aviv
• Tokyo
• Toronto
• Trieste
L a co m m u n i c a t i o n g lo b a le e x i g e d e s l a n g u e s “ g l o c a l i s é e s ”
TRANSLATING AND PUBLISHING WHERE THE LANGUAGES ARE SPOKEN
Intervention de Sascha Leib
(Software Localisation Manager)
Séminaire d’Eurologos-Bruxelles
à Ostende le 21 mai 2005
EUROLOGOS Group. When localization becomes « glocalization »
Localisation Departement
1/ 5
TRANSLATING AND PUBLISHING WHERE THE LANGUAGES ARE SPOKEN
La localisation de logiciels en opposition à la localisation de sites internet
A la différence de la localisation des sites internet, la localisation des logiciels d'application
requiert généralement un effort beaucoup plus important au niveau de l’internationalisation
avant de traduire.
Cela est dû en partie à cause de la différence au niveau des cycles de développement des
sites internet et des produits logiciel, tandis que le renouvellement d’un site internet impose
en général une reprogrammation complète du code HTML, le logiciel d'application évolue
généralement et sera développé davantage. Cela signifie que, toute version de produits
logiciel partagera la partie la plus importante du code source avec son prédécesseur.
Une approche commune dans la localisation de sites internet – pour créer tout simplement
une copie du site dans un sous-répertoire – n’est normalement pas acceptable pour de tels
produits. Sans quoi, le client rencontrerait des problèmes dans le cycle d’évolution suivant
de son développement de logiciel.
Produit Original
Internationalisation
LocaleIndependent
Code (Code
Générique
paramètrable)
Produit International
Langue d’origine
Traduction
Nouvelles
langues
Je considère que quiconque chez Eurologos sache traduire, c’est pourquoi je me
concentrerai sur cette partie du processus de localisation que l’on appelle
« internationalisation ».
L’évolution des techniques d’internationalisation de logiciels
Il y a un certain « art » dans la manière de bien programmer des logiciels.
Malheureusement, la plupart des programmateurs, soit n’en ont pas conscience, soit la
pression du délai leur fait oublier ces règles.
C’est évidemment une occasion pour vendre les services de valeur ajoutée au client qui,
peut-être, n’a pas conscience de la qualité du code de leur logiciel.
Expliquons l’évolution des concepts de la localisation avec un exemple très simple. Vous
avez déjà très certainement vu ce genre de messages auparavant :
Par exemple, une localisation française devrait avoir la forme suivante :
Dans les sections suivantes, vous verrez les différentes manières d’internalisationner un
dialogue :
EUROLOGOS Group. When localization becomes « glocalization »
Localisation Departement
2/ 5
TRANSLATING AND PUBLISHING WHERE THE LANGUAGES ARE SPOKEN
1.
Le « code spaghetti »
Le code source le plus simple pour une telle boîte de message pourrait être :
MsgBox "You have " + str(numDays) + " days left before this software
expires."
Avec facilité, la commande « MsgBox » affiche une simple boite à message (par défaut
simplemnt avec le bouton « ok »), et le texte entre guillemets sera par la suite affiché dans
cette boîte.
Ici, le texte à afficher est composé de trois parties : le premier texte statistique, un chiffre
(converti en un lien par la fonction « str ( ) », et un autre texte statistique pour finir la
phrase.
Puisque nous ne voulons pas que les traducteurs aient à se confronter à ce genre de choses,
nous extraierons les liens statiques pour eux, et par conséquent, à la place, ils seront
confrontés à deux segments de texte indépendants comme :
You have
days left before this software expires.
Comme ci-dessus, pensez-vous que ce « You have » a besoin d’être traduit de cette manière
« Il ne vous reste que » ? Avez-vous également remarqué le grand espace laissé en blanc à
la fin du premier texte et au début du deuxième ?
Malheureusement, puisqu’il réduit grandement la complexité qui implique un bon style de
programmation, on peut aussi constater des exemples similaires dans des manuels de
programmation, et par conséquent des programmeurs inexpérimentés ne parviennent pas à
comprendre que ce n’est PAS un bon style de programmation.
Le terme « Spaghetti Code » est souvent utilisé pour ce genre de programmation, car la
structure et la logique d’un tel programme sont plutôt compliquées et aussi
compréhensibles qu’un plat de nouilles.
2. Des textes tamponnés
Un meilleur concept serait de garder la phrase intacte dans un texte, puis réduire le niveau
de fragmentation. Par exemple :
MsgBox Replace ("Il ne vous reste que % jours avant l’expiration du programme.", ¬
"%", str(numDays))
Ici, un caractère spécial (dans cet exemple-ci un signe de pourcentage) est utilisé pour
indiquer l’endroit où la variable devrait figurer. Puis, ce paramètre substituable est
remplacé et le texte qui en résulte est mis dans la boîte à message. C’est vraiment d’une très
grande simplicité.
Après l’extraction du texte, le traducteur sera de nouveau confronté à deux textes :
Il ne vous reste que % jours avant l’expiration du programme.
%
Evidemment, le « % » en tant que tel n’est pas un gros problème, puisqu’il est clair qu’il
n’a pas besoin d’être traduit, mais au moins nous avons désormais une phrase défragmentée
que nous pouvons facilement traduire.
Bien sûr, nous sommes encore loin de la perfection. Il y a toujours quelqu’un qui doit
parcourir tout le code source et trouver les textes à traduire. Evidemment, si le texte du
EUROLOGOS Group. When localization becomes « glocalization »
Localisation Departement
3/ 5
TRANSLATING AND PUBLISHING WHERE THE LANGUAGES ARE SPOKEN
paramètre substituable est utilisé de la même manière, il pourra être exclu de l’extraction du
texte, etc. Mais c’est loin d’être parfait.
3.
Les constantes
Voici l’autre idée que les programmeurs ont soulevée : pourquoi ne pas définir tous les
textes qui ont besoin d’être traduits ensemble à un endroit, et n’utiliser que les références au
lieu de toujours devoir les retaper.
Cela pourrait être réalisé par de simples constantes de définition (par exemple au début de
chaque module), comme cela :
Const ExpirationMessage = " Il ne vous reste que % jours avant
l’expiration du programme."
Puis, il faut changer le code de la boite à message de cette façon :
MsgBox Replace(ExpirationMessage, "%", str(numDays))
Désormais, tous les textes à traduire sont regroupés à un seul endroit et le code source
actuel ne contient que ces textes qui ne nécessitent pas de traduction.
Nous pouvons également réaliser un aiguillage automatique pour la langue, tel que :
#if version_fr
Const ExpirationMessage
= "Il ne vous reste que
l'expiration du programme."
%
jours
avant
#else
Const ExpirationMessage = "You have % days left before this software
expires."
#endif
Dans cet exemple, les instructions #if, #else et #endif sont des commandes de
compilation, ce qui signifie que lorsque le programmeur réalise son application, le
programme de compilation décide (selon les paramètres) quel texte à attribuer à la
constante ExpirationMessage.
Pas de changements de code, pas de versions multiples du code source… facile.
Dans une variation comme ci-dessus, quelqu’un peut souvent voir les assignations
constantes actuelles externalisées dans un seul fichier-texte par langue. On pourra
transmettre ces fichiers-texte aux fournisseurs de services externes (par exemple des
agences de traductions) qui n’ont pas vraiment à se soucier de la logique du programme.
Tout ce qu’il y a à savoir peut être expliqué en 5 minutes (ne pas toucher à la partie devant
le signe égal et laisser les guillements à leur place).
4.
Ressources externes et déclenchement du langage d’exécution
Bien sûr, cette explication ne s’arrête pas là, il y a d’autres possibilités. Pourquoi ne pas
séparer complètement les textes (y compris les localisations) et la logique du programme ?
Dans ce cas, les textes localisés peuvent être mis dans le fichier des ressources qui navigue
avec le produit logiciel, et les textes sont chargés dans la mémoire dans le programme de
démarrage. Le programme actuel est complètement indépendant au niveau du choix de la
langue; changer le dossier des « locales » peut le transformer en une version de langue
différente. Cela représente un énorme gain de temps pour les fabricants: pas seulement
parce qu’ils n’ont qu’à mettre au point une seule version linguistique (d’autres langues sont
crées lors de l’intégration du dossier des « locales » avec la logique de programme), et les
mises à jour sont également très simplifiées. Désormais, la prochaine étape de la course
serait que le fabricant puisse juste répandre un CD-ROM avec toutes les versions
linguistiques dans le monde entier, et que les utilisateurs puissent choisir eux-mêmes la
EUROLOGOS Group. When localization becomes « glocalization »
Localisation Departement
4/ 5
TRANSLATING AND PUBLISHING WHERE THE LANGUAGES ARE SPOKEN
langue qu’ils désirent. C’est exactement la direction que suit le développement. Bien sûr, en
ayant déjà implanté la fonctionnalité qui consiste à charger des ressources de « locales »
d’exécution, le travail est facilité. Mais cela demande beaucoup d’organisation pour
s’assurer que toutes les versions linguistiques soient prêtes en même temps – et que les
fonctions principales du logiciel soient complètement indépendantes au niveau du langage (
= « locale »), (ou utiliser un mot-code : Internationalisé).
5.
Processeur d'idées
L’évolution technique n’est pas encore terminée, tout comme les techniques rigoureuses et
indépendantes citées ci-dessus. De nombreux « frameworks » d’application (la base sur
laquelle le logiciel d’application est écrit) fournissent des caractéristiques
d’internationalisation plus ou moins intelligentes – même certaines applications d’aide pour
faciliter le processus de localisation. Toutefois, tout cela est suffisant pour avoir une vision
d’ensemble.
Conclusion
L’internationalisation des logiciels en soi n’est pas simplement « l’art pour l’art ». Elle peut
permettre au client de réaliser de grosses économies à la fois dans le développement plus
poussé du produit, et au niveau du prochain « locale » qui devra s’ajouter. Bien sûr, cela
exige tout d’abord un investissement temporel et/ou financier, mais dans un environnement
purement professionnel, cela sera amorti rapidement par les coûts de développement
réduits. Si l’internationalisation est un succès, le traducteur ne sera plus confronté à ces
problèmes techniques. Ainsi, il pourra se concentrer sur la tâche qu’il ou elle réalise le
mieux : traduire. En tout cas, cela devrait pourrait être astucieux de demander à un client
(potentiel) quels techniques et « framework » il utilise afin d’estimer les options possibles,
et par conséquent d’estimer la charge de travail nécessaire pour réaliser le travail.
EUROLOGOS Group. When localization becomes « glocalization »
Localisation Departement
5/ 5