line |
stmt |
bran |
cond |
sub |
pod |
time |
code |
1
|
|
|
|
|
|
|
package Plack::I18N; |
2
|
3
|
|
|
3
|
|
46560
|
use 5.008001; |
|
3
|
|
|
|
|
10
|
|
|
3
|
|
|
|
|
91
|
|
3
|
3
|
|
|
3
|
|
10
|
use strict; |
|
3
|
|
|
|
|
5
|
|
|
3
|
|
|
|
|
78
|
|
4
|
3
|
|
|
3
|
|
18
|
use warnings; |
|
3
|
|
|
|
|
3
|
|
|
3
|
|
|
|
|
125
|
|
5
|
|
|
|
|
|
|
|
6
|
|
|
|
|
|
|
our $VERSION = "0.04"; |
7
|
|
|
|
|
|
|
|
8
|
3
|
|
|
3
|
|
10
|
use Carp qw(croak); |
|
3
|
|
|
|
|
6
|
|
|
3
|
|
|
|
|
188
|
|
9
|
3
|
|
|
3
|
|
1585
|
use Locale::Maketext; |
|
3
|
|
|
|
|
27226
|
|
|
3
|
|
|
|
|
114
|
|
10
|
3
|
|
|
3
|
|
1439
|
use Plack::Util (); |
|
3
|
|
|
|
|
28612
|
|
|
3
|
|
|
|
|
59
|
|
11
|
3
|
|
|
3
|
|
964
|
use Plack::I18N::Handle; |
|
3
|
|
|
|
|
7
|
|
|
3
|
|
|
|
|
865
|
|
12
|
|
|
|
|
|
|
|
13
|
|
|
|
|
|
|
sub new { |
14
|
21
|
|
|
21
|
1
|
26618
|
my $class = shift; |
15
|
21
|
|
|
|
|
68
|
my (%params) = @_; |
16
|
|
|
|
|
|
|
|
17
|
21
|
50
|
|
|
|
53
|
croak 'lexicon required' unless $params{lexicon}; |
18
|
|
|
|
|
|
|
|
19
|
21
|
|
|
|
|
24
|
my $self = {}; |
20
|
21
|
|
|
|
|
30
|
bless $self, $class; |
21
|
|
|
|
|
|
|
|
22
|
21
|
|
50
|
|
|
53
|
$self->{i18n_class} = $params{i18n_class} || __PACKAGE__ . '::Auto'; |
23
|
21
|
|
|
|
|
54
|
$self->{locale_dir} = $params{locale_dir}; |
24
|
21
|
|
100
|
|
|
74
|
$self->{default_language} = $params{default_language} || 'en'; |
25
|
|
|
|
|
|
|
|
26
|
21
|
|
|
|
|
52
|
$self->{lexicon} = $self->_build_lexicon( |
27
|
|
|
|
|
|
|
$params{lexicon}, |
28
|
|
|
|
|
|
|
i18n_class => $self->{i18n_class}, |
29
|
|
|
|
|
|
|
locale_dir => $self->{locale_dir}, |
30
|
|
|
|
|
|
|
default_language => $self->{default_language} |
31
|
|
|
|
|
|
|
); |
32
|
|
|
|
|
|
|
|
33
|
21
|
|
100
|
|
|
76
|
$self->{languages} = |
34
|
|
|
|
|
|
|
$params{languages} || [sort $self->{lexicon}->detect_languages]; |
35
|
|
|
|
|
|
|
|
36
|
21
|
|
|
|
|
123
|
return $self; |
37
|
|
|
|
|
|
|
} |
38
|
|
|
|
|
|
|
|
39
|
|
|
|
|
|
|
sub default_language { |
40
|
16
|
|
|
16
|
1
|
53
|
my $self = shift; |
41
|
|
|
|
|
|
|
|
42
|
16
|
|
|
|
|
45
|
return $self->{default_language}; |
43
|
|
|
|
|
|
|
} |
44
|
|
|
|
|
|
|
|
45
|
|
|
|
|
|
|
sub languages { |
46
|
22
|
|
|
22
|
1
|
93
|
my $self = shift; |
47
|
|
|
|
|
|
|
|
48
|
22
|
|
|
|
|
14
|
return @{$self->{languages}}; |
|
22
|
|
|
|
|
74
|
|
49
|
|
|
|
|
|
|
} |
50
|
|
|
|
|
|
|
|
51
|
|
|
|
|
|
|
sub handle { |
52
|
17
|
|
|
17
|
1
|
46
|
my $self = shift; |
53
|
17
|
|
|
|
|
19
|
my ($language) = @_; |
54
|
|
|
|
|
|
|
|
55
|
17
|
|
|
|
|
18
|
my $i18n_class = $self->{i18n_class}; |
56
|
|
|
|
|
|
|
|
57
|
17
|
|
66
|
|
|
53
|
$self->{handles}->{$language} ||= do { |
58
|
16
|
|
|
|
|
59
|
my $handle = $i18n_class->get_handle($language); |
59
|
16
|
|
|
1
|
|
3361
|
$handle->fail_with(sub { $_[1] }); |
|
1
|
|
|
|
|
50
|
|
60
|
|
|
|
|
|
|
|
61
|
16
|
|
|
|
|
203
|
Plack::I18N::Handle->new(handle => $handle, language => $language); |
62
|
|
|
|
|
|
|
}; |
63
|
|
|
|
|
|
|
|
64
|
17
|
|
|
|
|
46
|
return $self->{handles}->{$language}; |
65
|
|
|
|
|
|
|
} |
66
|
|
|
|
|
|
|
|
67
|
|
|
|
|
|
|
sub _build_lexicon { |
68
|
21
|
|
|
21
|
|
21
|
my $self = shift; |
69
|
21
|
|
|
|
|
48
|
my ($lexicon, %params) = @_; |
70
|
|
|
|
|
|
|
|
71
|
21
|
|
|
|
|
47
|
my $lexicon_class = __PACKAGE__ . '::Lexicon::' . ucfirst($lexicon); |
72
|
|
|
|
|
|
|
|
73
|
21
|
|
|
|
|
58
|
Plack::Util::load_class($lexicon_class); |
74
|
|
|
|
|
|
|
|
75
|
21
|
|
|
|
|
260
|
return $lexicon_class->new(%params); |
76
|
|
|
|
|
|
|
} |
77
|
|
|
|
|
|
|
|
78
|
|
|
|
|
|
|
1; |
79
|
|
|
|
|
|
|
__END__ |