summaryrefslogtreecommitdiff
path: root/FS/FS/Locales.pm
blob: d1f3eed229da5b580db4109e36e5b92614818a2a (plain)
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
88
89
90
91
92
93
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', },
  'es_ES', { name => 'Spanish',        country => 'Spain', },
  'es_AR', { name => 'Spanish',        country => 'Argentina', },
  'es_CU', { name => 'Spanish',        country => 'Cuba', },
  'es_MX', { name => 'Spanish',        country => 'Mexico', },
  'es_PA', { name => 'Spanish',        country => 'Panama', },
  'es_US', { name => 'Spanish',        country => 'United States', },
  '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;