Karrigell Documentation

Version 2.3.1 02 09 06

English

17. Traduction et Unicode

Comme les lecteurs de la documentation en anglais l'auront remarqué, je ne suis pas originaire d'un pays anglophone (je suis français, et plus précisément breton - "Karrigell" est un mot breton). J'ai donc inclus un programme pour faciliter l'internationalisation des scripts.

17.1 Traduction

Dans un script, à chaque fois que vous voulez qu'un message soit traduit dans une langue donnée, au lieu de l'écrire comme une chaîne normale avec des guillemets, on l'écrit comme argument d'une fonction appelée _, de cette façon :

print _("Bonjour tout le monde")

Pour les scripts Python Inside HTML (PIH) il existe un raccourci, <%_ > :

Bonjour tout le monde

Karrigell fournit une interface web simple pour créer et modifier les traductions de chaînes. Pour des raisons de sécurité, ce script est réservé à l'administrateur. Un script d'authentification est exécuté, il s'appuie sur des condensés md5 stockés dans un fichier appelé admin.ini, que l'administrateur doit définir en exécutant le script k_password.py, dans le répertoire admin

Avec votre navigateur, appelez le script http://localhost/admin/internat.pih. Il s'ouvre sur un explorateur de répertoires avec lequel on peut accéder à tous les fichiers susceptibles de contenir des chaînes à traduire (c'est-à-dire tous les fichiers qui ont une extension .py, .pyw, .pih, .hip). En cliquant sur le nom d'un fichier une page affiche toutes les chaînes à traduire (les arguments de la fonction _()) et demande une traduction dans toutes les langues qui sont actuellement sélectionnées dans les préférences du navigateur (1). Si des traductions ont déjà été faites elles apparaissent dans les champs du formulaire

Remplissez les champs et validez le formulaire ; les traductions sont automatiquement créées ou modifiées

Vous pouvez vérifier l'effet en appelant le script que vous venez de traiter et en changeant l'ordre des langues dans les préférences

La traduction est conservée dans un fichier qui est commun à tous les fichiers d'un même répertoire. On peut aussi éditer tout le dictionnaire en cliquant sur le premier élément de la liste des scripts

17.3 Prise en charge d'Unicode

Nouveau dans la version 2.2.2

écrit principalement par Radovan Garabik

Unicode est un standard normalisé qui sert à représenter tous les styles d'écriture dans le monde. Pour chaque signe (une lettre dans un alphabet, un idéogramme dans une langue asiatique), Unicode définit un nombre unique, appelé "point de code". Comme les ordinateurs et les réseaux ne savent manipuler que des octets, une correspondance doit être définie entre ces "points de code" et un ou plusieurs octets ; ces correspondances sont appelées "encodages"

Du fait qu'il existe beaucoup d'encodages différents, quand un programme doit imprimer un signe (une lettre grecque, un signe chinois) il doit recevoir deux informations : la chaîne de caractères qui représente le signe (une séquence d'octets) et l'encodage utilisé. S'il reçoit seulement une chaîne, le programme peut essayer de deviner l'encodage (c'est ce que fait généralement un navigateur web) mais sans aucune garantie de succès

Karrigell définit deux paramètres du fichier de configuration pour prendre en charge Unicode :

  • encodeFormData : s'il est initialisé à 1, Karrigell cherche à convertir les données des formulaires en chaînes Unicode, en essayant successivement plusieurs encodages. Plus précisément, si les données reçues ne comportent que des caractères ASCII, il n'y a pas de conversion en Unicode, on conserve la chaîne telle quelle ; sinon le programme essaie plusieurs encodages
    Les données de formulaires accessibles dans QUERY sont donc soit des chaînes ordinaires soit des chaînes Unicode
    Par défaut encodeFormData vaut 0 : aucune conversion en Unicode n'est effectuée
  • outputEncoding : définit l'encodage que le navigateur doit utiliser pour interpréter les chaînes de caractères qu'on lui demande d'afficher. La valeur par défaut est 'latin-1', qui sert à représenter les signes des langues européennes basées sur l'alphabet latin. Vous pouvez définir un autre encodage en donnant une valeur à l'option outputEncoding dans la section [Server] du fichier de configuration

    Vous pouvez regarder des exemples dans le répertoire demo/unicode : donnez à outputEncoding la valeur utf-8 pour voit le résultat attendu


(1) Sur Microsoft Internet Explorer la préférence de langue est définie par Outils/Options Internet/Général/Langues ; les langues acceptées sont sélectionnées à partir d'une liste et classées par ordre de préférence. Sur Netscape utiliser Edition/Préférences/Langues