La Spagna ha un problema tradizionale con le lingue straniere. Gli spagnoli di età inferiore ai 40 anni dovrebbero conoscere l'inglese da scuola, ma il fatto è che il livello di inglese è vicino allo zero quasi ovunque.
Quindi ci sono fondamentalmente due tipi di ambienti software: codice che dovrebbe essere condiviso con parti internazionali (progetti open source, uffici spagnoli di multinazionali straniere, fornitori che vendono all'estero) e codice che viene venduto localmente. Il primo è ovviamente scritto in inglese, ma il secondo è normalmente scritto in spagnolo, sia i nomi delle variabili che la documentazione. Le parole nelle variabili perdono accenti e tilde come richiesto per adattarsi a ASCII a 7 bit ( dirección
-> direccion
) e i bit inglesi possono essere usati quando rappresentano una caratteristica del linguaggio standard ( getDireccion
) o un concetto senza una traduzione universalmente accettata ( abrirSocket
).
Succede che la parola spagnola per anno (año) diventa la parola per ano quando si rimuove la tilde. Non ho alcun problema con la scrittura, ano
ma la maggior parte degli altri programmatori lo evita ad ogni costo e produce ogni sorta di alternative divertenti come anno
o anyo
:)
Alcuni esempi:
/**
* 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;
}