From 5621a5880178e7dde4efcd612ec5321df9ec6df3 Mon Sep 17 00:00:00 2001 From: Alexey Sokolov Date: Sun, 31 Jan 2016 11:22:48 +0000 Subject: [PATCH] Support translation in perl modules --- modules/modperl/modperl.i | 1 + modules/modperl/startup.pl | 28 ++++++++++++++++++++++++++++ 2 files changed, 29 insertions(+) diff --git a/modules/modperl/modperl.i b/modules/modperl/modperl.i index 2d18c6f4..f23aa18f 100644 --- a/modules/modperl/modperl.i +++ b/modules/modperl/modperl.i @@ -125,6 +125,7 @@ class MCString : public std::map {}; #include "znc/zncconfig.h" #include "znc/ZNCString.h" %include "znc/defines.h" +%include "znc/Translation.h" %include "znc/Utils.h" %include "znc/Threads.h" %include "znc/Config.h" diff --git a/modules/modperl/startup.pl b/modules/modperl/startup.pl index fd1f1d4b..92b031fa 100644 --- a/modules/modperl/startup.pl +++ b/modules/modperl/startup.pl @@ -178,6 +178,7 @@ sub ModInfoByPath { my ($modpath, $modname, $modinfo) = @_; die "Incorrect perl module." unless IsModule $modpath, $modname; require $modpath; + my $translation = ZNC::CTranslationDomainRefHolder->new("znc-$modname"); my $pmod = bless {}, $modname; my @types = $pmod->module_types; $modinfo->SetDefaultType($types[0]); @@ -644,6 +645,33 @@ sub CreateSocket { $psock; } +sub t { + my $self = shift; + my $module = ref $self; + my $english = shift; + my $context = shift//''; + ZNC::CTranslation::Get->Singular("znc-$module", $context, $english); +} + +sub f { + my $self = shift; + my $fmt = $self->t(@_); + return sub { sprintf $fmt, @_ } +} + +sub p { + my $self = shift; + my $module = ref $self; + my $english = shift; + my $englishes = shift; + my $num = shift; + my $context = shift//''; + my $fmt = ZNC::CTranslation::Get->Plural("znc-$module", $context, $english, $englishes, $num); + return sub { sprintf $fmt, @_ } +} + +# TODO is _d needed for perl? Maybe after AddCommand is implemented + package ZNC::Timer; sub GetModule {