Le Manuel de Programmation de KDevelop: Internationalisation

Page suivante Page précédente Table des matières

### 11. Internationalisation

### 11.1 Qu'est-ce que i18n ?

i18n est un système d'internationalisation qui est utilisé pour fournir des versions internationalisées d'une application ou d'un projet. La difficulté dans l'écriture des applications est que celles-ci supportent seulement la langue qui a été utilisée pour leur réalisation ; visuellement, cela se remarque sur les étiquettes, les entrées de menus, etc. Le but de l'internationalisation est de fournir des applications et des fonctions de bibliothèque dans la langue de l'utilisateur et donc de permettre aux utilisateurs qui ne sont pas capables de comprendre la langue originale d'utiliser plus aisément les fonctionnalités.

### 11.2 Comment KDE supporte l'Internationalisation

KDE, en tant qu'un des environnements de bureau les plus modernes, a décidé qu'un de ses nombreux objectifs est de fournir aux utilisateurs des applications dans leur langue natale et de simplifier le travail des développeurs voulant fournir leurs applications dans n'importe laquelle des langues supportées.

Techniquement, cela est réalisé par le Système de Fichiers Standard de KDE qui contient le support de la localisation pour les langues en terme de documentation et en permettant l'internationalisation de l'application grâce à la classe `KLocale` de la bibliothèque KDE-core. Cette classe fait toute la traduction, suivant la langue de préférence définie dans le Centre de Contrôle de KDE.

Par ailleurs, le développeur doit savoir deux choses pour permettre à son application d'utiliser cette fonctionnalité :

1. inclure `kapp.h` dans votre code source lorsqu'un texte visible apparaît dans votre application, par exemple dans les fichiers sources qui contiennent des QLabels
2. partout où vous définissez des chaînes de caractères "visibles", encadrez-les par la macro `i18n()` fournie par `kapp.h` afin de réaliser la traduction
3. lorsque vous devez accéder à un objet localisé, utilisez la macro `klocale` fournie par `kapp.h`

C'est globalement tout ce que vous avez à penser pendant le codage. Notez que vous ne devez pas internationaliser les chaînes de caractères de configuration qui sont utilisées par `KConfig` car d'une part, ce n'est pas nécessaire et d'une autre part, la lecture ne fonctionnera plus.

### 11.3 Ajouter une Langue à votre Projet

KDevelop simplifie aussi le travail des développeurs pour inclure le support de langues natives dans leurs applications. Lorsque vous créez un nouveau projet KDE, un sous-dossier `po` est ajouté dans le dossier principal de votre projet. C'est ici que sera placé le fichier <application>.pot lorsque sa génération sera terminée. Le fichier .pot contient déjà toutes les chaînes qui utilisent la macro i18n(), vous devez donc seulement écrire votre code en utilisant à nouveau cette macro. De temps en temps, vous devrez faire un "Projet"-"Exécuter make messages et fusionner" qui extrait automatiquement à nouveau toutes les macros et reconstruit le fichier .pot.

Pour ajouter une langue à votre application, choisissez "Projet"-"Ajouter un fichier de traduction" qui ouvre la boîte de dialogue de sélection de langue. Choisissez la langue désirée et cliquez sur OK. Ensuite, le fichier <lang>.po correspondant sera généré dans le dossier `po`. Vous pouvez alors commencer à traduire le fichier po en le sélectionnant dans le dossier po dans l'onglet RFV ou depuis LFV, dossier "Traductions". Si vous avez installé KTranslator, le fichier .po sera ouvert dans la fenêtre "Outils", sinon comme un fichier texte dans la fenêtre en-tête/ressource. KTranslator simplifie énormément la traduction des chaînes de caractères en analysant les traductions existantes de votre installation locale de KDE si bien qu'elles peuvent être directement utilisées.

Pour l'édition à la main, nous allons prendre un exemple :

> `

>     #: kscribble.cpp:619
>     msgid "Opens an existing document"
>     msgstr ""

> `

Vous voyez ci-dessus une chaîne de caractères qui a été extraite de la ligne 619 du fichier `kscribble.cpp`. `msgid` et `msgstr` sont des balises qui donnent des informations pour la traduction ; `msgstr` contiendra la traduction de la chaîne. Vous devez veiller à respecter les séquences d'échappement comme \n ou \t qui devront apparaître aussi dans la traduction. Une traduction en français ressemblerait donc à ceci :

> `

>     #: kscribble.cpp:619
>     msgid "Opens an existing document"
>     msgstr "Ouvre un document existant"

> `

C'est tout ce que vous devez faire pour traduire ; lorsque vous avez terminé, enregistrez le fichier. Lorsque "make" s'exécute dans le dossier po, les fichiers de messages seront traités et des erreurs pourront apparaître si les chaînes de caractères ne sont pas conformes, par exemple si des séquences d'échappement sont manquantes. Éditez ensuite à nouveau la chaîne du message correspondant et assurez-vous que "make" s'exécute sans erreurs.

De plus, vous devrez être très vigilants lorsque vous traduisez des chaînes contenant un "et commercial" (NdT : le symbole &). La lettre après ce symbole est utilisée comme accélérateur clavier en complément de la touche ALT pour accéder à la barre de menus ou à des éléments de menus en déplaçant plus rapidement le focus du clavier vers l'élément sélectionné. Si la même lettre d'accélérateur apparaît dans la même zone de focus de clavier (qui peut être tantôt le widget principal, tantôt une boîte de dialogue), chaque widget après le premier ne peut pas être accédé par l'accélérateur clavier présumé. Donc, même les traducteurs ont une responsabilité dans l'utilisabilité de l'application dans leur langue. Il n'y a également aucune garantie que la lettre originale apparaîtra dans la traduction donc les traducteurs doivent travailler avec précaution et tester l'application dans leur langue après avoir installé la traduction pour s'assurer qu'elle s'exécute sans dysfonctionnements.

### 11.4 Contacts des Équipes de Traduction

L'équipe KDE fournit aussi de nombreux contacts pour les développeurs qui contribuent au projet KDE en tant que traducteurs. Ceux-ci sont organisés en équipes par langue et coordonnent leur travail de traduction. Pour une liste récente et savoir à qui demander de traduire votre application, consultez http://www.kde.org.

Les informations ci-dessous sont extraites du site web de KDE et contiennent les adresses des contacts en date du 6 mars 1999. Si vous voulez rejoindre une équipe, veuillez contacter directement l'un des coordinateurs.

La traduction de KDE est organisée par Juraj Bednar mailto:bednar@rak.isternet.sk et Matthias Elter me@kde.org

Vous pouvez vous abonner à la liste de discussion kde-i18n-doc@kde.org de KDE sur l'internationalisation en envoyant un mail à kde-i18n-doc-request@kde.org et en mettant le mot "subscribe" dans la ligne de sujet. Avant de commencer un travail de traduction, veuillez contacter les coordinateurs d'équipe de traduction correspondants pour éviter un travail en double.

br Équipe de traduction en Breton :

  coordinateur : Jañ-Mai DRAPIER jdrapier@club-internet.fr

  site web : http://perso.club-internet.fr/jdrapier

ca Équipe de traduction en Catalan :

  coordinateur : Sebastià Pla sastia@redestb.es

cs Équipe de traduction en Tchèque :

  coordinateur : Miroslav Flídr flidr@kky.zcu.cz

da Équipe de traduction en Danois :

  coordinateur : Erik Kjær Pedersen erik@binghamton.edu

de Équipe de traduction en Allemand :

  coordinateur : Thomas Diehl th.diehl@gmx.net

  site web : http://www.dtp-service.com/kde/de/

  liste de discussion : envoyez un mail avec le sujet 'subscribe' à : kde-i18n-de-request@kde.org

  Forum web pour discussions et avis des utilisateurs : http://www.dtp-service.com/discus_d

el Équipe de traduction en Grec :

  coordinateur : Theodore J. Soldatos theodore@eexi.gr

eo Équipe de traduction en Esperanto :

  coordinateur : Wolfram Diestel diestel@rzaix340.rz-uni-leipzig.de

es Équipe de traduction en Espagnol :

  coordinateur : Boris Wesslowski, Alonso Lara Boris@Wesslowski.com

  site web : http://members.xoom.com/keko5/

  liste de discussion : envoyez un mail avec le sujet 'subscribe' à : kde-es@kde.org

et Équipe de traduction en Estonien :

  coordinateur : Hasso C. Tepper hasso@ewsound.estnet.ee

fi Équipe de traduction en Finlandais :

  coordinateur : Kim Enkovaara kim.enkovaara@iki.fi

fr Équipe de traduction en Français :

  coordinateur : Francois-Xavier Duranceau duranceau@kde.org

  site web : http://i18n.kde.org/teams/fr/apps/wip-apps.html

  liste de discussion : envoyer un message vide à : kde-francophone-subscribe@egroups.fr

he Équipe de traduction en Hébreu :

  coordinateur : Erez Nir erez-n@actcom.co.il

hr Équipe de traduction en Croate :

  coordinateur : Vladimir Vuksan vuksan@veus.hr

hu Équipe de traduction en Hongrois :

  coordinateur : Marcell Lengyel miketkf@yahoo.com site web : http://sophia.jpte.hu/~kde

is Équipe de traduction en Islandais :

  coordinateurs : Logi Ragnarsson logir@imf.au.dk, Thorarinn R. Einarsson thori@mindspring.com, Bjarni R. Einarsson bre@netverjar.is, Hrafnkell Eiriksson hkelle@rhi.hi.is, Gudmundur Erlingsson gudmuner@lexis.hi.is, Richard Allen ra@hp.is

it Équipe de traduction en Italien :

  coordinateur : Andrea Rizzi rizzi@kde.org

ko Équipe de traduction en Coréen :

  coordinateur : LinuxKorea Co. kde@linuxkorea.co.kr

mk Équipe de traduction en Macédonien :

  coordinateur : Sasha Konecni sasha@msi-uk.com

nl Équipe de traduction en Hollandais :

  coordinateur : flidr@CyberGate.zcu.cz flidr@CyberGate.zcu.cz

no Équipe de traduction en Norvégien :

  coordinateur : Hans Petter Bieker zerium@webindex.no

pl Équipe de traduction en Polonais :

  coordinateur : Piotr Roszatycki dexter@fnet.pl

pt Équipe de traduction en Portugais :

  coordinateur : Pedro Morais pmmm@camoes.rnl.ist.utl.pt

pt_BR Équipe de traduction en Portugais Brésilien :

  coordinateur : Elvis Pfützenreuter epx@netville.com.br

ro Équipe de traduction en Roumain :

  coordinateur : Paul Ionescu ipaul@romsys.ro

ru Équipe de traduction en Russe :

  coordinateur : Denis Y. Pershin dyp@inetlab.com

sk Équipe de traduction en Slovaque :

  coordinateur : Juraj Bednar bednar@isternet.sk

  liste de discussion : envoyez un mail avec le sujet 'subscribe' à : sk-i18n@rak.isternet.sk

sl Équipe de traduction en Slovène :

  coordinateur : blazzupancic@hotmail.com blazzupancic@hotmail.com

sv Équipe de traduction en Suédois :

  coordinateur : Anders Widell d95-awi@nada.kth.se

tr Équipe de traduction en Turc :

  coordinateur : Gorkem Cetin gorkem@linux.org.tr

zh_GB2312 Équipe de traduction en Chinois Simplifié :

  coordinateur : Wang Jian larkw@263.net

zh_TW_Big5 Équipe de traduction en Chinois BIG5 :

  coordinateur : Chou Yeh-Jyi ycchou@ccca.nctu.edu.tw

Page suivante Page précédente Table des matières