Bonjour,

J'essaie de comprendre comme utiliser gettext avec ce code là dans un fichier "main.cpp" :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
#include <string>
#include <libintl.h>
#include <locale.h>
 
void main()
{
#if 1
	char const * const catalog = "fr_FR";
	char const * const locale = "french_France.1252";
#else
	char const * const catalog = "es_ES";
	char const * const locale = "Spanish_Spain.1252";
#endif
 
	char const * const a = setlocale(LC_ALL, locale);
	char const * const b = textdomain(catalog);	
	char const * const c = bindtextdomain(catalog, "i18n");
	char const * const d = bind_textdomain_codeset(catalog, "UTF-8");
	std::string const e = gettext("hello");
	std::cout << e << std::endl;
	std::cin.get();
}
Au même niveau que mon fichier "main.cpp", j'ai les fichiers suivants
  • i18n\es_ES\LC_MESSAGES\es_ES.po
  • i18n\es_ES\LC_MESSAGES\es_ES.mo
  • i18n\fr_FR\LC_MESSAGES\fr_FR.po
  • i18n\fr_FR\LC_MESSAGES\fr_FR.mo


En espagnol, "Hello" est traduit par "Hola".
En français, "Hello" est traduit par "Bonjour".

Mon système d'exploitation est Windows XP en version française.

Évidement, en français cela marche mais pas quand j'essaye en espagnol. En espagnol, la fonction "setlocale" me renvoie bien "Spanish_Spain.1252". Mais le texte "hello" reste "hello".

Comment dois-je modifier mon code pour que cela fonctionne ? Ca me rend un peu fou cette histoire .

Je suppose que l'on doit pouvoir changer la locale de l'application par n'importe quelle locale, non ?

Merci

Flo.