В Іспанії є традиційна проблема з іноземними мовами. Іспанці молодші 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;
}