Bug 11848: Make Koha::I18N easier to use
authorJulian Maurice <julian.maurice@biblibre.com>
Wed, 26 Feb 2014 15:45:59 +0000 (16:45 +0100)
committerGalen Charlton <gmc@esilibrary.com>
Mon, 5 May 2014 04:30:02 +0000 (04:30 +0000)
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>
Koha/I18N.pm
misc/translator/LangInstaller.pm

index c1dffed..1d6188b 100644 (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) = @_;
-
-    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;
index 95fd406..b89aaa8 100644 (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) {