fix translation escaping
[freeside.git] / FS / FS / L10N / DBI.pm
1 package FS::L10N::DBI;
2 use base qw(FS::L10N);
3 use strict;
4 use FS::Msgcat;
5
6 sub lexicon {
7   my $lh = shift;
8   my $class = ref($lh) || $lh;
9   no strict 'refs';
10   \%{ $class . '::Lexicon' };
11 }
12
13 sub maketext {
14   my($lh, $key, @rest) = @_;
15
16   my $lang = $lh->language_tag;
17   $lang =~ s/-(\w*)/_\U$1/;
18
19   my $lex = $lh->lexicon;
20   unless ( exists $lex->{$key} ) {
21     $lex->{$key} = FS::Msgcat::_gettext( $key, $lang );
22   }
23
24   my $res = eval { $lh->SUPER::maketext($key, @rest) };
25   if ( !$res || $@ ) {
26     my $errmsg = "MT error for '$key'";
27     warn "$errmsg\n";
28     return $errmsg;
29   }
30
31   $res;
32 }
33
34 1;
35