1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
|
package FS::Locales;
use strict;
use Tie::IxHash;
=head1 NAME
FS::Locales - Supported locales
=head1 SYNOPSIS
use FS::Locales;
my @locales = FS::Locales->locales;
=head1 DESCRIPTION
FS::Locales provides a list of supported locales.
=head1 CLASS METHODS
=over 4
=item locales
Returns a list of the available locales.
=cut
tie our %locales, 'Tie::IxHash',
'en_US', { name => 'English', country => 'United States', },
'en_AU', { name => 'English', country => 'Australia', },
'en_CA', { name => 'English', country => 'Canada', },
'fr_CA', { name => 'French', country => 'Canada', },
'fr_FR', { name => 'French', country => 'France', },
'fr_HT', { name => 'French', country => 'Haiti', },
'ht_HT', { name => 'Haitian Creole', country => 'Haiti', },
'iw_IL', { name => 'Hebrew', country => 'Israel', rtl=>1, },
;
$_->{label} = $_->{name} . ' (' . $_->{country} . ')'
foreach values %locales;
sub locales {
keys %locales;
}
=item locale_info LOCALE
Returns a hash of information about a locale.
=cut
sub locale_info {
my($class, $locale) = @_;
if (!$locale) {
return ();
} elsif (exists $locales{$locale}) {
return %{ $locales{$locale} };
} else {
die "unsupported locale '$locale'\n";
}
}
=item description LOCALE
Returns "Language (Country)" for a locale.
=cut
sub description {
my($class, $locale) = @_;
$locales{$locale}->{'name'} . ' (' . $locales{$locale}->{'country'} . ')';
}
=back
=head1 BUGS
=head1 SEE ALSO
L<FS::Msgcat>
=cut
1;
|