GNU gettext er gamalreynd og ágæt leið til að bjóða upp á þýddar og staðfærðar útgáfur af hugbúnaði. Gettext er hægt að finna fyrir flest forritunarmál (t.d. Perl, Python og PHP). Þar er m.a. að finna skipunina ngettext sem finnur ekki eingöngu þýðingu strengs heldur velur hún einnig á milli textastrengja út frá tölu og er notuð til að velja eintölu eða fleirtölu.

printf (ngettext ("deleted %d file", "deleted %d files", n), n);

Þýðingar fyrir textastrengina er að finna í PO-skrám (sem er svo umbreytt í MO-skrár með msgfmt) og hausi þeirrra skráa er einnig að finna skilgreiningu á því hvernig velja eigi rétta tölumynd (nánar tiltekið skilgreining á fleirtölunni eða fleirtölunum fyrir þau mál sem hafa fleiri en eina fleirtölu). Ég hef hinsvegar rekið mig á það að í öllum íslensku PO-skránum sem ég hef skoðað er fleirtöluskilgreining röng, þ.e. skilgreining f. ensku er látin vera óbreytt í skránni þegar hún er þýdd.

Plural-Forms: nplurals=2; plural=n != 1;

Þetta merkir að tölumyndirnar eru tvær og fleirtalan er allt nema talan 1. En þessi skilgreining dugar ekki fyrir íslensku því við tölum t.d. um að Binni hafi keypt 21 vindil en ekki að *Binni hafi keypt 21 vindla.

Plural-Forms: nplurals=2; plural=n%10 != 1 || n%100 == 11;

Þessi skilgreining er hinsvegar rétt fyrir íslensku (n>=0). Hér fá allar tölur sem ekki enda á einum að undanteknum þeim sem enda á ellefu fleirtölumynd. Hægt er að prófa skilgreininguna með einfaldri Perl-skriftu:

#!/usr/bin/perlforeach my $n ( 0 … 23, 100 … 113) { print $n; if( $n % 10 != 1 || $n % 100 == 11) { print " hestar"; } else { print " hestur"; } print ", " if $n != 113;}

Sem gefur eftirfarandi útkomu eins og við viljum:

0 hestar, 1 hestur, 2 hestar, 3 hestar, 4 hestar, 5 hestar, 6 hestar, 7 hestar, 8 hestar, 9 hestar, 10 hestar, 11 hestar, 12 hestar, 13 hestar, 14 hestar, 15 hestar, 16 hestar, 17 hestar, 18 hestar, 19 hestar, 20 hestar, 21 hestur, 22 hestar, 23 hestar, 100 hestar, 101 hestur, 102 hestar, 103 hestar, 104 hestar, 105 hestar, 106 hestar, 107 hestar, 108 hestar, 109 hestar, 110 hestar, 111 hestar, 112 hestar, 113 hestar

Ath. Þessi færsla er einskonar bót á Vefinn. Ég fann ekki þessar upplýsingar og bæti þeim því við hér.



Ein ummæli við „PO-skrár og íslensk fleirtala“

  1. Binni ritaði:

    Heyrðu … ég er ánægður með þetta. Ég gef þér vindil, ekki spurning! ;-)