Hiszpania ma tradycyjny problem z językami obcymi. Hiszpanie w wieku poniżej 40 lat powinni znać angielski ze szkoły, ale oczywistym faktem jest, że poziom angielskiego jest prawie zerowy prawie wszędzie.
Istnieją więc zasadniczo dwa rodzaje środowisk oprogramowania: kod, który powinien być udostępniany podmiotom międzynarodowym (projekty open source, hiszpańskie biura zagranicznych korporacji, dostawcy sprzedający za granicą) i kod sprzedawany lokalnie. Pierwszy z nich jest oczywiście napisany w języku angielskim, ale drugi jest zwykle napisany w języku hiszpańskim, zarówno nazwy zmiennych, jak i dokumentacja. Słowa w zmiennych tracą akcenty i tyldy zgodnie z wymaganiami, aby zmieścić się w 7-bitowym ASCII ( dirección
-> direccion
), a bitów angielskich można użyć, gdy reprezentują one standardową funkcję języka ( getDireccion
) lub pojęcie bez powszechnie akceptowanego tłumaczenia ( abrirSocket
).
Zdarza się, że hiszpańskie słowo oznaczające rok (año) staje się słowem oznaczającym odbyt po usunięciu tyldy. Nie mam problemu z pisaniem, ano
ale większość innych programistów unika go za wszelką cenę i produkuje wszelkiego rodzaju zabawne alternatywy, takie jak anno
lub anyo
:)
Niektóre próbki:
/**
* 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;
}