X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=blobdiff_plain;f=FS%2FFS%2Fmsgcat.pm;h=d1224f334deacd906f537a40788d0c01a37fa59a;hp=53a7aeee64d672532fdfd0049fbdfb8dc9ee3c26;hb=20f38e4c256094bd938b732950e8f93319f851a5;hpb=87af741da0dd5f6a76bbb566b4d6c54cd5b15315 diff --git a/FS/FS/msgcat.pm b/FS/FS/msgcat.pm index 53a7aeee6..d1224f334 100644 --- a/FS/FS/msgcat.pm +++ b/FS/FS/msgcat.pm @@ -1,19 +1,12 @@ package FS::msgcat; use strict; -use vars qw( @ISA @EXPORT_OK $conf $locale ); +use vars qw( @ISA ); use Exporter; use FS::UID; -use FS::Record qw( qsearchs ); -use FS::Conf; +use FS::Record; # qw( qsearchs ); @ISA = qw(FS::Record); -@EXPORT_OK = qw( gettext geterror ); - -$FS::UID::callback{'msgcat'} = sub { - $conf = new FS::Conf; - $locale = $conf->config('locale') || 'en_US'; -}; =head1 NAME @@ -21,14 +14,8 @@ FS::msgcat - Object methods for message catalog entries =head1 SYNOPSIS - use FS::msgcat qw(gettext); - - #simple interface for retreiving messages... - $message = gettext('msgcode'); - #or errors (includes the error code) - $message = geterror('msgcode'); + use FS::msgcat; - #maintenance stuff $record = new FS::msgcat \%hash; $record = new FS::msgcat { 'column' => 'value' }; @@ -57,13 +44,16 @@ from FS::Record. The following fields are currently supported: =back +If you just want to B message catalogs, see L. + =head1 METHODS =over 4 =item new HASHREF -Creates a new example. To add the example to the database, see L<"insert">. +Creates a new message catalog entry. To add the message catalog entry to the +database, see L<"insert">. Note that this stores the hash reference, not a distinct copy of the hash it points to. You can ask the object for a copy with the I method. @@ -102,8 +92,8 @@ returns the error, otherwise returns false. =item check -Checks all fields to make sure this is a valid example. If there is -an error, returns the error, otherwise returns false. Called by the insert +Checks all fields to make sure this is a valid message catalog entry. If there +is an error, returns the error, otherwise returns false. Called by the insert and replace methods. =cut @@ -124,62 +114,51 @@ sub check { $self->locale =~ /^([\w\@]+)$/ or return "illegal locale: ". $self->locale; $self->locale($1); - ''; #no error + $self->SUPER::check } -=back -=head1 SUBROUTINES +sub _upgrade_data { #class method + my( $class, %opts) = @_; -=over 4 + eval "use FS::Setup;"; + die $@ if $@; -=item gettext MSGCODE + #"repopulate_msgcat", false laziness w/FS::Setup::populate_msgcat -Returns the full message for the supplied message code. + my %messages = FS::Setup::msgcat_messages(); -=cut + foreach my $msgcode ( keys %messages ) { + foreach my $locale ( keys %{$messages{$msgcode}} ) { + my %msgcat = ( + 'msgcode' => $msgcode, + 'locale' => $locale, + #'msg' => $messages{$msgcode}{$locale}, + ); + #my $msgcat = qsearchs('msgcat', \%msgcat); + my $msgcat = FS::Record::qsearchs('msgcat', \%msgcat); #wtf? + next if $msgcat; -sub gettext { - my $msgcode = shift; - my $msgcat = qsearchs('msgcat', { - 'msgcode' => $msgcode, - 'locale' => $locale - } ); - if ( $msgcat ) { - $msgcat->msg; - } else { - warn "WARNING: message for msgcode $msgcode in locale $locale not found"; - $msgcode; + $msgcat = new FS::msgcat( { + %msgcat, + 'msg' => $messages{$msgcode}{$locale}, + } ); + my $error = $msgcat->insert; + die $error if $error; + } } } -=item geterror MSGCODE - -Returns the full message for the supplied message code, including the message -code. - -=cut - -sub geterror { - my $msgcode = shift; - my $msg = gettext($msgcode); - if ( $msg eq $msgcode ) { - "Error code $msgcode (message for locale $locale not found)"; - } else { - "$msg (error code $msgcode)"; - } -} - =back =head1 BUGS -i18n/l10n is a mess. +i18n/l10n, eek =head1 SEE ALSO -L, schema.html from the base documentation. +L, L, schema.html from the base documentation. =cut