CGI-Lingua
view release on metacpan or search on metacpan
t/language.t view on Meta::CPAN
$l = CGI::Lingua->new(
supported => ['en', 'fr', 'en-gb', 'en-us'],
dont_use_ip => 1,
);
ok(defined $l);
ok($l->isa('CGI::Lingua'));
ok($l->language() eq 'Unknown');
ok($l->requested_language() eq 'Unknown');
$ENV{'HTTP_ACCEPT_LANGUAGE'} = 'en-gb,en;q=0.5';
delete $ENV{'REMOTE_ADDR'};
$l = CGI::Lingua->new({
supported => ['en', 'fr', 'en-gb', 'en-us'],
dont_use_ip => 1,
});
ok(defined $l);
ok($l->isa('CGI::Lingua'));
ok($l->language() eq 'English');
ok($l->sublanguage() eq 'United Kingdom');
ok(defined $l->requested_language());
ok($l->requested_language() eq 'English (United Kingdom)');
$l = CGI::Lingua->new(supported => ['de', 'fr']);
ok(defined $l);
ok($l->isa('CGI::Lingua'));
ok($l->language() eq 'Unknown');
ok(defined $l->requested_language());
if($l->requested_language() ne 'Unknown') {
diag('Expected Unknown got "', $l->requested_language(), '"');
}
ok($l->requested_language() eq 'Unknown');
$ENV{'HTTP_ACCEPT_LANGUAGE'} = 'zz';
$l = CGI::Lingua->new(supported => ['en', 'fr', 'en-gb', 'en-us']);
ok(defined $l);
ok($l->isa('CGI::Lingua'));
ok($l->language() eq 'Unknown');
ok(defined $l->requested_language());
$ENV{'REMOTE_ADDR'} = '212.159.106.41';
$l = CGI::Lingua->new(
supported => ['en', 'fr', 'en-gb', 'en-us'],
syslog => 1,
logger => MyLogger->new()
);
ok(defined $l);
ok($l->isa('CGI::Lingua'));
ok(defined($l->language_code_alpha2()));
ok($l->language_code_alpha2() eq 'en');
ok(!defined($l->sublanguage_code_alpha2()));
if($l->language() ne 'English') {
diag('Expected English got "', $l->requested_language(), '"');
}
ok($l->name() eq 'English');
ok(defined $l->requested_language());
if($l->requested_language() !~ /English/) {
diag('Expected English requested language, got "', $l->requested_language(), '"');
}
ok($l->requested_language() =~ /English/);
ok($l->country() eq 'gb');
ok($l->locale()->code_alpha2() eq 'gb');
delete($ENV{'REMOTE_ADDR'});
$ENV{'HTTP_ACCEPT_LANGUAGE'} = 'en';
$l = new_ok('CGI::Lingua' => [
supported => ['en', 'en-gb', 'fr']
]);
ok($l->language() eq 'English');
ok(defined($l->requested_language()));
ok($l->requested_language() eq 'English');
ok(!defined($l->sublanguage()));
ok($l->language_code_alpha2() eq 'en');
ok(!defined($l->sublanguage_code_alpha2()));
ok(!defined($l->country()));
# Ask for US English on a site serving only British English should still
# say that English is the language
$ENV{'HTTP_ACCEPT_LANGUAGE'} = 'en-us';
$l = new_ok('CGI::Lingua' => [
supported => ['en-gb', 'fr']
]);
ok($l->language() eq 'English');
ok(defined($l->requested_language()));
ok($l->requested_language() eq 'English (United States)');
ok(!defined($l->sublanguage()));
ok($l->language_code_alpha2() eq 'en');
ok(!defined($l->sublanguage_code_alpha2()));
ok(!defined($l->country()));
# Ask for US English on a site serving British English and English
# should say that English is the language
$ENV{'HTTP_ACCEPT_LANGUAGE'} = 'en-us';
$l = new_ok('CGI::Lingua' => [
supported => ['en', 'en-gb', 'fr']
]);
ok($l->language() eq 'English');
ok(defined($l->requested_language()));
ok($l->requested_language() eq 'English (United States)');
ok(!defined($l->sublanguage()));
ok($l->language_code_alpha2() eq 'en');
ok(!defined($l->sublanguage_code_alpha2()));
ok(!defined($l->country()));
$ENV{'HTTP_ACCEPT_LANGUAGE'} = 'no';
$ENV{'REMOTE_ADDR'} = '212.125.194.122';
$l = CGI::Lingua->new(supported => ['en', 'fr', 'en-gb', 'en-us']);
ok(defined $l);
ok($l->isa('CGI::Lingua'));
ok($l->language() eq 'Unknown');
ok(defined($l->requested_language()));
ok(!defined($l->language_code_alpha2()));
ok(!defined($l->sublanguage_code_alpha2()));
ok($l->country() eq 'no');
if($l->country() ne 'no') {
diag('Expected no got "', $l->country(), '"');
}
ok($l->locale()->code_alpha2() eq 'no');
delete($ENV{'HTTP_ACCEPT_LANGUAGE'});
{
delete local $ENV{'GEOIP_COUNTRY_CODE'};
delete local $ENV{'HTTP_CF_IPCOUNTRY'};
local $ENV{'REMOTE_ADDR'} = 'a.b.c.d';
$l = new_ok('CGI::Lingua' => [
supported => ['en', 'fr'],
]);
# Force the logger, in case a logger is defined in a config file that Config::Abstraction reads
$l->{'logger'} = Log::Abstraction->new({
'level' => 'warn',
'logger' => sub {
die $_[0]->{'message'}->[0];
}
});
local $SIG{__WARN__} = sub { die $_[0] }; # Probably not needed
throws_ok { $l->language() } qr/a\.b\.c\.d isn't a valid IP address/, 'Detects invalid IP address';
ok(defined($l->requested_language()));
ok($l->requested_language() eq 'Unknown');
ok(!defined($l->language_code_alpha2()));
}
SKIP: {
eval { require IP::Country; };
skip 'IP::Country not installed', 2 if($@);
$ENV{'REMOTE_ADDR'} = '255.255.255.255';
my @messages;
$l = new_ok('CGI::Lingua' => [
supported => ['de', 'fr'],
logger => \@messages
]);
ok($l->language() eq 'Unknown');
}
$ENV{'HTTP_ACCEPT_LANGUAGE'} = 'en-US,en;q=0.8';
$ENV{'REMOTE_ADDR'} = '74.92.149.57';
$l = new_ok('CGI::Lingua' => [
supported => [ 'en-gb', 'da', 'fr', 'nl', 'de', 'it', 'cy', 'pt', 'pl', 'ja' ],
# logger => sub {
# my $params = $_[0];
# diag($params->{'function'}, ': line ', $params->{'line'}, ': ', @{$params->{'message'}})
# }
]);
ok(!defined($l->sublanguage_code_alpha2()));
ok($l->language() eq 'English');
cmp_ok($l->requested_language(), 'eq', 'English (United States)');
ok(!defined($l->sublanguage()));
ok($l->language_code_alpha2() eq 'en');
$ENV{'HTTP_ACCEPT_LANGUAGE'} = 'en-ZZ,en;q=0.8';
$l = new_ok('CGI::Lingua' => [
supported => [ 'en-gb', 'da', 'fr', 'nl', 'de', 'it', 'cy', 'pt', 'pl', 'ja' ],
syslog => 1,
# logger => sub {
# my $params = $_[0];
# diag($params->{'function'}, ': line ', $params->{'line'}, ': ', @{$params->{'message'}})
# }
]);
( run in 2.951 seconds using v1.01-cache-2.11-cpan-5b529ec07f3 )