Bug 11848: Make Koha::I18N easier to use

Instead of writing

  use CGI;
  use Koha::I18N;
  my $cgi = new CGI;
  my $lh = Koha::I18N->get_handle_from_context($cgi, 'intranet');
  print $lh->maketext('my translatable text');

you can now write

  use Koha::I18N;
  print gettext('my translatable text');

Signed-off-by: Bernardo Gonzalez Kriegel <bgkriegel@gmail.com>
Signed-off-by: Katrin Fischer <Katrin.Fischer.83@web.de>
Signed-off-by: Galen Charlton <gmc@esilibrary.com>
This commit is contained in:
Julian Maurice 2014-02-26 16:45:59 +01:00 committed by Galen Charlton
parent 76e39750b7
commit d24b24adee
2 changed files with 21 additions and 15 deletions

View File

@ -18,10 +18,10 @@ package Koha::I18N;
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
use Modern::Perl;
use base qw(Locale::Maketext);
use base qw(Locale::Maketext Exporter);
use C4::Templates;
use C4::Context;
use CGI;
use C4::Languages;
use Locale::Maketext::Lexicon {
'en' => ['Auto'],
@ -31,22 +31,28 @@ use Locale::Maketext::Lexicon {
. '/misc/translator/po/*-messages.po'
],
'_AUTO' => 1,
'_style' => 'gettext',
};
sub get_handle_from_context {
my ($class, $cgi, $interface) = @_;
our @EXPORT = qw( gettext );
my $lh;
my $lang = C4::Templates::getlanguage($cgi, $interface);
if ($lang) {
$lh = $class->get_handle($lang)
or die "No language handle for '$lang'";
} else {
$lh = $class->get_handle()
or die "Can't get a language handle";
my %language_handles;
sub get_language_handle {
my $cgi = new CGI;
my $language = C4::Languages::getlanguage;
if (not exists $language_handles{$language}) {
$language_handles{$language} = __PACKAGE__->get_handle($language)
or die "No language handle for '$language'";
}
return $lh;
return $language_handles{$language};
}
sub gettext {
my $lh = get_language_handle;
$lh->maketext(@_);
}
1;

View File

@ -476,7 +476,7 @@ sub extract_messages {
}
my $xgettext_cmd = "$self->{xgettext} -L Perl --from-code=UTF-8 " .
"-kmaketext -o $Bin/$self->{domain}.pot -D $intranetdir";
"-o $Bin/$self->{domain}.pot -D $intranetdir";
$xgettext_cmd .= " $_" foreach (@files_to_scan);
if (system($xgettext_cmd) != 0) {