This is an implementation for a word ending in russian lang. Also as I know polish and similar langs use same rules:
<?php
/**
 * Returns:
 *   0, if $n == 1, 21, 31, 41, ...
 *   1, if $n == 2..4, 22..24, 32..34, ...
 *   2, if $n == 5..20, 25..30, 35..40, ...
 */
function plural( $n )
{
    if ( $n % 10 == 1 && $n % 100 != 11 )
    {
        return 0;
    }
    if ( $n % 10 >= 2 && $n % 10 <= 4 && ( $n % 100 < 10 || $n % 100 >= 20 ) )
    {
        return 1;
    }
    return 2;
}
// usage
for ( $i = 0; $i < 100; $i++ )
{
    $x = plural( $i );
    printf(
        "%d %s<br/>\n", $i,
         ( 0 == $x ? '' : ( 1 == $x ? '' : '' ) )
    );
}
?>
Output:
0 
1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
...
Also here is short version:
<?php
$n = 17;
print ($n%10==1 && $n%100!=11 ? 0 : ($n%10>=2 && $n%10<=4 && ($n%100<10 || $n%100>=20) ? 1 : 2));
?>
output: 2