Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 16/12/2007, à 10:56

Bud78

[Résolu] C++ et GetText Tutorial

Bonjour

Auriez vous une adresse pour un tuto de dev avec gettext en C++, ou lien vers une sources simple type "Hello wordl", pour comprendre le fonctionnement ?
J'ai trouvé des trucs mais quasi tout en php, j'aimerais voir quelque chose pour le C ou C++.

Merci d'avance


«Tout ce qui a son prix est de peu de valeur.»
[ Friedrich Nietzsche ] - Extrait de Ainsi parlait Zarathoustra

Hors ligne

#2 Le 16/12/2007, à 11:28

lut!n

Re : [Résolu] C++ et GetText Tutorial

Salut,
regarde du cote de http://www.gnu.org/software/gettext/man … ext.html#C, peut-etre que les exemples listés pourront t'aider
a+

Hors ligne

#3 Le 16/12/2007, à 20:18

Bud78

Re : [Résolu] C++ et GetText Tutorial

J'ai fini par trouver un exemple sur un "hello world !", si jamais ça intéresse quelqu'un qui passerait par là  voici le lien :
http://www.haypocalc.com/wiki/Gettext


«Tout ce qui a son prix est de peu de valeur.»
[ Friedrich Nietzsche ] - Extrait de Ainsi parlait Zarathoustra

Hors ligne

#4 Le 17/08/2008, à 22:49

zedtux

Re : [Résolu] C++ et GetText Tutorial

Bud78 a écrit :

J'ai fini par trouver un exemple sur un "hello world !", si jamais ça intéresse quelqu'un qui passerait par là  voici le lien :
http://www.haypocalc.com/wiki/Gettext

Grand merci à toi !

Je vais pouvoir implanter GetText dans TuXtremSplit wink

Edit: Le lien ne marche plus ?


RECOLLER VOS FICHIERS XTM AVEC TUXTREMSPLIT !!
Adhérant April numéro 4985 [Rejoindre l'April moi aussi !].

Hors ligne

#5 Le 18/08/2008, à 11:58

melyo

Re : [Résolu] C++ et GetText Tutorial

Il a fait un couper/coller de l'exemple apparement...


"L'évasion n'est jamais qu'une construction de l'esprit" - Léo Ferré

Hors ligne

#6 Le 18/08/2008, à 14:59

zedtux

Re : [Résolu] C++ et GetText Tutorial

Quelqu'un peut poster un exemple de hello world ?
( Sinon j'ai trouvé une tuto )


RECOLLER VOS FICHIERS XTM AVEC TUXTREMSPLIT !!
Adhérant April numéro 4985 [Rejoindre l'April moi aussi !].

Hors ligne

#7 Le 20/08/2008, à 23:00

zedtux

Re : [Résolu] C++ et GetText Tutorial

Si quelqu'un est intéresse, j'ai trouvé un tutorial qui est marche parfaitement !

A tutorial on Native Language Support using GNU gettext
Voici le lien : http://oriya.sarovar.org/docs/gettext_single.html

Edit: Passé en résolu wink


RECOLLER VOS FICHIERS XTM AVEC TUXTREMSPLIT !!
Adhérant April numéro 4985 [Rejoindre l'April moi aussi !].

Hors ligne

#8 Le 20/08/2008, à 23:29

zedtux

Re : [Résolu] C++ et GetText Tutorial

Enffet je me dis qu'il est possible aussi que ce lien meurt, alors je vais faire un poste rapide.

Mais pour bien comprendre tout ce qui se passe JE VOUS RECOMMANDE VIVEMENT DE LIRE LA DOC DE MON LIEN !!

Pour commencer, il faut inclure les dépendances pour l'internationalisation ( avoir la paquet gettext installé donc.):

//~ Internationalization Dependances
#include <libintl.h>
#include <locale.h>

//~ For lazy developers only ;)
#define _(STRING)    		gettext(STRING)

( La dernière ligne permet d'alléger le code. )

Ces inclusions sont donc à faire dans votre fichier main.cpp... Enfin celui qui contient votre int main( int argc, char * argv[] ).

Par la suite, il faut instancier GetText :

	//~
	//~ Internationalization Initialization
	//~
	
	//~ i18n: initializes the entire current locale of the program as per environment variables set by the user
	setlocale( LC_ALL, "" );
	
	//~ i18n: Indicate the path of the i18n catalog file
	bindtextdomain( "helloworld", "/usr/share/locale" );
	
	//~ i18n: sets the message domain
	textdomain( "helloworld" );

Ces lignes vont appeler le catalogue de traduction dans /usr/share/locale, et appeler la section helloworld de ce catalogue.

Maintenant, il ne reste plus qu'a mettre vos messages !
Moi par exemple, j'ai codé mon soft en Anglais ( je ne pensais pas à gettext au début. ). Mais je vous conseil donc d'utiliser votre langue maternel du coup.

Donc par exemple, en C++, on va mettre  :

cout << gettext( "Little GetText test!" ) << endl << endl;

En C :

printf( gettext( "Little GetText test!\n" ) );

A faire donc dans tout le code.



Maintenant, imagions que vous avez tout fais, il reste la dernière étape: Créer le catalogue de traduction !

Pour ce faire, Gettext a installé xgettext. Ce petit programme parcourt les fichiers que vous lui indiqué à la recherche de vos lignes de texte pour les inclure dans le catalogue tout seule comme un grand !
( Ouf ! Moi qui suis feignant... j'aime cet outil ! )

Donc, pour créer le catalogue pour tout votre projet :

xgettext -d cat_helloworld -s -o helloworld.pot ./*.cpp

- cat_helloworld est la référence. Si par exemple vous voulez créer plusieurs sections dans le catalogue, pour chaque fichiers, il faut préciser ici le nom de la catégorie.
- helloworld.pot correspond au fichier de catalogue non compilé.
- -s range dans l'ordre alphabétique les traductions...
- ./*.cpp permet de parcourir tout les fichiers .cpp de votre projet à la recherche de chaînes gettext.

Ensuite, il faut préparer le fichier avec la commande :

msginit -l fr -o french.po -i helloworld.pot

- -l fr précise que le catalogue est français.
- -o french.po indique le nom du fichier de sortie
- -i tuXtremSplit.pot indique le fichier de catalogue à utiliser.

Cette commande vous demandera quel adresse email les traducteurs peuvent utiliser pour vous contacter.

Maintenant il ne reste plus qu'a modifier le fichier pour ajouter les traductions.
( Dans mon cas, de Anglais à Français. )

Une fois terminé, et sauvegardé, il ne reste plus qu'à compiler le catalogue :

msgfmt -c -v -o helloworld.mo french.po

- -c vérifie le format de fichier .po
- -v passe le programme en mode verbose pour voire ce qui se passe.
- -o helloworld.mo indique le nom du fichier de sortie

Et voila !
Maintenant on copie le fichier au bon endroit :
sudo cp helloworld.mo /usr/share/locale/fr/LC_MESSAGES

Remplacer le fr dans le chemin par la langue correspondant.


Maintenant, si vous lancer le programme, vous devez avoir les chaînes traduite ! smile


RECOLLER VOS FICHIERS XTM AVEC TUXTREMSPLIT !!
Adhérant April numéro 4985 [Rejoindre l'April moi aussi !].

Hors ligne

#9 Le 26/08/2009, à 19:54

kevlar

Re : [Résolu] C++ et GetText Tutorial

merci pour ce tuto !

Hors ligne