- if (exists $self->{subs}{$text_rev}) {
- $text = $self->{subs}{$text_rev};
- } elsif ($self->{countrycode} && $self->{NLS_file}) {
- Form->error("$text not defined in locale/$self->{countrycode}/$self->{NLS_file}");
+ $self->{subs} ||= { };
+
+ if (!$self->{subs}->{$text_rev}) {
+ $self->{texts_reverse} ||= { reverse %{ $self->{texts} } };
+ my $sub_name = $self->{texts_reverse}->{$text_rev};
+ $sub_name ||= $text_rev if $text_rev =~ m/^[a-z][a-z0-9_]+$/;
+
+ $main::form->error("$text not defined in locale/$self->{countrycode}/all") if !$sub_name;
+
+ $sub_name = lc $sub_name;
+ $sub_name =~ s/[^a-z0-9]/_/g;
+ $sub_name =~ s/_+/_/g;
+
+ $self->{subs}->{$text_rev} = $sub_name;