http://www.perlmonks.org?node_id=839454
psini has asked for the wisdom of the Perl Monks concerning the following question:

Hi Monks,

I've having trouble using Locale::gettext module. My sample code is:

use strict; use warnings; use Locale::gettext; use POSIX; setlocale(LC_MESSAGES, "it_IT"); my $d = Locale::gettext->domain('license'); $d->dir('/home/sini/'); print $d->get("Hello world")."\n";

I created the following it.po file:

msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "PO-Revision-Date: 2010-05-11 15:37+0200\n" "Last-Translator: Paolo Sinigaglia <sini@magdala.it>\n" "Language-Team: Italian\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ASCII\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" msgid "Hello world" msgstr "Ciao!"

compiled it to license.mo and put into /home/sini/it/IT, but when I run the code it prints "Hello world".

Looks like I've put the file in the wrong dir, but I tried everything I could think of to no avail...

Thanks in advance for any help

Rule One: "Do not act incautiously when confronting a little bald wrinkly smiling man."

Replies are listed 'Best First'.
Re: Locale::gettext doesn't find dictionary files
by almut (Canon) on May 11, 2010 at 15:14 UTC
    ...and put into /home/sini/it/IT

    Have you tried to put the .mo file in /home/sini/it_IT/LC_MESSAGES/ ?

    Works for me (when I msgfmt -o ~/it_IT/LC_MESSAGES/license.mo license.po — and set $d->dir('/home/almut'), of course), i.e. it prints "Ciao!".

      Thank you almut, it works.

      Rule One: "Do not act incautiously when confronting a little bald wrinkly smiling man."