Bonjour,

Je suis passé à l'autre module de traduction Locale::gettext, et voici un premier code qui marche (fichier gt.pl sur Debian/Squeeze)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
#!/usr/bin/perl
  2 use Locale::gettext;
  3 
  7 textdomain("gt");
  8 bindtextdomain("gt",".");
  9 
 10 print gettext("Welcome"), "\n";
si on lui indique bien un fichier de traduction, qui peut être généré comme ceci :
On crée un fichier texte gt.po
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 cat gt.po
msgid ""
msgstr ""
"Project-Id-Version: \n"
"POT-Creation-Date: \n"
"PO-Revision-Date: \n"
"Last-Translator: \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=iso-8859-1\n"
"Content-Transfer-Encoding: 8bit\n"
 
msgid "Welcome"
msgstr "Bienvenue"
(il y a moyen de le générer mais j'ai des erreurs alors.)
Et qu'on le convertit en .mo en le mettant dans la bonne arborescence (./fr/LC_MESSAGES)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
mkdir -p fr/LC_MESSAGES
msgfmt gt.po -o fr/LC_MESSAGES/gt.mo
Et là.... tradarardaratata
Mon problème est que je ne veux pas faire que de la localisation c'est à dire avoir le programme dans la langue de l'OS, mais dans la langue au choix de l'utilisateur. Pouvoir faire tourner le programme en néerlandais sur un OS français ou autre combinaison. L'idée est de rajouter deux lignes (a priori nécessaire même pour ce que j'ai fait vu la doc mais bon...) et d'y mettre la langue désirée
Fonctionne en francais
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
use POSIX; 
setlocale(LC_MESSAGES,"");
Devrait fonctionner en néerlandais
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
use POSIX; 
setlocale(LC_MESSAGES,"nl");
J'ai créé un autre fichier .po, et un .mo que j'ai mis dans nl/LC_MESSAGES
Et là, ça marche pas. Visiblement, il ne reconnaît pas "nl" ni plein d'autre que j'ai essayé.
Si j'imprime le retour de setlocale, j'ai bien
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 ...
print setlocale(LC_MESSAGES,""),"\n";
fr_BE.utf8
Si je mets
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 ...
print setlocale(LC_MESSAGES,"nl"),"\n";
Je n'ai aucun retour, de la doc, il renvoie undef, car nl n'est pas reconnu. Si je mets "fr_BE.utf8", il me renvoie la même valeur. Si c'est nl_NL.utf8, rien.

je remarque que
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
t# locale -a
C
fr_BE.utf8
POSIX
et ossi
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
LANG=nl ./gt.pl
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
	LANGUAGE = "fr_BE:fr",
	LC_ALL = (unset),
	LANG = "nl"
    are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
 
Welcome
quekques sources...
man perlocale
http://cpansearch.perl.org/src/PVAND...xt-1.01/README
http://search.cpan.org/dist/gettext/gettext.pm