[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [linux-team] Gnome 0.99.8



Kaixo !

On Fri, Feb 19, 1999 at 06:40:30PM +0100, Bruno Mairlot wrote:

> > Gnumeric n'a pas des fonctions graphiques, ni d'impression. Ce n'est
> > pas un oubli, c'est voulu. Comme ça on peut choisir soi même le moteur
> > graphique et le moteur d'impression, pour peu qu'ils aient une interface
> > CORBA, il n'y a pas a multiplier les redondances on peut reutiliser
> > le code.

> Moi je veux bien, mais comment je fais alors pour imprimer une feuille de calcul
> ? Ou tracer un graph ?

Gnome est en cours d'elaboration :)
Pour l'impression ce sera très vraissemblablement le canvas qui sera
l'element clé, il apporte quelque chose qui fait la force de Microsoft
Windows: la possibilité d'imprimer tel quel ce qui apparaît à l'écran.
(car je ne sais pas vous, mais moi ça me frustre pas mal de pouvoir
utiliser plein de fontes sous X mais d'être limité à Roman/Helvetica
en latin pour l'impression (imprimer en autre chose que latin1 demande
de grosses pirouettes, ou alors utiliser LaTeX; mais pour simplement imprimer
une page html par exemple c'est très embêtant)

> > N'oublie pas de penser ton appli dès le depart dans une optique internationale
> > en utilisant gettext pour tradurie les textes, eventuellement strcoll()
> > et strftime() etc.
> 
> Tu pourrais donner plus de détails ?

Prevoir que l'interface utilisateur puisse être traduite; et eventuellement
si ça a du sens pour l'application, prevoir la possibilité de faire les
tris, representer les dates et les nombres, suivant la locale de
l'utilisateur.

Avec Gnome c'est très simple:

#include <config.h> /* pour avoir ENABLE_NLS defini en fait */
#include <gnome.h> 

....

main()
{

    bindtextdomain(PACKAGE, GNOMELOCALEDIR);
    textdomain(PACKAGE);
 
...

et mettre _( ) autour des chaînes de texte à traduire; ou si une fonction
n'est pas possible (dans une declaration d'array par exemple) utiliser
N_() et puis _(), ex:

char *toto[] = { N_("aaaa"), N_("bbbbb") }

....

#ifdef ENABLE_NLS
    toto[0]=_(toto[0]);
    toto[1]=_(toto[1]);
#endif

    machinbidule(toto);


Sinon, tu dois toi-même definir les macros _() et N_(), inclure les
bons trucs, etc.
par exemple mettre dans un *.h maison :

#ifdef ENABLE_NLS
#    include <libintl.h>
#    define _(String) gettext (String)
#    ifdef gettext_noop
#        define N_(String) gettext_noop (String)
#    else
#        define N_(String) (String)
#    endif
#else
/* Stubs that do something close enough.  */
#    define textdomain(String) (String)
#    define gettext(String) (String)
#    define dgettext(Domain,Message) (Message)
#    define dcgettext(Domain,Message,Type) (Message)
#    define bindtextdomain(Domain,Directory) (Domain)
#    define _(String) (String)
#    define N_(String) (String)
#endif

et mettre un setlocale(LC_ALL,NULL); au début du main() aussi peut-être.

Avec ça ton programme est prêt à être traduit, sans que le traducteur aie
à savoir programmer.
Il faut encore que tu crées le repertoire po/ et intl/; ça il y a un
script qui le fait, c'est dans la page info de GNU gettext.

Pour les tris alphabetiques, utiliser strcoll() à la palce de strcmp(),
la syntaxe est la même, mais strcoll classe âne avant zèbre pour une
locale française, et après zèbre pour la locale 'C'. strcmp() est comme
un strcoll() tjs en locales 'C' en quelque sorte.

Pour les dates c'est strftime(), qui permets de donner le format.
le mieux est amha d'utiliser _() autour du format (les %a %b etc ont le
même signification que pour la commande date), de façon a pouvoir
tradurie le format aussi.
 
Pour le format numérique tu devrais utiliser '\'' avec la famille printf.
Ex: printf("%'f\n",0.5);
(mais la plupart des compilateurs, y compris les versions de gcc courantes,
ne le comprends pas; autrement dit pour le moment ce n'est pas faisable)

Tu peux jeter un coup d'oeil sur des petits programmes Gnome; dans
le paquetage gnome-games par exemple il y a plusieurs petits programmes
qui font un seul fichier C.

-- 
À bientôt,
Pablo Saratxaga

http://www.ping.be/~pin19314/		PGP Key available, key ID: 0x8F0E4975
---------
This message was send by Majordomo 1.94.3. Please repport problems to
manu@rtfm.be. If you want to be deleted from the list, send a mail to
majordomo@rtfm.be with "unsubscribe linux-team" in the body.