Changeset 30331
- Timestamp:
- 02/20/09 12:52:05 (4 years ago)
- Files:
-
- 1 modified
Legend:
- Unmodified
- Added
- Removed
-
lang/perl/Data-Localize/trunk/lib/Data/Localize.pm
r30083 r30331 3 3 package Data::Localize; 4 4 use Moose; 5 use Moose::Util::TypeConstraints; 5 6 use MooseX::AttributeHelpers; 6 7 use I18N::LangTags (); … … 56 57 # Localizers are the actual minions that perform the localization. 57 58 # They must register themselves 59 subtype 'Data::Localize::LocalizerListArg' 60 => as 'ArrayRef' 61 => where { 62 ! grep { ! blessed $_ || ! $_->does('Data::Localize::Localizer') } @$_; 63 } 64 => message { 65 'localizers must be a list of Data::Localize::Localizer implementors' 66 } 67 ; 68 coerce 'Data::Localize::LocalizerListArg' 69 => from 'ArrayRef[HashRef]' 70 => via { 71 my $ret = [ map { 72 my $args = $_; 73 my $klass = delete $args->{class}; 74 if ($klass !~ s/^\+//) { 75 $klass = "Data::Localize::$klass"; 76 } 77 Class::MOP::load_class($klass); 78 $klass->new(%$args); 79 } @$_ ]; 80 return $ret; 81 } 82 ; 83 58 84 has 'localizers' => ( 59 85 metaclass => 'Collection::Array', 60 86 is => 'rw', 61 isa => 'ArrayRef', 87 isa => 'Data::Localize::LocalizerListArg', 88 coerce => 1, 62 89 default => sub { +[] }, 63 90 provides => { … … 81 108 82 109 no Moose; 110 no Moose::Util::TypeConstraints; 111 112 sub BUILD { 113 my $self = shift; 114 if ($self->count_localizers > 0) { 115 foreach my $loc (@{ $self->localizers }) { 116 $loc->register($self); 117 } 118 } 119 return $self; 120 } 83 121 84 122 sub _build_fallback_languages { … … 104 142 if (&DEBUG) { 105 143 print STDERR "[Data::Localize]: detect_languages auto-detected ", join(", ", map { "'$_'" } @lang ), "\n"; 144 } 145 return wantarray ? @lang : \@lang; 146 } 147 148 sub detect_languages_from_header { 149 my $self = shift; 150 my @lang = I18N::LangTags::implicate_supers( 151 I18N::LangTags::Detect->http_accept_langs( $_[0] || $ENV{HTTP_ACCEPT_LANGUAGE}), 152 $self->fallback_languages, 153 ); 154 if (&DEBUG) { 155 print STDERR "[Data::Localize]: detect_languages_from_header detected ", join(", ", map { "'$_'" } @lang ), "\n"; 106 156 } 107 157 return wantarray ? @lang : \@lang;
![(please configure the [header_logo] section in trac.ini)](/share/chrome/site/your_project_logo.png)