X-Git-Url: http://gb7djk.dxcluster.net/gitweb/gitweb.cgi?a=blobdiff_plain;f=perl%2FDXM.pm;h=b6d191bbd30a03f1c019c8ae35303e226d3ed08a;hb=24550808f9ee4ba5cf6a720bb364977f7ed586af;hp=e1579fabbd64d52cb25ea3cdb8b7be566460bb9c;hpb=60c0ea1747bc8ad95e531d29025f7bcee4fd10c1;p=spider.git diff --git a/perl/DXM.pm b/perl/DXM.pm index e1579fab..b6d191bb 100644 --- a/perl/DXM.pm +++ b/perl/DXM.pm @@ -1,6 +1,14 @@ # # DX cluster message strings for output # +# Each message string will substitute $_[x] positionally. What this means is +# that if you don't like the order in which fields in each message is output then +# you can change it. Also you can include various globally accessible variables +# in the string if you want. +# +# Largely because I don't particularly want to have to change all these messages +# in every upgrade I shall attempt to add new field to the END of the list :-) +# # Copyright (c) 1998 - Dirk Koopman G1TLH # # $Id$ @@ -8,21 +16,56 @@ package DXM; -require Exporter; -@ISA = qw(Exporter); -@EXPORT = qw(m); +use strict; + +use DXVars; +use DXDebug; + +my $localfn = "$main::root/local/Messages"; +my $fn = "$main::root/perl/Messages"; -%msgs = ( - l1 => "Sorry $a[0], you are already logged on on another channel", - l2 => "Hello $a[0], this is $a[1] located in $a[2]", -); +use vars qw($VERSION $BRANCH); +$VERSION = sprintf( "%d.%03d", q$Revision$ =~ /(\d+)\.(\d+)/ ); +$BRANCH = sprintf( "%d.%03d", q$Revision$ =~ /\d+\.\d+\.(\d+)\.(\d+)/ || (0,0)); +$main::build += $VERSION; +$main::branch += $BRANCH; -sub m +use vars qw(%msgs); + +sub msg { - my $self = shift; - local @a = @_; - my $s = $msg{$self}; - return "unknown message '$self'" if !defined $s; - return eval $s; + my $lang = shift; + my $m = shift; + my $ref = $msgs{$lang}; + my $s = $ref->{$m} if $ref; + if (!$s && $lang ne 'en') { + $ref = $msgs{'en'}; + $s = $ref->{$m}; + } + return "unknown message '$m' in lang '$lang'" if !defined $s; + my $ans = eval qq{ "$s" }; + warn $@ if $@; + return $ans; } - + +sub load +{ + my $ref = shift; + if (-e $localfn) { + do $localfn; + return ($@) if $@ && ref $ref; + confess $@ if $@; + return (); + } + do $fn; + return ($@) if $@ && ref $ref; + confess $@ if $@; + return (); +} + +sub init +{ + load(); +} + +1;