]> git.deb.at Git - deb/packages.git/blob - lib/Packages/I18N/Locale.pm
Add basic l10n support.
[deb/packages.git] / lib / Packages / I18N / Locale.pm
1 package Packages::I18N::Locale;
2
3 use strict;
4 use warnings;
5
6 use Exporter;
7 use Locale::gettext;
8
9 our @ISA = qw( Exporter );
10 our @EXPORT = qw( get_locale get_charset _g _ N_ );
11
12
13 my %lang2loc = ( en => "en_US",
14                  cs => "cs_CZ",
15                  da => "da_DK",
16                  ja => "ja_JP",
17                  sv => "sv_SE",
18                  uk => "uk_UA",
19                  default => "en_US",
20                  );
21
22 # most of them can probably changed to UTF-8 in Sarge
23 # as there are more available UTF-8 locales then
24 my %lang2charset = (
25                     default => 'UTF-8',
26                     ja => 'EUC-JP',
27                     uk => 'KOI8-U',
28                     );
29
30 sub get_locale {
31     my $lang = shift;
32     my $locale = $lang;
33
34     return "$lang2loc{default}.".get_charset() unless $lang;
35
36     if ( length($lang) == 2 ) {
37         $locale = $lang2loc{$lang} || ( "${lang}_" . uc $lang );
38     } elsif ( $lang !~ /^[a-z][a-z]_[A-Z][A-Z]$/ ) {
39         warn "get_locale: couldn't determine locale\n";
40         return;
41     }
42     $locale .= ".".get_charset($lang);
43     return $locale;
44 }
45
46 sub get_charset {
47     my $lang = shift;
48
49     return $lang2charset{default} unless $lang;
50     return $lang2charset{$lang} || $lang2charset{default};
51 }
52
53 sub _ { return gettext( $_[0] ) }
54 sub _g { return gettext( $_[0] ) }
55 sub N_ { return $_[0] }
56
57 1;