fix 'Can't call method "setup" on an undefined value' error when using into rates...
[freeside.git] / FS / FS / Msgcat.pm
index e111f4e..ce0fa78 100644 (file)
@@ -58,6 +58,8 @@ our %cache;
 
 sub _gettext {
   my $msgcode = shift;
+  return '' unless defined($msgcode) && length($msgcode) > 0;
+
   my $locale =  (@_ && shift)
              || $FS::CurrentUser::CurrentUser->option('locale')
              || $def_locale;
@@ -74,6 +76,19 @@ sub _gettext {
     warn "WARNING: message for msgcode $msgcode in locale $locale not found"
       unless $locale eq 'en_US';
     $cache{$locale}->{$msgcode} = $msgcode;
+
+    my @translate_auto_insert = $conf->config('translate-auto-insert');
+    if ( $locale ne 'en_US' && grep { $_ eq $locale } @translate_auto_insert ) {
+
+        # :(
+        my $newmsgcat = new FS::Record('msgcat', { locale     => $locale,
+                                         msgcode    => $msgcode,
+                                         msg        => $msgcode,
+                                       });
+        warn "WARNING: auto-inserting message for msgcode $msgcode in locale $locale";
+        $newmsgcat->insert;
+    }
+    return $msgcode;
   }
 
 }