From 6e919d5ecf3c1584d772790072664cdafc8e2dee Mon Sep 17 00:00:00 2001
From: Julian Maurice <julian.maurice@biblibre.com>
Date: Wed, 26 Feb 2014 16:45:59 +0100
Subject: [PATCH] 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');
---
 Koha/I18N.pm                     |   36 +++++++++++++++++++++---------------
 misc/translator/LangInstaller.pm |    2 +-
 2 files changed, 22 insertions(+), 16 deletions(-)

diff --git a/Koha/I18N.pm b/Koha/I18N.pm
index c1dffed..1d6188b 100644
--- a/Koha/I18N.pm
+++ b/Koha/I18N.pm
@@ -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) = @_;
-
-    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";
+our @EXPORT = qw( gettext );
+
+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;
diff --git a/misc/translator/LangInstaller.pm b/misc/translator/LangInstaller.pm
index b425e7d..fea2b41 100644
--- a/misc/translator/LangInstaller.pm
+++ b/misc/translator/LangInstaller.pm
@@ -477,7 +477,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) {
-- 
1.7.10.4