1 #! /bin/sh 2 3 tmpfiles="" 4 trap 'rm -fr $tmpfiles' 1 2 3 15 5 6 tmpfiles="$tmpfiles ll ll.po dataout" 7 : ${MSGFMT=msgfmt} 8 test -d ll || mkdir ll 9 test -d ll/LC_MESSAGES || mkdir ll/LC_MESSAGES 10 11 tmpfiles="$tmpfiles plural-2.data" 12 cat <<EOF > plural-2.data 13 ja 14 0 15 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 16 de 17 n != 1 18 10111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 19 fr 20 n>1 21 00111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 22 gd 23 n==1 ? 0 : n==2 ? 1 : 2 24 20122222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222 25 ro 26 n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < 20)) ? 1 : 2 27 10111111111111111111222222222222222222222222222222222222222222222222222222222222222222222222222222222111111111111111111122222222222222222222222222222222222222222222222222222222222222222222222222222222 28 lt 29 n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2 30 20111111112222222222201111111120111111112011111111201111111120111111112011111111201111111120111111112011111111222222222220111111112011111111201111111120111111112011111111201111111120111111112011111111 31 ru-gettext 32 n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2 33 20111222222222222222201112222220111222222011122222201112222220111222222011122222201112222220111222222011122222222222222220111222222011122222201112222220111222222011122222201112222220111222222011122222 34 ru-glibc 35 n%100/10==1 ? 2 : n%10==1 ? 0 : (n+9)%10>3 ? 2 : 1 36 20111222222222222222201112222220111222222011122222201112222220111222222011122222201112222220111222222011122222222222222220111222222011122222201112222220111222222011122222201112222220111222222011122222 37 sk 38 (n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2 39 20111222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222 40 pl 41 n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2 42 20111222222222222222221112222222111222222211122222221112222222111222222211122222221112222222111222222211122222222222222222111222222211122222221112222222111222222211122222221112222222111222222211122222 43 sl 44 n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3 45 30122333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333012233333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333 46 EOF 47 while read lang; do 48 read formula 49 read dataok 50 cat > ll.po <<EOF 51 msgid "" 52 msgstr "" 53 "MIME-Version: 1.0\n" 54 "Content-Type: text/plain; charset=ASCII\n" 55 "Content-Transfer-Encoding: 8bit\n" 56 "Plural-Forms: nplurals=10; plural=${formula};\n" 57 58 msgid "X" 59 msgid_plural "Y" 60 msgstr[0] "0" 61 msgstr[1] "1" 62 msgstr[2] "2" 63 msgstr[3] "3" 64 msgstr[4] "4" 65 msgstr[5] "5" 66 msgstr[6] "6" 67 msgstr[7] "7" 68 msgstr[8] "8" 69 msgstr[9] "9" 70 EOF 71 ${MSGFMT} -o ll/LC_MESSAGES/plural.mo ll.po || exit 1 72 (for i in '' 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19; do 73 LANGUAGE= TEXTDOMAIN=plural TEXTDOMAINDIR=. \ 74 $NGETTEXT --env LC_ALL=ll X Y ${i}0 ${i}1 ${i}2 ${i}3 ${i}4 ${i}5 ${i}6 ${i}7 ${i}8 ${i}9 75 done) > dataout 76 test "$dataok" = `cat dataout` || { 77 echo "Formula evaluation error for language $lang" 1>&2 78 echo "plural=${formula}" 1>&2 79 echo "Expected: $dataok" 1>&2 80 echo "Got: "`cat dataout` 1>&2 81 rm -fr $tmpfiles 82 exit 1 83 } 84 done < plural-2.data 85 86 rm -fr $tmpfiles 87 88 exit 0 89