To avoid problems with localisation with custom elements, constraints and so
on, and to ease the translation (no double entries in translation files in
formfu and e. g. catalyst) I extended the localize function to handle an
array of localisation classes.
New classes can be attached with add_localize_object function which expects an
object or a class name.
The class that was added last will be looked in first, the standard formfu
languages files (which are now also available in german ;-) will be processed
last.
To show how to create a custom module with localization I provide some code
further down.
At the moment I would suggest to use under each stage/element a directory for
contributed/not standard modules. What about 'User' or 'Contributed'?
With that directory I also could write some tests.
But for now it's working fine with the custom modules I created. ;-)
Greets,
Mario
===============================================
package glue::HTML::FormFu::Constraint::WebAddress;
use strict;
use warnings;
use base 'HTML::FormFu::Constraint';
use Regexp::Common qw( WebAddress );
#__PACKAGE__->mk_accessors( qw/ / );
sub new {
my $self = shift->SUPER::new(@_);
$self->form->add_localize_object(
'glue::HTML::FormFu::Constraint::WebAddress::I18N' );
return $self;
}
sub constrain_value {
my ( $self, $value ) = @_;
return 1 if !defined $value || $value eq '';
my $ok = $value =~ /\A$RE{WebAddress}\z/;
return $self->not ? !$ok : $ok;
}
1;
===============================================
package Regexp::Common::WebAddress;
use strict;
use warnings;
use Regexp::Common qw( pattern clean no_defaults );
use Regexp::Common::URI::RFC2396 qw( $host $port $path_segments $query
$fragment $domainlabel $toplabel $IPv4address );
pattern name => [ qw( WebAddress ) ],
create => "(?k:(?k:https?)://)?".
"(?k:(($domainlabel\[.])+($toplabel\[.]?)|$IPv4address))".
"(?::(?k:$port))?".
"(?k:/(?k:(?k:$path_segments)(?:[?](?k:$query))?
(?k:#$fragment)?))?";
# original http matching code in Regexp::Common::URI::http
# create => "(?k:(?k:(?k:https?)://)?(?k:$host)(?::(?k:$port))?".
# "(?k:/(?k:(?k:$path_segments)(?:[?](?k:$query))?))?".
# "(?k:#$fragment)?)";
1;
===============================================
package glue::HTML::FormFu::Constraint::WebAddress::I18N;
use strict;
use warnings;
use base 'Locale::Maketext';
*loc = \&localize;
sub localize {
my $self = shift;
return $self->maketext(@_);
}
1;
===============================================
package glue::HTML::FormFu::Constraint::WebAddress::I18N::en;
use strict;
use warnings;
use base qw( glue::HTML::FormFu::Constraint::WebAddress::I18N );
our %Lexicon = (
form_glue_html_formfu_constraint_webaddress_error => 'Field must contain
a valid webaddress',
);
1;
===============================================
END
_______________________________________________
Html-widget mailing list
[email protected]
http://lists.rawmode.org/cgi-bin/mailman/listinfo/html-widget