Muy buena esa tradución JavierB

, aunque con algunos fallos, esta es la misma funcion pero creo haberlos corregido.
Espero que sirva, aunque solo llega hasta el 999

si alguien se anima que la continue
Código PHP:
function letras ($num) {
$unidad = array ('un','dos','tres','cuatro','cinco','seis','siete','ocho','nueve');
$decenas = array ('diez','once','doce', 'trece','catorce','quince');
$decena = array ('dieci','veinti','treinta','cuarenta','cincuenta','sesenta','setenta','ochenta','noventa');
$centena = array ('ciento','doscientos','trescientos','cuatrocientos','quinientos','seiscientos','setecientos','ochocientos','novecientos');
$linea = "";
$cen = (int) ($num / 100); //Cifra de las centenas
$doble = $num - ($cen*100); //Cifras de las decenas y unidades
$dec = (int)($num / 10) - ($cen*10); //Cifra de laa decenas
$uni = $num - ($dec*10) - ($cen*100); //Cifra de las unidades
if ($cen > 0) {
if ($num == 100) $linea = "cien";
else $linea = $centena[$cen-1].' ';
}//end if
if ($doble>0) {
if ($doble == 20) {
$linea .= " veinte";
}elseif (($doble < 16) and ($doble>9)) {
$linea .= $decenas[$doble-10];
}else {
$linea .=' '. $decena[$dec-1];
}//end if
if ($dec>2 and $uni<>0) $linea .=' y ';
if (($uni>0) and ($doble>15) or ($dec==0)) {
if ($uni == 1) $linea.="uno";
else $linea.=$unidad[$uni-1];
}
}
return $linea;
}//end function letras