From ac36e94341ca73d581f0df39f1c7bbf2138b2845 Mon Sep 17 00:00:00 2001
From: Frederic Culot <calcurse@culot.org>
Date: Mon, 31 Jul 2006 21:00:02 +0000
Subject: Initial revision

---
 doc/manual_en.html | 783 +++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 783 insertions(+)
 create mode 100755 doc/manual_en.html

(limited to 'doc/manual_en.html')

diff --git a/doc/manual_en.html b/doc/manual_en.html
new file mode 100755
index 0000000..3b1420b
--- /dev/null
+++ b/doc/manual_en.html
@@ -0,0 +1,783 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<!--
+/*
+ *	$calcurse: manual_en.html,v 1.1 2006/07/31 21:00:04 culot Exp $
+ *
+ * Calcurse - text-based organizer
+ * Copyright (c) 2004-2006 Frederic Culot
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ *
+ * Send your feedback or comments to : calcurse@culot.org
+ * Calcurse home page : http://culot.org/calcurse
+ *
+ */
+-->
+
+<html>
+<head>
+<title>CALCURSE documentation</title>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+</head>
+<body bgcolor="white" text="black" link="blue" vlink="navy">
+
+<h1><code>CALCURSE - text-based organizer</code></h1>
+<p>
+<p><hr><p>
+
+<h1>Table of Contents</h1>
+<ul>
+<li><a href="#intro">Introduction</a>
+<li><a href="#overview">Overview</a>
+<ul>
+<li><a href="#overview_history">Creation history</a>
+<li><a href="#overview_features">Important features</a>
+</ul>
+<li><a href="#install">Installation</a>
+<ul>
+<li><a href="#install_requirements">Requirements</a>
+<ul>
+<li><a href="#install_requirements_ncurses"><code>ncurses</code> library</a>
+<li><a href="#install_requirements_gettext"><code>gettext</code> library</a>
+</ul>
+<li><a href="#install_process">Install process</a>
+</ul>
+<li><a href="#basics"><code>calcurse</code> basics</a>
+<ul>
+<li><a href="#basics_invocation">Invocation</a>
+<ul>
+<li><a href="#basics_invocation_commandline">Command line arguments</a>
+<li><a href="#basics_invocation_variable">Environment variable for i18n</a>
+</ul>
+<li><a href="#basics_interface">User interface</a>
+<ul>
+<li><a href="#basics_interface_noninteractive">Non-interactive mode</a>
+<li><a href="#basics_interface_interactive">Interactive mode</a>
+</ul>
+<li><a href="#basics_files"><code>calcurse</code> files</a>
+<li><a href="#basics_help">Online help</a>
+</ul>
+<li><a href="#options">Options</a>
+<ul>
+<li><a href="#options_general">General options</a>
+<li><a href="#options_colors">Color themes</a>
+<li><a href="#options_layout">Layout configuration</a>
+</ul>
+<li><a href="#known_bugs">Known bugs</a>
+<li><a href="#bugs">Reporting bugs and feedback</a>
+<li><a href="#contribute">How to contribute?</a>
+<ul>
+<li><a href="#contribute_documentation">Translating documentation</a>
+<li><a href="#contribute_i18n"><code>calcurse</code> i18n</a>
+<ul>
+<li><a href="#contribute_i18n_overview">Overview</a>
+<li><a href="#contribute_i18n_translator">Translator tasks</a>
+<li><a href="#contribute_i18n_po-files">po-files</a>
+</ul>
+</ul>
+<li><a href="#links">Links</a>
+<ul>
+<li><a href="#links_homepage"><code>calcurse</code> homepage</a>
+<li><a href="#links_list"><code>calcurse</code> announce list</a>
+</ul>
+<li><a href="#thanks">Thanks</a>
+</ul>
+<p><hr><p>
+
+
+<a name="intro"></a><h1>Introduction</a></h1>
+<p>
+	<code>calcurse</code> is a text-based personal organizer 
+	which helps keeping track of events and everyday tasks.  
+	It contains a calendar, a 'todo' list, and puts your 
+	appointments in order. The user interface is configurable, 
+	and one can choose between different color schemes and 
+	layouts. All of the commands are documented within an 
+	online help system.
+
+
+<a name="overview"></a><h1>Overview</h1>
+<a name="overview_history"></a><h2>Creation history</h2>
+<p>
+  	I started thinking about this project when I was finishing 
+	my Ph.D.  in Astrophysics... It started to be a little hard 
+	to organize myself, and I really needed a good tool to help 
+	me in that difficult task ;)<br> 
+	I like programs which use Text User Interfaces, because they 
+	are simple, fast, portable and efficient, so I thought about 
+	working on coding a simple calendar using such an interface. 
+	Moreover, I wanted to go on learning the <code>C</code> 
+	language, which I only used for a while during my undergraduate 
+	studies. So I thought that would be the good project to start 
+	in order to get organized and to learn about a few 
+	<code>C</code> things !  
+	Unfortunately, I finished my Ph.D. before finishing 
+	<code>calcurse</code>, 
+	but anyway, I still wanted to work on it, hoping it would
+	be helpful to other people.  So here it is...<br>
+        <br>
+  	But why 'calcurse' anyway ?  Well, it is simply the 
+	concatenation of 'CALendar' and 'nCURSEs', the name of the 
+	library used to build the user interface.
+
+
+<a name="overview_features"></a><h2>Important features</h2>
+<p>
+        <code>Calcurse</code> is multi-platform and intended to be
+        lightweight, fast and reliable. It is to be used inside a 
+        console or terminal, locally or on a distant machine within 
+        an ssh (or similar) connection. <br>
+        <code>Calcurse</code> can be run in two different modes : 
+        interactive or non-interactive mode. The first mode allows 
+        oneself to view its own personal organizer almost everywhere,
+        thanks to the text-based interface. 
+        The second mode permits to easily build reminders just by adding 
+        <code>calcurse</code> with appropriate command line arguments 
+        inside a cron tab or within a shell init script.<br>
+        Moreover, <code>calcurse</code> was created with the end-user 
+        in mind, and tends to be as friendly as possible. This means 
+        a complete on-line help system, together with having all of 
+        the possible actions displayed at any time inside a status bar. 
+        The user interface is also configurable, and one can choose 
+        between several color and layout combinations.
+
+
+<a name="install"></a><h1>Installation</h1>
+<a name="install_requirements"></a><h2>Requirements</h2>
+<a name="install_requirements_ncurses"></a><h3><code>ncurses</code> library</h3>
+<p>
+	<code>Calcurse</code> requires only a <code>C</code> compiler, such as 
+        <code>cc</code> or <code>gcc</code>, and the <code>ncurses</code>
+        library. 
+        It would be very surprising not to have a valid <code>ncurses</code>
+        library already installed on your computer, but if not, you can 
+        find it at the following url :<br>
+	<pre>
+		http://ftp.gnu.org/pub/gnu/ncurses/
+	</pre>
+
+<a name="install_requirements_gettext"></a><h3><code>gettext</code> library</h3>
+<p>
+        <code>calcurse</code> supports internationalization
+        (<em>i18n</em> hereafter) through the <code>gettext</code>
+        utilities. This means <code>calcurse</code> can produce
+        multi-lingual messages if compiled with native language
+        support (i.e. <em>NLS</em>). However, <em>NLS</em> is
+        optionnal and if you do not want to have support for
+        multi-lingual messages, you can disable this feature.  This is
+        done by giving the <code>--disable-nls</code> option to
+        <code>configure</code> (see section <a
+        href="#install_process">Install process</a>). <br>
+        To check if the <code>gettext</code> utilities are
+        installed on your system, you can search for the
+        <code>libintl.h</code> header file for instance:
+        <pre>
+                locate libintl.h
+        </pre>
+        If this header file is not found, then you can obtain the
+        <code>gettext</code> sources at the following url :<br>
+        <pre>
+                 http://ftp.gnu.org/pub/gnu/gettext/
+        </pre>
+        <u>Note:</u> Even if <code>libintl.h</code> is found on your
+        system, it can be wise to specify its location during the <a
+        href="#install_process">install process</a>, by using the
+        <code>--with-libintl-prefix</code> option with
+        <code>configure</code>. Indeed, the <code>configure</code>
+        could fail to locate this library if installed in an uncommon
+        place.
+ 
+
+<a name="install_process"></a><h2>Install process</h2>
+<p>
+	First you need to gunzip and untar the source archive:
+	<pre>
+	tar zxvf calcurse-1.4.tar.gz
+	</pre>
+  	Once you meet the requirements and have extracted the archive, 
+	the install process is quite simple, and follows the standard 
+	three steps process:
+  	<OL>	
+	<li><code>./configure</code>
+  	<li><code>make</code>
+  	<li><code>make install</code> (may require root privilege)
+	</OL>
+	Use <code>./configure --help</code> to obtain a list of 
+	possible options.
+
+
+<a name="basics"></a><h1><code>calcurse</code> basics</h1>
+<a name="basics_invocation"></a><h2>Invocation</h2>
+<a name="basics_invocation_commandline"></a><h3>Command line arguments</h3>
+<p>
+        <code>calcurse</code> takes the following options from the 
+        command line:
+
+        <dl compact>
+        <dt><code>-a</code>
+	<dd>
+	Print the appointments for the current day and exit.<br>
+        <u>Note:</u> the calendar from which to read the  appointments
+        can be specified using the '-c' flag.<br>
+	<br>
+	<dt><code>-c</code>
+	<dd>
+	Specify the calendar file to use.<br>
+	The default  calendar is <code>~/.calcurse/apts</code> 
+	(see section <a href="#basics_files"><code>calcurse</code> files</a>).<br>
+	<br>
+	<dt><code>-d</code>
+	<dd>
+	Print the appointments for the given date  or  for  the
+        given  number  of upcoming days, depending on the argument
+        format. Two possible formats are supported:
+	<ul>
+	  <li>a date of the form 'mm/dd/yyyy'.
+	  <li>a number 'n'.
+	</ul>
+        In the first  case,  the  appointment  list  for  the
+        specified  date will be returned, while in the second
+        case the appointment list for the 'n'  upcoming  days
+        will be returned.<br>
+        As an example, typing <code>calcurse -d  3</code>  
+	will  display your  appointments  for  today, tomorrow, 
+	and the day after tomorrow.<br>
+        <u>Note:</u> as for the '-a' flag, the calendar  from  
+	which to  read  the appointments can be specified using 
+	the '-c' flag.<br>
+	<br>
+	<dt><code>-h</code>
+	<dd>
+        Print  a  short  help  text  describing  the  supported
+        command-line options, and exit.<br>
+	<br>
+	<dt><code>-t</code>
+	<dd>
+        Print the 'todo' list and exit.<br>
+	<br>
+	<dt><code>-v</code>
+	<dd>
+        Display <code>calcurse</code> version and exit.
+	</DL>
+
+<a name="basics_invocation_variable"></a><h3>Environment variable for i18n</h3>
+<p>
+        <code>calcurse</code> can be compiled with native language
+        support (see <a
+        href="#install_requirements_gettext"><code>gettext</code>
+        library</a>). Thus, if you wish to have messages displayed
+        into your native language, first make sure it is available by
+        looking at the <code>po/LINGUAS</code> file. 
+        This file indicates the set of available languages by showing
+        the two-letters corresponding code (for exemple, <em>fr</em>
+        stands for french).  If you do not find your language, it
+        would be greatly appreciated if you could help translating
+        <code>calcurse</code> (see the <a href="#contribute">How to
+        contribute?</a> section).<br>
+        If your language is available, run
+        <code>calcurse</code> with the following command:
+        <pre>
+                LC_ALL=fr_FR calcurse
+        </pre>
+        where <em>fr_FR</em> is the locale name in this exemple, but
+        should be replaced by the locale corresponding to the desired
+        language.
+
+<a name="basics_interface"></a><h2>User interface</h2>
+<a name="basics_interface_noninteractive"></a><h3>Non-interactive mode</h3>
+<p>
+        When called with at least one of the following arguments:<br>
+        <code>-a</code>, <code>-d</code>, <code>-t</code>, 
+        <code>-h</code>, <code>-v</code><br>
+        <code>calcurse</code> is started in non-interactive mode.
+        This means the desired information will be displayed, and 
+        after that, <code>calcurse</code> simply quits and you are 
+        driven back to the shell prompt.<br>
+        That way, one can add a line such as <code>'calcurse -ta'</code> 
+        in its init config file to display at logon the list of tasks 
+        and appointments scheduled for the current day. 
+
+
+<a name="basics_interface_interactive"></a><h3>Interactive mode</h3>
+<p>
+        When called without any argument or only with the
+        <code>-c</code> option, <code>calcurse</code> is started in
+        interactive mode. In this mode, you are shown an interface
+	containing three different panels which you can browse using 
+        the 'TAB' key, plus a status bar (see figure below).
+        <pre>
+
+ appointment panel---.                                   .---calendar panel
+                     |                                   |  
+                     v                                   v
+ +------------------------------------++----------------------------+
+ |          Appointments              ||          Calendar          |
+ |------------------------------------||----------------------------|
+ |                      April 6, 2006 ||         April 2006         |
+ |                                    ||Mon Tue Wed Thu Fri Sat Sun |
+ |                                    ||                      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 |
+ |                                    ||                            |
+ |                                    |+----------------------------+
+ |                                    |+----------------------------+
+ |                                    ||            ToDo            | todo
+ |                                    ||----------------------------| panel
+ |                                    ||                            |   |
+ |                                    ||                            |   |
+ |                                    ||                            |<--.
+ |                                    ||                            |
+ |                                    ||                            |
+ |                                    ||                            |
+ +------------------------------------++----------------------------+
+ | ? Help     R Redraw    H/L -/+1 Day      G GoTo       C Config   | 
+ | Q Quit     S Save      J/K -/+1 Week   Tab Chg View              |<-. 
+ +------------------------------------------------------------------+  |
+                                                                       |
+                                                                 status bar
+
+        </pre>
+        The first panel represents a calendar which allows to highligth 
+        a particular day, the second one contains the list of the events 
+        and appointments on that day, and the last one contains a list 
+        of tasks to do but which are not assigned to any specific day.  
+	In the bottom line of the screen there is a status bar, which 
+	indicates the possible actions and the corresponding keystrokes.
+        
+
+<a name="basics_files"></a><h2><code>calcurse</code> files</h2>
+<p>
+        The following structure is created in your  <code>$HOME</code>  
+	directory the first time <code>calcurse</code> is run :
+	<pre>
+        $HOME/.calcurse/
+                  |___conf
+                  |___apts
+                  |___todo
+        </pre>
+        The <em>conf</em> file contains the user configuration.<br>
+        The <em>apts</em> file contains  all  of the events and 
+        user's appointments.<br>
+        The <em>todo</em> file contains the todo list.
+
+
+<a name="basics_help"></a><h2>Online help</h2>
+<p>
+        At any time, the built-in help  system  can  be  invoked  by
+        pressing the '?'  key. Once viewing the help screens,
+        informations on a specific command can be  accessed  by  pressing
+        the keystroke corresponding to that command.
+
+<a name="options"></a><h1>Options</h1>
+<p>
+	All of the <code>calcurse</code> parameters are configurable from the 
+	Configuration menu available when pressing 'C'. You are then 
+	driven to a submenu with three possible choices : pressing 'C' 
+	again will lead you to the Color scheme configuration, 
+	pressing 'L' allows you to choose the layout of the main 
+	<code>calcurse</code> screen (in other words, where to put the three 
+	different panels on screen), and last you can choose between
+	different general options by pressing 'G'.
+
+<a name="options_general"></a><h2>General options</h2>
+<p>
+        These options control <code>calcurse</code> general behavior,
+        as described below:
+        <ul>
+        <li><code>auto_save</code>  (default: <em>yes</em>)<br>
+	This option allows to automatically save the user's data 
+	(if set to <em>yes</em>) when quitting.<br>
+	<em>warning:</em> No data will be automatically saved if 
+	<code>auto_save</code> is set to <em>no</em>. This means
+	the user must press 'S' (for saving) in order to retrieve its
+	modifications.<br>
+	<br>
+	<li><code>confirm_quit</code> (default: <em>yes</em>)<br>
+	If set to <em>yes</em>, confirmation is required before 
+	quitting, otherwise pressing 'Q' will cause <code>calcurse</code> 
+	to quit without prompting for user confirmation.<br>
+	<br>
+	<li><code>confirm_delete</code> (default: <em>yes</em>)<br>
+	If this option is set to <em>yes</em>, pressing 'D' for 
+	deleting an item (either a <em>todo</em>, <em>appointment</em>, 
+	or <em>event</em>), will lead to a prompt asking for user 
+	confirmation before removing the selected item from the list. 
+	Otherwise, no confirmation will be needed before deleting the 
+	item.<br>
+	<br>
+	<li><code>skip_system_dialogs</code> (default: <em>no</em>)<br>
+	Setting this option to <em>yes</em> will result in skipping the 
+	system dialogs related to the saving and loading of data. 
+	This can be useful to speed up the input/output processes.<br>
+	<br>
+	<li><code>skip_progress_bar</code> (default: <em>no</em>)<br>
+	If set to <em>yes</em>, this will cause the disappearing of the 
+	progress bar which is usually shown when saving data to file. 
+	If set to <em>no</em>, this bar will be displayed, together with 
+	the name of the file being saved 
+	(see section <a href="#basics_files"><code>calcurse</code> files</a>).<br>
+        <br>
+        <li><code>week_begins_on_monday</code> (default: <em>yes</em>)<br>
+        One can choose between Monday and Sunday as the first day of the
+        week. If the option <em>week_begins_on_monday</em> is set to
+        <em>yes</em>, Monday will be first in the calendar view. Else if
+        the option is set to <em>no</em>, then Sunday will be the first
+        day of the week.
+	</ul>
+
+
+<a name="options_colors"></a><h2>Color themes</h2>
+<p>
+        <code>calcurse</code> color theme is configurable and is to be
+        chosen by typing the number corresponding to the desired
+        theme.  This color will then be applied to the panel borders,
+        to the titles, to the keystrokes, and to general informations
+        displayed inside status bar. A black and white theme is also
+        available, in order to support non-color terminals.<br>
+        <u>Notes:</u> 
+        <ul> 
+        <li> Depending on your terminal type and on the value of the
+        <code>$TERM</code> environnement variable, color could or
+        could not be supported. An error message will appear if you
+        try to change colors whereas your terminal does not support
+        this feature.<br>
+        <br>
+        <li> If you do know your terminal supports colors but could
+        not get <code>calcurse</code> to display them, try to set your
+        <code>$TERM</code> variable to another value (such as
+        <em>xterm-xfree86</em> for instance).
+        </ul>
+
+      
+<a name="options_layout"></a><h2>Layout configuration</h2>
+<p>
+        The layout corresponds to the position of the panels inside
+        <code>calcurse</code> screen. The default layout makes the 
+        calendar panel to be displayed on the top-right corner of the
+        terminal, the todo panel on the bottom-right corner, while the
+        appointment panel is displayed on the left hand-side of the
+        screen (see the figure in section 
+        <a href="#basics_interface_interactive">Interactive mode</a>
+        for an exemple of the default layout).<br>
+        By choosing another layout in the configuration screen, user
+        can customize <code>calcurse</code> appearence to best suit 
+        his needs by placing the different panels where needed.
+
+
+<a name="known_bugs"></a><h1>Known bugs</h1>
+<p>
+        Incorrect highlighting of items appear when using calcurse 
+        black and white theme together with a <code>$TERM</code> 
+        variable set to <em>xterm-color</em>.
+        To fix this bug, and as advised by Thomas E. Dickey 
+        (<code>xterm</code> maintainer), <em>xterm-xfree86</em> 
+        should be used instead of <em>xterm-color</em> to set 
+        the <code>$TERM</code> variable:<br>
+        <blockquote>
+        "The xterm-color value for $TERM is a bad choice for XFree86 xterm
+        because it is commonly used for a terminfo entry which happens to
+        not support bce. Use the xterm-xfree86 entry which is distributed 
+        with XFree86 xterm (or the similar one distributed with ncurses)."
+        </blockquote>
+
+<a name="bugs"></a><h1>Reporting bugs and feedback</h1>
+<p>
+        Please send bug reports and feedback to:
+        <pre>
+        calcurse@culot.org
+        </pre>
+        or to the author:
+        <pre>
+        frederic@culot.org
+        </pre>
+
+<a name="contribute"></a><h1>How to contribute?</h1>
+<p>
+        If you would like to contribute to the project,
+        you can first send your feedback on what you like or dislike,
+        and if there are features you miss in <code>calcurse</code>.
+        For now on, possible contributions concern the translation
+        of <code>calcurse</code> messages and documentation. <br>
+        <br>
+        <u>Note:</u> Any help in getting <code>calcurse</code>
+        internationalized would be very welcomed, but before
+        contributing, send a mail to
+        <code>calcurse-i18n@culot.org</code> to know if someone
+        already started the translation process into your language.
+
+<a name="contribute_documentation"></a><h2>Translating documentation</h2>
+<p>
+        The <em>doc/</em> directory of the source package already
+        contains translated version of <code>calcurse</code>
+        manual. However, if the manual is not yet available into your 
+        native language, it would be appreciated if you could help
+        translating it.<br>
+        To do so, just copy one of the existing manual
+        file to <code>manual_XX.html</code>, where <em>XX</em>
+        identifies your language. Then translate this newly created
+        file and send it to the author (see <a href="#bugs">Reporting
+        bugs and feeback</a>), so that it can be included in the
+        next <code>calcurse</code> release.
+
+<a name="contribute_i18n"></a><h2><code>calcurse</code> i18n</h2>
+<p>
+        As already mentioned, <code>gettext</code> utilities are used
+        by <code>calcurse</code> to produce multi-lingual
+        messages. This section provides informations about how to
+        translate those messages into your native language. However,
+        this howto is deliberately incomplete, focusing on working
+        with <code>gettext</code> for <code>calcurse</code>
+        specifically.  For more comprehensive informations or to grasp
+        the Big Picture of Native Language Support, you should refer
+        to the <code>GNU gettext</code> manual at:
+        <pre>
+                http://www.gnu.org/software/gettext/manual/
+        </pre>
+        Basically, three different people get involved in the
+        translation chain: coders, language coordinator, and
+        translators. After a quick overview of how things work, the
+        translator tasks will be described hereafter.
+
+
+<a name="contribute_i18n_overview"></a><h3>Overview</h3>
+<p>
+        To be able to display texts in the native language of the
+        user, two steps are required: <em>internationalization</em>
+        (i18n) and <em>localization</em> (l10n).  i18n is about making
+        <code>calcurse</code> support multiple languages. It is
+        performed by coders, who will mark translatable texts and
+        provide a way to display them translated at runtime.  l10n is
+        about making the i18n'ed <code>calcurse</code> adapt to the
+        specific language of the user, ie translating the strings
+        previously marked by the developers, and setting the
+        environment correctly for <code>calcurse</code> to use the
+        result of this translation.<br> <br>
+
+        So, translatable strings are first marked by the coders within
+        the <code>C</code> source files, then gathered in a template
+        file (<em>calcurse.pot</em> - the <em>pot</em> extension
+        meaning <em>portable object template</em>). The content of
+        this template file is then merged with the translation files
+        for each language (<em>fr.po</em> for french, for instance -
+        with <em>po</em> standing for <em>portable object</em>, ie
+        meant to be read and edited by humans). A given translation
+        team will take this file, translate its strings, and send it
+        back to the developers. At compilation time, a binary version
+        of this file (for efficiency reasons) will be produced
+        (<em>fr.mo</em> - <em>mo</em> stands for <em>machine
+        object</em>, ie meant to be read by programs), and then
+        installed.  Then <code>calcurse</code> will use this file at
+        runtime, translating the strings according to the locale
+        settings of the user.
+
+
+<a name="contribute_i18n_translator"></a><h3>Translator tasks</h3>
+<p>
+        Suppose someone wants to initiate the translation of a new
+        language. Here are the steps to follow:
+        <ul>
+        <li>First, find out what the locale name is. For instance, for
+        french, it is 'fr_FR', or simply 'fr'. This is the value the
+        user will have to put in his <code>LC_ALL</code> environment
+        variable for software to be translated (see <a
+        href="#basics_invocation_variable">Environment variable for
+        i18n</a>).<br>
+        <br>
+        <li>Then, go into the <em>po/</em> directory, and create a new po-file
+        from the template file using the following command: 
+        <pre>
+                'msginit -i calcurse.pot -o fr.po -l fr --no-translator'
+        </pre>
+        If you do not have <code>msginit</code> installed on your
+        system, simply copy the <em>calcurse.pot</em> file to
+        <em>fr.po</em> and edit the header by hand.<br>
+        Now, having this <em>fr.po</em> file, the translator is ready
+        to begin.
+        </ul>
+
+
+<a name="contribute_i18n_po-files"></a><h3>po-files</h3>
+<p>
+        The format of the po-files is quite simple. Indeed, po-files
+        are made of four things:
+        <ol>
+        <li><em>location lines:</em> tells you where the strings can
+        be seen (name of file and line number), in case you need to
+        see a bit of context.
+        <li><em>msgid lines:</em> the strings to translate.
+        <li><em>msgstr lines:</em> the translated strings.
+        <li><em>lines prefixed with '#':</em> comments (some with a
+        special meaning, as we will see below).
+        </ol>
+        Basically, all you have to do is fill the <em>msgstr</em>
+        lines with the translation of the above <em>msgid</em>
+        line.
+        <p>
+        <u>A few notes:</u>
+        <ul>
+        <li><em>Fuzzy strings</em><br>
+        You will meet strings marked with a <code>"#, fuzzy"</code>
+        comment. <code>calcurse</code> won't use the translations of
+        such strings until you do something about them.  A string
+        being fuzzy means either that the string has already been
+        translated but has since been changed in the sources of the
+        program, or that this is a new string for which
+        <code>gettext</code> made a 'wild guess' for the translation,
+        based on other strings in the file.  It means you have to
+        review the translation. Sometimes, the original string has
+        changed just because a typo has been fixed. In this case, you
+        won't have to change anything. But sometimes, the translation
+        will no longer be accurate and needs to be changed.  Once you
+        are done and happy with the translation, just remove the
+        <code>"#, fuzzy"</code> line, and the translation will be used
+        again in <code>calcurse</code>.<br>
+        <br>
+        <li><em>c-format strings and special sequences</em><br>
+        Some strings have the following comment: <code>"#,
+        c-format"</code>.  This tells that parts of the string to
+        translate have a special meaning for the program, and that you
+        should leave them alone.  For instance, %-sequences, like
+        <code>"%s"</code>. These means that <code>calcurse</code> will
+        replace them with another string. So it is important it
+        remains.  There are also \-sequences, like <code>\n</code> or
+        <code>\t</code>. Leave them, too. The former represents an end
+        of line, the latter a tabulation.<br>
+        <br>
+        <li><em>Translations can be wrapped</em><br>
+        If lines are too long, you can just break them like this:
+        <pre>
+                msgid ""
+                "some very long line"
+                "another line"
+        </pre>
+        <li><em>po-file header</em><br>
+        At the very beginning of the po-file, the first string form a
+        header, where various kind of information has to be filled
+        in. Most important one is the charset. It should resemble
+        <pre>
+                "Content-Type: text/plain; charset=utf-8\n"
+        </pre>
+        You should also fill in the Last-Translator field, so that
+        potential contributors can contact you if they want to join
+        you in the translation team, or have remarks/typo fixes to
+        give about the translations. You can either just give your
+        name/nick, or add an email address, for exemple:
+        <pre>
+                "Last-Translator: Frederic Culot <frederic@culot.org>\n"
+        </pre>
+        <li><em>Comments</em><br>
+        Adding comments (lines begining with the '#' character) can be
+        a good way to point out problems or translation difficulties
+        to proofreaders or other members of your team.<br>
+        <br>
+        <li><em>Strings size</em><br>
+        <code>calcurse</code> is a curses/console program, thus it can
+        be heavily dependant on the terminal size (number of
+        columns). You should think about this when translating. Often,
+        a string must fit into a single line (standard length is 80
+        characters). Don't translate blindly, try to look where your
+        string will be displayed to adapt your translation.<br>
+        <br>
+        <li><em>A few useful tools</em><br>
+        The po-file format is very simple, and the file can be edited
+        with a standard text editor.  But if you prefer, there are few
+        specialized tools you may find convenient for translating:
+           <ul>
+           <li><code>poEdit</code> (<a 
+           href="http://www.poedit.org/" target="_blank">
+           http://www.poedit.org/</a>)
+           <li><code>KBabel</code> (<a
+           href="http://i18n.kde.org/tools/kbabel/" target="_blank">
+           http://i18n.kde.org/tools/kbabel/</a>)
+           <li><code>GTranslator</code> (<a
+           href="http://gtranslator.sourceforge.net/" target="_blank">
+           http://gtranslator.sourceforge.net/</a>)
+           <li><code>Emacs</code> po mode
+           <li><code>Vim</code> po mode
+           </ul>
+        <br>
+        <li><em>And finally</em><br>
+        I hope you'll have fun contributing to a more
+        internationalized world. :) If you have any more questions,
+        don't hesitate to contact me at <em>frederic@culot.org</em>.
+        </ul>
+
+
+<a name="links"></a><h1>Links</h1>
+<p>
+	This section contains links and references that may be of 
+	interest to you.
+
+
+<a name="links_homepage"></a><h2><code>calcurse</code> homepage</h2>
+<p>
+	The <code>calcurse</code> homepage can be found at 
+	<pre>
+	http://culot.org/calcurse
+	</pre>
+
+<a name="links_list"></a><h2><code>calcurse</code> announce list</h2>
+<p>
+	If you are interested in the project and want to be warned 
+	when a new release comes out, you can subscribe to the 
+	<code>calcurse</code> announce list. In doing so, you will 
+        receive an email as soon as a new feature appears in 
+        <code>calcurse</code>.<br>
+	To subscribe to this list, send a message to 
+	<code>calcurse-announce@culot.org</code> with "subscribe" 
+	in the subject field. 
+
+
+<a name="thanks"></a><h1>Thanks</a></h1>
+<p>
+	Its time now to thank other people without whom this program 
+	would not exist! So here is a list of contributing persons I 
+	would like to thank :
+	<ul>
+	<li>Alex for its patches, help and advices with <code>C</code> programming 
+	<li>Gwen for testing and general discussions about how to 
+	improve <code>calcurse</code>
+	<li>Kevin and Ryan for packaging <code>calcurse</code> for Debian
+	<li>Steffen for packaging <code>calcurse</code> for Archlinux
+	<li>Alexandre for packaging <code>calcurse</code> for Mac OsX
+	<li>Joel for its calendar script which inspired <code>calcurse</code> 
+	calendar view 
+        <li>Michael Schulz for the german translation of
+	<code>calcurse</code> manual
+	<li>people who write softwares I like and which inspired me, 
+	especially :
+		<ul>
+		<li><code>vim</code> for the displacement keys
+		<li><code>orpheus</code> and <code>abook</code> for documentation
+		<li><code>pine</code> and <code>aptitude</code> 
+	        for the text user interface
+		</ul>
+	</ul>
+        <br>
+        And last, many many thanks to all of the <code>calcurse</code>
+        users who sent me their feedback.
+
+<hr>
+<small><em>
+Copyright (c) 2004-2006 Fr&eacute;d&eacute;ric Culot<br>
+Calcurse version 1.4 - Last change: May 07, 2006
+<em></small>
+
+
+</body>
+</html>
-- 
cgit v1.2.3-70-g09d2