Salut à tous,

Chose promise, chose due voici le fameux script dont nous parlions la semaine dernière : http://malaria.perso.sfr.fr/francisator.tar.gz
Je vais essayer de vous dire tout ce qu'il faut savoir de manière concise (c'est pas gagné :-p).

Dans l'archive sur lequel pointe le lien ci-dessus, vous trouverez deux choses :
- le script en lui même (francisator.sh)
- un fichier de test (test.po)

Vu qu'il peut-être très pénible de vérifier tout ce que fait le script sur des fichier .po de plusieurs milliers de lignes, il est beaucoup plus commode d'utiliser un fichier de test pour mettre le script à l'épreuve.
Libre à vous de modifier/compléter ce fichier test en y mettant les situations les plus improbables que le script pourrait jamais rencontrer (enfin il faut tout de même que ça reste un fichier .po valide ;-)).

Que fait le script ?

1/ Il corrige directement les espaces devant les signes de ponctuation qui vont bien (il remplace les espace et les espaces insécables par des espaces fines insécables)
→ vu qu'il s'agit d'une correction automatique, c'est bien sûr cette partie qui doit être particulièrement testée. D'après mes tests elle est 100% fiable. Tous les pièges cités par Bruno la semaine dernière sont déjoués (et ce ne sont pas les seuls).
L'intérêt est de pouvoir faire confiance à cette partie du script : s'il faut examiner attentivement des diff de corrections de plusieurs centaines de lignes à chaque fois, ça n'a aucun intérêt.
Utilisez le fichier test pour vous convaincre de sa fiabilité et/ou trouver des bugs qui m'auraient échappé !


2/ Le script vérifie également la présence de certaines erreurs *potentielles*. Notez bien que vu que ces erreurs sont potentielles, elles ne sont que *signalées* (et non corrigées directement).
Pour chaque problème, le script vous indique la ligne correspondante (ce qui est très pratique).
Voici la liste des choses qui sont vérifiées :
- Présence d'autant de balise ouvrantes que fermantes (détecte par exemple "<gui><em>Test !<em></gui>")
- Un signe de ponctuation non précédé par une espace fine insécable (car la substitution automatique ne touche pas à certains cas tendancieux)
- Présence d'une espace insécable (il est sensé en rester très peu voir aucune après la correction automatique, c'est donc louche)
- Emploi d'un « B » dans une unité au lieu d'un « o » pour un octet (d'après mon expérience, c'est une erreur assez fréquente chez les débutants)

3/ Le script applique les 2 points précédents uniquement sur les chaines traduites (blocs « msgstr »). Les commentaires et les chaines originales ne sont pas modifiés.

Voilà.
J'ai testé le tout avec succès avec plusieurs .po officiels.
Par exemple avec Rhythmbox (plus de 1200 chaines), je confirme n'avoir trouvé aucune erreur dans la correction automatique. De plus le script détecte 17 erreurs potentielles, mais il semble que seule une soit vraiment fondée (une espace insécable curieusement placée ligne 2426).


J'attends vos remarques et commentaires.
Je suis également à l'écoute si vous avez des idées pour améliorer le script (d'autres types d'erreurs à vérifier par exemple).

Bon week-end,
Nicolas


ps : (rappel) en attendant que ce bug soit officiellement résolu ( https://bugzilla.gnome.org/show_bug.cgi?id=626126 ), la manière la plus simple de reconnaitre une espace fine insécable d'une espace insécable dans gedit (par exemple) est de lancer une recherche sur le caractère souhaité. Celui-ci sera alors surligné dans tout le fichier.