X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=include%2Fcommon.pm;h=15c698bb539bd3daf3f7ef5d5f9664d16d043546;hb=fde909c294de9806dd6337f5acb0ed87c41557c6;hp=7ffaeeee0e8fc7ab4cae055559e7621a81ef3675;hpb=0b296666f77d2431a26be5be4856499c5e0c2cd8;p=wloh diff --git a/include/common.pm b/include/common.pm index 7ffaeee..15c698b 100644 --- a/include/common.pm +++ b/include/common.pm @@ -60,7 +60,7 @@ sub get_navbar { print "

"; - 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 @languages = (); @@ -75,9 +75,9 @@ sub get_navbar { 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'} = ''; } @@ -87,31 +87,6 @@ sub get_navbar { return \@languages; } -sub print_navbar { - my ($cgi, $dbh, $locale) = @_; - my $url = $cgi->url(-relative => 1); - - print "

"; - - my $q = $dbh->prepare('SELECT spraak, kultur FROM fotballspraak WHERE nyestesesong <> -1 ORDER BY id'); - $q->execute; - - my $first = 1; - while (my $ref = $q->fetchrow_hashref) { - if (!$first) { - print " :: "; - } - $first = 0; - - if ($ref->{'kultur'} eq $locale) { - printf "%s ", $ref->{'spraak'}; - } else { - printf "%s ", $ref->{'kultur'}, $url, $ref->{'spraak'}; - } - } - print "

\n"; -} - # mapping from locale to translation to use (if not found, "en" is used) my %translation_mapping = ( 'nb-NO' => 'no', @@ -135,4 +110,43 @@ sub process_template { 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;