В Испании традиционная проблема с иностранными языками. Предполагается, что испанцы моложе 40 лет знают английский со школы, но очевидным фактом является то, что уровень английского почти везде близок к нулю.
Таким образом, существует в основном два типа программных сред: код, который должен передаваться международным сторонам (проекты с открытым исходным кодом, испанские офисы иностранных транснациональных корпораций, поставщики, которые продают за границей) и код, который продается на местах. Первый, конечно, написан на английском языке, но последний, как правило, пишется на испанском языке, с именами переменных и документацией. Слова в переменных теряют акценты и тильды, что требуется для соответствия 7-битному ASCII ( dirección
-> direccion
), и английские биты могут использоваться, когда они представляют стандартную языковую функцию ( getDireccion
) или концепцию без общепринятого перевода ( abrirSocket
).
Бывает, что испанское слово для обозначения года (año) становится словом для ануса при удалении тильды. У меня нет проблем с написанием, ano
но большинство других программистов избегают этого любой ценой и создают всевозможные забавные альтернативы, такие как anno
или anyo
:)
Некоторые образцы:
/**
* 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;
}