4 use vars qw( @ISA @EXPORT_OK $conf $def_locale $debug );
7 #use FS::Record qw( qsearchs ); # wtf? won't import...
9 #use FS::Conf; #wtf? causes dependency loops too.
13 @EXPORT_OK = qw( gettext geterror );
15 FS::UID->install_callback( sub {
19 $def_locale = $conf->config('locale') || 'en_US';
20 $debug = $conf->exists('show-msgcat-codes')
25 FS::Msgcat - Message catalog functions
29 use FS::Msgcat qw(gettext geterror);
31 #simple interface for retreiving messages...
32 $message = gettext('msgcode');
33 #or errors (includes the error code)
34 $message = geterror('msgcode');
38 FS::Msgcat provides functions to use the message catalog. If you want to
39 maintain the message catalog database, see L<FS::msgcat> instead.
47 Returns the full message for the supplied message code.
52 $debug ? geterror(@_) : _gettext(@_);
55 #though i guess we don't really have to cache here since we do it in
61 my $locale = (@_ && shift)
62 || $FS::CurrentUser::CurrentUser->option('locale')
65 return $cache{$locale}->{$msgcode} if exists $cache{$locale}->{$msgcode};
67 my $msgcat = FS::Record::qsearchs('msgcat', {
68 'msgcode' => $msgcode,
72 $cache{$locale}->{$msgcode} = $msgcat->msg;
74 warn "WARNING: message for msgcode $msgcode in locale $locale not found"
75 unless $locale eq 'en_US';
76 $cache{$locale}->{$msgcode} = $msgcode;
78 my @translate_auto_insert = $conf->config('translate-auto-insert');
79 if ( $locale ne 'en_US' && grep { $_ eq $locale } @translate_auto_insert ) {
82 my $newmsgcat = new FS::Record('msgcat', { locale => $locale,
86 warn "WARNING: auto-inserting message for msgcode $msgcode in locale $locale";
93 =item geterror MSGCODE
95 Returns the full message for the supplied message code, including the message
102 my $msg = _gettext($msgcode);
103 if ( $msg eq $msgcode ) {
104 my $locale = $FS::CurrentUser::CurrentUser->option('locale') || $def_locale;
105 "Error code $msgcode (message for locale $locale not found)";
107 "$msg (error code $msgcode)";
119 L<FS::Locales>, L<FS::msgcat>