Hello,
I just wrote the following example of how to do localization of a
Gtk2-perl program and thought it might be useful for others. Perhaps
we should put it somewhere in the wiki:
#!/usr/bin/perl
######################################################################
# This is a complete example that shows how to support multiple
# languages in a Gtk2-Perl program through the
# Locale::Maketext::Lexicon class. The current example uses
# translation files in the same directory. For example of how to
# put the translation in other locations, see the
# Locale::Maketext::Lexicon documentation.
#
# All translations are in .po files and are encoded in UTF-8.
#
# Dov Grobgeld
# 2005-03-08
#
# This example is in the Public Domain
######################################################################
use Gtk2 '-init';
use base 'Locale::Maketext'; # inherits get_handle();
use Locale::Maketext::Lexicon {
en => ['Auto'],
'*' => ['Gettext' => '*.po'],
};
my $lh = __PACKAGE__->get_handle; # magically gets the current locale
# Lookup and convert to UTF-8
sub _ {
my $m = $lh->get_handle()->maketext(@_);
utf8::decode($m); # Turn on UTF8-flag for string
$m;
};
######################################################################
# The rest is normal gtk, but all strings are looked up with the
# _() function above.
######################################################################
my $window = Gtk2::Window->new("toplevel");
my $button = Gtk2::Button->new(_("Hello, world!"));
$button->signal_connect(clicked => sub {
Gtk2::MessageDialog->new($window,
'modal',
'error',
'ok',
_("Bye cruel world!"))
->run;
Gtk2->main_quit;
});
$window->add($button);
$window->set_border_width(10);
$window->show_all;
Gtk2->main;
I have attached three localization files as examples. Please excuse
my bad French. ;-)
Regards,
Dov
Attachment:
sv_SE.po
Description: Binary data
Attachment:
fr_FR.po
Description: Binary data
Attachment:
he_IL.po
Description: Binary data