X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=FS%2FFS%2FL10N%2FDBI.pm;h=dc9231785e0912520fca1e7ac0f2dcbad54b639c;hb=e95a28ea14289ffcfa652bff9b179d3820b56242;hp=2f01a6ad3092b886045bdbb8ba10545396e80947;hpb=22a59960edd8f446d82c60f9ca5ac9b957ef2eac;p=freeside.git diff --git a/FS/FS/L10N/DBI.pm b/FS/FS/L10N/DBI.pm index 2f01a6ad3..dc9231785 100644 --- a/FS/FS/L10N/DBI.pm +++ b/FS/FS/L10N/DBI.pm @@ -3,19 +3,32 @@ use base qw(FS::L10N); use strict; use FS::Msgcat; -our %Lexicon = (); +sub lexicon { + my $lh = shift; + my $class = ref($lh) || $lh; + no strict 'refs'; + \%{ $class . '::Lexicon' }; +} sub maketext { my($lh, $key, @rest) = @_; - unless ( exists $Lexicon{$key} ) { - my $lang = $lh->language_tag; - $lang =~ s/-(\w*)/_\U$1/; - $Lexicon{$key} = FS::Msgcat::_gettext( $key, $lang ); + my $lang = $lh->language_tag; + $lang =~ s/-(\w*)/_\U$1/; + + my $lex = $lh->lexicon; + unless ( exists $lex->{$key} ) { + $lex->{$key} = FS::Msgcat::_gettext( $key, $lang ); } - $lh->SUPER::maketext($key, @rest); + my $res = eval { $lh->SUPER::maketext($key, @rest) }; + if ( !$res || $@ ) { + my $errmsg = "MT error for '$key'"; + warn "$errmsg\n"; + return $errmsg; + } + $res; } 1;