return $1;
}
+sub set_locale {
+ my $locale = shift;
+ $locale =~ s/-/_/;
+ POSIX::setlocale(&POSIX::LC_ALL, $locale . '.UTF-8');
+}
+
sub get_auxillary_parameters {
my ($dbh, $locale) = @_;
if ($ref->{'kultur'} eq $locale) {
$lang{'lang-with-link'} = '';
- $lang{'lang-no-link'} = $ref->{'spraak'};
+ $lang{'lang-no-link'} = Encode::decode_utf8($ref->{'spraak'});
} else {
- $lang{'a'} = $ref->{'spraak'};
+ $lang{'a'} = Encode::decode_utf8($ref->{'spraak'});
$lang{'a/href'} = sprintf "/%s/%s", $ref->{'kultur'}, $url;
$lang{'lang-no-link'} = '';
}
print "<p style=\"font-size: smaller;\">";
- my $q = $dbh->prepare('SELECT spraak, kultur FROM fotballspraak WHERE nyestesesong <> -1 ORDER BY id');
+ my $q = $dbh->prepare('SELECT spraak, kultur FROM fotballspraak WHERE nyestesesong <> -1 AND length(kultur)=5 ORDER BY id');
$q->execute;
my $first = 1;
print "</p>\n";
}
+# mapping from locale to translation to use (if not found, "en" is used)
+my %translation_mapping = (
+ 'nb-NO' => 'no',
+ 'nn-NO' => 'no',
+ 'da-DK' => 'no',
+ 'sv-SE' => 'no',
+ 'nl-NL' => 'en',
+);
+
sub process_template {
- my ($filename, $parms) = @_;
+ my ($filename, $locale, $parms) = @_;
- my $doc = XML::Template::process_file('../templates/' . $filename, $parms);
+ my $translation = $translation_mapping{$locale} // 'en';
+ my $doc;
+ if (-r "../templates/$filename.$translation.xml") {
+ $parms->{'html/xml:lang'} = $translation;
+ $doc = XML::Template::process_file("../templates/$filename.$translation.xml", $parms);
+ } else {
+ $doc = XML::Template::process_file("../templates/$filename.xml", $parms);
+ }
print $doc->toString;
}
+sub get_ordinal {
+ my ($num, $locale) = @_;
+ my $translation = $translation_mapping{$locale} // 'en';
+
+ if ($translation eq 'no') {
+ return $num . ".";
+ } elsif ($translation eq 'en') {
+ # http://en.wikipedia.org/wiki/English_numerals#Ordinal_numbers
+ my $units = $num % 10;
+ my $tens = (($num - $units) / 10) % 10;
+ if ($tens == 1) {
+ return $num . "th";
+ } elsif ($units == 1) {
+ return $num . "st";
+ } elsif ($units == 2) {
+ return $num . "nd";
+ } elsif ($units == 3) {
+ return $num . "rd";
+ } else {
+ return $num . "th";
+ }
+ } else {
+ die "Missing ordinal strategy for locale $locale";
+ }
+}
+
+sub find_all_locales {
+ my $dbh = shift;
+ my $q = $dbh->prepare('SELECT kultur FROM fotballspraak WHERE nyestesesong <> -1 AND length(kultur)=5');
+ $q->execute;
+
+ my @locales = ();
+ while (my $ref = $q->fetchrow_hashref) {
+ push @locales, $ref->{'kultur'};
+ }
+
+ return @locales;
+}
+
1;