España tiene un problema tradicional con las lenguas extranjeras. Se supone que los españoles menores de 40 años saben inglés desde la escuela, pero el hecho es que el nivel de inglés es casi cero en casi todas partes.
Básicamente, existen dos tipos de entornos de software: el código que se supone que se comparte con las partes internacionales (proyectos de código abierto, oficinas españolas de multinacionales extranjeras, proveedores que venden en el extranjero) y el código que se vende localmente. El primero, por supuesto, está escrito en inglés, pero el segundo normalmente está escrito en español, tanto en nombres de variables como en documentación. Las palabras en variables pierden acentos y tildes según sea necesario para encajar en ASCII de 7 bits ( dirección
-> direccion
) y se pueden usar bits en inglés cuando representan una característica de lenguaje estándar ( getDireccion
) o un concepto sin una traducción universalmente aceptada ( abrirSocket
).
Sucede que la palabra española para año (año) se convierte en la palabra para el ano cuando quitas la tilde. No tengo ningún problema con la escritura, ano
pero la mayoría de los otros programadores lo evitan a toda costa y producen todo tipo de alternativas divertidas como anno
o anyo
:)
Algunas muestras:
/**
* Devuelve una cadena aleatoria de la longitud indicada elegidos entre la lista proporcionada;
* contempla caracteres multi-byte
*/
function mb_cadena_aleatoria($longitud=16, $caracteres='0123456789abcdefghijklmnopqrstuvwxyz'){ // v2010-06-03
$cadena = '';
$max = mb_strlen($caracteres)-1;
for($i=0; $i<$longitud; $i++){
$cadena .= mb_substr($caracteres, mt_rand(0, $max), 1);
}
return $cadena;
}
/*
* Da formato a un número para su visualización
*
* numero (Number o String) - Número que se mostrará
* decimales (Number, opcional) - Nº de decimales (por defecto, auto)
* separador_decimal (String, opcional) - Separador decimal (por defecto, coma)
* separador_miles (String, opcional) - Separador de miles (por defecto, ninguno)
*/
function formato_numero(numero, decimales, separador_decimal, separador_miles){ // v2007-08-06
numero=parseFloat(numero);
if(isNaN(numero)){
return "";
}
if(decimales!==undefined){
// Redondeamos
numero=numero.toFixed(decimales);
}
// Convertimos el punto en separador_decimal
numero=numero.toString().replace(".", separador_decimal!==undefined ? separador_decimal : ",");
if(separador_miles){
// Añadimos los separadores de miles
var miles=new RegExp("(-?[0-9]+)([0-9]{3})");
while(miles.test(numero)) {
numero=numero.replace(miles, "$1" + separador_miles + "$2");
}
}
return numero;
}