<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<!--
/*
* $calcurse: manual_fr.html,v 1.27 2009/07/10 19:49:08 culot Exp $
*
* Copyright (c) 2004-2009 Frederic Culot <frederic@culot.org>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* - Redistributions of source code must retain the above
* copyright notice, this list of conditions and the
* following disclaimer.
*
* - Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the
* following disclaimer in the documentation and/or other
* materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
*/
-->
<html>
<head>
<title>documentation de CALCURSE</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css" media="all">
@import url(manual.css);
</style>
</head>
<body>
<div id="mainContent">
<h1 id="title">
<span class="main">CALCURSE - organiseur en mode texte</span></h1>
<div class="warn">
<h1>Résumé</h1> Ce manuel présente l'ensemble des fonctionnalités du
logiciel <code>calcurse</code> et la manière dont on peut les
utiliser. La procédure d'installation du programme depuis ses sources
est tout d'abord décrite, ainsi que les différentes façon dont
<code>calcurse</code> peut être lancé. L'interface du programme est
ensuite présentée, avec l'ensemble des options qui permettent la
configuration du logiciel. Sont enfin expliquées les procédures à suivre
pour faire remonter les bogues et pour contribuer au développement de
<code>calcurse</code>.
</div>
<div id="toc">
<h1>Table des matières</h1>
<ul>
<li><a href="#intro">1. Introduction</a></li>
<li><a href="#overview">2. Aperçu du logiciel</a>
<ul>
<li><a href="#overview_history">2.1 Origine de Calcurse</a></li>
<li><a href="#overview_features">2.2 Caractéristiques importantes</a></li>
</ul></li>
<li><a href="#install">3. Installation</a>
<ul>
<li><a href="#install_requirements">3.1 Pré-requis</a>
<ul>
<li><a href="#install_requirements_ncurses">3.1.1 Librairie <code>ncurses</code></a></li>
<li><a href="#install_requirements_gettext">3.2.2 Librairie <code>gettext</code></a></li>
</ul></li>
<li><a href="#install_process">3.2 Processus d'installation</a></li>
</ul></li>
<li><a href="#basics">4. Présentation générale</a>
<ul>
<li><a href="#basics_invocation">4.1 Invocation</a>
<ul>
<li><a href="#basics_invocation_commandline">4.1.1 Arguments en ligne de commande</a></li>
<li><a href="#basics_invocation_variable">4.1.2 Variable d'environnement pour l'i18n</a></li>
<li><a href="#basics_invocation_environment">4.1.3 Autres variables d'environnement</a></li>
</ul></li>
<li><a href="#basics_interface">4.2 Interface utilisateur</a>
<ul>
<li><a href="#basics_interface_noninteractive">4.2.1 Mode non-interactif</a></li>
<li><a href="#basics_interface_interactive">4.2.2 Mode Interactif</a></li>
</ul></li>
<li><a href="#basics_files">4.3 Fichiers</a></li>
<li><a href="#basics_import_export">4.4 Fonctions d'import/export</a>
<ul>
<li><a href="#basics_import">4.4.1 Import</a></li>
<li><a href="#basics_export">4.4.2 Export</a></li>
</ul></li>
<li><a href="#basics_help">4.5 Aide en ligne</a></li>
</ul></li>
<li><a href="#options">5. Options</a>
<ul>
<li><a href="#options_general">5.1 Options générales</a></li>
<li><a href="#options_keys">5.2 Raccourcis clavier</a>
<li><a href="#options_colors">5.3 Thèmes graphiques</a></li>
<li><a href="#options_layout">5.4 Disposition des panneaux</a></li>
<li><a href="#options_notify">5.5 Réglages de la barre de notification</a></li>
</ul></li>
<li><a href="#known_bugs">6. Bogues connus</a></li>
<li><a href="#bugs">7. Rapporter les bogues et commentaires</a></li>
<li><a href="#contribute">8. Comment contribuer?</a>
<ul>
<li><a href="#contribute_documentation">8.1 Traduction de la documentation</a></li>
<li><a href="#contribute_i18n">8.2 Traduction de <code>calcurse</code></a>
<ul>
<li><a href="#contribute_i18n_overview">8.2.1 Aperçu</a></li>
<li><a href="#contribute_i18n_translator">8.2.2 Etapes de la traducion</a></li>
<li><a href="#contribute_i18n_po-files">8.2.3 Fichiers <code>po</code></a></li>
</ul></li>
</ul></li>
<li><a href="#links">9. Liens</a>
<ul>
<li><a href="#links_homepage">9.1 Site internet de <code>calcurse</code></a></li>
<li><a href="#links_list">9.2 Liste de diffusion de <code>calcurse</code></a></li>
<li><a href="#links_rss">9.3 Flux RSS</a></li>
<li><a href="#links_others">9.4 Autres liens</a></li>
</ul></li>
<li><a href="#thanks">10. Remerciements</a></li>
</ul>
</div>
<h1>1. Introduction<a name="intro"></a></h1>
<p>
<code>calcurse</code> est un logiciel composé d'un calendrier et d'un organiseur
personnel en mode texte. Il permet de stocker les évènements et rendez-vous,
ainsi qu'une liste de tâches à effectuer. Un système de notification,
entièrement configurable par l'utilisateur, permet d'être prévenu lorsque
l'heure d'un rendez-vous approche. L'interface utilisateur est elle aussi
configurable, et peut s'adapter aux besoins de chacun. Enfin, un système d'aide
en ligne permet d'obtenir des renseignements sur toutes les commandes
disponibles.
</p>
<h1>2. Aperçu du logiciel<a name="overview"></a></h1>
<h2>2.1 Origine de Calcurse<a name="overview_history"></a></h2>
<p>
J'ai commencé à penser à ce projet à la fin de mon doctorat
en astrophysique... Je commençais en effet à avoir de plus
en plus de mal à m'organiser, et j'avais vraiment besoin d'un
bon outil pour m'aider dans cette tâche difficile ;)
</p>
<p>
D'autre part, j'apprécie beaucoup les logiciels qui font appel
à des Interfaces en Mode Texte, parce que je les trouve plus
simples, plus rapides, plus portables et plus efficaces. J'ai
alors commencé à programmer un calendrier rudimentaire qui
utilisait une interface de ce type. En plus de cela, je
voulais améliorer mes connaissances en <code>C</code>, langage
de programmation que je n'avais utilisé jusqu'alors que dans
le cadre de petits projets pendant mes études. J'ai donc pensé
que ce serait une bonne chose de me lancer dans ce projet,
puisque cela me permettrait à la fois de mieux m'organiser, et
d'apprendre à mieux programmer en <code>C</code>!
</p>
<p>
Malheureusement, j'ai obtenu mon doctorat avant de terminer
<code>calcurse</code>, mais j'ai tout de même voulu continuer
à travailler sur ce projet, en espérant que ce
programme serait utile à d'autres
personnes. Voilà comment est né
<code>calcurse</code>...
</p>
<p>
Mais au fait, pourquoi 'calcurse' ? Et bien ce nom provient
simplement de la concaténation de 'CALendrier' et de
'nCURSEs', qui est le nom de la librairie utilisée pour
construire l'interface utilisateur.
</p>
<h2>2.2 Caractéristiques importantes<a name="overview_features"></a></h2>
<p>
<code>Calcurse</code> est multi-plateformes et est conçu pour
être léger, rapide et fiable. Il doit être utilisé dans un
terminal ou une console, soit localement ou bien sur une
machine distante par l'intermediaire d'une liaison ssh (ou
similaire).
</p>
<p>
<code>Calcurse</code> peut être lancé dans deux modes différents:
soit interactif, soit non-interactif. Le premier mode permet
de visualiser son organiseur personnel pratiquement sous
n'importe quel environnement, grâce à l'interface en mode texte.
Le deuxième mode permet de créer facilement des penses-bête en
ajoutant <code>calcurse</code> avec les arguments appropriés dans
la table cron ou dans le script d'initialisation du shell.
</p>
<p>
De plus, <code>calcurse</code> a été créé en prenant en compte
l'utilisateur final à chaque étape de sa conception,
c'est-à-dire en essayant d'être le plus intuitif
possible. Cela implique la présence d'une aide en ligne
exhaustive, ainsi que le rappel de toutes les commandes
possibles dans la barre de status. L'interface utilisateur
est également configurable, et l'on peut choisir parmi de
nombreuses combinaisons possibles de couleurs et de positions
des fenêtres. Les raccourcis clavier peuvent être définis aussi
par l'utilisateur, pour correspondre aux besoins de chacun.
Enfin, le système de notification est
entièrement configurable, l'utilisateur peut donc choisir la
manière dont il veut être prévenu de l'approche d'un
rendez-vous.
</p>
<h1>3. Installation<a name="install"></a></h1>
<h2>3.1 Pré-requis<a name="install_requirements"></a></h2>
<h3>3.1.1 Librairie <code>ncurses</code><a name="install_requirements_ncurses"></a></h3>
<p>
L'installation de <code>Calcurse</code> ne nécessite qu'un
compilateur <code>C</code>, comme <code>cc</code> ou <code>gcc</code>,
et la librairie <code>ncurses</code>.
Il serait très surprenant que vous n'ayez pas déjà la librairie
<code>ncurses</code> d'installée sur votre machine, mais si
c'est le cas, vous pourrez la trouver à l'adresse suivante :
</p>
<pre>http://ftp.gnu.org/pub/gnu/ncurses/</pre>
<div class="todo">
<p class="rq"><span class="valorize">Note:</span>
It is also possible to link <code>calcurse</code> against the
<code>ncursesw</code> library (ncurses with support for unicode).
However, UTF-8 is not yet supported by <code>calcurse</code>.</p>
</div>
<h3>3.1.2 Librairie <code>gettext</code><a name="install_requirements_gettext"></a></h3>
<p>
<code>calcurse</code> s'aide de la librairie
<code>gettext</code> pour le support de l'internationalisation
(noté <span class="emp">i18n</span> ci-après). Cela signifie que
<code>calcurse</code> peut fournir des messages multilingues
s'il est compilé avec le support NLS (<span class="emp">Native
Language Support</span> - <span class="emp">Support de Langage
Natif</span>).
</p>
<p>
Cependant, ce support est optionnel et si vous n'avez pas
besoin de la traduction des messages affichés, vous pouvez
désactiver cette option. La désactivation du support
<span class="emp">NLS</span> s'effectue en passant l'option
<code>--disable-nls</code> à <code>configure</code>
(voir la section <a href="#install_process">Processus
d'Installation</a>).
</p>
<p>
Pour vérifier que les utilitaires <code>gettext</code> sont
bien installés sur votre systsème, vous pouvez
par exemple vérifier la présence du fichier
<code>libintl.h</code> en tapant : </p>
<pre>locate libintl.h</pre>
<p>
Dans l'éventualité où ce fichier ne serait pas trouvé,
vous pouvez obtenir les sources de <code>gettext</code>
à l'adresse suivante :</p>
<pre>http://ftp.gnu.org/pub/gnu/gettext/</pre>
<p>
<p class="rq"><span class="valorise">Remarque :</span> Même si
<code>libintl.h</code> est bien localisé par la commande
précédente, il peut être utile de spécifier son emplacement au
moment de lancer le <a href="#install_process">processus
d'installation</a>, en passant l'option
<code>--with-libintl-prefix</code> au script
<code>configure</code>. En effet, ce script pourrait ne pas
trouver le fichier <code>libintl.h</code> si celui-ci n'est
pas installé dans un endroit usuel.</p>
<h2>3.2 Processus d'installation<a name="install_process"></a></h2>
<p>
Vous devez tout d'abord décompresser l'archive source de la
manière suivante :</p>
<pre>tar zxvf calcurse-2.6.tar.gz</pre>
<p>
Une fois que vous remplissez tous les pré-requis nécessaires à
l'installation, le processus de compilation est simple et suit
les trois étapes usuelles :
<ol>
<li><code>./configure</code></li>
<li><code>make</code></li>
<li><code>make install</code> (peut nécessiter les privilèges
super-utilisateur)</li>
</ol>
</p>
<p>
Vous pouvez obtenir la liste des options possibles en tapant
<code>./configure --help</code>.
</p>
<h1>4. Présentation générale<a name="basics"></a></h1>
<h2>4.1 Invocation<a name="basics_invocation"></a></h2>
<h3>4.1.1 Arguments en ligne de commande<a name="basics_invocation_commandline"></a></h3>
<p>
Lors de son appel en ligne de commande, <code>calcurse</code>
accepte les arguments suivants (les arguments courts ou longs
sont supportés) :</p>
<p>
<dl>
<dt><code>-a, --appointment</code></dt>
<dd>
Affiche les rendez-vous pour la date du jour, puis quitte.
<p class="rq"><span class="valorise">Remarque:</span> le calendrier à utiliser peut être
spécifié en utilisant l'option '-c'.</p>
</dd>
<dt><code>-c <fichier>, --calendar <fichier></code></dt>
<dd>
Spécifie le fichier calendrier à utiliser.
Le calendrier par défaut est celui contenu dans
<code>~/.calcurse/apts</code>
(voir la section <a href="#basics_files">Fichiers</a>).
</dd>
<dt><code>-d <date|num>, --day <date|num></code></dt>
<dd>
Affiche les rendez-vous pour la date ou pour le nombre de
jours indiqués, suivant le format de l'argument. Deux
formats différents sont acceptés :
<ul>
<li>une date (voir ci-dessous pour les formats disponibles).</li>
<li>un nombre 'n'.</li>
</ul>
Dans le premier cas, la liste des rendez-vous pour la
date spécifiée sera affichée, alors que dans le
deuxième cas, la liste des rendez-vous pour les 'n'
jours à venir sera retournée.
Par exemple, taper <code>calcurse -d 3</code> fera
s'afficher les rendez-vous pour aujourd'hui, demain
et après-demain.
<div class="todo">
Possible formats for specifying the date are defined inside the
general configuration menu (see
<a href="#options_general">General options</a>), using the
<code>input_datefmt</code> variable.
</div>
<p class="rq"><span class="valorise">Remarque:</span>
comme pour l'option '-a', le fichier contenant le calendrier
à lire peut être spécifié en utilisant l'option '-c'.</p>
</dd>
<dt><code>-D <dir>, --directory <dir></code></dt>
<dd>
Indique le répertoire dans lequel seront stockées les données.
Cette option n'est pas compatible avec l'option '-c'. Si ce
répertoire n'est pas spécifié, celui utilisé par défaut est
<code>'~/.calcurse/'</code>.
</dd>
<dt><code>-h, --help</code></dt>
<dd>
Affiche l'aide décrivant les options en ligne de commande,
puis quitte.</dd>
<dt><code>-i <file>, --import <file></code></dt>
<dd>
Importe les données au format icalendar contenues dans le fichier
<code>file</code>.
</dd>
<dt><code>-n, --next</code></dt>
<dd>
Affiche le rendez-vous suivant dans les prochaines 24 heures, puis
quitte.
Le temps indiqué représente le nombre d'heures et de
minutes restantes avant le rendez-vous.
<p class="rq"><span class="valorise">remarque:</span>
le fichier contenant le calendrier à lire peut
être spécifié en utilisant l'option '-c'.</p>
</dd>
<dt><code>-N, --note</code></dt>
<dd>
Lorsque cette option est utilisée avec les options '-a' ou '-t',
le contenu des notes associées aux rendez-vous et aux tâches sera
également affiché.
</dd>
<dt><code>-r[num], --range[=num]</code></dt>
<dd>
Affiche les rendez-vous et les événements pour le nombre num de
jours puis quitte. Si l'argument optionnel num n'est pas donné,
une plage d'une seule journée sera utilisée.
</dd>
<dt><code>-s[date], --startday[=date]</code></dt>
<dd>
Affiche les rendez-vous et les événements depuis la date indiquée
puis quitte. Si l'argument optionnel date n'est pas donné, la journée
courante sera utilisée.
</dd>
<dt><code>-S<regex>, --search=<regex></code></dt>
<dd>
Lorsque cette option est utilisée avec les options '-a', '-d', '-r',
'-s' ou '-t', seuls les éléments dont la description correspond à
l'expression régulière passée en argument seront affichés.
</dd>
<dt><code>-t[num], --todo[=num]</code></dt>
<dd>
Affiche la liste des 'todo', puis quitte. Si le nombre optionnel
<code>num</code> est indiqué, alors uniquement les tâches
ayant une priorité égale à <code>num</code> seront
affichées.
La priorité doit être comprise entre 1 (priorité la plus haute) et 9
(priorité la plus basse). Il est également possible de spécifier 0
pour la priorité, auquel cas seules les tâches completées seront
affichées.</p>
</dd>
<dt><code>-v, --version</code></dt>
<dd>
Affiche la version de <code>calcurse</code>, puis quitte.
</dd>
<dt><code>-x[format], --export[=format]</code></dt>
<dd>
Exporte les données utilisateur au format spécifié. Les évènements,
rendez-vous et tâches sont convertis et imprimés sur la sortie
standard. Deux formats d'export différents sont disponibles :
le format ical et le format pcal (voir la section
<a href="#links_others">Liens</a> ci-dessous).
Si l'argument optionnel <code>format</code> n'est pas indiqué par
l'utilisateur, alors le format ical sera utilisé par défaut.
<p class="rq"><span class="valorise">Note:</span>
afin de sauvegarder les données exportées dans un fichier,
il est nécessaire de rediriger la sortie standard en utilisant une
commande comme celle-ci:
<code>$ calcurse --export > mon_fichier.dat</code></p>
</dd>
</dl>
<h3>4.1.2 Variable d'environnement pour l'i18n<a name="basics_invocation_variable"></a></h3>
<p>
<code>calcurse</code> peut être compilé avec le support
<span class="emp">NLS</span> (voir <a
href="#install_requirements_gettext">Librairie
<code>gettext</code></a>). Ainsi, si vous voulez que les
messages affichés apparaissent dans votre langue natale,
assurez-vous tout d'abord que celle-ci est présente dans le
fichier <code>po/LINGUAS</code>. Ce fichier indique toutes
les traductions disponibles par l'intermédiaire d'un code de
deux lettres (par exemple, <span class="emp">fr</span>
représente le français). Si vous ne trouvez pas votre langue,
il serait très apprécié que vous apportiez votre aide pour
traduire <code>calcurse</code> (voir la partie <a
href="#contribute">Comment contribuer?</a>).</p>
<p>
Si votre langue est disponible, lancez <code>calcurse</code>
en utilisant la commande suivante : </p>
<pre>LC_ALL=fr_FR calcurse</pre>
<p>où <span class="emp">fr_FR</span> doit être remplacé par la
<span class="emp">locale</span> (code de la langue suivi du
code pays) correspondant à la traduction voulue.</p>
<p>
Il est également recommandé de spécifier le codage à utiliser,
car dans certains cas des problèmes d'affichage des accents
peuvent survenir. Ce codage est indiqué au début du fichier po
correspondant à la langue voulue. Par exemple, vous pouvez
remarquer dans le fichier fr.po que le codage utilisé est
iso-8859-1. Vous pouvez donc le préciser au lancement de
<code>calcurse</code>:</p>
<pre>LC_ALL=fr_FR.ISO8859-1 calcurse</pre>
<h3>4.1.3 Autres variables d'environnement<a name="basics_invocation_environment"></a></h3>
<p>
Les variables d'environnement suivantes agissent sur le comportement de
<code>calcurse</code>:</p>
<dl>
<dt><code>VISUAL</code></dt>
<dd>Indique l'éditeur externe qui sera utilisé pour rédiger des notes.
</dd>
<dt><code>EDITOR</code></dt>
<dd>Si la variable d'environnement <code>VISUAL</code> n'est pas
renseignée, l'éditeur externe qui sera utilisé par défaut est celui
contenu dans la variable <code>EDITOR</code>. Si aucune de ces deux
variables n'est renseignée, alors <code>/usr/bin/vi</code> sera
appelé par défaut.
</dd>
<dt><code>PAGER</code></dt>
<dd>Indique le visualiseur utilisé par défaut pour consulter les
notes. Si cette variable n'est pas renseignée, alors
<code>/usr/bin/less</code> sera utilisé.
</dd>
</dl>
<h2>4.2 Interface utilisateur<a name="basics_interface"></a></h2>
<h3>4.2.1 Mode non-interactif<a name="basics_interface_noninteractive"></a></h3>
<p>
Lorsque il est appelé avec au moins un des arguments suivants:
<code>-a</code>, <code>-d</code>, <code>-h</code>,
<code>-n</code>, <code>-t</code>, <code>-v</code>, <code>-x</code>,
<code>calcurse</code> est lancé en mode non-interactif.
Cela signifie que l'information demandée sera affichée,
puis <code>calcurse</code> quittera et vous serez ramené
au prompt de l'interpréteur de commandes.</p>
<p>
De cette manière, il est possible de rajouter une ligne telle
que <code>'calcurse --todo --appointment'</code> dans le fichier d'initialisation
de son environnement, afin de faire s'afficher à chaque
début de session la liste des tâches à faire et des rendez-vous
planifiés pour la journée.</p>
<h3>4.2.2 Mode interactif<a name="basics_interface_interactive"></a></h3>
<div class="todo">
<p class="rq"><span class="valorise">Note:</span>
Key bindings that are indicated in this manual correspond to
the default ones, defined when <code>calcurse</code> is launched
for the first time. If those key bindings do not suit user's needs,
it is possible to change them within the keys configuration menu
(see <a href="#options_keys">key bindings</a>).</p>
</div>
<p>
Lorsqu'il est appelé sans aucun argument ou uniquement avec
l'option <code>'-c'</code>, <code>calcurse</code> est lancé
en mode interactif. Dans ce mode s'affiche une interface qui
contient trois panneaux différents, qu'il est possible de
sélectionner cycliquement en utilisant la touche 'TAB', ainsi
que d'une barre de notification et une autre de status
(voir la figure ci-dessous).</p>
<pre>
panneau rendez-vous---. .---panneau calendrier
| |
v v
+------------------------------------++----------------------------+
| Rendez-vous || Calendrier |
|------------------------------------||----------------------------|
| (|) Avril 6, 2006 || Avril 2006 |
| ||Lun Mar Mer Jeu Ven Sam Dim |
| || 1 2 |
| || 3 4 5 6 7 8 9 |
| || 10 11 12 13 14 15 16 |
| || 17 18 19 20 21 22 23 |
| || 24 25 26 27 28 29 30 |
| || |
| |+----------------------------+
| |+----------------------------+
| || Tâches | panneau
| ||----------------------------| tâches à
| || | faire
| || | |
| || |<--.
| || |
+------------------------------------++----------------------------+
|---[ Lun 22-11-2006 | 18:11:43 ]---(apts)----> 01:20 :: dîner <---|<--.
+------------------------------------------------------------------+ barre de
| ? Aide R Retracer H/L -+1 Jour G Aller à C Config | notification
| Q Quitter S Sauver J/K -+1 Sem. Tab Chg vue |<-.
+------------------------------------------------------------------+ |
|
barre de status
</pre>
<p>
Le premier panneau représente un calendrier qui permet de
sélectionner un jour en particulier. Le second panneau contient
une liste d'évènements et les rendez-vous du jour, et le dernier
contient une liste des tâches à faire, mais qui ne sont pas
assignées à une journée en particulier.</p>
<p>
On peut remarquer dans le panneau des rendez-vous le signe
<span class="emp">'(|)'</span>
placé juste devant la date. Ce signe représente la phase de la lune.
En fonction de la phase actuelle de celle-ci, un des signes suivants
peut-être indiqué :
<dl class="compact">
<dt>'<code> |) </code>':</dt>
<dd>premier quartier</dd>
<dt>'<code> (|) </code>':</dt>
<dd>pleine lune</dd>
<dt>'<code> (| </code>':</dt>
<dd>dernier quartier</dd>
<dt>'<code> | </code>':</dt>
<dd>nouvelle lune</dd>
<dt>aucun signe:</dt>
<dd>la phase actuelle de la lune ne correspond à
aucune des phases ci-dessus</dd>
</dl>
</p>
<p>
Tout en bas de l'écran on retrouve une barre de status, qui indique
les actions possibles en fonction du contexte, ainsi que la
touche qui doit être pressée pour effectuer cette action.</p>
<p>
Juste au-dessus de cette barre se trouve la barre de notification, qui
indique les informations suivantes, de gauche à droite : la date du jour,
l'heure courante, le fichier calendrier actuellement ouvert (il s'agit
de apts dans la copie d'écran, qui est le fichier par défaut, comme indiqué
dans la section suivante), et le premier rendez-vous programmé dans les
prochaines 24 heures. Dans cet exemple, il s'agit d'un dîner qui aura lieu
dans une heure et vingt minutes.</p>
<p class="rq"><span class="valorise">Remarque:</span>
Certaines actions, comme éditer ou ajouter un
elément, nécessitent de renseigner du texte par
l'intermédiaire de l'éditeur de ligne de commande
fournit avec <code>calcurse</code>.</p>
<p>
Dans cet éditeur, si la ligne de commande est plus longue que la
largeur de l'écran, le caractère '>', '*', ou '<'
sera rajouté dans la dernière colonne s'il reste du texte
après, avant et après, ou avant la position courante,
respectivement. La ligne défile horizontalement si
nécessaire.</p>
<p>
De plus, il existe des combinaisons de touches pour
effectuer certaines actions courantes utiles lors de l'édition
de textes. Voici ces raccourcis:
<dl class="compact">
<dt><code>^a</code>:</dt>
<dd>déplacer le curseur au début de la ligne</dd>
<dt><code>^b</code>:</dt>
<dd>déplacer le curseur d'une position en arrière</dd>
<dt><code>^d</code>:</dt>
<dd>effacer le caractère sous le curseur</dd>
<dt><code>^e</code>:</dt>
<dd>déplacer le curseur en fin de ligne</dd>
<dt><code>^f</code>:</dt>
<dd>déplacer le curseur d'une position en avant</dd>
<dt><code>^h</code>:</dt>
<dd>effacer le caractère précédent</dd>
<dt><code>^k</code>:</dt>
<dd>effacer le texte depuis la position courante
jusqu'à la fin de la ligne</dd>
<dt><code>ESC</code>:</dt>
<dd>annuler l'édition du texte courant</dd>
</dl>
</p>
<h2>4.3 Fichiers<a name="basics_files"></a></h2>
<p>
La structure de fichiers suivante est créée dans le répertoire
<code>$HOME</code> de l'utilisateur (ou bien dans le répertoire
indiqué par l'option '-D') la première fois que
<code>calcurse</code> est lancé :</p>
<pre>
$HOME/.calcurse/
|___notes/
|___conf
|___keys
|___apts
|___todo
</pre>
<dl class="compact">
<dt><code>notes/</code>:</dt>
<dd>ce sous-répertoire contient la description des notes
rattachées aux rendez-vous, événements ou tâches. Un fichier
texte est créé par note, et son nom est construit à l'aide de
la fonction mkstemp(3). Ainsi, l'unicité de ce nom est assurée,
mais il n'a pas de relation avec l'élément auquel la note est
rattachée.</dd>
<dt><code>conf</code>:</dt>
<dd>ce fichier contient la configuration de l'utilisateur</dd>
<dt><code>keys</code>:</dt>
<dd>ce fichier contient les raccourcis clavier définis par l'utilisateur</dd>
<dt><code>apts</code>:</dt>
<dd>ce fichier contient tous les événements ainsi que les
rendez-vous de l'utilisateur</dd>
<dt><code>todo</code>:</dt>
<dd>ce fichier contient la liste des tâches à effectuer</dd>
</dl>
<h2>4.4 Fonctions d'import/export<a name="basics_import_export"></a></h2>
<p>
Les possibilités offertes par <code>calcurse</code> pour importer et exporter
des données sont décrites ci-dessous.
</p>
<h3>4.4.1 Import<a name="basics_import"></a></h3>
<p>
Les données au format icalendar tel que décrit dans la spécification
rfc2445 (voir la section <a href="#links_others">liens</a> ci-dessous)
peuvent être importées dans calcurse. L'import ical de calcurse est basé
sur la version 2.0 de la norme rfc2445, mais pour le moment, seul un
sous-ensemble de cette spécification a été implémenté.
</p>
<p>
Les propriétés suivantes sont gérées par calcurse:
<ul>
<li>éléments <code>VTODO</code>:<br>
"PRIORITY", "VALARM", "SUMMARY", "DESCRIPTION"</li>
<li>éléments <code>VEVENT</code>:<br>
"DTSTART", "DTEND", "DURATION", "RRULE", "EXDATE", "VALARM", "SUMMARY",
"DESCRIPTION"</li>
</ul>
</p>
<p>
La propriété "DESCRIPTION" du format icalendar sera convertie dans calcurse
en ajoutant une note à l'élément. Si une propriété "VALARM" est trouvée,
l'élément sera marqué comme étant important et l'utilisateur recevra une
notification (ceci ne fonctionne que pour les rendez-vous).
</p>
<p>
Voici la liste des propriétés qui ne sont pas encore implémentées:
<ul>
<li>les durées négatives ne sont pas prises en compte (l'élément n'est
pas importé)</li>
<li>certaines fréquences de répétition ne sont pas reconnues:<br>
"SECONDLY" / "MINUTELY" / "HOURLY"</li>
<li>Certains mots-clés liés aux répétitions ne sont pas reconnus
(ceux commençant par 'BY'):<br>
"BYSECOND" / "BYMINUTE" / "BYHOUR" / "BYDAY" / "BYMONTHDAY"<br>
"BYYEARDAY" / "BYWEEKNO" / "BYMONTH" / "BYSETPOS"<br>
plus "WKST"</li>
<li>le mot-clé "EXRULE" n'est pas reconnu</li>
<li>les fuseaux horaires ne sont pas pris en compte</li>
</ul>
</p>
<h3>4.4.2 Export<a name="basics_export"></a></h3>
<p>
Deux formats peuvent êtres utilisés pour l'export des données:
<code>ical</code> et <code>pcal</code> (voir la section
<a href="#links_others">Liens</a> ci-dessous pour avoir plus d'informations
concernant ces formats).
</p>
<h2>4.5 Aide en ligne<a name="basics_help"></a></h2>
<p>
A n'importe quel moment, le système d'aide en ligne peut être
appelé en pressant la touche '?'. Une fois rentré dans l'aide,
les informations sur une commande spécifique peuvent être
obtenues en appuyant sur la touche correspondant à cette
commande.
</p>
<h1>5. Options<a name="options"></a></h1>
<p>
Tous les paramètres de <code>calcurse</code> sont configurables
à partir du menu <code>Configuration</code>, accessible en appuyant
sur 'C'. L'utilisateur se voit alors présenté un second menu
avec trois choix possibles : appuyer à nouveau sur 'C' amène
au menu de sélection des couleurs de l'interface, appuyer sur
'L' permet de choisir parmi différents emplacements pour les
panneaux de la fenêtre principale de <code>calcurse</code>,
appuyer sur 'G' vous permet de fixer les options générales, 'K'
vous permet d'accéder au menu de configuration des raccourcis clavier,
et enfin
les paramètres de la barre de notification peuvent être fixés
en appuyant sur 'N'.</p>
<h2>5.1 Options générales<a name="options_general"></a></h2>
<p>
Ces options contrôlent le comportement général de
<code>calcurse</code>, comme décrit ci-dessous :</p>
<dl>
<dt><code>sauvegarde_automatique</code>
(valeur par défaut: <span class="emp">oui</span>)</dt>
<dd>Cette option permet de sauvegarder automatiquement
les données de l'utilisateur avant de quitter, si elle est
fixée à <span class="emp">oui</span>.
<p class="rq"><span class="valorise">attention:</span>
Aucune donnée ne sera automatiquement
sauvegardée si cette variable est fixée à <code>non</code>.
Cela signifie que l'utilisateur doit appuyer sur 'S'
(pour sauvegarder) pour retrouver ses modifications au prochain
lancement de <code>calcurse</code>.</p>
</dd>
<div class="todo">
<dt><code>periodic_save</code>
(default: <span class="emp">0</span>)</dt>
<dd>If different from '0', user's data will be automatically
saved every <span class="emp">periodic_save</span> minutes.
When an automatic save is performed, two asterisks
(i.e. '<code>**</code>') will appear on the top right-hand side
of the screen).</p>
</dd>
</div>
<dt><code>confirmer_pour_quitter</code>
(valeur par défaut: <span class="emp">oui</span>)</dt>
<dd>Si cette option est fixée à <span class="emp">oui</span>,
la confirmation
de l'utilisateur est nécessaire avant de pouvoir quitter.
Autrement, appuyer sur 'Q' provoquera l'arrêt de
<code>calcurse</code> sans demander confirmation.
</dd>
<dt><code>confirmer_pour_effacer</code>
(valeur par défaut: <span class="emp">oui</span>)</dt>
<dd>Si cette option est fixée à <span class="emp">oui</span>, appuyer sur 'D'
pour effacer un élement (soit une tâche, un rendez-vous ou bien
un évenement) provoquera l'apparition d'un message demandant
la confirmation de l'utilisateur avant d'effacer cet élement.
Si cette option est fixée à <span class="emp">non</span>, aucune confirmation
ne sera demandée avant l'effacement d'un élement.
</dd>
<dt><code>masquer_messages_système</code>
(valeur par défaut: <span class="emp">non</span>)</dt>
<dd>Fixer cette option à <span>oui</span> provoque la disparition des
messages relatifs aux enregistrements ou lectures des fichiers
de données. Ceci peut être utile pour accélerer les processus
d'entrées/sorties.
</dd>
<dt><code>masquer_barre_progression</code>
(valeur par défaut: <span class="emp">non</span>)</dt>
<dd>Si elle est fixée à <span class="emp">oui</span>, cette option provoque la
disparition de la barre de progression qui est normalement chargée
d'indiquer l'état d'avancement de l'enregistrement des fichiers
de données. Si cette option est fixée à <span class="emp">non</span>,
cette barre
sera affichée, en même temps que le nom du fichier de données
actuellement en cours d'écriture
(voir la section <a href="#basics_files">Fichiers</a>).
</dd>
<dt><code>semaine_commence_lundi</code>
(valeur par défaut: <span class="emp">oui</span>)</dt>
<dd>Il est possible dans <span class="emp">calcurse</span> d'indiquer quel est le
premier jour de la semaine, à savoir soit le lundi, soit le dimanche.
Si l'option <code>semaine_commence_lundi</code> est fixée à
<span class="emp">oui</span>, les semaines du calendrier commenceront le lundi.
Par contre si cette option est fixée à <span class="emp">non</span>,
les semaines débuteront le dimanche.
</dd>
<dt><code>format_date_sortie</code>
(valeur par défaut: <span class="emp">%D</span>)</dt>
<dd>Indique le format qui sera utilisé pour afficher les dates en mode
non-interactif. Par défaut, les dates sont affichées comme suit :
<span class="emp">mm/jj/aa</span>.
Les différents formats disponibles sont visibles en
tapant la commande suivante dans un terminal: <code>man 3 strftime</code>.
</dd>
<dt><code>format_date_entrée</code>
(valeur par défaut: <span class="emp">1</span>)</dt>
<dd>Indique le format qui sera utilisé pour entrer les dates dans
<span class="emp">calcurse</span>. Quatre choix sont possibles :
<ol>
<li>mm/jj/aaaa</li>
<li>jj/mm/aaaa</li>
<li>aaaa/mm/jj</li>
<li>aaaa-mm-jj</li>
</ol>
</dd>
</dl>
<div class="todo">
<h2>5.2 Key bindings<a name="options_keys"></a></h2>
<p>
One can define it's own keybindings within the 'Keys' configuration
menu. The default keys look like the one used by the <code>vim</code>
editor, especially the displacement keys. Anyway, within this
configuration menu, users can redefine all of the keys available from
within calcurse's user interface.</p>
<p>
To define new keybindings, first highlight the action to which it will
apply. Then, delete the actual key binding if necessary, and add a new
one. You will then be asked to press the key corresponding to the new
binding. It is possible to define more than one key binding for a single
action.</p>
<p>
An automatic check is performed to see if the new key binding
is not already set for another action. In that case, you will be asked
to choose a different one. Another check is done when exiting from this
menu, to make sure all possible actions have a key associated with it.</p>
<p>
The following keys can be used to define bindings:
<ul>
<li>lower-case, upper-case letters and numbers, such as 'a', 'Z', '0'</li>
<li>CONTROL-key followed by one of the above letters</li>
<li>escape, horizontal tab, and space keys</li>
<li>arrow keys (up, down, left, and right)</li>
<li>'HOME' and 'END' keys</li>
</ul> </p>
<p>
While inside the key configuration menu, an online help is available for
each one of the available actions. This help briefly describes what the
highlighted action is used for.</p>
</div>
<h2>5.3 Thèmes graphiques<a name="options_colors"></a></h2>
<p>
Le thème graphique de <code>calcurse</code> peut être adapté aux besoins de
l'utilisateur. Pour changer les options par défaut, la page de configuration
permet de sélectionner la couleur voulue pour l'interface (premier plan et
fond). L'utilisateur doit pour cela se déplacer sur la bonne couleur en
utilisant les touches flèches ou les touches de déplacement par défaut, et
appuyer sur 'X' ou la barre d'espace pour sélectionner la couleur. Il est
également possible de conserver la couleur par défaut du terminal de
l'utilisateur en sélectionnant le choix corresondant dans la liste.</p>
<p>
Cette couleur est alors appliquée à la bordure des
panneaux, aux titres, aux combinaisons de touches, et aux
informations générales affichées dans la
barre de status. Un thème en noir et blanc est
également disponible, afin de supporter les terminaux
monochromes.</p>
<p class="rq"><span class="valorise">Remarque:</span>
Suivant le type de terminal que vous utilisez, et suivant
la valeur de la variable d'environnement <code>$TERM</code>,
la couleur peut être supportée ou non. Un message
d'erreur apparaîtra si vous essayez d'appliquer un
thème graphique en couleur alors que votre terminal est
monochrome. Si vous savez que votre terminal supporte les couleurs
mais que <code>calcurse</code> ne veut pas les afficher,
essayez de changer la valeur de la variable d'environnement
<code>$TERM</code> (appliquez par exemple la valeur
<span class="emp">xterm-xfree86</span>).
</p>
<h2>5.4 Disposition des panneaux<a name="options_layout"></a></h2>
<p>
La disposition des panneaux à l'intérieur de la fenêtre de
<code>calcurse</code> peut être paramétrée. Par défaut, le
panneau contenant le calendrier se situe en haut à droite de
la fenêtre, le panneau contenant la liste des tâches est situé
en bas à droite, et le panneau contenant les rendez-vous se
trouve sur la partie gauche de l'écran (voir la figure dans la
section <a href="#basics_interface_interactive">Mode interactif</a>
pour un exemple de la disposition par défaut).
En choisissant une autre disposition pour les éléments composants
la fenêtre de <code>calcurse</code>, l'utilisateur peut adapter
à ses besoins l'interface du programme.</p>
<h2>5.5 Réglages de la barre de notification<a name="options_notify"></a></h2>
<p>
Les options suivantes permettent de modifier les réglages de la
barre de notification:</p>
<dl>
<dt><code>barre-notification_afficher</code>
(valeur par défaut: <span class="emp"oui</span>)</dt>
<dd>Cette option indique si la barre de notification doit être
affichée ou pas.</dd>
<dt><code>barre-notification_date</code>
(valeur par défaut: <span class="emp">%a %F</span>)</dt>
<dd>Avec cette option, il vous est possible de spécifier le format qui
doit être utilisé pour afficher la date du jour dans la barre de
notification. Les différents formats possibles sont visibles en
tapant la commande suivante dans un terminal: <code>man 3 strftime</code>.
</dd>
<dt><code>barre-notification_heure</code>
(valeur par défaut: <span class="emp">%T</span>)</dt>
<dd>Avec cette option, il vous est possible de spécifier le format qui
doit être utilisé pour afficher l'heure courante dans la barre de
notification. Les différents formats possibles sont visibles en
tapant la commande suivante dans un terminal: <code>man 3 strftime</code>.
</dd>
<dt><code>barre-notification_alerte</code>
(valeur par défaut: <span class="emp">300</span>)</dt>
<dd>Si l'utilisateur a programmé un rendez-vous dans les prochaines
'barre-notification_alerte' secondes, et qu'il a marqué celui-ci
comme étant important, l'affichage de ce rendez-vous clignotera dans
la barre de notification.
De plus, la commande définie par <code>barre-notification_commande</code>
sera executée.
De cette manière, l'utilisateur sera alerté et saura que l'heure du rendez-vous
approche.</dd>
<dt><code>barre-notification_commande</code>
(valeur par défaut: <span class="emp">printf '\a'</span>)</dt>
<dd>Cette option indique la commande qui sera lancée lorsque l'heure d'un
rendez-vous approchera, et que ce rendez-vous a été marqué comme
'important'. La commande spécifiée par cette option sera passée au shell
de l'utilisateur, qui l'interpretera. Pour savoir quel shell doit être
utilisé, <code>calcurse</code> lit le contenu de la variable
d'environnement <code>$SHELL</code>, et si cette variable est vide, la
commande sera passée à <code>/bin/sh</code>.
<p class="rq"><span class="valorise">Exemple:</span>
Supposons que le programme <code>mail</code> soit
disponible sur l'ordinateur de l'utilisateur, celui-ci peut indiquer la
commande suivante afin d'être prévenu par mail lorsqu'un rendez-vous
approche (la description de ce rendez-vous sera également mentionnée
dans le corps du mail):</p>
<code>
calcurse --next | mail -s "[calcurse] nouveau rendez-vous!" user@host.com
</code>
</dd>
</dl>
<h1>6. Bogues connus<a name="known_bugs"></a></h1>
<p>
Une coloration incorrecte des objets peut résulter
d'une utilisation conjointe d'un thème graphique en
noir et blanc et d'une variable <code>$TERM</code>
fixée à <span class="emp">xterm-color</span>. Pour supprimer ce
bogue, et comme le conseille Thomas E. Dickey (le
résponsable du projet <code>xterm</code>),
<span class="emp">xterm-xfree86</span> devrait être assigné
à la variable <code>$TERM</code> en lieu et place de
<span class="emp">xterm-color</span> :</p>
<blockquote class="rq">
"La valeur xterm-color pour la variable $TERM est un mauvais
choix pour les terminaux XFree86 parce qu'elle est couramment
utilisée pour les entrées terminfo qui ne
supportent pas bce. Utilisez plutôt l'entrée
xterm-xfree86 qui est distribuée avec le xterm
d'XFree86 (ou par celui, similaire, distribué avec ncurses)."
</blockquote>
<h1>7. Rapporter les bogues et commentaires<a name="bugs"></a></h1>
<p>
Merci de renvoyer vos rapports de bogues et vos commentaires à
l'adresse suivante :</p>
<pre>calcurse .à. culot .point. org </pre>
<p>
ou directement à l'auteur :</p>
<pre>frederic .à. culot .point. org </pre>
<h1>8. Comment contribuer?<a name="contribute"></a></h1>
<p>
Si vous désirez contribuer au projet, vous pouvez tout d'abord
envoyer vos commentaires sur ce qui vous plaît ou déplaît ou sur
ce qui vous manque dans <code>calcurse</code>.
Pour le moment, les contributions possibles concernent
la traduction des messages de <code>calcurse</code> ainsi que
de la documentation.</p>
<p class="rq"><span class="valorise">Remarque:</span>
toute contribution à la traduction de
<code>calcurse</code> serait très
appréciée, mais avant tout, envoyez un mail
à <code>calcurse-i18n .à. culot .point. org</code> pour savoir si
quelqu'un a déjà commencé le processus de
traduction dans votre langue.</p>
<h2>8.1 Traduction de la documentation<a name="contribute_documentation"></a></h2>
<p>
Le répertoire <span class="emp">doc/</span> du paquet source contient
déjà des versions traduites de la documentation.
Cependant, si celle-ci n'est pas encore disponible dans votre
langue, votre aide pour sa traduction serait très
appréciée.</p>
<p>
Pour cela, il suffit de copier un des fichiers existant et de
renommer cette copie en <code>manual_XX.html</code>, où
<span class="emp">XX</span> représente votre langue. Il faut ensuite
traduire ce fichier nouvellement créé et de
l'envoyer à l'auteur (voir <a href="#bugs">Rapporter
les bogues et commentaires</a>), pour qu'il soit inclus dans
la prochaine version de <code>calcurse</code>.</p>
<h2>8.2 Traduction de <code>calcurse</code><a name="contribute_i18n"></a></h2>
<p>
Comme mentionné plus haut, les utilitaires
<code>gettext</code> sont utilisés par
<code>calcurse</code> pour produire des messages
multilingues. Cette section explique comment traduire ces
messages dans votre langue. Cependant, cette notice est
délibérément incomplète,
puisqu'elle ne se concentre que sur l'utilisation de
<code>gettext</code> avec <code>calcurse</code>. Pour avoir
une vision plus large du Support de Langage Natif
(<code>NLS</code>), il est préférable de se
référer au manuel de <code>GNU gettext</code>
que l'on peut trouver à l'adresse suivante :</p>
<pre>http://www.gnu.org/software/gettext/manual/</pre>
<p>
Pour résumer, trois catégories de personnes sont
impliquées dans la chaîne de traduction : les
programmeurs, les coordinateurs de la traduction, et les
traducteurs. Après un rapide aperçu de la
manière de procéder pour traduire le logiciel,
nous décrirons plus en détails les tâches du
traducteur.</p>
<h3>8.2.1 Aperçu<a name="contribute_i18n_overview"></a></h3>
<p>
Afin de pouvoir afficher du texte dans la langue natale de
l'utilisateur, deux étapes sont nécessaires :
l'<span class="emp">internationalisation</span> (i18n), et la
<span class="emp">localisation</span> (l10n).</p>
<p>
L'i18n permet à <code>calcurse</code> d'être
multilingue. C'est un processus qui est mis en place par les
programmeurs, qui marquent les phrases à traduire au
sein du code source, et qui fournissent les outils pour que
ces phrases soient traduites automatiquement pendant le
déroulement du programme.</p>
<p>
La l10n correspond quant à elle au processus qui permet
à <code>calcurse</code> de s'adapter à la langue
de l'utilisateur. C'est-à-dire qu'il traduit les
phrases précédemment marquée par les
programmeurs, et qu'il fixe correctement les variables
d'environnement afin que <code>calcurse</code> puisse utiliser
les résultats de cette traduction.</p>
<p>
Ainsi, les phrases traduisibles sont tout d'abord
marquées par les programmeurs dans le code source, puis
rassemblées dans un fichier référence
(<span class="emp">calcurse.pot</span> - l'extension
<span class="emp">pot</span> signifiant
<span class="emp">portable object template</span>, objet portable de
référence). Le contenu de ce fichier est alors
associé aux fichiers contenant la traduction pour
chacune des différentes langues (fichier <span class="emp">fr.po</span>
pour le français par exemple - <span class="emp">po</span> siginifiant
<span class="emp">portable object</span>, objet portable - qui peut être
lu par les humains). Le traducteur devra se servir de ce
fichier, et traduira les phrases qu'il contient, puis
l'enverra aux développeurs. Ensuite, au niveau de la
compilation du programme, une version binaire de ce fichier
sera produite (pour des raisons d'efficacité), puis
installée. Cette version binaire a pour extension
<span class="emp">.mo</span>, où <span class="emp">mo</span>
signifie <span class="emp">machine
object</span> - objet machine, c'est-à-dire qui peut
être lu par le programme. Pour finir,
<code>calcurse</code> se servira de ce fichier <span class="emp">mo</span>
lors de son exécution pour traduire les phrases dans la langue
de l'utilisateur.</p>
<h3>8.2.2 Etapes de la traduction<a name="contribute_i18n_translator"></a></h3>
<p>
Supposons que quelqu'un veuille commencer une traduction dans
une nouvelle langue. Voici les étapes à suivre
pour ce faire :</p>
<ul>
<li>Premièrement, trouver quel est le nom de la locale
correspondant à la langue à traduire. Par
exemple, pour le français, il s'agit de 'fr_FR', ou
simplement 'fr'. C'est cette valleur que l'utilisateur devra
mettre dans la variable d'environnement <code>LC_ALL</code>
pour obtenir la version traduite du logiciel (voir <a
href="#basics_invocation_variable">Variable d'environnement
pour l'i18n</a>).</li>
<li>Ensuite, il faut se rendre dans le répertoire
<span class="emp">po/</span>, et créer un nouveau fichier <span class="emp">.po</span>
à partir du fichier de référence en utilisant la commande suivante :
<code>'msginit -i calcurse.pot -o fr.po -l fr --no-translator'</code>
Si vous n'avez pas <code>msginit</code> installé sur
votre système, vous pouvez plus simplement copier
<span class="emp">calcurse.pot</span> en <span class="emp">fr.po</span>
par exemple, et éditer l'en-tête du fichier nouvellement créé
manuellement.</li>
</ul>
<p>
Maintenant, ayant à disposition ce fichier
<span class="emp">fr.po</span>, la traduction peut commencer.</p>
<h3>8.2.3 Fichiers <code>po</code><a name="contribute_i18n_po-files"></a></h3>
<p>
Le format des fichiers <code>po</code> est assez simple. En effet,
ils ne contiennent que quatre éléments
différents :</p>
<ol>
<li><span class="emp">ligne d'emplacement:</span> renseigne sur l'emplacement
de la phrase dans le fichier source (donne le nom du fichier
ainsi que le numéro de ligne), afin de retrouver
simplement le contexte d'où est issu la phrase à
traduire.</li>
<li><span class="emp">ligne msgid:</span> indique la phrase à traduire.</li>
<li><span class="emp">ligne msgstr:</span> ligne indiquant la phrase traduite.</li>
<li><span class="emp">lignes commençant par '#'</span>: indiquent des
commentaires (certains ont une signification spéciale,
comme nous le verrons plus tard).</li>
</ol>
<p>
Pour résumer, un traducteur doit simplement remplir les
champs <span class="emp">msgstr</span> avec la traduction des lignes
trouvées juste au-dessus dans la partie <span class="emp">msgid</span>.</p>
<p>
<span class="valorise">Remarques:</span>
<dl>
<dt><span class="emp">Phrases marquées Fuzzy</span></dt>
<dd>Vous pourrez rencontrer des phrases commençant par le
commentaire <code>"#, fuzzy"</code>.
<code>calcurse</code> n'utilisera pas les traductions
commençant par ce commentaire, à moins que vous
ne transformiez ces phrases. En effet, le commentaire
<code>fuzzy</code> signifie que la phrase a déjà
été traduite mais qu'elle a depuis
été changée dans le source du programme,
ou bien que <code>gettext</code> a effectué lui-même
une traduction, en se basant sur une phrase similaire. Cela
implique donc que vous devez vérifier la traduction.
Parfois, la phrase originale a changé suite à
une correction de faute de frappe. Dans ce cas, vous n'aurez
pas besoin de modifier la traduction. Mais dans d'autres cas,
cette traduction peut ne plus être valable et
nécessitera alors une mise à jour. Une fois
cette mise à jour effectuée, vous pouvez
supprimer
le commentaire <code>"#, fuzzy"</code>, et la traduction sera
alors à nouveau prise en compte par <code>calcurse</code>.
</dd>
<dt><span class="emp">Lignes au format C et séquences spéciales</span></dt>
<dd>Certaines phrases ont le commentaire suivant: <code>"#,
c-format"</code>. Cela signifie que des parties du texte
à traduire ont une signification particulière
pour le programme, et qu'il ne faut pas les modifier. Par
exemple, les séquences contenant des <code>%</code>, comme
<code>"%s"</code>. Cela signifie que <code>calcurse</code>
remplacera ces séquences par d'autres expressions. Il
est donc important de ne pas les modifier. Il existe
également des séquences contenant des
<code>\</code>, comme <code>\n</code> ou <code>\t</code>. Il ne
faut pas les modifier non plus. En effet, la première
séquence représente une fin de ligne, et la
deuxième une tabulation.</dd>
<dt><span class="emp">Découpage des traductions</span></dt>
<dd>Si certaines lignes sont trop longues, il est possible de
découper les phrases comme dans l'exemple ci-après:
<pre>
msgid ""
"une ligne très longue"
"une autre ligne"
</pre></dd>
<dt><span class="emp">En-tête des fichiers po</span></dt>
<dd>Au tout début du fichier <span class="emp">po</span>, la
première phrase forme un en-tête où
différentes informations doivent être
renseignées. La plus importante est le jeu de
caractères utilisé. Cette information devrait
ressembler à
<pre>
"Content-Type: text/plain; charset=utf-8\n"
</pre>
Il est également nécessaire de remplir le champ
<span class="emp">Last-Translator</span> -
<span class="emp">Dernier Traducteur</span>, afin
que d'autres traducteurs potentiels puissent se mettre en
relation avec la dernière personne ayant
retouché le fichier. De cette manière, il est
plus simple de coordonner les efforts de traduction. Il est
possible de rajouter son adresse de courrier
électronique, par exemple:
<pre>
"Last-Translator: Frederic Culot <frederic@culot.org>\n"
</pre></dd>
<dt><span class="emp">Commentaires</span></dt>
<dd>Ajouter des commentaires (lignes commençant par '#')
peut être un bon moyen de signaler des problèmes ou
difficultés de traduction aux autres traducteurs.</dd>
<dt><span class="emp">Taille des phrases</span></dt>
<dd><code>calcurse</code> est un programme comportant une
interface console/curses, il dépend donc de la taille
du terminal utilisé (plus particulièrement du
nombre de colonnes). Il est important de garder ceci en
mémoire au moment de la traduction. Souvent, la phrase
à traduire doit tenir dans une seule ligne (soit en
général 80 caractères). Il faut en tenir
compte, et essayer de voir où la phrase sera
placée pour adapter sa traduction.</dd>
<dt><span class="emp">Quelques outils utiles</span></dt>
<dd>Le format des fichiers <code>po</code> est relativement simple, et
ils peuvent être modifiés avec un éditeur
de texte standard. Mais il est également possible
d'utiliser des outils spécialisés pour cette
tâche:
<ul>
<li><code>poEdit</code> (<a
href="http://www.poedit.org/" target="_blank">
http://www.poedit.org/</a>)</li>
<li><code>KBabel</code> (<a
href="http://i18n.kde.org/tools/kbabel/" target="_blank">
http://i18n.kde.org/tools/kbabel/</a>)</li>
<li><code>GTranslator</code> (<a
href="http://gtranslator.sourceforge.net/" target="_blank">
http://gtranslator.sourceforge.net/</a>)</li>
<li><code>Emacs</code> et son mode <code>po</code></li>
<li><code>Vim</code> et son mode <code>po</code></li>
</ul>
</dd>
<dt><span class="emp">Finalement...</span></dt>
<dd>J'espère que vous prendrez plaisir à
contribuer à l'internationalisation du monde des
logiciels libres. :) Si vous avez d'autres questions
concernant ce processus, n'hésitez pas à me
contacter à l'adresse
<span class="emp">frederic .à. culot .point. org</span>.</dd>
</dl>
<h1>9. Liens<a name="links"></a></h1>
<p>
Cette section contient des liens en relation avec
<code>calcurse</code> qui peuvent vous être utiles.</p>
<h2>9.1 Site internet de <code>calcurse</code><a name="links_homepage"></a></h2>
<p>
La page web de <code>calcurse</code> est à l'adresse suivante :</p>
<pre>http://culot.org/calcurse</pre>
<h2>9.2 Liste de diffusion de <code>calcurse</code><a name="links_list"></a></h2>
<p>
Si vous êtes interessé par ce projet et que vous souhaitez
être prévenu lorsqu'une nouvelle version est diffusée, vous
pouvez souscrire à la liste de diffusion de <code>calcurse</code>.
De cette manière, vous recevrez un mél dès qu'une nouvelle
version est disponible.</p>
<p>
Pour souscrire à cette liste, envoyez un message à l'adresse
<span class="emp">calcurse-announce .à. culot .point. org</span>
avec "subscribe" dans le sujet du mél.</p>
<h2>9.3 Flux RSS<a name="links_rss"></a></h2>
<p>
Une autre possibilité pour être prévenu lorsqu'une
nouvelle version de <code>calcurse</code> est disponible est de
s'abonner au flux RSS suivant :</p>
<pre>http://culot.org/calcurse/news_rss.xml</pre>
<p>
Ce flux RSS est mis à jour dès qu'une nouvelle version de
<code>calcurse</code> est diffusée, et indique quelles sont les
modifications qui ont été apportées.</p>
<h2>9.4 Autres liens<a name="links_others"></a></h2>
<p>
La spécification du format ical (rfc2445) peut être trouvée à l'adresse
suivante :
<pre>http://tools.ietf.org/html/rfc2445</pre>
<p>
La page du projet pcal se trouve quant à elle à l'adresse suivante :
<pre>http://pcal.sourceforge.net/</pre>
<h1>10. Remerciements<a name="thanks"></a></h1>
<p>
Je voudrais remercier ici toutes les personnes sans qui ce projet
n'aurait jamais pu voir le jour! En particulier :
<ul>
<li>Alex pour ses patches, aides et conseils sur la programmation en
<code>C</code></li>
<li>Gwen pour les tests et les discussions sur la manière d'améliorer
<code>calcurse</code></li>
<li>Herbert pour la maintenance du paquet <code>calcurse</code> pour
FreeBSD</li>
<li>Zul pour la maintenance du paquet <code>calcurse</code> pour
NetBSD</li>
<li>Kevin, Ryan, et fEnIo pour la maintenance du paquet <code>calcurse</code>
pour Debian et Ubuntu</li>
<li>Wain, Steffen and Ronald pour la maintenance du paquet <code>calcurse</code> pour
Archlinux</li>
<li>Pascal pour la maintenance du paquet <code>calcurse</code> pour
Slackware</li>
<li>Alexandre pour la maintenance du paquet <code>calcurse</code> pour
Mac OsX et Darwin</li>
<li>Igor pour la maintenance du paquet <code>calcurse</code> pour
ALT Linux</li>
<li>Joel pour son script de calendrier qui a inspiré celui de
<code>calcurse</code></li>
<li>Michael Schulz et Chris M. pour la traduction allemande de <code>calcurse</code>
et de son manuel</li>
<li>Jose Lopez pour la traduction espagnole de <code>calcurse</code>
et de son manuel</li>
<li>Neil Williams pour la traduction anglaise</li>
<li>Tony pour son patch qui a permis d'améliorer la fonction
recur_item_inday(), et pour l'implémentation des options de configuration
concernant les formats de date</li>
<li>Jeremy Roon pour la traduction en Néerlandais</li>
<li>Leandro Noferini pour la traduction en Italien</li>
<li>Erik Saule pour son patch qui a permis d'implémenter les options '-N',
'-s', '-S', '-r', et '-D' de la ligne de commande</li>
<li>les personnes qui écrivent des logiciels que j'apprécie et qui
m'ont inspiré lors de la conception de ce projet, en particulier:
<ul>
<li><code>vim</code> pour les touches de déplacement</li>
<li><code>orpheus</code> et <code>abook</code> pour la documentation</li>
<li><code>pine</code> et <code>aptitude</code>
pour l'interface en mode texte</li>
</ul></li>
</ul>
</p>
<p>
Et pour terminer, un très grand merci à tous les utilisateurs de
<code>calcurse</code> qui m'ont fait parvenir leurs commentaires.</p>
<div class="footer">
Copyright © 2004-2009 Frédéric Culot<br>
Calcurse version 2.6 - Dernière modification: 10 Juillet 2009<br>
</div>
</div>
</body>
</html>