SCR/AL1 - TOME I. Les programmes
scr4_trd est un utilitaire de traduction de sources. Dans un environnement multilingue, le problème posé par la traduction correcte des sources est souvent considérable et demande à la fois du temps et un soin tout particulier.
L'idée de départ est très simple : dans une source C ou SCR, on va identifier tous les strings. Ceux-ci vont être nettoyés de leur ponctuation et placés dans une base de données à 2 entrées, une par langue. Cette base de données sera alors traduite. Enfin, les sources seront automatiquement traduites en fonction des traductions trouvées dans la base de données.
Schématiquement, le processus se déroule de la façon suivante :
Les avantages de cette procédure sont évidents :
scr4_trd -options args ... @responsefile
OPTION ARGUMENTS REQ DEFAULT DESCRIPTION
------ --------- --- ------- -----------
-c dbase N create dbase
-e dbase N edit dbase
-db dbase N c:\scr\scr_trad set dbase name
-il 1-2 N 1 input language
-ol 1-2 N 2 output language
-scr N read SCR files
-fix N keep string lg
-freescr N free SCR string lg
-x file ... N extract from files
-t file ... N translate files
-h N display help
La commande permettant de créer une nouvelle database est :
scr4_trd -c <database>
La commande permettant d'extraire les strings de sources C ou SCR est :
scr4_trd -db database [-il 1] [-scr] -x file1 ...
Les paramètres sont :
les \n ou autres caractères < 32 sont remplacés par des blancs dans la base de données et à la traduction, les sauts de lignes sont donc perdus. Les strings ne peuvent avoir plus de 280 caractères. En cas de dépassement, une erreur est générée lors de la compilation des sources traduites.
La commande permettant d'éditer la base de données de strings est :
scr4_trd -db <database> -e
L'édition se fait sur base d'une MPAGE accédant directement à la base de données de strings. Il suffit de presser ENTER sur la ligne à traduire et d'introduire la traduction.
La paramètre -db prend les mêmes valeurs par défaut que pour l'extraction des strings.
La commande permettant de traduire les sources est :
scr4_trd -db <database> [-il 1] [-ol 2] [-scr]
[-freescr] [-fix] -t file file ...
La traduction repère les strings dans les fichiers sources sur base du même algorithme que dans le cas de l'extraction. A chaque string trouvé, il recherche sa valeur dans la base de données. Si le string est trouvé, sa traduction remplace la valeur d'origine dans la source. S'il est trouvé sans traduction ou s'il n'est pas trouvé, la source demeure inchangée.
Les ponctuations sont gérées de telle sorte que les caractères de ponctuation utilisés en fin de string (.:?!,; ) ne soient pas repris dans la base de données, mais restitués dans la traduction. Ceci permet d'éviter les redondances ("Nom : ", "Nom ...", "Nom ... ").
Ainsi :
"Nom ... "
"Nom ?"
"Nom : "
se trouveront une seule fois dans la base de données sous la forme
"Nom"
Lors de la traduction, en supposant "Name" comme traduction dans le second langage, le résultat sera :
"Name ... "
"Name ?"
"Name : "
Dans les versions antérieures à 4.13, la longueur des strings était conservée. A partir de cette version, ce n'est plus le cas. Pour forcer les longueurs égales, il faut utiliser le paramètre -fix.
Avant 4.13, les ponctuations seules sont transformées au besoin en fin de string. Au cas où la traduction est plus longue que le string initial, les derniers caractères sont perdus, sinon des blancs s'ajoutent.
En fin de processus, un message indique le nombre de traductions effectuées et le nombre de strings laissés inchangés.
Les paramètres ont la signification suivante :
Si le programme source est modifié, il suffit de repasser à l'étape 2 (extraction des strings) et de reprendre jusqu'à l'étape 4. Seule l'étape 3 (traduction des strings) peut demander une intervention si de nouveaux strings ont été ajoutés dans les sources.
Supposons que lexn soit le programme à construire et que lex soit construit dans le directory courant par la commande
make lex
En supposant que de nouveaux strings n'aient pas été introduits dans les sources, les instructions à effectuer sont :
mkdir nl
copy *.h *.c *.f makefile nl
cd nl
scr4_trd -scr -il 1 -ol 2 -t *.c *.f *.h
make lex
rename lex lexn
Si de nouveaux strings ont été introduits, il faut d'abord faire :
scr4_trd -x *.c *.h *.f -> extraction des strings
scr4_trd -e -> traduction des strings
Copyright © 1998-2015 Jean-Marc Paul and Bernard PAUL - Envoyez vos remarques ou commentaires à bernard@xon.be