diff options
author | ivan <ivan> | 2011-05-11 16:20:13 +0000 |
---|---|---|
committer | ivan <ivan> | 2011-05-11 16:20:13 +0000 |
commit | 83053569b3d965924e2e1d4f5b199609ec7c29af (patch) | |
tree | cf7b145fe37e171045040cf9619e6aab98689cae /FS/FS/Msgcat.pm | |
parent | 38eb380a88ea7a130e83b77ff9c51ef6967b707b (diff) |
i18n, RT#12515
Diffstat (limited to 'FS/FS/Msgcat.pm')
-rw-r--r-- | FS/FS/Msgcat.pm | 26 |
1 files changed, 19 insertions, 7 deletions
diff --git a/FS/FS/Msgcat.pm b/FS/FS/Msgcat.pm index 70933b2..e111f4e 100644 --- a/FS/FS/Msgcat.pm +++ b/FS/FS/Msgcat.pm @@ -1,7 +1,7 @@ package FS::Msgcat; use strict; -use vars qw( @ISA @EXPORT_OK $conf $locale $debug ); +use vars qw( @ISA @EXPORT_OK $conf $def_locale $debug ); use Exporter; use FS::UID; #use FS::Record qw( qsearchs ); # wtf? won't import... @@ -16,7 +16,7 @@ FS::UID->install_callback( sub { eval "use FS::Conf;"; die $@ if $@; $conf = new FS::Conf; - $locale = $conf->config('locale') || 'en_US'; + $def_locale = $conf->config('locale') || 'en_US'; $debug = $conf->exists('show-msgcat-codes') }); @@ -52,17 +52,28 @@ sub gettext { $debug ? geterror(@_) : _gettext(@_); } +#though i guess we don't really have to cache here since we do it in +# FS::L10N::DBI +our %cache; + sub _gettext { my $msgcode = shift; + my $locale = (@_ && shift) + || $FS::CurrentUser::CurrentUser->option('locale') + || $def_locale; + + return $cache{$locale}->{$msgcode} if exists $cache{$locale}->{$msgcode}; + my $msgcat = FS::Record::qsearchs('msgcat', { 'msgcode' => $msgcode, - 'locale' => $locale + 'locale' => $locale, } ); if ( $msgcat ) { - $msgcat->msg; + $cache{$locale}->{$msgcode} = $msgcat->msg; } else { - warn "WARNING: message for msgcode $msgcode in locale $locale not found"; - $msgcode; + warn "WARNING: message for msgcode $msgcode in locale $locale not found" + unless $locale eq 'en_US'; + $cache{$locale}->{$msgcode} = $msgcode; } } @@ -78,6 +89,7 @@ sub geterror { my $msgcode = shift; my $msg = _gettext($msgcode); if ( $msg eq $msgcode ) { + my $locale = $FS::CurrentUser::CurrentUser->option('locale') || $def_locale; "Error code $msgcode (message for locale $locale not found)"; } else { "$msg (error code $msgcode)"; @@ -92,7 +104,7 @@ i18n/l10n, eek =head1 SEE ALSO -L<FS::msgcat>, L<FS::Record>, schema.html from the base documentation. +L<FS::Locales>, L<FS::msgcat> =cut |